#ifndef _EFL_CANVAS_ROTATE_ANIMATION_EO_H_
#define _EFL_CANVAS_ROTATE_ANIMATION_EO_H_
#ifndef _EFL_CANVAS_ROTATE_ANIMATION_EO_CLASS_TYPE
#define _EFL_CANVAS_ROTATE_ANIMATION_EO_CLASS_TYPE
typedef Eo Efl_Canvas_Rotate_Animation;
#endif
#ifndef _EFL_CANVAS_ROTATE_ANIMATION_EO_TYPES
#define _EFL_CANVAS_ROTATE_ANIMATION_EO_TYPES
#endif
/**
* @brief Animated rotation effect.
*
* The @ref Efl_Canvas_Object will rotate around a pivot point from one degree
* to another. Coordinates for the pivot point can be relative to another
* object or absolute (relative to the containing canvas).
*
* @note Changing an object's position using @ref efl_gfx_entity_position_get
* while this animation is running might lead to unexpected results.
*
* @since 1.24
*
* @ingroup Efl_Canvas_Rotate_Animation
*/
#define EFL_CANVAS_ROTATE_ANIMATION_CLASS efl_canvas_rotate_animation_class_get()
EVAS_API EVAS_API_WEAK const Efl_Class *efl_canvas_rotate_animation_class_get(void) EINA_CONST;
/**
* @brief Degree range to animate and pivot object. The object will rotate from
* @c from_degree to @c to_degree around the pivot point. All of the object's
* vertices (i.e. the corners, if it's a rectangular object) will be rotated by
* these degrees, relative to the pivot point inside the pivot object. The
* pivot point is another object @c pivot plus an additional offset
* @c center_point.
*
* @param[in] obj The object.
* @param[in] from_degree Initial rotation (from 0 to 360). 0 means no
* rotation.
* @param[in] to_degree Ending rotation (from 0 to 360). 0 means no rotation.
* @param[in] pivot Object to use as pivot. @c NULL means the animated object
* itself.
* @param[in] center_point Position in pixels of the pivot point inside the
* pivot object. (0,0) means the upper-left corner.
*
* @since 1.24
*
* @ingroup Efl_Canvas_Rotate_Animation
*/
EVAS_API EVAS_API_WEAK void efl_animation_rotate_set(Eo *obj, double from_degree, double to_degree, Efl_Canvas_Object *pivot, Eina_Vector2 center_point);
/**
* @brief Degree range to animate and pivot object. The object will rotate from
* @c from_degree to @c to_degree around the pivot point. All of the object's
* vertices (i.e. the corners, if it's a rectangular object) will be rotated by
* these degrees, relative to the pivot point inside the pivot object. The
* pivot point is another object @c pivot plus an additional offset
* @c center_point.
*
* @param[in] obj The object.
* @param[out] from_degree Initial rotation (from 0 to 360). 0 means no
* rotation.
* @param[out] to_degree Ending rotation (from 0 to 360). 0 means no rotation.
* @param[out] pivot Object to use as pivot. @c NULL means the animated object
* itself.
* @param[out] center_point Position in pixels of the pivot point inside the
* pivot object. (0,0) means the upper-left corner.
*
* @since 1.24
*
* @ingroup Efl_Canvas_Rotate_Animation
*/
EVAS_API EVAS_API_WEAK void efl_animation_rotate_get(const Eo *obj, double *from_degree, double *to_degree, Efl_Canvas_Object **pivot, Eina_Vector2 *center_point);
/**
* @brief Degree range to animate and absolute pivot point. The object will
* rotate from @c from_degree to @c to_degree around the pivot point. All of
* the object's vertices (i.e. the corners, if it's a rectangular object) will
* be rotated by these degrees, relative to an absolute pivot point. The pivot
* point is relative to the canvas.
*
* @param[in] obj The object.
* @param[in] from_degree Initial rotation (from 0 to 360). 0 means no
* rotation.
* @param[in] to_degree Ending rotation (from 0 to 360). 0 means no rotation.
* @param[in] pivot_point Position of the pivot point relative to the canvas.
*
* @since 1.24
*
* @ingroup Efl_Canvas_Rotate_Animation
*/
EVAS_API EVAS_API_WEAK void efl_animation_rotate_absolute_set(Eo *obj, double from_degree, double to_degree, Eina_Position2D pivot_point);
/**
* @brief Degree range to animate and absolute pivot point. The object will
* rotate from @c from_degree to @c to_degree around the pivot point. All of
* the object's vertices (i.e. the corners, if it's a rectangular object) will
* be rotated by these degrees, relative to an absolute pivot point. The pivot
* point is relative to the canvas.
*
* @param[in] obj The object.
* @param[out] from_degree Initial rotation (from 0 to 360). 0 means no
* rotation.
* @param[out] to_degree Ending rotation (from 0 to 360). 0 means no rotation.
* @param[out] pivot_point Position of the pivot point relative to the canvas.
*
* @since 1.24
*
* @ingroup Efl_Canvas_Rotate_Animation
*/
EVAS_API EVAS_API_WEAK void efl_animation_rotate_absolute_get(const Eo *obj, double *from_degree, double *to_degree, Eina_Position2D *pivot_point);
#endif