X-Git-Url: http://pileus.org/git/?p=grits;a=blobdiff_plain;f=src%2Fobjects%2Fgis-tile.h;h=e2b72524f53d430e4c12cf0746bccb809e905e4e;hp=06ce337af5443f191558a42644fb73404b337e7b;hb=14c34a746fc94a9e5477d081275f04bd1c8b5d6d;hpb=b87064909e6d20e1ee2995adae0c1ce5cb692d7e diff --git a/src/objects/gis-tile.h b/src/objects/gis-tile.h index 06ce337..e2b7252 100644 --- a/src/objects/gis-tile.h +++ b/src/objects/gis-tile.h @@ -38,10 +38,11 @@ struct _GisTile { /* Pointer to the tile data */ gpointer data; + /* Pointer to the tile data */ + gint zindex; + /* North,South,East,West limits */ - struct { - gdouble n,s,e,w; - } edge; + GisBBox edge; /* Pointers to parent/child nodes */ GisTile *parent; @@ -55,15 +56,46 @@ struct _GisTileClass { GisObjectClass parent_class; }; +/** + * GisTileLoadFunc: + * @tile: the tile to load + * @user_data: data paseed to the function + * + * Used to load the image data associated with a tile. For GisOpenGL, this + * function should store the OpenGL texture number in the tiles data field. + */ typedef void (*GisTileLoadFunc)(GisTile *tile, gpointer user_data); + +/** + * GisTileFreeFunc: + * @tile: the tile to free + * @user_data: data paseed to the function + * + * Used to free the image data associated with a tile + */ typedef void (*GisTileFreeFunc)(GisTile *tile, gpointer user_data); /* Forech functions */ +/** + * gis_tile_foreach: + * @parent: the #GisTile to iterate over + * @child: a pointer to a #GisTile to store the current subtile + * + * Iterate over each imediate subtile of @parent. + */ #define gis_tile_foreach(parent, child) \ for (int _x = 0; _x < G_N_ELEMENTS(parent->children); _x++) \ for (int _y = 0; child = parent->children[_x][_y], \ _y < G_N_ELEMENTS(parent->children[_x]); _y++) +/** + * gis_tile_foreach_index: + * @parent: the #GisTile to iterate over + * @x: integer to store the x index of the current subtile + * @y: integer to store the y index of the current subtile + * + * Iterate over each imediate subtile of @parent. + */ #define gis_tile_foreach_index(parent, x, y) \ for (x = 0; x < G_N_ELEMENTS(parent->children); x++) \ for (y = 0; y < G_N_ELEMENTS(parent->children[x]); y++) @@ -81,10 +113,9 @@ GisTile *gis_tile_new(GisTile *parent, gchar *gis_tile_get_path(GisTile *child); /* Update a root tile */ -/* Based on eye distance (lat,lon,elev) */ -void gis_tile_update(GisTile *root, +/* Based on eye distance */ +void gis_tile_update(GisTile *root, GisPoint *eye, gdouble res, gint width, gint height, - gdouble lat, gdouble lon, gdouble elev, GisTileLoadFunc load_func, gpointer user_data); /* Find the leaf tile containing lat-lon */