[clutter] table-layout: Deprecate the animation API



commit 30b78a7212e508cde2911293aeefe1bfeab11eae
Author: Emmanuele Bassi <ebassi linux intel com>
Date:   Fri Apr 20 18:14:00 2012 +0100

    table-layout: Deprecate the animation API
    
    Similar to what we did for ClutterBoxLayout.

 clutter/clutter-table-layout.c |  217 ++++++++++-----------------------------
 clutter/clutter-table-layout.h |    6 +
 2 files changed, 62 insertions(+), 161 deletions(-)
---
diff --git a/clutter/clutter-table-layout.c b/clutter/clutter-table-layout.c
index fd216f3..1c40c1f 100644
--- a/clutter/clutter-table-layout.c
+++ b/clutter/clutter-table-layout.c
@@ -226,22 +226,12 @@ table_child_set_position (ClutterTableChild *self,
   if (row_changed || col_changed)
     {
       ClutterLayoutManager *layout;
-      ClutterTableLayoutPrivate *priv;
 
       layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-      priv = CLUTTER_TABLE_LAYOUT (layout)->priv;
+      clutter_layout_manager_layout_changed (layout);
 
       g_object_freeze_notify (G_OBJECT (self));
 
-      if (priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (layout,
-                                                  priv->easing_duration,
-                                                  priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (layout);
-
       if (row_changed)
         g_object_notify (G_OBJECT (self), "row");
 
@@ -276,19 +266,9 @@ table_child_set_span (ClutterTableChild  *self,
   if (row_changed || col_changed)
     {
       ClutterLayoutManager *layout;
-      ClutterTableLayout *table;
 
       layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-      table = CLUTTER_TABLE_LAYOUT (layout);
-
-      if (table->priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (layout,
-                                                  table->priv->easing_duration,
-                                                  table->priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (layout);
+      clutter_layout_manager_layout_changed (layout);
 
       if (row_changed)
         g_object_notify (G_OBJECT (self), "row-span");
@@ -322,25 +302,19 @@ table_child_set_align (ClutterTableChild     *self,
   if (x_changed || y_changed)
     {
       ClutterLayoutManager *layout;
-      ClutterTableLayout *table;
 
       layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-      table = CLUTTER_TABLE_LAYOUT (layout);
+      clutter_layout_manager_layout_changed (layout);
 
-      if (table->priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (layout,
-                                                  table->priv->easing_duration,
-                                                  table->priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (layout);
+      g_object_freeze_notify (G_OBJECT (self));
 
       if (x_changed)
         g_object_notify (G_OBJECT (self), "x-align");
 
       if (y_changed)
         g_object_notify (G_OBJECT (self), "y-align");
+
+      g_object_thaw_notify (G_OBJECT (self));
     }
 }
 
@@ -371,22 +345,12 @@ table_child_set_fill (ClutterTableChild *self,
   if (x_changed || y_changed)
     {
       ClutterLayoutManager *layout;
-      ClutterTableLayoutPrivate *priv;
 
       layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-      priv = CLUTTER_TABLE_LAYOUT (layout)->priv;
+      clutter_layout_manager_layout_changed (layout);
 
       g_object_freeze_notify (G_OBJECT (self));
 
-      if (priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (layout,
-                                                  priv->easing_duration,
-                                                  priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (layout);
-
       if (x_changed)
         g_object_notify (G_OBJECT (self), "x-fill");
 
@@ -424,22 +388,12 @@ table_child_set_expand (ClutterTableChild *self,
   if (x_changed || y_changed)
     {
       ClutterLayoutManager *layout;
-      ClutterTableLayoutPrivate *priv;
 
       layout = clutter_layout_meta_get_manager (CLUTTER_LAYOUT_META (self));
-      priv = CLUTTER_TABLE_LAYOUT (layout)->priv;
+      clutter_layout_manager_layout_changed (layout);
 
       g_object_freeze_notify (G_OBJECT (self));
 
-      if (priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (layout,
-                                                  priv->easing_duration,
-                                                  priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (layout);
-
       if (x_changed)
         g_object_notify (G_OBJECT (self), "x-expand");
 
@@ -1537,95 +1491,23 @@ clutter_table_layout_allocate (ClutterLayoutManager   *layout,
       childbox.y1 = (float) child_y;
       childbox.y2 = (float) MAX (0, child_y + row_height);
 
+      if (priv->use_animations)
+        {
+          clutter_actor_save_easing_state (child);
+          clutter_actor_set_easing_mode (child, priv->easing_mode);
+          clutter_actor_set_easing_duration (child, priv->easing_duration);
+        }
+
       clutter_actor_allocate_align_fill (child, &childbox,
                                          x_align, y_align,
                                          x_fill, y_fill,
                                          flags);
 
-      /* since we call this after allocate_align_fill(), this is
-       * just a cheap copy
-       */
-      clutter_actor_get_allocation_box (child, &childbox);
-
-      if (priv->use_animations && priv->is_animating)
-        {
-          ClutterActorBox *start = NULL;
-          ClutterActorBox end = { 0, };
-          gdouble p;
-
-          p = clutter_layout_manager_get_animation_progress (layout);
-
-          if (!meta->has_last_allocation)
-            {
-              /* if there is no allocation available then the child has just
-               * been added to the container; we put it in the final state
-               * and store its allocation for later
-               */
-              meta->last_allocation = childbox;
-              meta->has_last_allocation = TRUE;
-
-              goto do_allocate;
-            }
-
-          start = &meta->last_allocation;
-          end = childbox;
-
-          /* interpolate between the initial and final values */
-          clutter_actor_box_interpolate (start, &end, p, &childbox);
-
-          CLUTTER_NOTE (ANIMATION,
-                        "Animate { %.1f, %.1f, %.1f, %.1f }\t"
-                        "%.3f * { %.1f, %.1f, %.1f, %.1f }\t"
-                        "-> { %.1f, %.1f, %.1f, %.1f }",
-                        start->x1, start->y1,
-                        start->x2, start->y2,
-                        p,
-                        childbox.x1, childbox.y1,
-                        childbox.x2, childbox.y2,
-                        end.x1, end.y1,
-                        end.x2, end.y2);
-        }
-      else
-        {
-          /* store the allocation for later animations */
-          meta->last_allocation = childbox;
-          meta->has_last_allocation = TRUE;
-        }
-
-    do_allocate:
-      clutter_actor_allocate (child, &childbox, flags);
+      if (priv->use_animations)
+        clutter_actor_restore_easing_state (child);
     }
 }
 
-static ClutterAlpha *
-clutter_table_layout_begin_animation (ClutterLayoutManager *manager,
-                                      guint                 duration,
-                                      gulong                easing)
-{
-  ClutterTableLayoutPrivate *priv = CLUTTER_TABLE_LAYOUT (manager)->priv;
-  ClutterLayoutManagerClass *parent_class;
-
-  priv->is_animating = TRUE;
-
-  /* we want the default implementation */
-  parent_class = CLUTTER_LAYOUT_MANAGER_CLASS (clutter_table_layout_parent_class);
-
-  return parent_class->begin_animation (manager, duration, easing);
-}
-
-static void
-clutter_table_layout_end_animation (ClutterLayoutManager *manager)
-{
-  ClutterTableLayoutPrivate *priv = CLUTTER_TABLE_LAYOUT (manager)->priv;
-  ClutterLayoutManagerClass *parent_class;
-
-  priv->is_animating = FALSE;
-
-  /* we want the default implementation */
-  parent_class = CLUTTER_LAYOUT_MANAGER_CLASS (clutter_table_layout_parent_class);
-  parent_class->end_animation (manager);
-}
-
 static void
 clutter_table_layout_set_property (GObject      *gobject,
                                    guint         prop_id,
@@ -1730,8 +1612,6 @@ clutter_table_layout_class_init (ClutterTableLayoutClass *klass)
   layout_class->set_container = clutter_table_layout_set_container;
   layout_class->get_child_meta_type =
     clutter_table_layout_get_child_meta_type;
-  layout_class->begin_animation = clutter_table_layout_begin_animation;
-  layout_class->end_animation = clutter_table_layout_end_animation;
 
   g_type_class_add_private (klass, sizeof (ClutterTableLayoutPrivate));
 
@@ -1767,9 +1647,18 @@ clutter_table_layout_class_init (ClutterTableLayoutClass *klass)
    * ClutterTableLayout:use-animations:
    *
    * Whether the #ClutterTableLayout should animate changes in the
-   * layout properties
+   * layout properties.
+   *
+   * By default, #ClutterTableLayout will honour the easing state of
+   * the children when allocating them. Setting this property to
+   * %TRUE will override the easing state with the layout manager's
+   * #ClutterTableLayout:easing-mode and #ClutterTableLayout:easing-duration
+   * properties.
    *
    * Since: 1.4
+   *
+   * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+   *   of the children when allocating them
    */
   pspec = g_param_spec_boolean ("use-animations",
                                 P_("Use Animations"),
@@ -1782,16 +1671,19 @@ clutter_table_layout_class_init (ClutterTableLayoutClass *klass)
    * ClutterTableLayout:easing-mode:
    *
    * The easing mode for the animations, in case
-   * #ClutterTableLayout:use-animations is set to %TRUE
+   * #ClutterTableLayout:use-animations is set to %TRUE.
    *
    * The easing mode has the same semantics of #ClutterAnimation:mode: it can
    * either be a value from the #ClutterAnimationMode enumeration, like
    * %CLUTTER_EASE_OUT_CUBIC, or a logical id as returned by
-   * clutter_alpha_register_func()
+   * clutter_alpha_register_func().
    *
-   * The default value is %CLUTTER_EASE_OUT_CUBIC
+   * The default value is %CLUTTER_EASE_OUT_CUBIC.
    *
    * Since: 1.4
+   *
+   * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+   *   of the children when allocating them
    */
   pspec = g_param_spec_ulong ("easing-mode",
                               P_("Easing Mode"),
@@ -1805,11 +1697,14 @@ clutter_table_layout_class_init (ClutterTableLayoutClass *klass)
    * ClutterTableLayout:easing-duration:
    *
    * The duration of the animations, in case #ClutterTableLayout:use-animations
-   * is set to %TRUE
+   * is set to %TRUE.
    *
-   * The duration is expressed in milliseconds
+   * The duration is expressed in milliseconds.
    *
    * Since: 1.4
+   *
+   * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+   *   of the children when allocating them
    */
   pspec = g_param_spec_uint ("easing-duration",
                              P_("Easing Duration"),
@@ -1879,15 +1774,7 @@ clutter_table_layout_set_column_spacing (ClutterTableLayout *layout,
       priv->col_spacing = spacing;
 
       manager = CLUTTER_LAYOUT_MANAGER (layout);
-
-      if (priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (manager,
-                                                  priv->easing_duration,
-                                                  priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (manager);
+      clutter_layout_manager_layout_changed (manager);
 
       g_object_notify (G_OBJECT (layout), "column-spacing");
     }
@@ -1937,15 +1824,7 @@ clutter_table_layout_set_row_spacing (ClutterTableLayout *layout,
       priv->row_spacing = spacing;
 
       manager = CLUTTER_LAYOUT_MANAGER (layout);
-
-      if (priv->use_animations)
-        {
-          clutter_layout_manager_begin_animation (manager,
-                                                  priv->easing_duration,
-                                                  priv->easing_mode);
-        }
-      else
-        clutter_layout_manager_layout_changed (manager);
+      clutter_layout_manager_layout_changed (manager);
 
       g_object_notify (G_OBJECT (layout), "row-spacing");
     }
@@ -2485,6 +2364,9 @@ clutter_table_layout_get_expand (ClutterTableLayout *layout,
  * by the animations is controlled by clutter_table_layout_set_easing_mode()
  *
  * Since: 1.4
+ *
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 void
 clutter_table_layout_set_use_animations (ClutterTableLayout *layout,
@@ -2516,6 +2398,8 @@ clutter_table_layout_set_use_animations (ClutterTableLayout *layout,
  * Return value: %TRUE if the animations should be used, %FALSE otherwise
  *
  * Since: 1.4
+ *
+ * Deprecated: 1.12
  */
 gboolean
 clutter_table_layout_get_use_animations (ClutterTableLayout *layout)
@@ -2538,6 +2422,9 @@ clutter_table_layout_get_use_animations (ClutterTableLayout *layout)
  * animations
  *
  * Since: 1.4
+ *
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 void
 clutter_table_layout_set_easing_mode (ClutterTableLayout *layout,
@@ -2566,6 +2453,9 @@ clutter_table_layout_set_easing_mode (ClutterTableLayout *layout,
  * Return value: an easing mode
  *
  * Since: 1.4
+ *
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 gulong
 clutter_table_layout_get_easing_mode (ClutterTableLayout *layout)
@@ -2588,6 +2478,9 @@ clutter_table_layout_get_easing_mode (ClutterTableLayout *layout)
  * animations
  *
  * Since: 1.4
+ *
+ * Deprecated: 1.12: #ClutterTableLayout will honour the easing state
+ *   of the children when allocating them
  */
 void
 clutter_table_layout_set_easing_duration (ClutterTableLayout *layout,
@@ -2616,6 +2509,8 @@ clutter_table_layout_set_easing_duration (ClutterTableLayout *layout,
  * Return value: the duration of the animations, in milliseconds
  *
  * Since: 1.4
+ *
+ * Deprecated: 1.12
  */
 guint
 clutter_table_layout_get_easing_duration (ClutterTableLayout *layout)
diff --git a/clutter/clutter-table-layout.h b/clutter/clutter-table-layout.h
index 99dc8e6..ce3679a 100644
--- a/clutter/clutter-table-layout.h
+++ b/clutter/clutter-table-layout.h
@@ -129,14 +129,20 @@ void                  clutter_table_layout_get_expand          (ClutterTableLayo
 gint                  clutter_table_layout_get_row_count       (ClutterTableLayout    *layout);
 gint                  clutter_table_layout_get_column_count    (ClutterTableLayout    *layout);
 
+CLUTTER_DEPRECATED_IN_1_12
 void                  clutter_table_layout_set_use_animations  (ClutterTableLayout    *layout,
                                                                 gboolean               animate);
+CLUTTER_DEPRECATED_IN_1_12
 gboolean              clutter_table_layout_get_use_animations  (ClutterTableLayout    *layout);
+CLUTTER_DEPRECATED_IN_1_12
 void                  clutter_table_layout_set_easing_mode     (ClutterTableLayout    *layout,
                                                                 gulong                 mode);
+CLUTTER_DEPRECATED_IN_1_12
 gulong                clutter_table_layout_get_easing_mode     (ClutterTableLayout    *layout);
+CLUTTER_DEPRECATED_IN_1_12
 void                  clutter_table_layout_set_easing_duration (ClutterTableLayout    *layout,
                                                                 guint                  msecs);
+CLUTTER_DEPRECATED_IN_1_12
 guint                 clutter_table_layout_get_easing_duration (ClutterTableLayout    *layout);
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]