CPU Alpha Masking for Animated Image Visual
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-image / animated-image-visual.h
index ad8b5ac..4acb736 100644 (file)
@@ -193,56 +193,59 @@ protected:
 
 private:
   /**
-   * Creates the renderer for the animated image
+   * @brief Initialize the animated image variables.
+   * @param[in] imageUrl The url of the animated image
    */
-  void CreateRenderer();
+  void InitializeAnimatedImage(const VisualUrl& imageUrl);
 
   /**
-   * Starts the Load of the first batch of URLs
+   * @brief Create image cache for animated image or image array.
    */
-  void LoadFirstBatch();
+  void CreateImageCache();
 
   /**
-   * Adds the texture set to the renderer, and the renderer to the
+   * @brief Adds the texture set to the renderer, and the renderer to the
    * placement actor, and starts the frame timer
-   * @param[in] textureSet The texture set to apply
+   * @param[in] textureSet    The texture set to apply
+   * @param[in] firstInterval frame interval(ms) for the first frame.
    */
-  void StartFirstFrame(TextureSet& textureSet);
+  void StartFirstFrame(TextureSet& textureSet, uint32_t firstInterval);
 
   /**
-   * Prepares the texture set for displaying
+   * @brief Prepares the texture set for displaying
    */
-  TextureSet PrepareTextureSet();
+  void PrepareTextureSet();
 
   /**
-   * Set the image size from the texture set
+   * @brief Set the image size from the texture set
    * @param[in] textureSet The texture set to get the size from
    */
   void SetImageSize(TextureSet& textureSet);
 
   /**
-   * Called when the next frame is ready.
+   * @brief Called when the next frame is ready.
    * @param[in] textureSet the texture set to apply
+   * @param[in] interval interval(ms) for the frame
    */
-  void FrameReady(TextureSet textureSet) override;
+  void FrameReady(TextureSet textureSet, uint32_t interval) override;
 
   /**
-   * Display the next frame. It is called when the mFrameDelayTimer ticks.
-   * Returns true to ensure the timer continues running.
+   * @brief Display the next frame. It is called when the mFrameDelayTimer ticks.
+   * @return true to ensure the timer continues running.
    */
   bool DisplayNextFrame();
 
   /**
-   * Initialize the animated image variables.
-   * @param[in] imageUrl The url of the animated image
+   * @brief Set the state of loading fail of an image or a frame.
+   * @return TextureSet of broken image.
    */
-  void InitializeAnimatedImage(const VisualUrl& imageUrl);
+  TextureSet SetLoadingFailed();
 
   /**
-   * Set the state of loading fail of an image or a frame.
-   * Returns TextureSet of broken image.
+   * @brief Allocate mask data.
+   * This is allocated only once.
    */
-  TextureSet SetLoadingFailed();
+  void AllocateMaskData();
 
   // Undefined
   AnimatedImageVisual(const AnimatedImageVisual& animatedImageVisual);
@@ -260,6 +263,7 @@ private:
   VisualUrl                  mImageUrl;
   Dali::AnimatedImageLoading mAnimatedImageLoading; // Only needed for animated image
   uint32_t                   mFrameIndexForJumpTo;  // Frame index into textureRects
+  uint32_t                   mCurrentFrameIndex;
 
   // Variables for Multi-Image player
   ImageCache::UrlList* mImageUrls;
@@ -269,7 +273,11 @@ private:
   uint16_t             mFrameDelay;
   int16_t              mLoopCount;
   int16_t              mCurrentLoopIndex;
-  uint16_t             mUrlIndex;
+
+  // Variables for image visual properties.
+  Dali::Toolkit::ImageVisual::LoadPolicy::Type    mLoadPolicy;
+  Dali::Toolkit::ImageVisual::ReleasePolicy::Type mReleasePolicy;
+  TextureManager::MaskingDataPointer              mMaskingData;
 
   // Shared variables
   uint32_t        mFrameCount; // Number of frames