X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/04f36d9233f93ea0412e072214c6c49ede480709..00de8de3e9c61db157855abdc793c403ab24ab0e:/src/vikviewport.h diff --git a/src/vikviewport.h b/src/vikviewport.h index eca466fb..14136453 100644 --- a/src/vikviewport.h +++ b/src/vikviewport.h @@ -36,11 +36,11 @@ G_BEGIN_DECLS #define VIK_VIEWPORT_TYPE (vik_viewport_get_type ()) #define VIK_VIEWPORT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VIK_VIEWPORT_TYPE, VikViewport)) #define VIK_VIEWPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VIK_VIEWPORT_TYPE, VikViewportClass)) -#define IS_VIK_VIEWPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIK_VIEWPORT_TYPE)) -#define IS_VIK_VIEWPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIK_VIEWPORT_TYPE)) +#define VIK_IS_VIEWPORT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VIK_VIEWPORT_TYPE)) +#define VIK_IS_VIEWPORT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VIK_VIEWPORT_TYPE)) #define VIK_VIEWPORT_MAX_ZOOM 32768.0 -#define VIK_VIEWPORT_MIN_ZOOM 0.125 +#define VIK_VIEWPORT_MIN_ZOOM (1 / 32.0) /* used for coord to screen etc, screen to coord */ #define VIK_VIEWPORT_UTM_WRONG_ZONE -9999999 @@ -54,6 +54,7 @@ typedef struct _VikViewportClass VikViewportClass; struct _VikViewportClass { GtkDrawingAreaClass drawing_area_class; + void (*updated_center) (VikViewport *vw); }; GType vik_viewport_get_type (); @@ -82,16 +83,20 @@ void vik_viewport_zoom_out ( VikViewport *vvp ); /* viewport position */ const VikCoord *vik_viewport_get_center ( VikViewport *vvp ); -void vik_viewport_set_center_coord ( VikViewport *vvp, const VikCoord *coord ); +void vik_viewport_set_center_coord ( VikViewport *vvp, const VikCoord *coord, gboolean save_position ); void vik_viewport_set_center_screen ( VikViewport *vvp, int x, int y ); void vik_viewport_center_for_zonen ( VikViewport *vvp, struct UTM *center, int zone); gchar vik_viewport_leftmost_zone ( VikViewport *vvp ); gchar vik_viewport_rightmost_zone ( VikViewport *vvp ); -void vik_viewport_set_center_utm ( VikViewport *vvp, const struct UTM *utm ); -void vik_viewport_set_center_latlon ( VikViewport *vvp, const struct LatLon *ll ); +void vik_viewport_set_center_utm ( VikViewport *vvp, const struct UTM *utm, gboolean save_position ); +void vik_viewport_set_center_latlon ( VikViewport *vvp, const struct LatLon *ll, gboolean save_position ); void vik_viewport_corners_for_zonen ( VikViewport *vvp, int zone, VikCoord *ul, VikCoord *br ); void vik_viewport_get_min_max_lat_lon ( VikViewport *vp, gdouble *min_lat, gdouble *max_lat, gdouble *min_lon, gdouble *max_lon ); +gboolean vik_viewport_go_back ( VikViewport *vvp ); +gboolean vik_viewport_go_forward ( VikViewport *vvp ); +gboolean vik_viewport_back_available ( const VikViewport *vvp ); +gboolean vik_viewport_forward_available ( const VikViewport *vvp ); /* drawmode management */ typedef enum { @@ -179,7 +184,8 @@ void vik_viewport_draw_arc ( VikViewport *vvp, GdkGC *gc, gboolean filled, gint void vik_viewport_draw_polygon ( VikViewport *vvp, GdkGC *gc, gboolean filled, GdkPoint *points, gint npoints ); void vik_viewport_draw_layout ( VikViewport *vvp, GdkGC *gc, gint x, gint y, PangoLayout *layout ); - +/* Utilities */ +void vik_viewport_compute_bearing ( VikViewport *vp, gint x1, gint y1, gint x2, gint y2, gdouble *angle, gdouble *baseangle ); G_END_DECLS