[libchamplain] Reduce the set of coordinate conversion functions



commit 9a19543ad442206c744b47c141e4001ef1889381
Author: JiÅ?í Techet <techet gmail com>
Date:   Sun Jan 30 13:41:01 2011 +0100

    Reduce the set of coordinate conversion functions

 champlain/champlain-marker-layer.c |   14 +++---
 champlain/champlain-view.c         |   92 ++++++++++++------------------------
 champlain/champlain-view.h         |   12 +----
 3 files changed, 39 insertions(+), 79 deletions(-)
---
diff --git a/champlain/champlain-marker-layer.c b/champlain/champlain-marker-layer.c
index 77011b4..0542bac 100644
--- a/champlain/champlain-marker-layer.c
+++ b/champlain/champlain-marker-layer.c
@@ -464,10 +464,12 @@ set_marker_position (ChamplainMarkerLayer *layer, ChamplainMarker *marker)
   if (priv->view == NULL)
     return;
 
-  x = champlain_view_longitude_to_layer_x (priv->view, 
+  x = champlain_view_longitude_to_x (priv->view, 
     champlain_marker_get_longitude (marker));
-  y = champlain_view_latitude_to_layer_y (priv->view, 
+  x += champlain_view_get_viewport_x (priv->view);
+  y = champlain_view_latitude_to_y (priv->view, 
     champlain_marker_get_latitude (marker));
+  y += champlain_view_get_viewport_y (priv->view);
 
   clutter_actor_set_position (CLUTTER_ACTOR (marker), x, y);
 }
@@ -862,7 +864,6 @@ redraw_polygon (ChamplainMarkerLayer *layer)
   gfloat width, height;
   int i, n_children;
   ChamplainView *view = priv->view;
-  gdouble lon, lat;
   gdouble x, y;
   
   /* layer not yet added to the view */
@@ -878,10 +879,9 @@ redraw_polygon (ChamplainMarkerLayer *layer)
   cairo_texture = clutter_cairo_texture_new (width, height);
   clutter_container_add_actor (CLUTTER_CONTAINER (priv->polygon_actor), cairo_texture);
   
-  lon = champlain_view_x_to_longitude (view, 0);
-  lat = champlain_view_y_to_latitude (view, 0);
-  x = champlain_view_longitude_to_layer_x (view, lon);
-  y = champlain_view_latitude_to_layer_y (view, lat);
+  x = champlain_view_get_viewport_x (priv->view);
+  y = champlain_view_get_viewport_y (priv->view);
+
   clutter_actor_set_position (priv->polygon_actor, x, y);
 
   cr = clutter_cairo_texture_create (CLUTTER_CAIRO_TEXTURE (cairo_texture));
diff --git a/champlain/champlain-view.c b/champlain/champlain-view.c
index 0c4ab88..6efb477 100644
--- a/champlain/champlain-view.c
+++ b/champlain/champlain-view.c
@@ -2112,8 +2112,13 @@ champlain_view_x_to_longitude (ChamplainView *view,
   g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0.0);
   
   ChamplainViewPrivate *priv = view->priv;
+  gdouble longitude;
 
-  return champlain_view_layer_x_to_longitude (view, priv->viewport_size.x + x);
+  longitude = champlain_map_source_get_longitude (priv->map_source,
+      priv->zoom_level, 
+      x + priv->viewport_size.x + priv->anchor.x);
+
+  return longitude;
 }
 
 
@@ -2126,8 +2131,13 @@ champlain_view_y_to_latitude (ChamplainView *view,
   g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0.0);
   
   ChamplainViewPrivate *priv = view->priv;
+  gdouble latitude;
+
+  latitude = champlain_map_source_get_latitude (priv->map_source,
+      priv->zoom_level, 
+      y + priv->viewport_size.y + priv->anchor.y);
 
-  return champlain_view_layer_y_to_latitude (view, priv->viewport_size.y + y);
+  return latitude;
 }
 
 gdouble
@@ -2139,8 +2149,13 @@ champlain_view_longitude_to_x (ChamplainView *view,
   g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0);
 
   ChamplainViewPrivate *priv = view->priv;
+  gdouble x;
+
+  x = champlain_map_source_get_x (priv->map_source, priv->zoom_level, longitude);
+  x -= priv->anchor.x;
+  x -= priv->viewport_size.x;
 
