From df494197e177bea20cf7b848a5c67672a1093000 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Tue, 13 Apr 2021 16:07:30 +0900 Subject: [PATCH] CanvasRenderer::Shape: Add ResetPath() method for reset path information There was no way to modify or remote previously added path information. The user can update the shape by deleting the path information and adding a new path information by using ResetPath() API. Change-Id: Ia5a6484877aa410c18ba6c53d72bc65c77ad09fa --- .../adaptor-framework/canvas-renderer-shape.cpp | 5 +++++ .../adaptor-framework/canvas-renderer-shape.h | 7 +++++++ dali/internal/canvas-renderer/common/shape-impl.cpp | 5 +++++ dali/internal/canvas-renderer/common/shape-impl.h | 7 ++++++- .../canvas-renderer/tizen/shape-impl-tizen.cpp | 21 +++++++++++++++++++++ .../canvas-renderer/tizen/shape-impl-tizen.h | 5 +++++ .../canvas-renderer/ubuntu/shape-impl-ubuntu.cpp | 21 +++++++++++++++++++++ .../canvas-renderer/ubuntu/shape-impl-ubuntu.h | 5 +++++ 8 files changed, 75 insertions(+), 1 deletion(-) diff --git a/dali/devel-api/adaptor-framework/canvas-renderer-shape.cpp b/dali/devel-api/adaptor-framework/canvas-renderer-shape.cpp index 4dd6b75..56fc4ce 100644 --- a/dali/devel-api/adaptor-framework/canvas-renderer-shape.cpp +++ b/dali/devel-api/adaptor-framework/canvas-renderer-shape.cpp @@ -78,6 +78,11 @@ bool CanvasRenderer::Shape::Close() return GetImplementation(*this).Close(); } +bool CanvasRenderer::Shape::ResetPath() +{ + return GetImplementation(*this).ResetPath(); +} + bool CanvasRenderer::Shape::SetFillColor(Vector4 color) { return GetImplementation(*this).SetFillColor(color); diff --git a/dali/devel-api/adaptor-framework/canvas-renderer-shape.h b/dali/devel-api/adaptor-framework/canvas-renderer-shape.h index ddd621c..91ca295 100644 --- a/dali/devel-api/adaptor-framework/canvas-renderer-shape.h +++ b/dali/devel-api/adaptor-framework/canvas-renderer-shape.h @@ -180,6 +180,13 @@ public: bool Close(); /** + * @brief Reset the added path(rect, circle, path, etc...) information. + * Color and Stroke information are keeped. + * @return Returns True when it's successful. False otherwise. + */ + bool ResetPath(); + + /** * @brief Set the color to use for filling the path. * @param[in] color The color value. * @return Returns True when it's successful. False otherwise. diff --git a/dali/internal/canvas-renderer/common/shape-impl.cpp b/dali/internal/canvas-renderer/common/shape-impl.cpp index 3b3e850..b71e7a6 100644 --- a/dali/internal/canvas-renderer/common/shape-impl.cpp +++ b/dali/internal/canvas-renderer/common/shape-impl.cpp @@ -63,6 +63,11 @@ bool Shape::Close() return false; } +bool Shape::ResetPath() +{ + return false; +} + bool Shape::SetFillColor(Vector4 color) { return false; diff --git a/dali/internal/canvas-renderer/common/shape-impl.h b/dali/internal/canvas-renderer/common/shape-impl.h index e5b485d..2b61935 100644 --- a/dali/internal/canvas-renderer/common/shape-impl.h +++ b/dali/internal/canvas-renderer/common/shape-impl.h @@ -82,11 +82,16 @@ public: virtual bool AddCubicTo(Vector2 controlPoint1, Vector2 controlPoint2, Vector2 endPoint); /** - * @copydoc Dali::CanvasRenderer::Shape::AddClose + * @copydoc Dali::CanvasRenderer::Shape::Close */ virtual bool Close(); /** + * @copydoc Dali::CanvasRenderer::Shape::ResetPath + */ + virtual bool ResetPath(); + + /** * @copydoc Dali::CanvasRenderer::Shape::SetFillColor */ virtual bool SetFillColor(Vector4 color); diff --git a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp index 04db5c4..7c8dd2a 100644 --- a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp @@ -216,6 +216,27 @@ bool ShapeTizen::Close() #endif } +bool ShapeTizen::ResetPath() +{ +#ifdef THORVG_SUPPORT + if(!mTvgShape) + { + DALI_LOG_ERROR("Shape is null\n"); + return false; + } + + if(static_cast(mTvgShape)->reset() != tvg::Result::Success) + { + DALI_LOG_ERROR("reset() fail.\n"); + return false; + } + Drawable::SetChanged(true); + return true; +#else + return false; +#endif +} + bool ShapeTizen::SetFillColor(Vector4 color) { #ifdef THORVG_SUPPORT diff --git a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h index 0e93113..3b6fdb0 100644 --- a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h @@ -83,6 +83,11 @@ public: bool Close() override; /** + * @copydoc Dali::CanvasRenderer::Shape::ResetPath + */ + bool ResetPath() override; + + /** * @copydoc Dali::CanvasRenderer::Shape::SetFillColor */ bool SetFillColor(Vector4 color) override; diff --git a/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp b/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp index 6eae2d4..3605083 100644 --- a/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp +++ b/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp @@ -216,6 +216,27 @@ bool ShapeUbuntu::Close() #endif } +bool ShapeUbuntu::ResetPath() +{ +#ifdef THORVG_SUPPORT + if(!mTvgShape) + { + DALI_LOG_ERROR("Shape is null\n"); + return false; + } + + if(static_cast(mTvgShape)->reset() != tvg::Result::Success) + { + DALI_LOG_ERROR("reset() fail.\n"); + return false; + } + Drawable::SetChanged(true); + return true; +#else + return false; +#endif +} + bool ShapeUbuntu::SetFillColor(Vector4 color) { #ifdef THORVG_SUPPORT diff --git a/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.h b/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.h index 491a2bd..bd4b087 100644 --- a/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.h +++ b/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.h @@ -83,6 +83,11 @@ public: bool Close() override; /** + * @copydoc Dali::CanvasRenderer::Shape::ResetPath + */ + bool ResetPath() override; + + /** * @copydoc Dali::CanvasRenderer::Shape::SetFillColor */ bool SetFillColor(Vector4 color) override; -- 2.7.4