From: Adeel Kazmi Date: Wed, 7 Apr 2021 15:58:18 +0000 (+0100) Subject: Fix issue where ThorVG is not available on older versions of Tizen X-Git-Tag: dali_2.0.21~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F88%2F256588%2F2;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git Fix issue where ThorVG is not available on older versions of Tizen Change-Id: I4a3a3ca744321ff5cdc7db958c2ff52f35984bd7 --- 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 95135bf..b1b043c 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp @@ -52,8 +52,10 @@ CanvasRendererTizen* CanvasRendererTizen::New(const Vector2& viewBox) CanvasRendererTizen::CanvasRendererTizen(const Vector2& viewBox) : mPixelBuffer(nullptr), +#ifdef THORVG_SUPPORT mTvgCanvas(nullptr), mTvgRoot(nullptr), +#endif mSize(0, 0), mViewBox(0, 0), mChanged(false) @@ -63,6 +65,7 @@ CanvasRendererTizen::CanvasRendererTizen(const Vector2& viewBox) CanvasRendererTizen::~CanvasRendererTizen() { +#ifdef THORVG_SUPPORT for(DrawableVectorIterator it = mDrawables.begin(), endIt = mDrawables.end(); it != endIt; @@ -78,10 +81,12 @@ CanvasRendererTizen::~CanvasRendererTizen() } //Terminate ThorVG Engine tvg::Initializer::term(tvg::CanvasEngine::Sw); +#endif } void CanvasRendererTizen::Initialize(const Vector2& viewBox) { +#ifdef THORVG_SUPPORT if(tvg::Initializer::init(tvg::CanvasEngine::Sw, 0 /*threads*/) != tvg::Result::Success) { DALI_LOG_ERROR("ThorVG engine initialize failed\n"); @@ -99,10 +104,12 @@ void CanvasRendererTizen::Initialize(const Vector2& viewBox) auto scene = tvg::Scene::gen(); mTvgRoot = scene.get(); mTvgCanvas->push(move(scene)); +#endif } bool CanvasRendererTizen::Commit() { +#ifdef THORVG_SUPPORT bool changed = false; for(DrawableVectorIterator it = mDrawables.begin(), @@ -157,6 +164,9 @@ bool CanvasRendererTizen::Commit() return false; } return true; +#else + return false; +#endif } Devel::PixelBuffer CanvasRendererTizen::GetPixelBuffer() @@ -166,6 +176,7 @@ Devel::PixelBuffer CanvasRendererTizen::GetPixelBuffer() bool CanvasRendererTizen::AddDrawable(Dali::CanvasRenderer::Drawable& drawable) { +#ifdef THORVG_SUPPORT bool exist = false; for(DrawableVectorIterator it = mDrawables.begin(), endIt = mDrawables.end(); @@ -208,6 +219,9 @@ bool CanvasRendererTizen::AddDrawable(Dali::CanvasRenderer::Drawable& drawable) mChanged = true; return true; +#else + return false; +#endif } bool CanvasRendererTizen::SetSize(const Vector2& size) @@ -235,6 +249,7 @@ const Vector2& CanvasRendererTizen::GetSize() void CanvasRendererTizen::MakeTargetBuffer(const Vector2& size) { +#ifdef THORVG_SUPPORT mPixelBuffer = Devel::PixelBuffer::New(size.width, size.height, Dali::Pixel::RGBA8888); unsigned char* pBuffer; @@ -249,6 +264,7 @@ void CanvasRendererTizen::MakeTargetBuffer(const Vector2& size) mTvgCanvas->sync(); mTvgCanvas->target(reinterpret_cast(pBuffer), size.width, size.width, size.height, tvg::SwCanvas::ABGR8888); +#endif } } // namespace Adaptor 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 7e15533..eea66be 100644 --- a/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h @@ -19,8 +19,10 @@ */ // EXTERNAL INCLUDES -#include +#ifdef THORVG_SUPPORT #include +#endif +#include // INTERNAL INCLUDES #include @@ -104,8 +106,10 @@ private: private: Devel::PixelBuffer mPixelBuffer; - std::unique_ptr mTvgCanvas; - tvg::Scene* mTvgRoot; +#ifdef THORVG_SUPPORT + std::unique_ptr mTvgCanvas; + tvg::Scene* mTvgRoot; +#endif typedef std::vector > DrawableVector; typedef DrawableVector::iterator DrawableVectorIterator; DrawableVector mDrawables; diff --git a/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.cpp b/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.cpp index 464d535..a3b453e 100644 --- a/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.cpp @@ -48,21 +48,27 @@ DrawableTizen* DrawableTizen::New() DrawableTizen::DrawableTizen() : mAdded(false), - mChanged(false), + mChanged(false) +#ifdef THORVG_SUPPORT + , mTvgPaint(nullptr) +#endif { } DrawableTizen::~DrawableTizen() { +#ifdef THORVG_SUPPORT if(mTvgPaint && !mAdded) { delete mTvgPaint; } +#endif } bool DrawableTizen::SetOpacity(float opacity) { +#ifdef THORVG_SUPPORT if(!mTvgPaint) { DALI_LOG_ERROR("Drawable is null [%p]\n", this); @@ -75,20 +81,28 @@ bool DrawableTizen::SetOpacity(float opacity) } SetChanged(true); return true; +#else + return false; +#endif } float DrawableTizen::GetOpacity() const { +#ifdef THORVG_SUPPORT if(!mTvgPaint) { DALI_LOG_ERROR("Drawable is null [%p]\n", this); return 0; } return (float)mTvgPaint->opacity() / 255.f; +#else + return 0; +#endif } bool DrawableTizen::Rotate(Degree degree) { +#ifdef THORVG_SUPPORT if(!mTvgPaint) { DALI_LOG_ERROR("Drawable is null\n"); @@ -102,10 +116,14 @@ bool DrawableTizen::Rotate(Degree degree) } SetChanged(true); return true; +#else + return false; +#endif } bool DrawableTizen::Scale(float factor) { +#ifdef THORVG_SUPPORT if(!mTvgPaint) { DALI_LOG_ERROR("Drawable is null\n"); @@ -119,10 +137,14 @@ bool DrawableTizen::Scale(float factor) } SetChanged(true); return true; +#else + return false; +#endif } bool DrawableTizen::Translate(Vector2 translate) { +#ifdef THORVG_SUPPORT if(!mTvgPaint) { DALI_LOG_ERROR("Drawable is null\n"); @@ -136,10 +158,14 @@ bool DrawableTizen::Translate(Vector2 translate) } SetChanged(true); return true; +#else + return false; +#endif } bool DrawableTizen::Transform(const Dali::Matrix3& matrix) { +#ifdef THORVG_SUPPORT if(!mTvgPaint) { DALI_LOG_ERROR("Drawable is null\n"); @@ -155,6 +181,9 @@ bool DrawableTizen::Transform(const Dali::Matrix3& matrix) } SetChanged(true); return true; +#else + return false; +#endif } void DrawableTizen::SetDrawableAdded(bool added) @@ -164,11 +193,16 @@ void DrawableTizen::SetDrawableAdded(bool added) void* DrawableTizen::GetObject() const { +#ifdef THORVG_SUPPORT return static_cast(mTvgPaint); +#else + return nullptr; +#endif } void DrawableTizen::SetObject(const void* object) { +#ifdef THORVG_SUPPORT if(object) { mTvgPaint = static_cast((void*)object); @@ -184,6 +218,7 @@ void DrawableTizen::SetObject(const void* object) delete mTvgPaint; } } +#endif } void DrawableTizen::SetChanged(bool changed) diff --git a/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.h b/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.h index e73ec78..836dd57 100644 --- a/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/drawable-impl-tizen.h @@ -19,8 +19,10 @@ */ // EXTERNAL INCLUDES -#include +#ifdef THORVG_SUPPORT #include +#endif +#include // INTERNAL INCLUDES #include @@ -121,7 +123,9 @@ private: bool mAdded; bool mChanged; +#ifdef THORVG_SUPPORT tvg::Paint* mTvgPaint; +#endif }; } // namespace Adaptor diff --git a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp index 5e66c54..04db5c4 100644 --- a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp +++ b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp @@ -46,7 +46,9 @@ ShapeTizen* ShapeTizen::New() } ShapeTizen::ShapeTizen() +#ifdef THORVG_SUPPORT : mTvgShape(nullptr) +#endif { Initialize(); } @@ -57,6 +59,7 @@ ShapeTizen::~ShapeTizen() void ShapeTizen::Initialize() { +#ifdef THORVG_SUPPORT mTvgShape = tvg::Shape::gen().release(); if(!mTvgShape) { @@ -65,10 +68,12 @@ void ShapeTizen::Initialize() Drawable::Create(); Drawable::SetObject(static_cast(mTvgShape)); +#endif } bool ShapeTizen::AddRect(Rect rect, Vector2 roundedCorner) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null [%p]\n", this); @@ -81,10 +86,14 @@ bool ShapeTizen::AddRect(Rect rect, Vector2 roundedCorner) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::AddCircle(Vector2 center, Vector2 radius) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null [%p]\n", this); @@ -97,10 +106,14 @@ bool ShapeTizen::AddCircle(Vector2 center, Vector2 radius) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::AddArc(Vector2 center, float radius, float startAngle, float sweep, bool pie) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -114,10 +127,14 @@ bool ShapeTizen::AddArc(Vector2 center, float radius, float startAngle, float sw } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::AddMoveTo(Vector2 point) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -131,10 +148,14 @@ bool ShapeTizen::AddMoveTo(Vector2 point) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::AddLineTo(Vector2 line) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -148,10 +169,14 @@ bool ShapeTizen::AddLineTo(Vector2 line) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::AddCubicTo(Vector2 controlPoint1, Vector2 controlPoint2, Vector2 endPoint) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -165,10 +190,14 @@ bool ShapeTizen::AddCubicTo(Vector2 controlPoint1, Vector2 controlPoint2, Vector } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::Close() { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -182,10 +211,14 @@ bool ShapeTizen::Close() } Drawable::SetChanged(true); return true; +#else + return false; +#endif } bool ShapeTizen::SetFillColor(Vector4 color) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null [%p]\n", this); @@ -199,10 +232,14 @@ bool ShapeTizen::SetFillColor(Vector4 color) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } Vector4 ShapeTizen::GetFillColor() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null [%p]\n", this); @@ -216,10 +253,14 @@ Vector4 ShapeTizen::GetFillColor() const return Vector4(0, 0, 0, 0); } return Vector4(r / 255.f, g / 255.f, b / 255.f, a / 255.f); +#else + return Vector4::ZERO; +#endif } bool ShapeTizen::SetFillRule(Dali::CanvasRenderer::Shape::FillRule rule) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -232,10 +273,14 @@ bool ShapeTizen::SetFillRule(Dali::CanvasRenderer::Shape::FillRule rule) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } Dali::CanvasRenderer::Shape::FillRule ShapeTizen::GetFillRule() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -245,10 +290,13 @@ Dali::CanvasRenderer::Shape::FillRule ShapeTizen::GetFillRule() const tvg::FillRule rule = static_cast(mTvgShape)->fillRule(); return static_cast(rule); +#endif + return Dali::CanvasRenderer::Shape::FillRule::WINDING; } bool ShapeTizen::SetStrokeWidth(float width) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -262,20 +310,28 @@ bool ShapeTizen::SetStrokeWidth(float width) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } float ShapeTizen::GetStrokeWidth() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); return false; } return static_cast(mTvgShape)->strokeWidth(); +#else + return false; +#endif } bool ShapeTizen::SetStrokeColor(Vector4 color) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -289,10 +345,14 @@ bool ShapeTizen::SetStrokeColor(Vector4 color) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } Vector4 ShapeTizen::GetStrokeColor() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -307,10 +367,14 @@ Vector4 ShapeTizen::GetStrokeColor() const return Vector4(0, 0, 0, 0); } return Vector4(r / 255.f, g / 255.f, b / 255.f, a / 255.f); +#else + return Vector4(0, 0, 0, 0); +#endif } bool ShapeTizen::SetStrokeDash(const Dali::Vector dashPattern) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -331,10 +395,14 @@ bool ShapeTizen::SetStrokeDash(const Dali::Vector dashPattern) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } Dali::Vector ShapeTizen::GetStrokeDash() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -359,10 +427,14 @@ Dali::Vector ShapeTizen::GetStrokeDash() const dashPattern.PushBack(tvgDashPattern[i]); } return dashPattern; +#else + return Vector(); +#endif } bool ShapeTizen::SetStrokeCap(Dali::CanvasRenderer::Shape::StrokeCap cap) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -376,10 +448,14 @@ bool ShapeTizen::SetStrokeCap(Dali::CanvasRenderer::Shape::StrokeCap cap) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } Dali::CanvasRenderer::Shape::StrokeCap ShapeTizen::GetStrokeCap() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -389,10 +465,13 @@ Dali::CanvasRenderer::Shape::StrokeCap ShapeTizen::GetStrokeCap() const tvg::StrokeCap cap = static_cast(mTvgShape)->strokeCap(); return static_cast(cap); +#endif + return Dali::CanvasRenderer::Shape::StrokeCap::SQUARE; } bool ShapeTizen::SetStrokeJoin(Dali::CanvasRenderer::Shape::StrokeJoin join) { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -406,10 +485,14 @@ bool ShapeTizen::SetStrokeJoin(Dali::CanvasRenderer::Shape::StrokeJoin join) } Drawable::SetChanged(true); return true; +#else + return false; +#endif } Dali::CanvasRenderer::Shape::StrokeJoin ShapeTizen::GetStrokeJoin() const { +#ifdef THORVG_SUPPORT if(!mTvgShape) { DALI_LOG_ERROR("Shape is null\n"); @@ -419,6 +502,8 @@ Dali::CanvasRenderer::Shape::StrokeJoin ShapeTizen::GetStrokeJoin() const tvg::StrokeJoin join = static_cast(mTvgShape)->strokeJoin(); return static_cast(join); +#endif + return Dali::CanvasRenderer::Shape::StrokeJoin::BEVEL; } } // namespace Adaptor diff --git a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h index 578a135..0e93113 100644 --- a/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h +++ b/dali/internal/canvas-renderer/tizen/shape-impl-tizen.h @@ -19,9 +19,11 @@ */ // EXTERNAL INCLUDES +#ifdef THORVG_SUPPORT +#include +#endif #include #include -#include // INTERNAL INCLUDES #include @@ -169,8 +171,10 @@ private: private: void Initialize(); +#ifdef THORVG_SUPPORT private: tvg::Shape* mTvgShape; +#endif }; } // namespace Adaptor 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 1be78b9..34dba31 100644 --- a/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp +++ b/dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp @@ -127,6 +127,7 @@ bool CanvasRendererUbuntu::Commit() { changed = true; drawableImpl.SetChanged(false); + break; } } diff --git a/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp b/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp index 79a4871..6eae2d4 100644 --- a/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp +++ b/dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp @@ -68,7 +68,6 @@ void ShapeUbuntu::Initialize() Drawable::Create(); Drawable::SetObject(static_cast(mTvgShape)); - #endif } @@ -255,7 +254,7 @@ Vector4 ShapeUbuntu::GetFillColor() const } return Vector4(r / 255.f, g / 255.f, b / 255.f, a / 255.f); #else - return Vector4(0, 0, 0, 0); + return Vector4::ZERO; #endif }