(Canvas Renderer) Moved Devel Headers into sub-folder to improve SAM score
[platform/core/uifw/dali-adaptor.git] / dali / internal / canvas-renderer / ubuntu / canvas-renderer-impl-ubuntu.h
index b3ea460..e766d12 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_INTERNAL_UBUNTU_CANVAS_RENDERER_IMPL_UBUNTU_H
 
 /*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2022 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.
 #ifdef THORVG_SUPPORT
 #include <thorvg.h>
 #endif
-#include <dali/public-api/object/base-object.h>
+#include <dali/devel-api/threading/mutex.h>
 #include <dali/public-api/object/weak-handle.h>
+#include <dali/public-api/rendering/texture.h>
 
 // INTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/canvas-renderer-drawable.h>
-#include <dali/devel-api/adaptor-framework/canvas-renderer.h>
-#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
+#include <dali/devel-api/adaptor-framework/canvas-renderer/canvas-renderer-drawable.h>
+#include <dali/devel-api/adaptor-framework/canvas-renderer/canvas-renderer.h>
 #include <dali/internal/canvas-renderer/common/canvas-renderer-impl.h>
+#include <dali/internal/canvas-renderer/common/drawable-group-impl.h>
+#include <dali/devel-api/adaptor-framework/pixel-buffer.h>
 
 namespace Dali
 {
@@ -56,9 +58,9 @@ public:
   bool Commit() override;
 
   /**
-   * @copydoc Dali::CanvasRenderer::GetPixelBuffer()
+   * @copydoc Dali::CanvasRenderer::GetRasterizedTexture()
    */
-  Devel::PixelBuffer GetPixelBuffer() override;
+  Dali::Texture GetRasterizedTexture() override;
 
   /**
    * @copydoc Dali::CanvasRenderer::AddDrawable()
@@ -66,14 +68,44 @@ public:
   bool AddDrawable(Dali::CanvasRenderer::Drawable& drawable) override;
 
   /**
+   * @copydoc Dali::CanvasRenderer::IsCanvasChanged()
+   */
+  bool IsCanvasChanged() const override;
+
+  /**
+   * @copydoc Dali::CanvasRenderer::Rasterize()
+   */
+  bool Rasterize() override;
+
+  /**
+   * @copydoc Dali::CanvasRenderer::RemoveDrawable()
+   */
+  bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) override;
+
+  /**
+   * @copydoc Dali::CanvasRenderer::RemoveAllDrawables()
+   */
+  bool RemoveAllDrawables() override;
+
+  /**
    * @copydoc Dali::CanvasRenderer::SetSize()
    */
-  bool SetSize(const Vector2& size) override;
+  bool SetSize(Vector2 size) override;
 
   /**
    * @copydoc Dali::CanvasRenderer::GetSize()
    */
-  const Vector2& GetSize() override;
+  Vector2 GetSize() const override;
+
+  /**
+   * @copydoc Dali::CanvasRenderer::SetViewBox()
+   */
+  bool SetViewBox(const Vector2& viewBox) override;
+
+  /**
+   * @copydoc Dali::CanvasRenderer::GetViewBox()
+   */
+  const Vector2& GetViewBox() override;
 
 private:
   CanvasRendererUbuntu()                            = delete;
@@ -104,16 +136,41 @@ private:
    */
   void MakeTargetBuffer(const Vector2& size);
 
-private:
-  Devel::PixelBuffer mPixelBuffer;
+#ifdef THORVG_SUPPORT
+  /**
+   * @brief Get drawables changed status.
+   * If drawable is a type that can have child drawables, it is called recursively.
+   * @param[in] drawable The drawable object.
+   * @return Returns whether drawables have changed.
+   */
+  bool HaveDrawablesChanged(const Dali::CanvasRenderer::Drawable& drawable) const;
 
+  /**
+   * @brief Update drawables changed status.
+   * If drawable is a type that can have child drawables, it is called recursively.
+   * @param[in] drawable The drawable object.
+   * @param[in] changed The state of changed.
+   */
+  void UpdateDrawablesChanged(Dali::CanvasRenderer::Drawable& drawable, bool changed);
+
+  /**
+   * @brief Push drawable object to parent.
+   * If drawable is a type that can have child drawables, it is called recursively.
+   * @param[in] drawable The drawable object.
+   * @param[in] group The scene object of tvg that can be drawable group.
+   */
+  void PushDrawableToGroup(Dali::CanvasRenderer::Drawable& drawable, tvg::Scene* group);
+#endif
+
+private:
 #ifdef THORVG_SUPPORT
+  Devel::PixelBuffer             mPixelBuffer;
+  Dali::Texture                  mRasterizedTexture;
+  Dali::Mutex                    mMutex;
   std::unique_ptr<tvg::SwCanvas> mTvgCanvas;
   tvg::Scene*                    mTvgRoot;
 #endif
-  typedef std::vector<WeakHandle<Dali::CanvasRenderer::Drawable> > DrawableVector;
-  typedef DrawableVector::iterator                                 DrawableVectorIterator;
-  DrawableVector                                                   mDrawables;
+  DrawableGroup::DrawableVector mDrawables;
 
   Vector2 mSize;
   Vector2 mViewBox;