#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
void vik_viewport_reset_copyrights ( VikViewport *vp );
void vik_viewport_add_copyright ( VikViewport *vp, const gchar *copyright );
+void vik_viewport_reset_logos ( VikViewport *vp );
+void vik_viewport_add_logo ( VikViewport *vp, const GdkPixbuf *logo );
+
/* Viewport features */
void vik_viewport_draw_scale ( VikViewport *vvp );
void vik_viewport_set_draw_scale ( VikViewport *vvp, gboolean draw_scale );
void vik_viewport_draw_centermark ( VikViewport *vvp );
void vik_viewport_set_draw_centermark ( VikViewport *vvp, gboolean draw_centermark );
gboolean vik_viewport_get_draw_centermark ( VikViewport *vvp );
+void vik_viewport_draw_logo ( VikViewport *vvp );
+void vik_viewport_set_draw_highlight ( VikViewport *vvp, gboolean draw_highlight );
+gboolean vik_viewport_get_draw_highlight ( VikViewport *vvp );
/* Color/graphics context management */
void vik_viewport_set_background_color ( VikViewport *vvp, const gchar *color );
GdkGC *vik_viewport_new_gc_from_color ( VikViewport *vvp, GdkColor *color, gint thickness );
GdkFunction vik_gc_get_function ( GdkGC *gc );
+void vik_viewport_set_highlight_color ( VikViewport *vvp, const gchar *color );
+const gchar *vik_viewport_get_highlight_color ( VikViewport *vvp );
+GdkColor *vik_viewport_get_highlight_gdkcolor ( VikViewport *vvp );
+void vik_viewport_set_highlight_gdkcolor ( VikViewport *vvp, GdkColor * );
+GdkGC* vik_viewport_get_gc_highlight ( VikViewport *vvp );
+void vik_viewport_set_highlight_thickness ( VikViewport *vvp, gint thickness );
+
/* Drawing primitives */
void a_viewport_clip_line ( gint *x1, gint *y1, gint *x2, gint *y2 ); /* run this before drawing a line. vik_viewport_draw_line runs it for you */
void vik_viewport_draw_line ( VikViewport *vvp, GdkGC *gc, gint x1, gint y1, gint x2, gint y2 );
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