Animate ClutterColor properties

We can animate a ClutterColor-based property between an interval
of two colors by simply applying the factor to each color component.
This commit is contained in:
Emmanuele Bassi
2009-01-06 12:53:30 +00:00
parent ff73fe3e1f
commit 854cf5d499
2 changed files with 32 additions and 6 deletions

View File

@ -57,9 +57,10 @@
#include <glib-object.h>
#include <gobject/gvaluecollector.h>
#include "clutter-color.h"
#include "clutter-fixed.h"
#include "clutter-interval.h"
#include "clutter-units.h"
#include "clutter-fixed.h"
enum
{
@ -249,6 +250,24 @@ clutter_interval_real_compute_value (ClutterInterval *interval,
g_value_set_boolean (value, FALSE);
break;
case G_TYPE_BOXED:
if (value_type == CLUTTER_TYPE_COLOR)
{
const ClutterColor *ia, *ib;
ClutterColor res = { 0, };
ia = clutter_value_get_color (initial);
ib = clutter_value_get_color (final);
res.red = (factor * (ib->red - (gdouble) ia->red)) + ia->red;
res.green = (factor * (ib->green - (gdouble) ia->green)) + ia->green;
res.blue = (factor * (ib->blue - (gdouble) ia->blue)) + ia->blue;
res.alpha = (factor * (ib->alpha - (gdouble) ia->alpha)) + ia->alpha;
clutter_value_set_color (value, &res);
}
break;
default:
break;
}