X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/4e485bf38a05666572ef834aceed351c35098a87..020b155be89ee1825309eb6d8d1958f3b46c310d:/src/vikviewport.c?ds=sidebyside diff --git a/src/vikviewport.c b/src/vikviewport.c index 27a1b861..7814ccbd 100644 --- a/src/vikviewport.c +++ b/src/vikviewport.c @@ -79,6 +79,7 @@ struct _VikViewport { 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; @@ -170,6 +171,7 @@ static void viewport_init ( VikViewport *vvp ) 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); } @@ -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 );