Add GetBoundingBox api that uses thorvg's tvg::paint::bounds() api.
Change-Id: I7faaef2d7ce3e151f22278d76a2a4d491afe62dc
return GetImplementation(*this).Transform(matrix);
}
+Rect<float> CanvasRenderer::Drawable::GetBoundingBox() const
+{
+ return GetImplementation(*this).GetBoundingBox();
+}
+
CanvasRenderer::Drawable CanvasRenderer::Drawable::DownCast(BaseHandle handle)
{
return CanvasRenderer::Drawable(dynamic_cast<Internal::Adaptor::Drawable*>(handle.GetObjectPtr()));
bool Transform(const Dali::Matrix3& matrix);
/**
+ * @brief Gets the bounding box of the drawable object before any transformation.
+ * @note The bounding box doesn't indicate the rendering region in the result but primitive region of the object.
+ * @return Returns the bounding box information.
+ */
+ Rect<float> GetBoundingBox() const;
+
+ /**
* @brief Downcast a handle to Drawable handle.
*
* If handle points to an InputMethodContext the downcast produces valid
return pImpl->Transform(matrix);
}
+Rect<float> Drawable::GetBoundingBox() const
+{
+ if(!pImpl)
+ {
+ return Rect<float>(0, 0, 0, 0);
+ }
+ return pImpl->GetBoundingBox();
+}
+
void Drawable::SetDrawableAdded(bool added)
{
if(!pImpl)
virtual bool Transform(const Dali::Matrix3& matrix);
/**
+ * @copydoc Dali::CanvasRenderer::Drawable::GetBoundingBox
+ */
+ virtual Rect<float> GetBoundingBox() const;
+
+ /**
* @brief Set whether drawable added to the other object(canvas or drawable) or not.
* @param[in] added Ture if added, false otherwise.
*/
return false;
}
+Rect<float> DrawableGeneric::GetBoundingBox() const
+{
+ return Rect<float>(0, 0, 0, 0);
+}
+
void DrawableGeneric::SetDrawableAdded(bool added)
{
}
bool Transform(const Dali::Matrix3& matrix) override;
/**
+ * @copydoc Dali::CanvasRenderer::Drawable::GetBoundingBox
+ */
+ Rect<float> GetBoundingBox() const override;
+
+ /**
* @copydoc Internal::Adaptor::Drawable::SetDrawableAdded
*/
void SetDrawableAdded(bool added) override;
#endif
}
+Rect<float> DrawableTizen::GetBoundingBox() const
+{
+#ifdef THORVG_SUPPORT
+ if(!mTvgPaint)
+ {
+ DALI_LOG_ERROR("Drawable is null\n");
+ return Rect<float>(0, 0, 0, 0);
+ }
+
+ float x, y, width, height;
+ x = y = width = height = 0;
+
+ if(mTvgPaint->bounds(&x, &y, &width, &height) != tvg::Result::Success)
+ {
+ DALI_LOG_ERROR("Get bounds fail.\n");
+ return Rect<float>(0, 0, 0, 0);
+ }
+ return Rect<float>(x, y, width, height);
+#else
+ return Rect<float>(0, 0, 0, 0);
+#endif
+}
+
void DrawableTizen::SetDrawableAdded(bool added)
{
mAdded = !!added;
bool Transform(const Dali::Matrix3& matrix) override;
/**
+ * @copydoc Dali::CanvasRenderer::Drawable::GetBoundingBox
+ */
+ Rect<float> GetBoundingBox() const override;
+
+ /**
* @copydoc Internal::Adaptor::Drawable::SetDrawableAdded
*/
void SetDrawableAdded(bool added) override;
#endif
}
+Rect<float> DrawableUbuntu::GetBoundingBox() const
+{
+#ifdef THORVG_SUPPORT
+ if(!mTvgPaint)
+ {
+ DALI_LOG_ERROR("Drawable is null\n");
+ return Rect<float>(0, 0, 0, 0);
+ }
+
+ float x, y, width, height;
+ x = y = width = height = 0;
+
+ if(mTvgPaint->bounds(&x, &y, &width, &height) != tvg::Result::Success)
+ {
+ DALI_LOG_ERROR("Get bounds fail.\n");
+ return Rect<float>(0, 0, 0, 0);
+ }
+ return Rect<float>(x, y, width, height);
+#else
+ return Rect<float>(0, 0, 0, 0);
+#endif
+}
+
void DrawableUbuntu::SetDrawableAdded(bool added)
{
mAdded = !!added;
bool Transform(const Dali::Matrix3& matrix) override;
/**
- * @copydoc Internal::Adaptor::Drawable::SetdrawableAdded
+ * @copydoc Dali::CanvasRenderer::Drawable::GetBoundingBox
+ */
+ Rect<float> GetBoundingBox() const override;
+
+ /**
+ * @copydoc Internal::Adaptor::Drawable::SetDrawableAdded
*/
void SetDrawableAdded(bool added) override;