Merge branch 'animatable-iface' into animation-improvements
authorEmmanuele Bassi <ebassi@linux.intel.com>
Thu, 8 Jan 2009 13:38:51 +0000 (13:38 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Thu, 8 Jan 2009 13:38:51 +0000 (13:38 +0000)
* animatable-iface:
  [docs] Add ClutterAnimatable to the API reference
  Add license notice to ClutterAnimation files
  [animation] Use ClutterAnimatable inside Animation
  [animation] Add ClutterAnimatable

1  2 
clutter/clutter-animation.c
doc/reference/clutter/clutter-sections.txt

@@@ -665,7 -670,13 +668,13 @@@ on_alpha_notify (GObject          *gobj
  
    alpha_value = clutter_alpha_get_alpha (CLUTTER_ALPHA (gobject));
  
 -  if (CLUTTER_IS_ANIMATABLE (priv->actor))
++  if (CLUTTER_IS_ANIMATABLE (priv->object))
+     {
 -      animatable = CLUTTER_ANIMATABLE (priv->actor);
++      animatable = CLUTTER_ANIMATABLE (priv->object);
+       is_animatable = TRUE;
+     }
 -  g_object_freeze_notify (G_OBJECT (priv->actor));
 +  g_object_freeze_notify (priv->object);
  
    properties = g_hash_table_get_keys (priv->properties);
    for (p = properties; p != NULL; p = p->next)
  
        factor = (gdouble) alpha_value / CLUTTER_ALPHA_MAX_ALPHA;
  
-       if (clutter_interval_compute_value (interval, factor, &value))
-         g_object_set_property (priv->object, p_name, &value);
+       if (is_animatable)
+         {
+           const GValue *initial, *final;
+           initial = clutter_interval_peek_initial_value (interval);
+           final   = clutter_interval_peek_final_value (interval);
+           CLUTTER_NOTE (ANIMATION, "Animatable property `%s'", p_name);
+           clutter_animatable_animate_property (animatable, animation,
+                                                p_name,
+                                                initial, final,
+                                                factor,
+                                                &value);
 -          g_object_set_property (G_OBJECT (priv->actor), p_name, &value);
++          g_object_set_property (priv->object, p_name, &value);
+         }
+       else
+         {
+           CLUTTER_NOTE (ANIMATION, "Standard property `%s'", p_name);
+           if (clutter_interval_compute_value (interval, factor, &value))
 -            g_object_set_property (G_OBJECT (priv->actor), p_name, &value);
++            g_object_set_property (priv->object, p_name, &value);
+         }
  
        g_value_unset (&value);
      }