[gnome-boxes] util: Add function to animate actor geometry



commit fe8ac0a1fc953216a03c60db7b4bcfc619b0ca6f
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date:   Wed Jun 26 18:08:20 2013 +0300

    util: Add function to animate actor geometry

 src/app.vala      |   28 +++-------------------------
 src/util-app.vala |   37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+), 25 deletions(-)
---
diff --git a/src/app.vala b/src/app.vala
index 5fc09b1..0746d7c 100644
--- a/src/app.vala
+++ b/src/app.vala
@@ -671,33 +671,11 @@ private class Boxes.App: Boxes.UI {
         view.get_item_pos (item, out item_x, out item_y);
         var actor = item.actor;
 
-        var transition = actor.get_transition ("animate-position") as Clutter.TransitionGroup;
+        var transition = actor.get_transition ("animate-position");
         if (transition != null)
             actor.remove_transition ("animate-position");
-        transition = new Clutter.TransitionGroup ();
-        transition.set_duration (duration);
-        transition.set_progress_mode (Clutter.AnimationMode.EASE_OUT_QUAD);
-
-        var x_transition = new Clutter.PropertyTransition ("x");
-        var value = GLib.Value (typeof (float));
-        value.set_float (item_x);
-        x_transition.set_to_value (value);
-        transition.add_transition (x_transition);
-
-        var y_transition = new Clutter.PropertyTransition ("y");
-        value.set_float (item_y);
-        transition.set_to_value (value);
-        transition.add_transition (y_transition);
-
-        var width_transition = new Clutter.PropertyTransition ("width");
-        value.set_float (Machine.SCREENSHOT_WIDTH);
-        transition.set_to_value (value);
-        transition.add_transition (width_transition);
-
-        var height_transition = new Clutter.PropertyTransition ("height");
-        value.set_float (Machine.SCREENSHOT_HEIGHT);
-        transition.set_to_value (value);
-        transition.add_transition (height_transition);
+
+        transition = animate_actor_geometry (item_x, item_y, Machine.SCREENSHOT_WIDTH, 
Machine.SCREENSHOT_HEIGHT);
 
         // Also track size changes in the icon_view during the animation
         var id = view.main_view.size_allocate.connect ((allocation) => {
diff --git a/src/util-app.vala b/src/util-app.vala
index d15c0af..f4392e3 100644
--- a/src/util-app.vala
+++ b/src/util-app.vala
@@ -133,6 +133,43 @@ namespace Boxes {
         actor.add_transition ("animate-opacity", transition);
     }
 
+    public Clutter.Transition animate_actor_geometry (float x, float y, float width, float height) {
+        var transition = new Clutter.TransitionGroup ();
+        transition.set_duration (App.app.duration);
+        transition.set_progress_mode (Clutter.AnimationMode.EASE_OUT_QUAD);
+
+        var value = GLib.Value (typeof (float));
+        if (x > 0) {
+            var x_transition = new Clutter.PropertyTransition ("x");
+            value.set_float (x);
+            x_transition.set_to_value (value);
+            transition.add_transition (x_transition);
+        }
+
+        if (y > 0) {
+            var y_transition = new Clutter.PropertyTransition ("y");
+            value.set_float (y);
+            transition.set_to_value (value);
+            transition.add_transition (y_transition);
+        }
+
+        if (width > 0) {
+            var width_transition = new Clutter.PropertyTransition ("width");
+            value.set_float (width);
+            transition.set_to_value (value);
+            transition.add_transition (width_transition);
+        }
+
+        if (height > 0) {
+            var height_transition = new Clutter.PropertyTransition ("height");
+            value.set_float (height);
+            transition.set_to_value (value);
+            transition.add_transition (height_transition);
+        }
+
+        return transition as Clutter.Transition;
+    }
+
     public delegate void ActorFunc (Clutter.Actor actor);
 
     public void actor_add (Clutter.Actor actor, Clutter.Actor container) {


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