-  return champlain_view_longitude_to_layer_x (view, longitude) - priv->viewport_size.x;
+  return x;
 }
 
 
@@ -2153,87 +2168,40 @@ champlain_view_latitude_to_y (ChamplainView *view,
   g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0);
 
   ChamplainViewPrivate *priv = view->priv;
+  gdouble y;
 
-  return champlain_view_latitude_to_layer_y (view, latitude) - priv->viewport_size.y;
-}
-
-
-
-gdouble
-champlain_view_layer_x_to_longitude (ChamplainView *view,
-    gdouble x)
-{
-  DEBUG_LOG ()
-
-  g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0.0);
-  ChamplainViewPrivate *priv = view->priv;
-  
-  gdouble longitude;
-
-  longitude = champlain_map_source_get_longitude (priv->map_source,
-      priv->zoom_level, 
-      x + priv->anchor.x);
+  y = champlain_map_source_get_y (priv->map_source, priv->zoom_level, latitude);
+  y -= priv->anchor.y;
+  y -= priv->viewport_size.y;
 
-  return longitude;
+  return y;
 }
 
 
-gdouble
-champlain_view_layer_y_to_latitude (ChamplainView *view,
-    gdouble y)
+double
+champlain_view_get_viewport_x (ChamplainView *view)
 {
   DEBUG_LOG ()
 
   g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0.0);
   ChamplainViewPrivate *priv = view->priv;
   
-  gdouble latitude;
-
-  latitude = champlain_map_source_get_latitude (priv->map_source,
-      priv->zoom_level, 
-      y + priv->anchor.y);
-
-  return latitude;
+  return priv->viewport_size.x;
 }
 
 
-gdouble
-champlain_view_longitude_to_layer_x (ChamplainView *view, 
-    gdouble longitude)
+double
+champlain_view_get_viewport_y (ChamplainView *view)
 {
   DEBUG_LOG ()
 
-  g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0);
-
+  g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0.0);
   ChamplainViewPrivate *priv = view->priv;
-  gdouble x;
-
-  x = champlain_map_source_get_x (priv->map_source, priv->zoom_level, longitude);
-  x -= priv->anchor.x;
   
-  return x;
+  return priv->viewport_size.y;
 }
 
 
-gdouble
-champlain_view_latitude_to_layer_y (ChamplainView *view, 
-    gdouble latitude)
-{
-  DEBUG_LOG ()
-
-  g_return_val_if_fail (CHAMPLAIN_IS_VIEW (view), 0);
-
-  ChamplainViewPrivate *priv = view->priv;
-  gdouble y;
-
-  y = champlain_map_source_get_y (priv->map_source, priv->zoom_level, latitude);
-  y -= priv->anchor.y;
-
-  return y;
-}
-
-
-
 static void
 view_load_visible_tiles (ChamplainView *view)
 {
diff --git a/champlain/champlain-view.h b/champlain/champlain-view.h
index b1bdbe5..5bb7a41 100644
--- a/champlain/champlain-view.h
+++ b/champlain/champlain-view.h
@@ -169,16 +169,6 @@ gboolean champlain_view_get_zoom_on_double_click (ChamplainView *view);
 void champlain_view_reload_tiles (ChamplainView *view);
 
 
-
-gdouble champlain_view_layer_x_to_longitude (ChamplainView *view,
-    gdouble x);
-gdouble champlain_view_layer_y_to_latitude (ChamplainView *view,
-    gdouble y);
-gdouble champlain_view_longitude_to_layer_x (ChamplainView *viev, 
-    gdouble longitude);
-gdouble champlain_view_latitude_to_layer_y (ChamplainView *viev, 
-    gdouble latitude);
-
 gdouble champlain_view_x_to_longitude (ChamplainView *view,
     gdouble x);
 gdouble champlain_view_y_to_latitude (ChamplainView *view,
@@ -188,6 +178,8 @@ gdouble champlain_view_longitude_to_x (ChamplainView *view,
 gdouble champlain_view_latitude_to_y (ChamplainView *view, 
     gdouble latitude);
 
+double champlain_view_get_viewport_x (ChamplainView *view);
+double champlain_view_get_viewport_y (ChamplainView *view);
 
 
 G_END_DECLS



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