X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgis-viewer.h;h=fbc9767f080030172082884f3dad07e08f41c38f;hb=bd716715f1d13a8df514fcfa53fd82aebdfda770;hp=6b95e1a03f9b66ad5c02a76efa841116c8c49b34;hpb=3ebe95528320be9e3821fe23e39d41fd89b10fdd;p=grits diff --git a/src/gis-viewer.h b/src/gis-viewer.h index 6b95e1a..fbc9767 100644 --- a/src/gis-viewer.h +++ b/src/gis-viewer.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Andy Spencer + * Copyright (C) 2009-2010 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 @@ -21,6 +21,7 @@ #include #include +/* Rendering levels */ #define GIS_LEVEL_BACKGROUND -100 #define GIS_LEVEL_WORLD 0 #define GIS_LEVEL_OVERLAY 100 @@ -39,20 +40,25 @@ typedef struct _GisViewerClass GisViewerClass; typedef gdouble (*GisHeightFunc)(gdouble lat, gdouble lon, gpointer user_data); -#include "gis-tile.h" #include "gis-plugin.h" -#include "gis-object.h" +#include "gis-prefs.h" +#include "objects/gis-object.h" +#include "objects/gis-tile.h" struct _GisViewer { GtkDrawingArea parent_instance; /* instance members */ GisPlugins *plugins; + GisPrefs *prefs; gchar *time; - gchar *site; gdouble location[3]; gdouble rotation[3]; gboolean offline; + + /* For dragging */ + gint drag_mode; + gdouble drag_x, drag_y; }; struct _GisViewerClass { @@ -66,43 +72,33 @@ struct _GisViewerClass { gdouble lat, gdouble lon, gdouble elev, gdouble *px, gdouble *py, gdouble *pz); - void (*clear_height_func)(GisViewer *self); - void (*set_height_func) (GisViewer *self, GisTile *tile, + void (*clear_height_func)(GisViewer *viewer); + void (*set_height_func) (GisViewer *viewer, GisTile *tile, GisHeightFunc height_func, gpointer user_data, gboolean update); - void (*render_tile) (GisViewer *viewer, GisTile *tile); - void (*render_tiles) (GisViewer *viewer, GisTile *root); - - void (*begin) (GisViewer *viewer); - void (*end) (GisViewer *viewer); - gpointer (*add) (GisViewer *viewer, GisObject *object, gint level, gboolean sort); - void (*remove) (GisViewer *viewer, gpointer ref); + GisObject *(*remove) (GisViewer *viewer, gpointer ref); }; GType gis_viewer_get_type(void); /* Methods */ -GisViewer *gis_viewer_new(); +void gis_viewer_setup(GisViewer *viewer, GisPlugins *plugins, GisPrefs *prefs); void gis_viewer_set_time(GisViewer *viewer, const gchar *time); gchar *gis_viewer_get_time(GisViewer *viewer); void gis_viewer_set_location(GisViewer *viewer, gdouble lat, gdouble lon, gdouble elev); void gis_viewer_get_location(GisViewer *viewer, gdouble *lat, gdouble *lon, gdouble *elev); -void gis_viewer_pan (GisViewer *viewer, gdouble lat, gdouble lon, gdouble elev); -void gis_viewer_zoom (GisViewer *viewer, gdouble scale); +void gis_viewer_pan(GisViewer *viewer, gdouble forward, gdouble sideways, gdouble up); +void gis_viewer_zoom(GisViewer *viewer, gdouble scale); void gis_viewer_set_rotation(GisViewer *viewer, gdouble x, gdouble y, gdouble z); void gis_viewer_get_rotation(GisViewer *viewer, gdouble *x, gdouble *y, gdouble *z); void gis_viewer_rotate (GisViewer *viewer, gdouble x, gdouble y, gdouble z); -/* To be deprecated, use {get,set}_location */ -void gis_viewer_set_site(GisViewer *viewer, const gchar *site); -gchar *gis_viewer_get_site(GisViewer *viewer); - void gis_viewer_refresh(GisViewer *viewer); void gis_viewer_set_offline(GisViewer *viewer, gboolean offline); @@ -116,19 +112,13 @@ void gis_viewer_project(GisViewer *viewer, gdouble lat, gdouble lon, gdouble elev, gdouble *px, gdouble *py, gdouble *pz); -void gis_viewer_clear_height_func(GisViewer *self); -void gis_viewer_set_height_func(GisViewer *self, GisTile *tile, +void gis_viewer_clear_height_func(GisViewer *viewer); +void gis_viewer_set_height_func(GisViewer *viewer, GisTile *tile, GisHeightFunc height_func, gpointer user_data, gboolean update); -void gis_viewer_render_tile (GisViewer *viewer, GisTile *tile); -void gis_viewer_render_tiles(GisViewer *viewer, GisTile *root); - -void gis_viewer_begin(GisViewer *viewer); -void gis_viewer_end (GisViewer *viewer); - -gpointer gis_viewer_add(GisViewer *self, GisObject *object, +gpointer gis_viewer_add(GisViewer *viewer, GisObject *object, gint level, gboolean sort); -void gis_viewer_remove(GisViewer *self, gpointer ref); +GisObject *gis_viewer_remove(GisViewer *viewer, gpointer ref); #endif