From: JunsuChoi Date: Tue, 13 Jul 2021 02:03:58 +0000 (+0900) Subject: CanvasRenderer: Add RemoveDrawable() API X-Git-Tag: dali_2.0.37~3^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git;a=commitdiff_plain;h=ed157beb84f07e4d348fe7027013c636ab2e4061 CanvasRenderer: Add RemoveDrawable() API Add an API that removes the Drawable registered with AddDrawable() from list in CanvasRenderer. Change-Id: I70801e91df3e7d19dce4175b8274e351d12f5225 --- diff --git a/dali/devel-api/adaptor-framework/canvas-renderer.cpp b/dali/devel-api/adaptor-framework/canvas-renderer.cpp index 0445b6c..1ed7512 100644 --- a/dali/devel-api/adaptor-framework/canvas-renderer.cpp +++ b/dali/devel-api/adaptor-framework/canvas-renderer.cpp @@ -68,6 +68,11 @@ bool CanvasRenderer::Rasterize() return GetImplementation(*this).Rasterize(); } +bool CanvasRenderer::RemoveDrawable(Drawable& drawable) +{ + return GetImplementation(*this).RemoveDrawable(drawable); +} + 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 2a7d61d..85e898b 100644 --- a/dali/devel-api/adaptor-framework/canvas-renderer.h +++ b/dali/devel-api/adaptor-framework/canvas-renderer.h @@ -102,6 +102,14 @@ public: bool AddDrawable(Drawable& drawable); /** + * @brief Remove drawable object to the CanvasView. + * This method is similar to deregistration. Freeing memory is not concerned for drawables being removed. + * @param[in] drawable the drawable object. + * @return Returns True when it's successful. False otherwise. + */ + bool RemoveDrawable(Drawable& drawable); + + /** * @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 6e66191..14892a2 100644 --- a/dali/internal/canvas-renderer/common/canvas-renderer-impl.cpp +++ b/dali/internal/canvas-renderer/common/canvas-renderer-impl.cpp @@ -58,6 +58,11 @@ bool CanvasRenderer::Rasterize() return false; } +bool CanvasRenderer::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) +{ + 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 b2d3239..6f12b51 100644 --- a/dali/internal/canvas-renderer/common/canvas-renderer-impl.h +++ b/dali/internal/canvas-renderer/common/canvas-renderer-impl.h @@ -74,6 +74,11 @@ public: virtual bool Rasterize(); /** + * @copydoc Dali::CanvasRenderer::RemoveDrawable() + */ + virtual bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable); + + /** * @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 40f2e90..cedccec 100644 --- a/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.cpp +++ b/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.cpp @@ -80,6 +80,11 @@ bool CanvasRendererGeneric::Rasterize() return false; } +bool CanvasRendererGeneric::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) +{ + 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 3f43078..9fea46f 100644 --- a/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.h +++ b/dali/internal/canvas-renderer/generic/canvas-renderer-impl-generic.h @@ -72,6 +72,11 @@ public: virtual bool Rasterize(); /** + * @copydoc Dali::CanvasRenderer::RemoveDrawable() + */ + bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) 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 2455d65..72fe081 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp @@ -267,6 +267,25 @@ bool CanvasRendererTizen::Rasterize() #endif } +bool CanvasRendererTizen::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) +{ +#ifdef THORVG_SUPPORT + DrawableGroup::DrawableVector::iterator it = std::find(mDrawables.begin(), mDrawables.end(), drawable); + if(it != mDrawables.end()) + { + Internal::Adaptor::Drawable& drawableImpl = GetImplementation(drawable); + drawableImpl.SetAdded(false); + + mDrawables.erase(it); + mChanged = true; + + return true; + } + +#endif + return false; +} + 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 c73e9be..e7fae0e 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h @@ -77,6 +77,11 @@ public: bool Rasterize() override; /** + * @copydoc Dali::CanvasRenderer::RemoveDrawable() + */ + bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) 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 d97cf98..1d9cc02 100644 --- a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp +++ b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp @@ -267,6 +267,25 @@ bool CanvasRendererUbuntu::Rasterize() #endif } +bool CanvasRendererUbuntu::RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) +{ +#ifdef THORVG_SUPPORT + DrawableGroup::DrawableVector::iterator it = std::find(mDrawables.begin(), mDrawables.end(), drawable); + if(it != mDrawables.end()) + { + Internal::Adaptor::Drawable& drawableImpl = GetImplementation(drawable); + drawableImpl.SetAdded(false); + + mDrawables.erase(it); + mChanged = true; + + return true; + } + +#endif + return false; +} + 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 22aeb10..c5224f0 100644 --- a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.h +++ b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.h @@ -77,6 +77,11 @@ public: bool Rasterize() override; /** + * @copydoc Dali::CanvasRenderer::RemoveDrawable() + */ + bool RemoveDrawable(Dali::CanvasRenderer::Drawable& drawable) override; + + /** * @copydoc Dali::CanvasRenderer::SetSize() */ bool SetSize(const Vector2& size) override;