diff options
Diffstat (limited to 'clutter/clutter/clutter-transition-group.c')
-rw-r--r-- | clutter/clutter/clutter-transition-group.c | 251 |
1 files changed, 0 insertions, 251 deletions
diff --git a/clutter/clutter/clutter-transition-group.c b/clutter/clutter/clutter-transition-group.c deleted file mode 100644 index 3d8c5a53b..000000000 --- a/clutter/clutter/clutter-transition-group.c +++ /dev/null @@ -1,251 +0,0 @@ -/* - * Clutter. - * - * An OpenGL based 'interactive canvas' library. - * - * Copyright (C) 2012 Intel Corporation - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library. If not, see <http://www.gnu.org/licenses/>. - * - * Author: Emmanuele Bassi <ebassi@linux.intel.com> - */ - -/** - * SECTION:clutter-transition-group - * @Title: ClutterTransitionGroup - * @Short_Description: Group transitions together - * - * The #ClutterTransitionGroup allows running multiple #ClutterTransition - * instances concurrently. - * - * The transitions inside a group will run within the boundaries of the - * group; for instance, if a transition has a duration of 10 seconds, and - * the group that contains it has a duration of 5 seconds, only the first - * 5 seconds of the transition will be played. - * - * #ClutterTransitionGroup is available since Clutter 1.12 - */ - -#include "clutter-build-config.h" - -#include "clutter-transition-group.h" - -#include "clutter-debug.h" -#include "clutter-private.h" -#include "clutter-timeline-private.h" - -struct _ClutterTransitionGroupPrivate -{ - GHashTable *transitions; -}; - -G_DEFINE_TYPE_WITH_PRIVATE (ClutterTransitionGroup, clutter_transition_group, CLUTTER_TYPE_TRANSITION) - -static void -clutter_transition_group_new_frame (ClutterTimeline *timeline, - gint elapsed) -{ - ClutterTransitionGroupPrivate *priv; - GHashTableIter iter; - gpointer element; - gint64 msecs; - - priv = CLUTTER_TRANSITION_GROUP (timeline)->priv; - - /* get the time elapsed since the last ::new-frame... */ - msecs = clutter_timeline_get_delta (timeline); - - g_hash_table_iter_init (&iter, priv->transitions); - while (g_hash_table_iter_next (&iter, &element, NULL)) - { - ClutterTimeline *t = element; - - /* ... and advance every timeline */ - clutter_timeline_set_direction (t, clutter_timeline_get_direction (timeline)); - clutter_timeline_set_duration (t, clutter_timeline_get_duration (timeline)); - - _clutter_timeline_advance (t, msecs); - } -} - -static void -clutter_transition_group_attached (ClutterTransition *transition, - ClutterAnimatable *animatable) -{ - ClutterTransitionGroupPrivate *priv; - GHashTableIter iter; - gpointer element; - - priv = CLUTTER_TRANSITION_GROUP (transition)->priv; - - g_hash_table_iter_init (&iter, priv->transitions); - while (g_hash_table_iter_next (&iter, &element, NULL)) - { - ClutterTransition *t = element; - - clutter_transition_set_animatable (t, animatable); - } -} - -static void -clutter_transition_group_detached (ClutterTransition *transition, - ClutterAnimatable *animatable) -{ - ClutterTransitionGroupPrivate *priv; - GHashTableIter iter; - gpointer element; - - priv = CLUTTER_TRANSITION_GROUP (transition)->priv; - - g_hash_table_iter_init (&iter, priv->transitions); - while (g_hash_table_iter_next (&iter, &element, NULL)) - { - ClutterTransition *t = element; - - clutter_transition_set_animatable (t, NULL); - } -} - -static void -clutter_transition_group_started (ClutterTimeline *timeline) -{ - ClutterTransitionGroupPrivate *priv; - GHashTableIter iter; - gpointer element; - - priv = CLUTTER_TRANSITION_GROUP (timeline)->priv; - - g_hash_table_iter_init (&iter, priv->transitions); - while (g_hash_table_iter_next (&iter, &element, NULL)) - { - ClutterTransition *t = element; - - g_signal_emit_by_name (t, "started"); - } -} - -static void -clutter_transition_group_finalize (GObject *gobject) -{ - ClutterTransitionGroupPrivate *priv; - - priv = CLUTTER_TRANSITION_GROUP (gobject)->priv; - - g_hash_table_unref (priv->transitions); - - G_OBJECT_CLASS (clutter_transition_group_parent_class)->finalize (gobject); -} - -static void -clutter_transition_group_class_init (ClutterTransitionGroupClass *klass) -{ - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - ClutterTimelineClass *timeline_class = CLUTTER_TIMELINE_CLASS (klass); - ClutterTransitionClass *transition_class = CLUTTER_TRANSITION_CLASS (klass); - - gobject_class->finalize = clutter_transition_group_finalize; - - timeline_class->started = clutter_transition_group_started; - timeline_class->new_frame = clutter_transition_group_new_frame; - - transition_class->attached = clutter_transition_group_attached; - transition_class->detached = clutter_transition_group_detached; -} - -static void -clutter_transition_group_init (ClutterTransitionGroup *self) -{ - self->priv = clutter_transition_group_get_instance_private (self); - self->priv->transitions = - g_hash_table_new_full (NULL, NULL, (GDestroyNotify) g_object_unref, NULL); -} - -/** - * clutter_transition_group_new: - * - * Creates a new #ClutterTransitionGroup instance. - * - * Return value: the newly created #ClutterTransitionGroup. Use - * g_object_unref() when done to deallocate the resources it - * uses - * - * Since: 1.12 - */ -ClutterTransition * -clutter_transition_group_new (void) -{ - return g_object_new (CLUTTER_TYPE_TRANSITION_GROUP, NULL); -} - -/** - * clutter_transition_group_add_transition: - * @group: a #ClutterTransitionGroup - * @transition: a #ClutterTransition - * - * Adds @transition to @group. - * - * This function acquires a reference on @transition that will be released - * when calling clutter_transition_group_remove_transition(). - * - * Since: 1.12 - */ -void -clutter_transition_group_add_transition (ClutterTransitionGroup *group, - ClutterTransition *transition) -{ - g_return_if_fail (CLUTTER_IS_TRANSITION_GROUP (group)); - g_return_if_fail (CLUTTER_IS_TRANSITION (transition)); - - g_hash_table_add (group->priv->transitions, g_object_ref (transition)); -} - -/** - * clutter_transition_group_remove_transition: - * @group: a #ClutterTransitionGroup - * @transition: a #ClutterTransition - * - * Removes @transition from @group. - * - * This function releases the reference acquired on @transition when - * calling clutter_transition_group_add_transition(). - * - * Since: 1.12 - */ -void -clutter_transition_group_remove_transition (ClutterTransitionGroup *group, - ClutterTransition *transition) -{ - g_return_if_fail (CLUTTER_IS_TRANSITION_GROUP (group)); - - g_hash_table_remove (group->priv->transitions, transition); -} - -/** - * clutter_transition_group_remove_all: - * @group: a #ClutterTransitionGroup - * - * Removes all transitions from @group. - * - * This function releases the reference acquired when calling - * clutter_transition_group_add_transition(). - * - * Since: 1.12 - */ -void -clutter_transition_group_remove_all (ClutterTransitionGroup *group) -{ - g_return_if_fail (CLUTTER_IS_TRANSITION_GROUP (group)); - - g_hash_table_remove_all (group->priv->transitions); -} |