X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fgrits-viewer.h;h=581751edfa10369763e18bda7637c9252ef8c8e1;hp=aff426bf6e3328070223f7c7b4678da1348c4785;hb=8941c8e6e06588d43732645e6af3feb959f1eb41;hpb=f383c18c9f85a1b439c6bfb2a27d652278ed019a diff --git a/src/grits-viewer.h b/src/grits-viewer.h index aff426b..581751e 100644 --- a/src/grits-viewer.h +++ b/src/grits-viewer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009-2010 Andy Spencer + * Copyright (C) 2009-2011 Andy Spencer * * 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 @@ -38,6 +38,12 @@ #include #include +/* Projections */ +typedef enum { + GRITS_PROJ_LATLON, + GRITS_PROJ_MERCATOR, +} GritsProj; + /* Rendering levels */ /** * GRITS_LEVEL_BACKGROUND: @@ -113,6 +119,10 @@ struct _GritsViewer { /* For dragging */ gint drag_mode; gdouble drag_x, drag_y; + + /* For queue_draw */ + guint draw_source; + GMutex draw_lock; }; struct _GritsViewerClass { @@ -125,15 +135,18 @@ 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, gpointer ref); + void (*remove) (GritsViewer *viewer, GritsObject *object); }; GType grits_viewer_get_type(void); @@ -165,14 +178,19 @@ void grits_viewer_center_position(GritsViewer *viewer, 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, gpointer ref); +void grits_viewer_remove(GritsViewer *viewer, GritsObject *object); + +void grits_viewer_queue_draw(GritsViewer *viewer); #endif