Beispiel #1
0
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();
	}
Beispiel #3
0
void wxSVGDocument::SetCurrentTime(double seconds) {
	m_time = seconds;
	// animation
	if (GetRootElement())
		ApplyAnimation(GetRootElement());
}