1 //////////////////////////////////////////////////////////////////////////////
2 // Name:        SVGImageElement.cpp
3 // Purpose:     SVG image element
4 // Author:      Alex Thuering
5 // Created:     2005/11/23
6 // RCS-ID:      $Id: SVGVideoElement.cpp,v 1.5 2013/08/25 12:53:33 ntalex Exp $
7 // Copyright:   (c) 2005 Alex Thuering
8 // Licence:     wxWindows licence
9 //////////////////////////////////////////////////////////////////////////////
10 
11 #include "SVGVideoElement.h"
12 #include "SVGCanvas.h"
13 #include <wx/log.h>
14 
GetBBox(wxSVG_COORDINATES coordinates)15 wxSVGRect wxSVGVideoElement::GetBBox(wxSVG_COORDINATES coordinates) {
16 	wxSVGRect bbox = wxSVGRect(GetX().GetAnimVal(), GetY().GetAnimVal(), GetWidth().GetAnimVal(),
17 			GetHeight().GetAnimVal());
18 	if (coordinates != wxSVG_COORDINATES_USER)
19 		bbox.MatrixTransform(GetMatrix(coordinates));
20 	return bbox;
21 }
22 
GetResultBBox(wxSVG_COORDINATES coordinates)23 wxSVGRect wxSVGVideoElement::GetResultBBox(wxSVG_COORDINATES coordinates) {
24 	return GetBBox(coordinates);
25 }
26 
SetCanvasItem(wxSVGCanvasItem * canvasItem)27 void wxSVGVideoElement::SetCanvasItem(wxSVGCanvasItem* canvasItem) {
28 	if (m_canvasItem)
29 		delete m_canvasItem;
30 	m_canvasItem = canvasItem;
31 }
32 
GetDuration(wxProgressDialog * progressDlg)33 double wxSVGVideoElement::GetDuration(wxProgressDialog* progressDlg) {
34 	if (GetDur() > 0)
35 		return GetDur();
36 	if (GetClipEnd() > 0)
37 		return GetClipEnd() > GetClipBegin() ? GetClipEnd() - GetClipBegin() : 0;
38 	if (m_canvasItem == NULL)
39 		m_canvasItem = ((wxSVGDocument*) GetOwnerDocument())->GetCanvas()->CreateItem(this, NULL, progressDlg);
40 	double duration = ((wxSVGCanvasVideo*) m_canvasItem)->GetDuration();
41 	if (!((wxSVGDocument*) GetOwnerDocument())->GetCanvas()->IsItemsCached()) {
42 		delete m_canvasItem;
43 		m_canvasItem = NULL;
44 	}
45 	if (GetClipBegin() > 0)
46 		duration = duration > GetClipBegin() ? duration - GetClipBegin() : 0;
47 	return duration;
48 }
49