[dali_2.3.21] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / svg / svg-visual.h
index 2f49e16..faf8a22 100644 (file)
@@ -25,6 +25,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/visuals/visual-base-impl.h>
 #include <dali-toolkit/internal/visuals/visual-url.h>
+#include <dali-toolkit/internal/visuals/svg/svg-task.h>
 
 namespace Dali
 {
@@ -72,9 +73,10 @@ public:
    * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
    * @param[in] shaderFactory The ImageVisualShaderFactory object
    * @param[in] imageUrl The URL to svg resource 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 SvgVisualPtr New(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl);
+  static SvgVisualPtr New(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, ImageDimensions size = ImageDimensions());
 
 public: // from Visual
   /**
@@ -92,6 +94,11 @@ public: // from Visual
    */
   void DoCreateInstancePropertyMap(Property::Map& map) const override;
 
+  /**
+   * @copydoc Visual::Base::EnablePreMultipliedAlpha
+   */
+  void EnablePreMultipliedAlpha(bool preMultiplied) override;
+
 protected:
   /**
    * @brief Constructor.
@@ -99,8 +106,9 @@ protected:
    * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object
    * @param[in] shaderFactory The ImageVisualShaderFactory object
    * @param[in] imageUrl The URL to svg resource to use
+   * @param[in] size The width and height of the rasterized buffer. The visual size will be used if these are 0.
    */
-  SvgVisual(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl);
+  SvgVisual(VisualFactoryCache& factoryCache, ImageVisualShaderFactory& shaderFactory, const VisualUrl& imageUrl, ImageDimensions size);
 
   /**
    * @brief A reference counted object may only be deleted by calling Unreference().
@@ -146,19 +154,12 @@ public:
   /**
    * @bried Apply the rasterized image to the visual.
    *
-   * @param[in] vectorImage The data of vector image.
-   * @param[in] rasterizedPixelData The pixel buffer with the rasterized pixels
-   * @param[in] bool Whether the resource is loaded
+   * @param[in] task SvgTaskPtr
    */
-  void ApplyRasterizedImage(VectorImageRenderer vectorImage, PixelData rasterizedPixelData, bool isLoaded);
+  void ApplyRasterizedImage(SvgTaskPtr task);
 
 private:
   /**
-   * @brief Load the SVG Image from the set URL.
-   */
-  void Load();
-
-  /**
    * @bried Rasterize the svg with the given size, and add it to the visual.
    *
    * @param[in] size The target size of the SVG rasterization.
@@ -186,7 +187,10 @@ private:
   uint32_t                  mDefaultWidth;
   uint32_t                  mDefaultHeight;
   WeakHandle<Actor>         mPlacementActor;
-  Vector2                   mVisualSize;
+  Vector2                   mRasterizedSize;
+  Dali::ImageDimensions     mDesiredSize{};
+  SvgTaskPtr                mLoadingTask;
+  SvgTaskPtr                mRasterizingTask;
   bool                      mLoadFailed;
   bool                      mAttemptAtlasing; ///< If true will attempt atlasing, otherwise create unique texture
 };