]> Pileus Git - grits/blobdiff - src/gis-tile.h
Update copyright and email address
[grits] / src / gis-tile.h
index 12d397d66cc6d3697f71bf8e8b385d441a5ee663..dc571ac4bc082c622829d320a1242cba027e0501 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Andy Spencer <spenceal@rose-hulman.edu>
+ * Copyright (C) 2009-2010 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
@@ -18,7 +18,6 @@
 #ifndef __GIS_TILE_H__
 #define __GIS_TILE_H__
 
-#include <config.h>
 #include <glib.h>
 
 typedef struct _GisTile        GisTile;
@@ -47,6 +46,9 @@ struct _GisTile {
        /* Pointers to parent/child nodes */
        GisTile *parent;
        GisTile *children[2][2];
+
+       /* Last access time (for garbage collection) */
+       time_t atime;
 };
 
 /* Path to string table, keep in sync with tile->children */ 
@@ -59,6 +61,20 @@ GisTile *gis_tile_new(GisTile *parent,
 /* Return a string representation of the tile's path */
 gchar *gis_tile_get_path(GisTile *child);
 
+/* Update a root tile */
+/* Based on eye distance (lat,lon,elev) */
+void gis_tile_update(GisTile *root,
+               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 */
+GisTile *gis_tile_find(GisTile *root, gdouble lat, gdouble lon);
+
+/* Delete nodes that haven't been accessed since atime */
+GisTile *gis_tile_gc(GisTile *root, time_t atime,
+               GisTileFreeFunc free_func, gpointer user_data);
+
 /* Free a tile and all it's children */
 void gis_tile_free(GisTile *root,
                GisTileFreeFunc free_func, gpointer user_data);