]> git.street.me.uk Git - andy/viking.git/blobdiff - src/vikviewport.c
Using the new icon
[andy/viking.git] / src / vikviewport.c
index 27a1b861ef79d5471afce8b73d2fa1e5929a74c4..7814ccbde1fd94b9c06c8bd09880dacb140c3e76 100644 (file)
@@ -79,6 +79,7 @@ struct _VikViewport {
   GdkColor background_color;
   GdkGC *scale_bg_gc;
   gboolean draw_scale;
   GdkColor background_color;
   GdkGC *scale_bg_gc;
   gboolean draw_scale;
+  gboolean draw_centermark;
 
   /* subset of coord types. lat lon can be plotted in 2 ways, google or exp. */
   VikViewportDrawMode drawmode;
 
   /* subset of coord types. lat lon can be plotted in 2 ways, google or exp. */
   VikViewportDrawMode drawmode;
@@ -170,6 +171,7 @@ static void viewport_init ( VikViewport *vvp )
   vvp->background_gc = NULL;
   vvp->scale_bg_gc = NULL;
   vvp->draw_scale = TRUE;
   vvp->background_gc = NULL;
   vvp->scale_bg_gc = NULL;
   vvp->draw_scale = TRUE;
+  vvp->draw_centermark = TRUE;
   g_signal_connect (G_OBJECT(vvp), "configure_event", G_CALLBACK(vik_viewport_configure), NULL);
 }
 
   g_signal_connect (G_OBJECT(vvp), "configure_event", G_CALLBACK(vik_viewport_configure), NULL);
 }
 
@@ -384,6 +386,40 @@ void vik_viewport_draw_scale ( VikViewport *vvp )
   }
 }
 
   }
 }
 
+void vik_viewport_set_draw_centermark ( VikViewport *vvp, gboolean draw_centermark )
+{
+  vvp->draw_centermark = draw_centermark;
+}
+
+gboolean vik_viewport_get_draw_centermark ( VikViewport *vvp )
+{
+  return vvp->draw_centermark;
+}
+
+void vik_viewport_draw_centermark ( VikViewport *vvp )
+{
+  if ( !vvp->draw_centermark )
+    return;
+
+  const int len = 30;
+  const int gap = 4;
+  int center_x = vvp->width/2;
+  int center_y = vvp->height/2;
+  GdkGC * black_gc = GTK_WIDGET(&vvp->drawing_area)->style->black_gc;
+
+  /* white back ground */
+  vik_viewport_draw_line(vvp, vvp->scale_bg_gc, center_x - len, center_y, center_x - gap, center_y);
+  vik_viewport_draw_line(vvp, vvp->scale_bg_gc, center_x + gap, center_y, center_x + len, center_y);
+  vik_viewport_draw_line(vvp, vvp->scale_bg_gc, center_x, center_y - len, center_x, center_y - gap);
+  vik_viewport_draw_line(vvp, vvp->scale_bg_gc, center_x, center_y + gap, center_x, center_y + len);
+  /* black fore ground */
+  vik_viewport_draw_line(vvp, black_gc, center_x - len, center_y, center_x - gap, center_y);
+  vik_viewport_draw_line(vvp, black_gc, center_x + gap, center_y, center_x + len, center_y);
+  vik_viewport_draw_line(vvp, black_gc, center_x, center_y - len, center_x, center_y - gap);
+  vik_viewport_draw_line(vvp, black_gc, center_x, center_y + gap, center_x, center_y + len);
+  
+}
+
 void vik_viewport_sync ( VikViewport *vvp )
 {
   g_return_if_fail ( vvp != NULL );
 void vik_viewport_sync ( VikViewport *vvp )
 {
   g_return_if_fail ( vvp != NULL );