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:
@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user