[libchamplain] Slightly improve zooming visualisation
- From: Jiří Techet <jiritechet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libchamplain] Slightly improve zooming visualisation
- Date: Sat, 4 May 2013 12:19:16 +0000 (UTC)
commit 358a0256522106cc200b66134161d9ce071baa1b
Author: Jiří Techet <techet gmail com>
Date: Fri May 3 19:50:28 2013 +0200
Slightly improve zooming visualisation
champlain/champlain-view.c | 23 ++++++++++++-----------
1 files changed, 12 insertions(+), 11 deletions(-)
---
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c
index 8b45b2e..b12d325 100644
--- a/champlain/champlain-view.c
+++ b/champlain/champlain-view.c
@@ -2400,17 +2400,17 @@ show_zoom_actor (ChamplainView *view,
x_first = CLAMP (priv->viewport_x / size, 0, max_x_end);
y_first = CLAMP (priv->viewport_y / size, 0, max_y_end);
- priv->anim_start_zoom_level = priv->zoom_level;
- priv->zoom_actor_viewport_x = priv->viewport_x;
- priv->zoom_actor_viewport_y = priv->viewport_y;
-
clutter_actor_destroy_all_children (priv->zoom_overlay_actor);
zoom_actor = clutter_actor_new ();
clutter_actor_add_child (priv->zoom_overlay_actor, zoom_actor);
-
- gint deltax = x_first * size - priv->viewport_x;
- gint deltay = y_first * size - priv->viewport_y;
+ gint deltax = priv->viewport_x - x_first * size;
+ gint deltay = priv->viewport_y - y_first * size;
+
+ priv->anim_start_zoom_level = priv->zoom_level;
+ priv->zoom_actor_viewport_x = priv->viewport_x - deltax;
+ priv->zoom_actor_viewport_y = priv->viewport_y - deltay;
+
clutter_actor_iter_init (&iter, priv->map_layer);
while (clutter_actor_iter_next (&iter, &child))
{
@@ -2419,19 +2419,20 @@ show_zoom_actor (ChamplainView *view,
gint tile_y = champlain_tile_get_y (tile);
champlain_tile_set_state (tile, CHAMPLAIN_STATE_DONE);
+
g_object_ref (CLUTTER_ACTOR (tile));
clutter_actor_iter_remove (&iter);
clutter_actor_add_child (zoom_actor, CLUTTER_ACTOR (tile));
g_object_unref (CLUTTER_ACTOR (tile));
- clutter_actor_set_position (CLUTTER_ACTOR (tile), (tile_x - x_first) * size + deltax, (tile_y -
y_first) * size + deltay);
+
+ clutter_actor_set_position (CLUTTER_ACTOR (tile), (tile_x - x_first) * size, (tile_y - y_first) *
size);
}
-
- clutter_actor_set_size (zoom_actor, priv->viewport_width, priv->viewport_height);
zoom_actor_width = clutter_actor_get_width (zoom_actor);
zoom_actor_height = clutter_actor_get_height (zoom_actor);
- clutter_actor_set_pivot_point (zoom_actor, x / zoom_actor_width, y / zoom_actor_height);
+ clutter_actor_set_pivot_point (zoom_actor, (x + deltax) / zoom_actor_width, (y + deltay) /
zoom_actor_height);
+ clutter_actor_set_position (zoom_actor, -deltax, -deltay);
}
else
zoom_actor = clutter_actor_get_first_child (priv->zoom_overlay_actor);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]