CanvasRenderer:: Add Picture class
[platform/core/uifw/dali-adaptor.git] / dali / internal / canvas-renderer / common / drawable-impl.h
index be5d5aa..811a0d3 100644 (file)
@@ -19,9 +19,6 @@
  */
 
 // EXTERNAL INCLUDES
-#ifdef THORVG_SUPPORT
-#include <thorvg.h>
-#endif
 #include <dali/public-api/object/base-object.h>
 
 // INTERNAL INCLUDES
@@ -45,9 +42,21 @@ public:
    */
   enum class Types
   {
-    NONE = 0,      ///< Means that type is not defined.
-    SHAPE,         ///< Meaning of Shape class that inherits Drawable.
-    DRAWABLE_GROUP ///< Meaning of DrawableGorup class that inherits Drawable.
+    NONE = 0,       ///< Means that type is not defined.
+    SHAPE,          ///< Meaning of Shape class that inherits Drawable.
+    DRAWABLE_GROUP, ///< Meaning of DrawableGorup class that inherits Drawable.
+    PICTURE         ///< Meaning of Picture class that inherits Drawable.
+  };
+
+  /**
+   * @brief Enumeration indicating type used in the composition of two objects - the target and the source.
+   */
+  enum class CompositionType
+  {
+    NONE = 0,          ///< Means that type is not defined.
+    CLIP_PATH,         ///< The intersection of the source and the target is determined and only the resulting pixels from the source are rendered.
+    ALPHA_MASK,        ///< The pixels of the source and the target are alpha blended. As a result, only the part of the source, which intersects with the target is visible.
+    ALPHA_MASK_INVERSE ///< The pixels of the source and the complement to the target's pixels are alpha blended. As a result, only the part of the source which is not covered by the target is visible.
   };
 
 public:
@@ -102,6 +111,28 @@ public:
   virtual Rect<float> GetBoundingBox() const;
 
   /**
+   * @copydoc Dali::CanvasRenderer::Drawable::SetClipPath()
+   */
+  virtual bool SetClipPath(Dali::CanvasRenderer::Drawable& clip);
+
+  /**
+   * @copydoc Dali::CanvasRenderer::Drawable::SetMask()
+   */
+  virtual bool SetMask(Dali::CanvasRenderer::Drawable& mask, Dali::CanvasRenderer::Drawable::MaskType type);
+
+  /**
+   * @brief Returns a composition drawble object.
+   * @return Returns a composition drawble object.
+   */
+  virtual Dali::CanvasRenderer::Drawable GetCompositionDrawable() const;
+
+  /**
+   * @brief Returns a composition type
+   * @return Returns a composition type
+   */
+  virtual CompositionType GetCompositionType() const;
+
+  /**
    * @brief Set whether this drawable object was added to other object(CanvasRenderer or DrawableGroup) or not.
    * @param[in] added Ture if added, false otherwise.
    */