#ifndef _EFL_CUBIC_BEZIER_INTERPOLATOR_EO_H_
#define _EFL_CUBIC_BEZIER_INTERPOLATOR_EO_H_
#ifndef _EFL_CUBIC_BEZIER_INTERPOLATOR_EO_CLASS_TYPE
#define _EFL_CUBIC_BEZIER_INTERPOLATOR_EO_CLASS_TYPE
typedef Eo Efl_Cubic_Bezier_Interpolator;
#endif
#ifndef _EFL_CUBIC_BEZIER_INTERPOLATOR_EO_TYPES
#define _EFL_CUBIC_BEZIER_INTERPOLATOR_EO_TYPES
#endif
/**
* @brief Cubic Bezier interpolator. It starts slow, then moves quickly and
* then slows down again before stopping.
*
* The exact shape of the mapping curve can be modified through the
* @ref efl_cubic_bezier_interpolator_control_points_get property.
*
* @since 1.24
*
* @ingroup Efl_Cubic_Bezier_Interpolator
*/
#define EFL_CUBIC_BEZIER_INTERPOLATOR_CLASS efl_cubic_bezier_interpolator_class_get()
EAPI EAPI_WEAK const Efl_Class *efl_cubic_bezier_interpolator_class_get(void) EINA_CONST;
/**
* @brief Cubic Bezier curves are described by 4 2D control points
* (https://en.wikipedia.org/wiki/B%C3%A9zier_curve). For each control point,
* the X coordinate is an input value and the Y coordinate is the corresponding
* output value. The first one, P0, is set to (0,0): The input
* 0.0 is mapped to the 0.0 output. The last one, P3, is
* set to (1,1): The input 1.0 is mapped to the
* 1.0 output. The other two control points can be set through this
* property and control the shape of the curve. Note that the control points do
* not need to be in the 0...1 range, and neither do the output
* values of the curve.
*
* @param[in] obj The object.
* @param[in] p1 P1 control point.
* @param[in] p2 P2 control point.
*
* @since 1.24
*
* @ingroup Efl_Cubic_Bezier_Interpolator
*/
EAPI EAPI_WEAK void efl_cubic_bezier_interpolator_control_points_set(Eo *obj, Eina_Vector2 p1, Eina_Vector2 p2);
/**
* @brief Cubic Bezier curves are described by 4 2D control points
* (https://en.wikipedia.org/wiki/B%C3%A9zier_curve). For each control point,
* the X coordinate is an input value and the Y coordinate is the corresponding
* output value. The first one, P0, is set to (0,0): The input
* 0.0 is mapped to the 0.0 output. The last one, P3, is
* set to (1,1): The input 1.0 is mapped to the
* 1.0 output. The other two control points can be set through this
* property and control the shape of the curve. Note that the control points do
* not need to be in the 0...1 range, and neither do the output
* values of the curve.
*
* @param[in] obj The object.
* @param[out] p1 P1 control point.
* @param[out] p2 P2 control point.
*
* @since 1.24
*
* @ingroup Efl_Cubic_Bezier_Interpolator
*/
EAPI EAPI_WEAK void efl_cubic_bezier_interpolator_control_points_get(const Eo *obj, Eina_Vector2 *p1, Eina_Vector2 *p2);
#endif