void wxSVGDocument::ApplyAnimation(wxSVGElement* parent) { wxSVGElement* elem = (wxSVGElement*) parent->GetChildren(); while (elem) { if (elem->GetType() == wxSVGXML_ELEMENT_NODE) { if (elem->GetDtd() == wxSVG_IMAGE_ELEMENT) { wxSVGCanvasImage* canvasItem = (wxSVGCanvasImage*) ((wxSVGImageElement*) elem)->GetCanvasItem(); if (canvasItem != NULL && canvasItem->GetSvgImage() != NULL) { ApplyAnimation(canvasItem->GetSvgImage((wxSVGDocument*) elem->GetOwnerDocument())); } } switch (elem->GetDtd()) { case wxSVG_ANIMATE_ELEMENT: ((wxSVGAnimateElement*) elem)->ApplyAnimation(); break; case wxSVG_ANIMATECOLOR_ELEMENT: ((wxSVGAnimateMotionElement*) elem)->ApplyAnimation(); break; case wxSVG_ANIMATEMOTION_ELEMENT: ((wxSVGAnimateMotionElement*) elem)->ApplyAnimation(); break; case wxSVG_ANIMATETRANSFORM_ELEMENT: ((wxSVGAnimateTransformElement*) elem)->ApplyAnimation(); break; default: ApplyAnimation(elem); break; } } elem = (wxSVGElement*) elem->GetNext(); } }
virtual void Update() { time = Rocket::Core::GetSystemInterface()->GetElapsedTime(); if (phase == AnimatonPhaseNotYetStarted) { StartAnimation(); phase = AnimationPhaseActive; } if (phase == AnimationPhaseActive) { UpdateAnimationPosition(); } else if (phase == AnimationPhaseFinished) { return; } ApplyAnimation(); }
void wxSVGDocument::SetCurrentTime(double seconds) { m_time = seconds; // animation if (GetRootElement()) ApplyAnimation(GetRootElement()); }