+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 {
+ VIK_VIEWPORT_DRAWMODE_UTM=0,
+ VIK_VIEWPORT_DRAWMODE_EXPEDIA,
+ VIK_VIEWPORT_DRAWMODE_MERCATOR,
+ VIK_VIEWPORT_DRAWMODE_LATLON,
+ VIK_VIEWPORT_NUM_DRAWMODES /*< skip >*/
+} VikViewportDrawMode;
+
+VikCoordMode vik_viewport_get_coord_mode ( const VikViewport *vvp );
+gboolean vik_viewport_is_one_zone ( VikViewport *vvp );
+const gchar *vik_viewport_get_drawmode_name(VikViewport *vv, VikViewportDrawMode mode);
+void vik_viewport_set_drawmode ( VikViewport *vvp, VikViewportDrawMode drawmode );
+VikViewportDrawMode vik_viewport_get_drawmode ( VikViewport *vvp );
+ /* Do not forget to update vik_viewport_get_drawmode_name() if you modify VikViewportDrawMode */