[gnome-boxes] util: Add function to animate actor geometry
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-boxes] util: Add function to animate actor geometry
- Date: Wed, 26 Jun 2013 15:18:38 +0000 (UTC)
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]