#define DALI_TOOLKIT_INTERNAL_ANIMATED_VECTOR_IMAGE_VISUAL_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
* @param[in] shaderFactory The ImageVisualShaderFactory object
* @param[in] imageUrl The URL to an animated vector image to use
+ * @param[in] size The width and height of the rasterized buffer. The visual size will be used if these are 0.
* @return A smart-pointer to the newly allocated visual.
*/
- static AnimatedVectorImageVisualPtr New(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl);
+ static AnimatedVectorImageVisualPtr New(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, ImageDimensions size = ImageDimensions());
public: // from Visual
/**
* @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
* @param[in] shaderFactory The ImageVisualShaderFactory object
* @param[in] imageUrl The URL to an animated vector image to use
+ * @param[in] size The width and height of the rasterized buffer. The visual size will be used if these are 0.
*/
- AnimatedVectorImageVisual(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl);
+ AnimatedVectorImageVisual(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, ImageDimensions size);
/**
* @brief A reference counted object may only be deleted by calling Unreference().
*/
void OnDoAction(const Property::Index actionId, const Property::Value& attributes) override;
+ /**
+ * @copydoc Visual::Base::OnDoActionExtension
+ */
+ void OnDoActionExtension(const Property::Index actionId, Dali::Any attributes) override;
+
private:
/**
* Helper method to set individual values by index key.
void DoSetProperty(Property::Index index, const Property::Value& value);
/**
- * @brief Called when the texture upload is completed.
+ * @brief Called when the resource is ready.
+ * @param[in] status The resource status
*/
- void OnUploadCompleted();
+ void OnResourceReady(VectorAnimationTask::ResourceStatus status);
/**
* @brief Event callback from rasterize thread. This is called after the animation is finished.
+ *
+ * @param[in] playStateId The play state id
+ */
+ void OnAnimationFinished(uint32_t playStateId);
+
+ /**
+ * @brief Event callback from rasterize thread. This is called when we want to ensure rendering next frame.
+ *
+ * @param[in] argument Not using arguments
*/
- void OnAnimationFinished();
+ void OnForceRendering(uint32_t argument);
/**
* @brief Send animation data to the rasterize thread.
AnimatedVectorImageVisual& operator=(const AnimatedVectorImageVisual& visual) = delete;
private:
- VisualUrl mUrl;
+ VisualUrl mImageUrl;
VectorAnimationTask::AnimationData mAnimationData;
VectorAnimationTaskPtr mVectorAnimationTask;
ImageVisualShaderFactory& mImageVisualShaderFactory;
PropertyNotification mSizeNotification;
Vector2 mVisualSize;
Vector2 mVisualScale;
+ Dali::ImageDimensions mDesiredSize{};
WeakHandle<Actor> mPlacementActor;
DevelImageVisual::PlayState::Type mPlayState;
CallbackBase* mEventCallback; // Not owned
- bool mLoadFailed;
- bool mRendererAdded;
- bool mCoreShutdown;
- bool mRedrawInScalingDown;
+
+ uint32_t mLastSentPlayStateId;
+
+ bool mLoadFailed : 1;
+ bool mRendererAdded : 1;
+ bool mCoreShutdown : 1;
+ bool mRedrawInScalingDown : 1;
+ bool mEnableFrameCache : 1;
+ bool mUseNativeImage : 1;
};
} // namespace Internal