git push --all
echo $(VERSION) > LATEST
scp LATEST $(PACKAGE)-$(VERSION).tar.* \
- "lug@lug.rose-hulman.edu:/home/lug/htdocs/proj/$(PACKAGE)"; \
+ "spenceal@lug.rose-hulman.edu:/home/lug/htdocs/proj/$(PACKAGE)"; \
rm -f LATEST
depscan:
# Init and options
-AC_INIT([libgis], [0.3-p1], [spenceal@rose-hulman.edu])
+AC_INIT([libgis], [0.3], [spenceal@rose-hulman.edu])
AM_INIT_AUTOMAKE([-Wall -Werror -Wno-portability foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
AM_CPPFLAGS=$(SOUP_CFLAGS) $(GLIB_CFLAGS) $(GTK_CFLAGS)
-GTKDOC_LIBS = $(SOUP_LIBS) $(GLIB_LIBS) $(GTK_LIBS) $(top_srcdir)/src/libgis.la
+GTKDOC_LIBS = $(SOUP_LIBS) $(GLIB_LIBS) $(GTK_LIBS) $(top_srcdir)/src/libgis.la $(top_srcdir)/src/plugins/*.la
DOC_MODULE = libgis
DOC_SOURCE_DIR = $(top_srcdir)/src/
DOC_MAIN_SGML_FILE = $(DOC_MODULE)-docs.sgml
CLEANFILES += libgis-sections.txt
MAINTAINERCLEANFILES=\
- tmpl/* Makefile.in libgis-docs.sgml libgis-overrides.txt libgis.types libgis-scan.*
+ tmpl/* Makefile.in libgis-overrides.txt libgis.types libgis-scan.*
--- /dev/null
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<book id="index" xmlns:xi="http://www.w3.org/2001/XInclude">
+ <bookinfo>
+ <title>libgis Reference Manual</title>
+ </bookinfo>
+
+ <chapter>
+ <title>Core API</title>
+ <xi:include href="xml/gis-world.xml"/>
+ <xi:include href="xml/gis-view.xml"/>
+ <xi:include href="xml/gis-opengl.xml"/>
+ <xi:include href="xml/gis-prefs.xml"/>
+ </chapter>
+
+ <chapter>
+ <title>Support</title>
+ <xi:include href="xml/gis-wms.xml"/>
+ <xi:include href="xml/gis-tile.xml"/>
+ <xi:include href="xml/gis-data.xml"/>
+ <xi:include href="xml/gpqueue.xml"/>
+ <xi:include href="xml/roam.xml"/>
+ </chapter>
+
+ <chapter>
+ <title>Plugins</title>
+ <xi:include href="xml/gis-plugin.xml"/>
+ <xi:include href="xml/bmng.xml"/>
+ <xi:include href="xml/srtm.xml"/>
+ </chapter>
+
+ <index>
+ <title>Index</title>
+ </index>
+
+</book>
-SUBDIRS = plugins
+SUBDIRS = . plugins
AM_CFLAGS = -Wall --std=gnu99
AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
g_list_free(triangles);
}
+static void _gis_opengl_clear_height_func_rec(RoamTriangle *root)
+{
+ if (!root)
+ return;
+ RoamPoint *points[] = {root->p.l, root->p.m, root->p.r, root->split};
+ for (int i = 0; i < G_N_ELEMENTS(points); i++) {
+ points[i]->height_func = NULL;
+ points[i]->height_data = NULL;
+ roam_point_update_height(points[i]);
+ }
+ _gis_opengl_clear_height_func_rec(root->kids[0]);
+ _gis_opengl_clear_height_func_rec(root->kids[1]);
+}
+void gis_opengl_clear_height_func(GisOpenGL *self)
+{
+ for (int i = 0; i < G_N_ELEMENTS(self->sphere->roots); i++)
+ _gis_opengl_clear_height_func_rec(self->sphere->roots[i]);
+}
+
void gis_opengl_redraw(GisOpenGL *self)
{
g_debug("GisOpenGL: redraw");
void gis_opengl_set_height_func(GisOpenGL *self, GisTile *tile,
RoamHeightFunc height_func, gpointer user_data, gboolean update);
+void gis_opengl_clear_height_func(GisOpenGL *self);
+
void gis_opengl_redraw(GisOpenGL *opengl);
void gis_opengl_begin(GisOpenGL *opengl);
GtkWidget *gis_plugin_get_config(GisPlugin *self)
{
g_return_val_if_fail(GIS_IS_PLUGIN(self), NULL);
- return GIS_PLUGIN_GET_INTERFACE(self)->get_config(self);
+ GisPluginInterface *iface = GIS_PLUGIN_GET_INTERFACE(self);
+ return iface->get_config ? iface->get_config (self) : NULL;
}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <config.h>
+
#include <glib.h>
#include "gis-marshal.h"
#include "gis-prefs.h"
-
enum {
SIG_PREF_CHANGED,
NUM_SIGNALS,
};
static guint signals[NUM_SIGNALS];
-
/***********
* Methods *
***********/
self->key_path = g_strdup(config);
else
self->key_path = g_build_filename(g_get_user_config_dir(),
- "gis", "config.ini", NULL);
+ PACKAGE, "config.ini", NULL);
GError *error = NULL;
g_key_file_load_from_file(self->key_file, self->key_path,
G_KEY_FILE_KEEP_COMMENTS, &error);
g_free(tmp);
}
if (error) {
- g_clear_error(&error);
g_warning("GisPrefs: new - Unable to load key file `%s': %s",
self->key_path, error->message);
}
#include "gis-tile.h"
gchar *gis_tile_path_table[2][2] = {
- {".00", ".01"},
- {".10", ".11"},
+ {"00.", "01."},
+ {"10.", "11."},
};
GisTile *gis_tile_new(GisTile *parent,
{
/* Get file path */
gchar *tile_path = gis_tile_get_path(tile);
- gchar *path = g_strdup_printf("%s/wms/%s%s%s",
- g_get_user_cache_dir(),
- self->cache_prefix,
- tile_path,
- self->cache_ext);
+ gchar *path = g_strdup_printf("%s/%s/%s%s%s",
+ g_get_user_cache_dir(), PACKAGE,
+ self->cache_prefix, tile_path, self->cache_ext);
g_free(tile_path);
/* Return if it already exists */
MAINTAINERCLEANFILES = Makefile.in
-AM_CFLAGS = -Wall --std=gnu99 -I../
-AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
-AM_LDFLAGS = -module -avoid-version
-LIBS = $(top_srcdir)/src/libgis.la
+AM_CFLAGS = -Wall --std=gnu99 -I../
+AM_CPPFLAGS = $(GLIB_CFLAGS) $(GTK_CFLAGS) $(SOUP_CFLAGS)
+AM_LDFLAGS = -module -avoid-version
+LIBS = $(top_srcdir)/src/libgis.la
-pluginsdir = $(pkglibdir)
+pluginsdir = "$(libdir)/gis"
plugins_LTLIBRARIES = bmng.la srtm.la
bmng_la_SOURCES = bmng.c bmng.h
+bmng_la_LIBADD = $(top_srcdir)/src/libgis.la
srtm_la_SOURCES = srtm.c srtm.h
+srtm_la_LIBADD = $(top_srcdir)/src/libgis.la
test:
( cd ../; make test )
-
-# Fixme...
-bmng_la_DEPENDENCIES = $(top_srcdir)/src/libgis.la
-srtm_la_DEPENDENCIES = $(top_srcdir)/src/libgis.la
-$(top_srcdir)/src/libgis.la: $(wildcard ../*.[ch])
- ( cd ../; make libgis.la )
g_thread_create(_update_tiles, self, FALSE, NULL);
/* Connect signals */
- g_signal_connect(self->view, "location-changed", G_CALLBACK(_on_location_changed), self);
+ self->sigid = g_signal_connect(self->view, "location-changed",
+ G_CALLBACK(_on_location_changed), self);
return self;
}
static void gis_plugin_bmng_expose(GisPlugin *_self)
{
GisPluginBmng *self = GIS_PLUGIN_BMNG(_self);
- g_debug("GisPluginBmng: expose");
+ g_debug("GisPluginBmng: expose opengl=%p tiles=%p,%p",
+ self->opengl, self->tiles, self->tiles->data);
gis_opengl_render_tiles(self->opengl, self->tiles);
}
self->tiles = gis_tile_new(NULL, NORTH, SOUTH, EAST, WEST);
self->wms = gis_wms_new(
"http://www.nasa.network.com/wms", "bmng200406", "image/jpeg",
- "bmng", ".jpg", TILE_WIDTH, TILE_HEIGHT);
+ "bmng/", "jpg", TILE_WIDTH, TILE_HEIGHT);
}
static void gis_plugin_bmng_dispose(GObject *gobject)
{
g_debug("GisPluginBmng: dispose");
GisPluginBmng *self = GIS_PLUGIN_BMNG(gobject);
/* Drop references */
+ g_signal_handler_disconnect(self->view, self->sigid);
G_OBJECT_CLASS(gis_plugin_bmng_parent_class)->dispose(gobject);
}
static void gis_plugin_bmng_finalize(GObject *gobject)
GisTile *tiles;
GisWms *wms;
GMutex *mutex;
+ gulong sigid;
};
struct _GisPluginBmngClass {
/* Do necessasairy processing */
/* TODO: Lock this and move to thread, can remove self from _load then */
if (LOAD_BIL)
- gis_opengl_set_height_func(self->opengl, tile,
- _height_func, self, TRUE);
+ gis_opengl_set_height_func(self->opengl, tile, _height_func, self, TRUE);
/* Cleanup unneeded things */
if (!LOAD_BIL)
g_thread_create(_update_tiles, self, FALSE, NULL);
/* Connect signals */
- g_signal_connect(view, "location-changed", G_CALLBACK(_on_location_changed), self);
+ self->sigid = g_signal_connect(self->view, "location-changed",
+ G_CALLBACK(_on_location_changed), self);
return self;
}
self->tiles = gis_tile_new(NULL, NORTH, SOUTH, EAST, WEST);
self->wms = gis_wms_new(
"http://www.nasa.network.com/elev", "srtm30", "application/bil",
- "srtm", ".bil", TILE_WIDTH, TILE_HEIGHT);
+ "srtm/", "bil", TILE_WIDTH, TILE_HEIGHT);
}
static void gis_plugin_srtm_dispose(GObject *gobject)
{
g_debug("GisPluginSrtm: dispose");
GisPluginSrtm *self = GIS_PLUGIN_SRTM(gobject);
/* Drop references */
+ g_signal_handler_disconnect(self->view, self->sigid);
+ if (LOAD_BIL)
+ gis_opengl_clear_height_func(self->opengl);
G_OBJECT_CLASS(gis_plugin_srtm_parent_class)->dispose(gobject);
}
static void gis_plugin_srtm_finalize(GObject *gobject)
GisTile *tiles;
GisWms *wms;
GMutex *mutex;
+ gulong sigid;
};
struct _GisPluginSrtmClass {
* time = 30 * 2*333 * i_cost = 20000 * i_cost */
GList *list = NULL;
for (int i = 0; i < G_N_ELEMENTS(self->roots); i++)
- list = _roam_sphere_get_intersect_rec(self->roots[i], list, n, s, e, w);
+ list = _roam_sphere_get_intersect_rec(self->roots[i],
+ list, n, s, e, w);
return list;
}
void roam_sphere_free_tri(RoamTriangle *tri)
g_message("Fetching image");
GisWms *bmng_wms = gis_wms_new(
"http://www.nasa.network.com/wms", "bmng200406", "image/jpeg",
- "bmng", ".jpg", 512, 256);
+ "bmng_test/", "jpg", 512, 256);
const char *path = gis_wms_make_local(bmng_wms, tile);
g_message("Loading image: [%s]", path);