mirror of
https://github.com/brl/mutter.git
synced 2024-11-29 19:40:43 -05:00
Add ActorBox animation methods
ClutterActorBox should have an interpolate() method that allows to compute the intermediate values between two states, given a progress value, e.g.: clutter_actor_box_interpolate (start, end, alpha, &result); Another utility method, useful for layout managers, is a modifier that clamps the members of the actor box to the nearest integer value.
This commit is contained in:
parent
d2ea7cd6a8
commit
999359d64c
@ -8317,6 +8317,53 @@ clutter_actor_box_from_vertices (ClutterActorBox *box,
|
|||||||
box->y2 = y_2;
|
box->y2 = y_2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_box_interpolate:
|
||||||
|
* @initial: the initial #ClutterActorBox
|
||||||
|
* @final: the final #ClutterActorBox
|
||||||
|
* @progress: the interpolation progress
|
||||||
|
* @result: (out): return location for the interpolation
|
||||||
|
*
|
||||||
|
* Interpolates between @initial and @final #ClutterActorBox<!-- -->es
|
||||||
|
* using @progress
|
||||||
|
*
|
||||||
|
* Since: 1.2
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_box_interpolate (const ClutterActorBox *initial,
|
||||||
|
const ClutterActorBox *final,
|
||||||
|
gdouble progress,
|
||||||
|
ClutterActorBox *result)
|
||||||
|
{
|
||||||
|
g_return_if_fail (initial != NULL);
|
||||||
|
g_return_if_fail (final != NULL);
|
||||||
|
g_return_if_fail (result != NULL);
|
||||||
|
|
||||||
|
result->x1 = initial->x1 + (final->x1 - initial->x1) * progress;
|
||||||
|
result->y1 = initial->y1 + (final->y1 - initial->y1) * progress;
|
||||||
|
result->x2 = initial->x2 + (final->x2 - initial->x2) * progress;
|
||||||
|
result->y2 = initial->y2 + (final->y2 - initial->y2) * progress;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* clutter_actor_box_clamp_to_pixel:
|
||||||
|
* @box: (inout): the #ClutterActorBox to clamp
|
||||||
|
*
|
||||||
|
* Clamps the components of @box to the nearest integer
|
||||||
|
*
|
||||||
|
* Since: 1.2
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
clutter_actor_box_clamp_to_pixel (ClutterActorBox *box)
|
||||||
|
{
|
||||||
|
g_return_if_fail (box != NULL);
|
||||||
|
|
||||||
|
box->x1 = floorf (box->x1 + 0.5);
|
||||||
|
box->y1 = floorf (box->y1 + 0.5);
|
||||||
|
box->x2 = floorf (box->x2 + 0.5);
|
||||||
|
box->y2 = floorf (box->y2 + 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
struct _ShaderData
|
struct _ShaderData
|
||||||
|
@ -153,6 +153,11 @@ gboolean clutter_actor_box_contains (const ClutterActorBox *box,
|
|||||||
gfloat y);
|
gfloat y);
|
||||||
void clutter_actor_box_from_vertices (ClutterActorBox *box,
|
void clutter_actor_box_from_vertices (ClutterActorBox *box,
|
||||||
const ClutterVertex verts[]);
|
const ClutterVertex verts[]);
|
||||||
|
void clutter_actor_box_interpolate (const ClutterActorBox *initial,
|
||||||
|
const ClutterActorBox *final,
|
||||||
|
gdouble progress,
|
||||||
|
ClutterActorBox *result);
|
||||||
|
void clutter_actor_box_clamp_to_pixel (ClutterActorBox *box);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ClutterGeometry:
|
* ClutterGeometry:
|
||||||
|
@ -414,6 +414,8 @@ clutter_actor_box_get_size
|
|||||||
clutter_actor_box_get_area
|
clutter_actor_box_get_area
|
||||||
clutter_actor_box_contains
|
clutter_actor_box_contains
|
||||||
clutter_actor_box_from_vertices
|
clutter_actor_box_from_vertices
|
||||||
|
clutter_actor_box_clamp_to_pixel
|
||||||
|
clutter_actor_box_interpolate
|
||||||
|
|
||||||
<SUBSECTION>
|
<SUBSECTION>
|
||||||
ClutterVertex
|
ClutterVertex
|
||||||
|
Loading…
Reference in New Issue
Block a user