+ mRendererAdded = true;
+ }
+
+ ResourceReady( Toolkit::Visual::ResourceStatus::READY );
+
+ DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnUploadCompleted: Renderer is added [%p]\n", this );
+}
+
+void AnimatedVectorImageVisual::OnAnimationFinished()
+{
+ DALI_LOG_INFO( gVectorAnimationLogFilter, Debug::Verbose, "AnimatedVectorImageVisual::OnAnimationFinished: action state = %d [%p]\n", mActionStatus, this );
+
+ if( mActionStatus != DevelAnimatedVectorImageVisual::Action::STOP )
+ {
+ mActionStatus = DevelAnimatedVectorImageVisual::Action::STOP;
+
+ if( mImpl->mEventObserver )
+ {
+ mImpl->mEventObserver->NotifyVisualEvent( *this, DevelAnimatedVectorImageVisual::Signal::ANIMATION_FINISHED );
+ }
+ }
+
+ if( mImpl->mRenderer )
+ {
+ mImpl->mRenderer.SetProperty( DevelRenderer::Property::RENDERING_BEHAVIOR, DevelRenderer::Rendering::IF_REQUIRED );
+ }
+}
+
+void AnimatedVectorImageVisual::SendAnimationData()
+{
+ if( mResendFlag )
+ {
+ bool isPlaying = false;
+ if( mVectorAnimationTask->GetPlayState() == DevelImageVisual::PlayState::PLAYING )
+ {
+ mVectorAnimationTask->PauseAnimation();
+ isPlaying = true;
+ }
+
+ if( mResendFlag & RESEND_LOOP_COUNT )
+ {
+ mVectorAnimationTask->SetLoopCount( mLoopCount );
+ }
+
+ if( mResendFlag & RESEND_PLAY_RANGE )
+ {
+ mVectorAnimationTask->SetPlayRange( mStartFrame, mEndFrame );
+ }
+
+ if( mResendFlag & RESEND_STOP_BEHAVIOR )
+ {
+ mVectorAnimationTask->SetStopBehavior( mStopBehavior );
+ }
+
+ if( mResendFlag & RESEND_LOOPING_MODE )
+ {
+ mVectorAnimationTask->SetLoopingMode( mLoopingMode );
+ }
+
+ if( IsOnStage() )
+ {
+ if( isPlaying )
+ {
+ mVectorAnimationTask->PlayAnimation();
+ }
+ else
+ {
+ mVectorAnimationTask->RenderFrame();
+ Stage::GetCurrent().KeepRendering( 0.0f );
+ }
+ }
+
+ mResendFlag = 0;
+ }
+}
+
+void AnimatedVectorImageVisual::SetVectorImageSize()
+{
+ uint32_t width = static_cast< uint32_t >( mVisualSize.width * mVisualScale.width );
+ uint32_t height = static_cast< uint32_t >( mVisualSize.height * mVisualScale.height );
+
+ mVectorAnimationTask->SetSize( width, height );