+
+ // Svg loaded and ready to display
+ ResourceReady(Toolkit::Visual::ResourceStatus::READY);
+ }
+ else if(!isLoaded || !rasterizedPixelData)
+ {
+ Actor actor = mPlacementActor.GetHandle();
+ if(actor)
+ {
+ Vector2 imageSize = Vector2::ZERO;
+ imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
+ mFactoryCache.UpdateBrokenImageRenderer(mImpl->mRenderer, imageSize);
+ actor.AddRenderer(mImpl->mRenderer);
+ }
+
+ ResourceReady(Toolkit::Visual::ResourceStatus::FAILED);
+ }
+}
+
+void SvgVisual::OnSetTransform()
+{
+ Vector2 visualSize = mImpl->mTransform.GetVisualSize(mImpl->mControlSize);
+
+ if(IsOnScene() && !mLoadFailed)
+ {
+ if(visualSize != mVisualSize)
+ {
+ AddRasterizationTask(visualSize);
+ mVisualSize = visualSize;
+ }
+ }
+
+ if(mImpl->mRenderer)
+ {
+ mImpl->mTransform.RegisterUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT);
+ }
+}
+
+bool SvgVisual::IsResourceReady() const
+{
+ return (mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::READY ||
+ mImpl->mResourceStatus == Toolkit::Visual::ResourceStatus::FAILED);
+}
+
+void SvgVisual::UpdateShader()
+{
+ if(mImpl->mRenderer)
+ {
+ Shader shader = GenerateShader();
+ mImpl->mRenderer.SetShader(shader);