From 178141ae86142b5ff78241aafc160999d7a9e0fd Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Tue, 13 Jul 2021 12:12:20 +0900 Subject: [PATCH] CanvasRenderer: Add RemoveAllDrawables() API Add an API that removes the all drawables registered with AddDrawable(). Change-Id: I6483f99a7acc106022fbd4eec3fbf2cab100f1e0 --- dali/devel-api/adaptor-framework/canvas-renderer.cpp | 5 +++++ dali/devel-api/adaptor-framework/canvas-renderer.h | 6 ++++++ .../canvas-renderer/common/canvas-renderer-impl.cpp | 5 +++++ .../canvas-renderer/common/canvas-renderer-impl.h | 5 +++++ .../generic/canvas-renderer-impl-generic.cpp | 5 +++++ .../generic/canvas-renderer-impl-generic.h | 5 +++++ .../tizen/canvas-renderer-impl-tizen.cpp | 18 ++++++++++++++++++ .../canvas-renderer/tizen/canvas-renderer-impl-tizen.h | 5 +++++ .../ubuntu/canvas-renderer-impl-ubuntu.cpp | 18 ++++++++++++++++++ .../ubuntu/canvas-renderer-impl-ubuntu.h | 5 +++++ 10 files changed, 77 insertions(+) diff --git a/dali/devel-api/adaptor-framework/canvas-renderer.cpp b/dali/devel-api/adaptor-framework/canvas-renderer.cpp index 1ed7512..998870e 100644 --- a/dali/devel-api/adaptor-framework/canvas-renderer.cpp +++ b/dali/devel-api/adaptor-framework/canvas-renderer.cpp @@ -73,6 +73,11 @@ bool CanvasRenderer::RemoveDrawable(Drawable& drawable) return GetImplementation(*this).RemoveDrawable(drawable); } +bool CanvasRenderer::RemoveAllDrawables() +{ + return GetImplementation(*this).RemoveAllDrawables(); +} + bool CanvasRenderer::SetSize(const Vector2& size) { return GetImplementation(*this).SetSize(size); diff --git a/dali/devel-api/adaptor-framework/canvas-renderer.h b/dali/devel-api/adaptor-framework/canvas-renderer.h index 85e898b..8896223 100644 --- a/dali/devel-api/adaptor-framework/canvas-renderer.h +++ b/dali/devel-api/adaptor-framework/canvas-renderer.h @@ -110,6 +110,12 @@ public: bool RemoveDrawable(Drawable& drawable); /** + * @brief Remove all drawable objects added to the CanvasRenderer. + * @return Returns True when it's successful. False otherwise. + */ + bool RemoveAllDrawables(); + + /** * @brief Returns the PixelBuffer, which is the Render buffer of Canvas. * * @return Returns the pixel buffer. diff --git a/dali/internal/canvas-renderer/common/canvas-renderer-impl.cpp b/dali/internal/canvas-renderer/common/canvas-renderer-impl.cpp index 14892a2..4ed9de9 100644 --- a/dali/internal/canvas-renderer/common/canvas-renderer-impl.cpp +++ b/dali/internal/canvas-renderer/common/canvas-renderer-impl.cpp @@ -63,6 +63,11 @@ bool CanvasRenderer::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) return false; } +bool CanvasRenderer::RemoveAllDrawables() +{ + return false; +} + bool CanvasRenderer::SetSize(const Vector2& size) { return false; diff --git a/dali/internal/canvas-renderer/common/canvas-renderer-impl.h b/dali/internal/canvas-renderer/common/canvas-renderer-impl.h index 6f12b51..23816d5 100644 --- a/dali/internal/canvas-renderer/common/canvas-renderer-impl.h +++ b/dali/internal/canvas-renderer/common/canvas-renderer-impl.h @@ -79,6 +79,11 @@ public: virtual bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable); /** + * @copydoc Dali::CanvasRenderer::RemoveAllDrawables() + */ + virtual bool RemoveAllDrawables(); + + /** * @copydoc Dali::CanvasRenderer::SetSize() */ virtual bool SetSize(const Vector2& size); diff --git a/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.cpp b/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.cpp index cedccec..b1a48a3 100644 --- a/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.cpp +++ b/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.cpp @@ -85,6 +85,11 @@ bool CanvasRendererGeneric::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawa return false; } +bool CanvasRendererGeneric::RemoveAllDrawables() +{ + return false; +} + bool CanvasRendererGeneric::SetSize(const Vector2& size) { return false; diff --git a/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.h b/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.h index 9fea46f..8a96737 100644 --- a/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.h +++ b/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.h @@ -77,6 +77,11 @@ public: bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) override; /** + * @copydoc Dali::CanvasRenderer::RemoveAllDrawables() + */ + bool RemoveAllDrawables() override; + + /** * @copydoc Dali::CanvasRenderer::SetSize() */ bool SetSize(const Vector2& size) override; diff --git a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp index 72fe081..86a8a77 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp @@ -286,6 +286,24 @@ bool CanvasRendererTizen::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawabl return false; } +bool CanvasRendererTizen::RemoveAllDrawables() +{ +#ifdef THORVG_SUPPORT + for(auto& it : mDrawables) + { + Internal::Adaptor::Drawable& drawableImpl = GetImplementation(it); + drawableImpl.SetAdded(false); + } + + mDrawables.clear(); + mChanged = true; + + return true; +#else + return false; +#endif +} + bool CanvasRendererTizen::SetSize(const Vector2& size) { if(size.width < 1.0f || size.height < 1.0f) diff --git a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h index e7fae0e..9326639 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h @@ -82,6 +82,11 @@ public: bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) override; /** + * @copydoc Dali::CanvasRenderer::RemoveAllDrawables() + */ + bool RemoveAllDrawables() override; + + /** * @copydoc Dali::CanvasRenderer::SetSize() */ bool SetSize(const Vector2& size) override; diff --git a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp index 1d9cc02..7a88442 100644 --- a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp +++ b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp @@ -286,6 +286,24 @@ bool CanvasRendererUbuntu::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawab return false; } +bool CanvasRendererUbuntu::RemoveAllDrawables() +{ +#ifdef THORVG_SUPPORT + for(auto& it : mDrawables) + { + Internal::Adaptor::Drawable& drawableImpl = GetImplementation(it); + drawableImpl.SetAdded(false); + } + + mDrawables.clear(); + mChanged = true; + + return true; +#else + return false; +#endif +} + bool CanvasRendererUbuntu::SetSize(const Vector2& size) { if(size.width < 1.0f || size.height < 1.0f) diff --git a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.h b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.h index c5224f0..4553cf6 100644 --- a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.h +++ b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.h @@ -82,6 +82,11 @@ public: bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) override; /** + * @copydoc Dali::CanvasRenderer::RemoveAllDrawables() + */ + bool RemoveAllDrawables() override; + + /** * @copydoc Dali::CanvasRenderer::SetSize() */ bool SetSize(const Vector2& size) override; -- 2.7.4