From 30b78a7212e508cde2911293aeefe1bfeab11eae Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 20 Apr 2012 18:14:00 +0100 Subject: [PATCH] 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 -- 2.7.4