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)15wxSVGRect 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)23wxSVGRect wxSVGVideoElement::GetResultBBox(wxSVG_COORDINATES coordinates) { 24 return GetBBox(coordinates); 25 } 26 SetCanvasItem(wxSVGCanvasItem * canvasItem)27void wxSVGVideoElement::SetCanvasItem(wxSVGCanvasItem* canvasItem) { 28 if (m_canvasItem) 29 delete m_canvasItem; 30 m_canvasItem = canvasItem; 31 } 32 GetDuration(wxProgressDialog * progressDlg)33double 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