+ case DevelAnimatedVectorImageVisual::Action::SET_DYNAMIC_PROPERTY:
+ {
+ DevelAnimatedVectorImageVisual::DynamicPropertyInfo info = AnyCast<DevelAnimatedVectorImageVisual::DynamicPropertyInfo>(attributes);
+ mAnimationData.dynamicProperties.push_back(info);
+ mAnimationData.resendFlag |= VectorAnimationTask::RESEND_DYNAMIC_PROPERTY;
+ break;
+ }
+ }
+
+ TriggerVectorRasterization();
+}
+
+void AnimatedVectorImageVisual::OnResourceReady(VectorAnimationTask::ResourceStatus status)
+{
+ AnimatedVectorImageVisualPtr self = this; // Keep reference until this API finished
+
+ if(status == VectorAnimationTask::ResourceStatus::LOADED)
+ {
+ if(mImpl->mEventObserver)
+ {
+ mImpl->mEventObserver->RelayoutRequest(*this);
+ }
+ }
+ else
+ {
+ mLoadFailed = status == VectorAnimationTask::ResourceStatus::FAILED ? true : false;
+ if(status == VectorAnimationTask::ResourceStatus::READY)
+ {
+ // Texture was ready. Change the shader if we need.
+ bool useNativeImage = false;
+ if(mImpl->mRenderer)
+ {
+ auto textureSet = mImpl->mRenderer.GetTextures();
+ if(textureSet && textureSet.GetTextureCount() > 0)
+ {
+ auto texture = textureSet.GetTexture(0u);
+ if(texture)
+ {
+ useNativeImage = DevelTexture::IsNative(texture);
+
+ if(mUseNativeImage != useNativeImage)
+ {
+ mUseNativeImage = useNativeImage;
+ UpdateShader();
+ }
+ }
+ }
+ }
+ }