CanvasRenderer: Refactoring tvgObject management
[platform/core/uifw/dali-adaptor.git] / dali / internal / canvas-renderer / tizen / shape-impl-tizen.cpp
index 5e66c54..014af70 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,11 +68,14 @@ void ShapeTizen::Initialize()
 
   Drawable::Create();
   Drawable::SetObject(static_cast<void*>(mTvgShape));
+  Drawable::SetType(Drawable::Types::SHAPE);
+#endif
 }
 
 bool ShapeTizen::AddRect(Rect<float> rect, Vector2 roundedCorner)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null [%p]\n", this);
     return false;
@@ -81,11 +87,15 @@ bool ShapeTizen::AddRect(Rect<float> rect, Vector2 roundedCorner)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 bool ShapeTizen::AddCircle(Vector2 center, Vector2 radius)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null [%p]\n", this);
     return false;
@@ -97,11 +107,15 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -114,11 +128,15 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -131,11 +149,15 @@ bool ShapeTizen::AddMoveTo(Vector2 point)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 bool ShapeTizen::AddLineTo(Vector2 line)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -148,11 +170,15 @@ bool ShapeTizen::AddLineTo(Vector2 line)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 bool ShapeTizen::AddCubicTo(Vector2 controlPoint1, Vector2 controlPoint2, Vector2 endPoint)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -165,11 +191,15 @@ bool ShapeTizen::AddCubicTo(Vector2 controlPoint1, Vector2 controlPoint2, Vector
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 bool ShapeTizen::Close()
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -182,11 +212,36 @@ bool ShapeTizen::Close()
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
+}
+
+bool ShapeTizen::ResetPath()
+{
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
+  {
+    DALI_LOG_ERROR("Shape is null\n");
+    return false;
+  }
+
+  if(static_cast<tvg::Shape*>(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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null [%p]\n", this);
     return false;
@@ -199,11 +254,15 @@ bool ShapeTizen::SetFillColor(Vector4 color)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Vector4 ShapeTizen::GetFillColor() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null [%p]\n", this);
     return Vector4(0, 0, 0, 0);
@@ -216,11 +275,15 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -232,11 +295,15 @@ bool ShapeTizen::SetFillRule(Dali::CanvasRenderer::Shape::FillRule rule)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Dali::CanvasRenderer::Shape::FillRule ShapeTizen::GetFillRule() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return Dali::CanvasRenderer::Shape::FillRule::WINDING;
@@ -245,11 +312,14 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -262,21 +332,29 @@ bool ShapeTizen::SetStrokeWidth(float width)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 float ShapeTizen::GetStrokeWidth() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -289,11 +367,15 @@ bool ShapeTizen::SetStrokeColor(Vector4 color)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Vector4 ShapeTizen::GetStrokeColor() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return Vector4(0, 0, 0, 0);
@@ -307,11 +389,15 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -331,11 +417,15 @@ bool ShapeTizen::SetStrokeDash(const Dali::Vector<float> dashPattern)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Dali::Vector<float> ShapeTizen::GetStrokeDash() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return Vector<float>();
@@ -359,16 +449,19 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
   }
-
   if(static_cast<tvg::Shape*>(mTvgShape)->stroke(static_cast<tvg::StrokeCap>(cap)) != tvg::Result::Success)
   {
     DALI_LOG_ERROR("SetStrokeCap fail.\n");
@@ -376,11 +469,15 @@ bool ShapeTizen::SetStrokeCap(Dali::CanvasRenderer::Shape::StrokeCap cap)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Dali::CanvasRenderer::Shape::StrokeCap ShapeTizen::GetStrokeCap() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return Dali::CanvasRenderer::Shape::StrokeCap::SQUARE;
@@ -389,11 +486,14 @@ 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)
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return false;
@@ -406,11 +506,15 @@ bool ShapeTizen::SetStrokeJoin(Dali::CanvasRenderer::Shape::StrokeJoin join)
   }
   Drawable::SetChanged(true);
   return true;
+#else
+  return false;
+#endif
 }
 
 Dali::CanvasRenderer::Shape::StrokeJoin ShapeTizen::GetStrokeJoin() const
 {
-  if(!mTvgShape)
+#ifdef THORVG_SUPPORT
+  if(!Drawable::GetObject() || !mTvgShape)
   {
     DALI_LOG_ERROR("Shape is null\n");
     return Dali::CanvasRenderer::Shape::StrokeJoin::BEVEL;
@@ -419,6 +523,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