#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
struct _VikViewportClass
{
GtkDrawingAreaClass drawing_area_class;
+ void (*updated_center) (VikViewport *vw);
};
GType vik_viewport_get_type ();
/* 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 );
+void vik_viewport_show_centers ( VikViewport *vvp, GtkWindow *parent );
/* drawmode management */
typedef enum {
void vik_viewport_sync ( VikViewport *vvp ); /* draw buffer to window */
void vik_viewport_pan_sync ( VikViewport *vvp, gint x_off, gint y_off );
void vik_viewport_clear ( VikViewport *vvp );
-void vik_viewport_draw_pixbuf_with_alpha ( VikViewport *vvp, GdkPixbuf *pixbuf, gint alpha,
- gint src_x, gint src_y, gint dest_x, gint dest_y, gint w, gint h );
void vik_viewport_draw_pixbuf ( VikViewport *vvp, GdkPixbuf *pixbuf, gint src_x, gint src_y,
gint dest_x, gint dest_y, gint w, gint h );
gint vik_viewport_get_width ( VikViewport *vvp );