Merge "Fix issue using broken image" into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / animated-image / image-cache.h
index 19a8f52..b15101e 100644 (file)
@@ -40,14 +40,15 @@ public:
      * @brief Informs observer when the next texture set is ready to display
      * @param[in] textureSet The ready texture set
      * @param[in] interval interval(ms) for the frame
+     * @param[in] preMultiplied whether the texture is premultied alpha or not.
      */
-    virtual void FrameReady(TextureSet textureSet, uint32_t interval) = 0;
+    virtual void FrameReady(TextureSet textureSet, uint32_t interval, bool preMultiplied) = 0;
   };
 
   struct UrlStore
   {
     TextureManager::TextureId mTextureId = TextureManager::INVALID_TEXTURE_ID;
-    std::string               mUrl;
+    VisualUrl                 mUrl;
   };
 
   /**
@@ -58,19 +59,28 @@ public:
 public:
   /**
    * @brief Constructor.
-   * @param[in] textureManager The texture manager
-   * @param[in] urlList List of urls to cache
-   * @param[in] observer FrameReady observer
-   * @param[in] batchSize The size of a batch to load
-   * @param[in] interval Time interval(ms) between each frame 
+   * @param[in] textureManager    The texture manager
+   * @param[in] size              The width and height to fit the loaded image to.
+   * @param[in] fittingMode       The FittingMode of the resource to load
+   * @param[in] samplingMode      The SamplingMode of the resource to load
+   * @param[in] observer          FrameReady observer
+   * @param[in] maskingData       Masking data to be applied.
+   * @param[in] batchSize         The size of a batch to load
+   * @param[in] interval          Time interval(ms) between each frame
+   * @param[in] preMultiplyOnLoad The flag if image's color should be multiplied by it's alpha
    *
    * This will start loading textures immediately, according to the
    * batch and cache sizes. The cache is as large as the number of urls.
    */
-  ImageCache(TextureManager&                 textureManager,
-             ImageCache::FrameReadyObserver& observer,
-             uint32_t                        batchSize,
-             uint32_t                        interval);
+  ImageCache(TextureManager&                     textureManager,
+             ImageDimensions                     size,
+             Dali::FittingMode::Type             fittingMode,
+             Dali::SamplingMode::Type            samplingMode,
+             TextureManager::MaskingDataPointer& maskingData,
+             ImageCache::FrameReadyObserver&     observer,
+             uint32_t                            batchSize,
+             uint32_t                            interval,
+             bool                                preMultiplyOnLoad);
 
   virtual ~ImageCache();
 
@@ -132,18 +142,25 @@ private:
    */
   void TextureManagerDestroyed() final;
 
+  void AllocateMaskData();
+
 protected:
-  TextureManager&           mTextureManager;
-  FrameReadyObserver&       mObserver;
-  uint32_t                  mBatchSize;
-  uint32_t                  mInterval;
-  TextureManager::LoadState mLoadState;
-  bool                      mRequestingLoad : 1;
-  bool                      mTextureManagerAlive : 1;
+  TextureManager&                     mTextureManager;
+  FrameReadyObserver&                 mObserver;
+  TextureManager::MaskingDataPointer& mMaskingData;
+  Dali::ImageDimensions               mDesiredSize;
+  Dali::FittingMode::Type             mFittingMode : 3;
+  Dali::SamplingMode::Type            mSamplingMode : 4;
+  uint32_t                            mBatchSize;
+  uint32_t                            mInterval;
+  TextureManager::LoadState           mLoadState;
+  bool                                mRequestingLoad : 1;
+  bool                                mPreMultiplyOnLoad : 1;
+  bool                                mTextureManagerAlive : 1;
 };
 
-} //namespace Internal
-} //namespace Toolkit
-} //namespace Dali
+} // namespace Internal
+} // namespace Toolkit
+} // namespace Dali
 
 #endif // DALI_TOOLKIT_INTERNAL_IMAGE_CACHE_H