Fix issue where ThorVG is not available on older versions of Tizen 88/256588/2
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Wed, 7 Apr 2021 15:58:18 +0000 (16:58 +0100)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Wed, 7 Apr 2021 16:19:15 +0000 (17:19 +0100)
Change-Id: I4a3a3ca744321ff5cdc7db958c2ff52f35984bd7

dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.cpp
dali/internal/canvas-renderer/tizen/canvas-renderer-impl-tizen.h
dali/internal/canvas-renderer/tizen/drawable-impl-tizen.cpp
dali/internal/canvas-renderer/tizen/drawable-impl-tizen.h
dali/internal/canvas-renderer/tizen/shape-impl-tizen.cpp
dali/internal/canvas-renderer/tizen/shape-impl-tizen.h
dali/internal/canvas-renderer/ubuntu/canvas-renderer-impl-ubuntu.cpp
dali/internal/canvas-renderer/ubuntu/shape-impl-ubuntu.cpp

index 95135bf..b1b043c 100644 (file)
@@ -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<uint32_t*>(pBuffer), size.width, size.width, size.height, tvg::SwCanvas::ABGR8888);
+#endif
 }
 
 } // namespace Adaptor
index 7e15533..eea66be 100644 (file)
  */
 
 // EXTERNAL INCLUDES
-#include <dali/public-api/object/weak-handle.h>
+#ifdef THORVG_SUPPORT
 #include <thorvg.h>
+#endif
+#include <dali/public-api/object/weak-handle.h>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/canvas-renderer-drawable.h>
@@ -104,8 +106,10 @@ private:
 private:
   Devel::PixelBuffer mPixelBuffer;
 
-  std::unique_ptr<tvg::SwCanvas>                                   mTvgCanvas;
-  tvg::Scene*                                                      mTvgRoot;
+#ifdef THORVG_SUPPORT
+  std::unique_ptr<tvg::SwCanvas> mTvgCanvas;
+  tvg::Scene*                    mTvgRoot;
+#endif
   typedef std::vector<WeakHandle<Dali::CanvasRenderer::Drawable> > DrawableVector;
   typedef DrawableVector::iterator                                 DrawableVectorIterator;
   DrawableVector                                                   mDrawables;
index 464d535..a3b453e 100644 (file)
@@ -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<void*>(mTvgPaint);
+#else
+  return nullptr;
+#endif
 }
 
 void DrawableTizen::SetObject(const void* object)
 {
+#ifdef THORVG_SUPPORT
   if(object)
   {
     mTvgPaint = static_cast<tvg::Paint*>((void*)object);
@@ -184,6 +218,7 @@ void DrawableTizen::SetObject(const void* object)
       delete mTvgPaint;
     }
   }
+#endif
 }
 
 void DrawableTizen::SetChanged(bool changed)
index e73ec78..836dd57 100644 (file)
  */
 
 // EXTERNAL INCLUDES
-#include <dali/public-api/object/base-object.h>
+#ifdef THORVG_SUPPORT
 #include <thorvg.h>
+#endif
+#include <dali/public-api/object/base-object.h>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/canvas-renderer-drawable.h>
@@ -121,7 +123,9 @@ private:
   bool mAdded;
   bool mChanged;
 
+#ifdef THORVG_SUPPORT
   tvg::Paint* mTvgPaint;
+#endif
 };
 
 } // namespace Adaptor
index 5e66c54..04db5c4 100644 (file)
@@ -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<void*>(mTvgShape));
+#endif
 }
 
 bool ShapeTizen::AddRect(Rect<float> 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<float> 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<tvg::Shape*>(mTvgShape)->fillRule();
 
   return static_cast<Dali::CanvasRenderer::Shape::FillRule>(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<tvg::Shape*>(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<float> dashPattern)
 {
+#ifdef THORVG_SUPPORT
   if(!mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
@@ -331,10 +395,14 @@ bool ShapeTizen::SetStrokeDash(const Dali::Vector<float> dashPattern)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Dali::Vector<float> ShapeTizen::GetStrokeDash() const
 {
+#ifdef THORVG_SUPPORT
   if(!mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
@@ -359,10 +427,14 @@ Dali::Vector<float> ShapeTizen::GetStrokeDash() const
     dashPattern.PushBack(tvgDashPattern[i]);
   }
   return dashPattern;
+#else
+  return Vector<float>();
+#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<tvg::Shape*>(mTvgShape)->strokeCap();
 
   return static_cast<Dali::CanvasRenderer::Shape::StrokeCap>(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<tvg::Shape*>(mTvgShape)->strokeJoin();
 
   return static_cast<Dali::CanvasRenderer::Shape::StrokeJoin>(join);
+#endif
+  return Dali::CanvasRenderer::Shape::StrokeJoin::BEVEL;
 }
 
 } // namespace Adaptor
index 578a135..0e93113 100644 (file)
  */
 
 // EXTERNAL INCLUDES
+#ifdef THORVG_SUPPORT
+#include <thorvg.h>
+#endif
 #include <dali/public-api/object/base-object.h>
 #include <dali/public-api/signals/connection-tracker.h>
-#include <thorvg.h>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/canvas-renderer-shape.h>
@@ -169,8 +171,10 @@ private:
 private:
   void Initialize();
 
+#ifdef THORVG_SUPPORT
 private:
   tvg::Shape* mTvgShape;
+#endif
 };
 
 } // namespace Adaptor
index 1be78b9..34dba31 100644 (file)
@@ -127,6 +127,7 @@ bool CanvasRendererUbuntu::Commit()
     {
       changed = true;
       drawableImpl.SetChanged(false);
+      break;
     }
   }
 
index 79a4871..6eae2d4 100644 (file)
@@ -68,7 +68,6 @@ void ShapeUbuntu::Initialize()
 
   Drawable::Create();
   Drawable::SetObject(static_cast<void*>(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
 }