/*
- * Copyright (C) 2009-2010 Andy Spencer <andy753421@gmail.com>
+ * Copyright (C) 2009-2011 Andy Spencer <andy753421@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include <gtk/gtk.h>
#include <glib-object.h>
+/* Projections */
+typedef enum {
+ GRITS_PROJ_LATLON,
+ GRITS_PROJ_MERCATOR,
+} GritsProj;
+
/* Rendering levels */
/**
* GRITS_LEVEL_BACKGROUND:
/* For dragging */
gint drag_mode;
gdouble drag_x, drag_y;
+
+ /* For queue_draw */
+ guint draw_source;
+ GMutex draw_lock;
};
struct _GritsViewerClass {
void (*project) (GritsViewer *viewer,
gdouble lat, gdouble lon, gdouble elev,
gdouble *px, gdouble *py, gdouble *pz);
+ void (*unproject) (GritsViewer *viewer,
+ gdouble px, gdouble py,gdouble pz,
+ gdouble *lat, gdouble *lon, gdouble *elev);
void (*clear_height_func)(GritsViewer *viewer);
void (*set_height_func) (GritsViewer *viewer, GritsBounds *bounds,
GritsHeightFunc height_func, gpointer user_data,
gboolean update);
- gpointer (*add) (GritsViewer *viewer, GritsObject *object,
+ void (*add) (GritsViewer *viewer, GritsObject *object,
gint level, gboolean sort);
- GritsObject *(*remove) (GritsViewer *viewer, GritsObject *object);
+ void (*remove) (GritsViewer *viewer, GritsObject *object);
};
GType grits_viewer_get_type(void);
void grits_viewer_project(GritsViewer *viewer,
gdouble lat, gdouble lon, gdouble elev,
gdouble *px, gdouble *py, gdouble *pz);
+void grits_viewer_unproject(GritsViewer *viewer,
+ gdouble px, gdouble py, gdouble pz,
+ gdouble *lat, gdouble *lon, gdouble *elev);
void grits_viewer_clear_height_func(GritsViewer *viewer);
void grits_viewer_set_height_func(GritsViewer *viewer, GritsBounds *bounds,
GritsHeightFunc height_func, gpointer user_data,
gboolean update);
-gpointer grits_viewer_add(GritsViewer *viewer, GritsObject *object,
+void grits_viewer_add(GritsViewer *viewer, GritsObject *object,
gint level, gboolean sort);
-GritsObject *grits_viewer_remove(GritsViewer *viewer, GritsObject *object);
+void grits_viewer_remove(GritsViewer *viewer, GritsObject *object);
+
+void grits_viewer_queue_draw(GritsViewer *viewer);
#endif