capi: gradient transformation apis added
authorMira Grudzinska <m.grudzinska@samsung.com>
Fri, 22 Oct 2021 11:46:06 +0000 (13:46 +0200)
committerHermet Park <chuneon.park@samsung.com>
Tue, 26 Oct 2021 04:12:32 +0000 (13:12 +0900)
src/bindings/capi/thorvg_capi.h
src/bindings/capi/tvgCapi.cpp

index b675865..23c3329 100644 (file)
@@ -1694,6 +1694,37 @@ TVG_EXPORT Tvg_Result tvg_gradient_get_spread(Tvg_Gradient* grad, Tvg_Stroke_Fil
 
 
 /*!
+* \brief Sets the matrix of the affine transformation for the gradient object. (BETA_API)
+*
+* The augmented matrix of the transformation is expected to be given.
+*
+* \param[in] grad The Tvg_Gradient object to be transformed.
+* \param[in] m The 3x3 augmented matrix.
+*
+* \return Tvg_Result enumeration.
+* \retval TVG_RESULT_SUCCESS Succeed.
+* \retval TVG_RESULT_INVALID_ARGUMENT A @c nullptr is passed as the argument.
+* \retval TVG_RESULT_FAILED_ALLOCATION An internal error with a memory allocation.
+*/
+TVG_EXPORT Tvg_Result tvg_gradient_set_transform(Tvg_Gradient* grad, const Tvg_Matrix* m);
+
+
+/*!
+* \brief Gets the matrix of the affine transformation of the gradient object. (BETA_API)
+*
+* In case no transformation was applied, the identity matrix is set.
+*
+* \param[in] grad The Tvg_Gradient object of which to get the transformation matrix.
+* \param[out] m The 3x3 augmented matrix.
+*
+* \return Tvg_Result enumeration.
+* \retval TVG_RESULT_SUCCESS Succeed.
+* \retval TVG_RESULT_INVALID_ARGUMENT A @c nullptr is passed as the argument.
+*/
+TVG_EXPORT Tvg_Result tvg_gradient_get_transform(const Tvg_Gradient* grad, Tvg_Matrix* m);
+
+
+/*!
 * \brief Duplicates the given Tvg_Gradient object.
 *
 * Creates a new object and sets its all properties as in the original object.
index 245d47c..ebcbd01 100644 (file)
@@ -170,6 +170,7 @@ TVG_EXPORT Tvg_Result tvg_paint_transform(Tvg_Paint* paint, const Tvg_Matrix* m)
     return (Tvg_Result) reinterpret_cast<Paint*>(paint)->transform(*(reinterpret_cast<const Matrix*>(m)));
 }
 
+
 TVG_EXPORT Tvg_Result tvg_paint_get_transform(Tvg_Paint* paint, Tvg_Matrix* m)
 {
     if (!paint || !m) return TVG_RESULT_INVALID_ARGUMENT;
@@ -597,6 +598,21 @@ TVG_EXPORT Tvg_Result tvg_gradient_get_spread(Tvg_Gradient* grad, Tvg_Stroke_Fil
     return TVG_RESULT_SUCCESS;
 }
 
+
+TVG_EXPORT Tvg_Result tvg_gradient_set_transform(Tvg_Gradient* grad, const Tvg_Matrix* m)
+{
+    if (!grad || !m) return TVG_RESULT_INVALID_ARGUMENT;
+    return (Tvg_Result) reinterpret_cast<Fill*>(grad)->transform(*(reinterpret_cast<const Matrix*>(m)));
+}
+
+
+TVG_EXPORT Tvg_Result tvg_gradient_get_transform(const Tvg_Gradient* grad, Tvg_Matrix* m)
+{
+    if (!grad || !m) return TVG_RESULT_INVALID_ARGUMENT;
+    *reinterpret_cast<Matrix*>(m) = reinterpret_cast<Fill*>(const_cast<Tvg_Gradient*>(grad))->transform();
+    return TVG_RESULT_SUCCESS;
+}
+
 /************************************************************************/
 /* Scene API                                                            */
 /************************************************************************/