]> Pileus Git - grits/blobdiff - src/grits-viewer.c
Add pointer code
[grits] / src / grits-viewer.c
index 1afd2eaece9be068a2f6cec0e9bb268019a69118..7dbab925d6c0a89e32e689187f27b15e85871d35 100644 (file)
@@ -389,6 +389,32 @@ void grits_viewer_rotate(GritsViewer *viewer, gdouble x, gdouble y, gdouble z)
        _grits_viewer_emit_rotation_changed(viewer);
 }
 
+/**
+ * grits_viewer_get_pointer:
+ * @viewer: the viewer
+ * @lat:  the location to store the latitude
+ * @lon:  the location to store the longitude
+ * @elev: the location to store the elevation
+ *
+ * Get the location of the mouse pointer
+ *
+ * Returns: true if the pointer over the viewer
+ */
+gboolean grits_viewer_get_pointer(GritsViewer *viewer, gdouble *lat, gdouble *lon, gdouble *elev)
+{
+       g_assert(GRITS_IS_VIEWER(viewer));
+       gint x, y;
+       GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(viewer));
+       GdkWindow *other = gdk_window_get_pointer(window, &x, &y, NULL);
+       (void)other;
+       //if (window != other)
+       //      return FALSE;
+       grits_viewer_unproject(viewer, x, y, -1, lat, lon, elev);
+       g_debug("GritsViewer: get_pointer - xy=%d,%d -> lle%.0f,%.0f,%.0f",
+                       x, y, *lat, *lon, *elev);
+       return TRUE;
+}
+
 /**
  * grits_viewer_refresh:
  * @viewer: the viewer