]> Pileus Git - grits/commitdiff
Miscellaneous updates
authorAndy Spencer <andy753421@gmail.com>
Mon, 9 Nov 2009 10:09:03 +0000 (10:09 +0000)
committerAndy Spencer <andy753421@gmail.com>
Mon, 9 Nov 2009 10:17:07 +0000 (10:17 +0000)
Formatting, renaming, minor bug fixes, etc

src/gis-opengl.c
src/gis-opengl.h
src/gis-plugin.c
src/gis_test.c
src/roam.c
src/wms_test.c

index f0ac518586734f5fda07364f002504e827418860..9e249697c559e2ca88ed689cb396716b9ef613e3 100644 (file)
@@ -34,7 +34,7 @@
 #define FOV_DIST   2000.0
 #define MPPX(dist) (4*dist/FOV_DIST)
 
 #define FOV_DIST   2000.0
 #define MPPX(dist) (4*dist/FOV_DIST)
 
-//#define ROAM_DEBUG
+// #define ROAM_DEBUG
 
 /*************
  * ROAM Code *
 
 /*************
  * ROAM Code *
@@ -124,12 +124,13 @@ static void set_visuals(GisOpenGL *self)
  *************/
 static void on_realize(GisOpenGL *self, gpointer _)
 {
  *************/
 static void on_realize(GisOpenGL *self, gpointer _)
 {
+       g_debug("GisOpenGL: on_realize");
        set_visuals(self);
        roam_sphere_update_errors(self->sphere);
 }
 static gboolean on_configure(GisOpenGL *self, GdkEventConfigure *event, gpointer _)
 {
        set_visuals(self);
        roam_sphere_update_errors(self->sphere);
 }
 static gboolean on_configure(GisOpenGL *self, GdkEventConfigure *event, gpointer _)
 {
-       g_debug("GisOpenGL: on_confiure");
+       g_debug("GisOpenGL: on_configure");
        gis_opengl_begin(self);
 
        double width  = GTK_WIDGET(self)->allocation.width;
        gis_opengl_begin(self);
 
        double width  = GTK_WIDGET(self)->allocation.width;
@@ -211,10 +212,10 @@ static gboolean on_key_press(GisOpenGL *self, GdkEventKey *event, gpointer _)
        else if (kv == GDK_Right || kv == GDK_l) gis_view_pan(self->view,  0,   pan, 0);
        else if (kv == GDK_minus || kv == GDK_o) gis_view_zoom(self->view, 10./9);
        else if (kv == GDK_plus  || kv == GDK_i) gis_view_zoom(self->view, 9./10);
        else if (kv == GDK_Right || kv == GDK_l) gis_view_pan(self->view,  0,   pan, 0);
        else if (kv == GDK_minus || kv == GDK_o) gis_view_zoom(self->view, 10./9);
        else if (kv == GDK_plus  || kv == GDK_i) gis_view_zoom(self->view, 9./10);
-       else if (kv == GDK_H) gis_view_rotate(self->view,  0,  0, -10);
-       else if (kv == GDK_J) gis_view_rotate(self->view,  10, 0,  0);
-       else if (kv == GDK_K) gis_view_rotate(self->view, -10, 0,  0);
-       else if (kv == GDK_L) gis_view_rotate(self->view,  0,  0,  10);
+       else if (kv == GDK_H) gis_view_rotate(self->view,  0, 0, -2);
+       else if (kv == GDK_J) gis_view_rotate(self->view,  2, 0,  0);
+       else if (kv == GDK_K) gis_view_rotate(self->view, -2, 0,  0);
+       else if (kv == GDK_L) gis_view_rotate(self->view,  0, 0,  2);
 
        /* Testing */
 #ifdef ROAM_DEBUG
 
        /* Testing */
 #ifdef ROAM_DEBUG
@@ -231,6 +232,7 @@ static gboolean on_key_press(GisOpenGL *self, GdkEventKey *event, gpointer _)
 static void on_view_changed(GisView *view,
                gdouble _1, gdouble _2, gdouble _3, GisOpenGL *self)
 {
 static void on_view_changed(GisView *view,
                gdouble _1, gdouble _2, gdouble _3, GisOpenGL *self)
 {
+       g_debug("GisOpenGL: on_view_changed");
        gis_opengl_begin(self);
        set_visuals(self);
 #ifndef ROAM_DEBUG
        gis_opengl_begin(self);
        set_visuals(self);
 #ifndef ROAM_DEBUG
@@ -242,6 +244,7 @@ static void on_view_changed(GisView *view,
 
 static gboolean on_idle(GisOpenGL *self)
 {
 
 static gboolean on_idle(GisOpenGL *self)
 {
+       //g_debug("GisOpenGL: on_idle");
        gis_opengl_begin(self);
        if (roam_sphere_split_merge(self->sphere))
                gis_opengl_redraw(self);
        gis_opengl_begin(self);
        if (roam_sphere_split_merge(self->sphere))
                gis_opengl_redraw(self);
@@ -266,7 +269,6 @@ GisOpenGL *gis_opengl_new(GisWorld *world, GisView *view, GisPlugins *plugins)
        g_signal_connect(self->view, "location-changed", G_CALLBACK(on_view_changed), self);
        g_signal_connect(self->view, "rotation-changed", G_CALLBACK(on_view_changed), self);
 
        g_signal_connect(self->view, "location-changed", G_CALLBACK(on_view_changed), self);
        g_signal_connect(self->view, "rotation-changed", G_CALLBACK(on_view_changed), self);
 
-       /* TODO: update point eights sometime later so we have heigh-res heights for them */
        self->sphere = roam_sphere_new(self);
 
        return g_object_ref(self);
        self->sphere = roam_sphere_new(self);
 
        return g_object_ref(self);
@@ -274,7 +276,6 @@ GisOpenGL *gis_opengl_new(GisWorld *world, GisView *view, GisPlugins *plugins)
 
 void gis_opengl_center_position(GisOpenGL *self, gdouble lat, gdouble lon, gdouble elev)
 {
 
 void gis_opengl_center_position(GisOpenGL *self, gdouble lat, gdouble lon, gdouble elev)
 {
-       set_camera(self);
        glRotatef(lon, 0, 1, 0);
        glRotatef(-lat, 1, 0, 0);
        glTranslatef(0, 0, elev2rad(elev));
        glRotatef(lon, 0, 1, 0);
        glRotatef(-lat, 1, 0, 0);
        glTranslatef(0, 0, elev2rad(elev));
@@ -282,7 +283,7 @@ void gis_opengl_center_position(GisOpenGL *self, gdouble lat, gdouble lon, gdoub
 
 void gis_opengl_redraw(GisOpenGL *self)
 {
 
 void gis_opengl_redraw(GisOpenGL *self)
 {
-       g_debug("GisOpenGL: gl_redraw");
+       g_debug("GisOpenGL: redraw");
        gtk_widget_queue_draw(GTK_WIDGET(self));
 }
 void gis_opengl_begin(GisOpenGL *self)
        gtk_widget_queue_draw(GTK_WIDGET(self));
 }
 void gis_opengl_begin(GisOpenGL *self)
@@ -320,9 +321,6 @@ G_DEFINE_TYPE(GisOpenGL, gis_opengl, GTK_TYPE_DRAWING_AREA);
 static void gis_opengl_init(GisOpenGL *self)
 {
        g_debug("GisOpenGL: init");
 static void gis_opengl_init(GisOpenGL *self)
 {
        g_debug("GisOpenGL: init");
-       self->bmng = wms_info_new_for_bmng(NULL, NULL);
-       self->srtm = wms_info_new_for_srtm(NULL, NULL);
-
        /* OpenGL setup */
        GdkGLConfig *glconfig = gdk_gl_config_new_by_mode(
                        GDK_GL_MODE_RGBA   | GDK_GL_MODE_DEPTH |
        /* OpenGL setup */
        GdkGLConfig *glconfig = gdk_gl_config_new_by_mode(
                        GDK_GL_MODE_RGBA   | GDK_GL_MODE_DEPTH |
@@ -386,8 +384,6 @@ static void gis_opengl_finalize(GObject *_self)
 {
        g_debug("GisOpenGL: finalize");
        GisOpenGL *self = GIS_OPENGL(_self);
 {
        g_debug("GisOpenGL: finalize");
        GisOpenGL *self = GIS_OPENGL(_self);
-       wms_info_free(self->bmng);
-       wms_info_free(self->srtm);
        G_OBJECT_CLASS(gis_opengl_parent_class)->finalize(_self);
 }
 static void gis_opengl_class_init(GisOpenGLClass *klass)
        G_OBJECT_CLASS(gis_opengl_parent_class)->finalize(_self);
 }
 static void gis_opengl_class_init(GisOpenGLClass *klass)
index 069456fb11fd24417d2a6a8b98cd2883eabe7d9f..2c88d6b67d570c304c56d2c610e91b86c16898e2 100644 (file)
@@ -47,14 +47,12 @@ struct _GisOpenGL {
        GisView    *view;
        GisPlugins *plugins;
        RoamSphere *sphere;
        GisView    *view;
        GisPlugins *plugins;
        RoamSphere *sphere;
-       WmsInfo    *bmng;
-       WmsInfo    *srtm;
        guint       sm_source;
 };
 
 struct _GisOpenGLClass {
        GtkDrawingAreaClass parent_class;
        guint       sm_source;
 };
 
 struct _GisOpenGLClass {
        GtkDrawingAreaClass parent_class;
-       
+
        /* class members */
 };
 
        /* class members */
 };
 
@@ -63,12 +61,13 @@ GType gis_opengl_get_type(void);
 /* Methods */
 GisOpenGL *gis_opengl_new(GisWorld *world, GisView *view, GisPlugins *plugins);
 
 /* Methods */
 GisOpenGL *gis_opengl_new(GisWorld *world, GisView *view, GisPlugins *plugins);
 
-void gis_opengl_center_position(GisOpenGL *gis, gdouble lat, gdouble lon, gdouble elev);
+void gis_opengl_center_position(GisOpenGL *opengl,
+               gdouble lat, gdouble lon, gdouble elev);
 
 
-void gis_opengl_redraw(GisOpenGL *gis);
+void gis_opengl_redraw(GisOpenGL *opengl);
 
 
-void gis_opengl_begin(GisOpenGL *gis);
-void gis_opengl_end(GisOpenGL *gis);
-void gis_opengl_flush(GisOpenGL *gis);
+void gis_opengl_begin(GisOpenGL *opengl);
+void gis_opengl_end(GisOpenGL *opengl);
+void gis_opengl_flush(GisOpenGL *opengl);
 
 #endif
 
 #endif
index 2ba5ca69a61aef70a6591412d9a1c07f3a336f0f..b0619f9b3e2fe16db971bccf26d95af54448055f 100644 (file)
@@ -122,10 +122,13 @@ GisPlugin *gis_plugins_load(GisPlugins *self, const char *name,
 {
        g_debug("GisPlugins: load %s", name);
        gchar *path = g_strdup_printf("%s/%s.%s", self->dir, name, G_MODULE_SUFFIX);
 {
        g_debug("GisPlugins: load %s", name);
        gchar *path = g_strdup_printf("%s/%s.%s", self->dir, name, G_MODULE_SUFFIX);
-       if (!g_file_test(path, G_FILE_TEST_EXISTS))
+       if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
+               g_free(path);
                path = g_strdup_printf("%s/%s.%s", PLUGINSDIR, name, G_MODULE_SUFFIX);
                path = g_strdup_printf("%s/%s.%s", PLUGINSDIR, name, G_MODULE_SUFFIX);
+       }
        if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
                g_warning("Module %s not found", name);
        if (!g_file_test(path, G_FILE_TEST_EXISTS)) {
                g_warning("Module %s not found", name);
+               g_free(path);
                return NULL;
        }
        GModule *module = g_module_open(path, 0);
                return NULL;
        }
        GModule *module = g_module_open(path, 0);
@@ -147,7 +150,7 @@ GisPlugin *gis_plugins_load(GisPlugins *self, const char *name,
        g_free(constructor_str);
        GisPluginConstructor constructor = constructor_ptr;
 
        g_free(constructor_str);
        GisPluginConstructor constructor = constructor_ptr;
 
-       GisPluginStore *store = g_malloc(sizeof(GisPluginStore));
+       GisPluginStore *store = g_new0(GisPluginStore, 1);
        store->name = g_strdup(name);
        store->plugin = constructor(world, view, opengl, prefs);
        g_ptr_array_add(self->plugins, store);
        store->name = g_strdup(name);
        store->plugin = constructor(world, view, opengl, prefs);
        g_ptr_array_add(self->plugins, store);
index 054373e494cdaee0b14e19cca8b11277b5ac6f60..9d9fe9a304c031fad41c9dcc58cd5b4b0047efe6 100644 (file)
@@ -26,7 +26,7 @@
  *************/
 static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer _)
 {
  *************/
 static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer _)
 {
-       g_debug("gis: on_key_press - key=%x, state=%x",
+       g_debug("GisTest: on_key_press - key=%x, state=%x",
                        event->keyval, event->state);
        switch (event->keyval) {
        case GDK_q:
                        event->keyval, event->state);
        switch (event->keyval) {
        case GDK_q:
@@ -41,8 +41,9 @@ static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event, gpointer _)
  ***********/
 int main(int argc, char **argv)
 {
  ***********/
 int main(int argc, char **argv)
 {
-       gtk_init(&argc, &argv);
        g_thread_init(NULL);
        g_thread_init(NULL);
+       gdk_threads_init();
+       gtk_init(&argc, &argv);
 
        GisPrefs   *prefs   = gis_prefs_new(NULL, NULL);
        GisPlugins *plugins = gis_plugins_new(NULL);
 
        GisPrefs   *prefs   = gis_prefs_new(NULL, NULL);
        GisPlugins *plugins = gis_plugins_new(NULL);
index 4f3bc1de4e4d93a86e1905d04ba8adc0df609b15..d25bd3d5b56fb339709b8bcaba15713484530cfa 100644 (file)
 #include <GL/gl.h>
 #include <GL/glu.h>
 
 #include <GL/gl.h>
 #include <GL/glu.h>
 
+#include "gis-world.h"
+
 #include "roam.h"
 
 #include "roam.h"
 
+
 /**
  * TODO:
  *   - Optimize for memory consumption
 /**
  * TODO:
  *   - Optimize for memory consumption
@@ -61,7 +64,7 @@ static gint dia_cmp(RoamDiamond *a, RoamDiamond *b, gpointer data)
 /*************
  * RoamPoint *
  *************/
 /*************
  * RoamPoint *
  *************/
-RoamPoint *roam_point_new(double x, double y, double z)
+RoamPoint *roam_point_new(gdouble x, gdouble y, gdouble z)
 {
        RoamPoint *self = g_new0(RoamPoint, 1);
        self->x = x;
 {
        RoamPoint *self = g_new0(RoamPoint, 1);
        self->x = x;
@@ -104,9 +107,9 @@ void roam_point_update_height(RoamPoint *self, RoamSphere *sphere)
                gdouble dist = sqrt(self->x * self->x +
                                    self->y * self->y +
                                    self->z * self->z);
                gdouble dist = sqrt(self->x * self->x +
                                    self->y * self->y +
                                    self->z * self->z);
-               self->x = self->x/dist * 6371000;
-               self->y = self->y/dist * 6371000;
-               self->z = self->z/dist * 6371000;
+               self->x = self->x/dist * EARTH_R;
+               self->y = self->y/dist * EARTH_R;
+               self->z = self->z/dist * EARTH_R;
        }
 }
 void roam_point_update_projection(RoamPoint *self, RoamSphere *sphere)
        }
 }
 void roam_point_update_projection(RoamPoint *self, RoamSphere *sphere)
@@ -221,14 +224,6 @@ gboolean roam_point_visible(RoamPoint *self, RoamSphere *sphere)
        return self->px > view[0] && self->px < view[2] &&
               self->py > view[1] && self->py < view[3] &&
               self->pz > 0       && self->pz < 1;
        return self->px > view[0] && self->px < view[2] &&
               self->py > view[1] && self->py < view[3] &&
               self->pz > 0       && self->pz < 1;
-       //double x, y, z;
-       //int view[4] = {0,0,1,1};
-       //gluProject(self->x, self->y, self->z,
-       //              sphere->view->model, sphere->view->proj, view,
-       //              &x, &y, &z);
-       //return !(x < 0 || x > 1 ||
-       //         y < 0 || y > 1 ||
-       //         z < 0 || z > 1);
 }
 gboolean roam_triangle_visible(RoamTriangle *self, RoamSphere *sphere)
 {
 }
 gboolean roam_triangle_visible(RoamTriangle *self, RoamSphere *sphere)
 {
@@ -282,7 +277,6 @@ void roam_triangle_split(RoamTriangle *self, RoamSphere *sphere)
 
        RoamTriangle *base = self->t.b;
 
 
        RoamTriangle *base = self->t.b;
 
-
        /* Add new triangles */
        RoamPoint *mid = self->split;
        RoamTriangle *sl = roam_triangle_new(self->p.m, mid, self->p.l); // Self Left
        /* Add new triangles */
        RoamPoint *mid = self->split;
        RoamTriangle *sl = roam_triangle_new(self->p.m, mid, self->p.l); // Self Left
@@ -501,7 +495,7 @@ RoamSphere *roam_sphere_new(gpointer user_data)
 }
 void roam_sphere_update_errors(RoamSphere *self)
 {
 }
 void roam_sphere_update_errors(RoamSphere *self)
 {
-       g_debug("RoamSphere: update - polys=%d", self->polys);
+       g_debug("RoamSphere: update_errors - polys=%d", self->polys);
        if (!self->view)
                self->view = roam_view_new();
        roam_view_update(self->view);
        if (!self->view)
                self->view = roam_view_new();
        roam_view_update(self->view);
@@ -540,22 +534,32 @@ void roam_sphere_merge_one(RoamSphere *self)
 gint roam_sphere_split_merge(RoamSphere *self)
 {
        gint iters = 0, max_iters = 500;
 gint roam_sphere_split_merge(RoamSphere *self)
 {
        gint iters = 0, max_iters = 500;
-       gint target = 4000;
+       //gint target = 4000;
+       gint target = 2000;
+       //gint target = 500;
 
        if (!self->view)
                return 0;
 
 
        if (!self->view)
                return 0;
 
-       if (target - self->polys > 100)
+       if (target - self->polys > 100) {
+               //g_debug("RoamSphere: split_merge - Splitting %d - %d > 100", target, self->polys);
                while (self->polys < target && iters++ < max_iters)
                        roam_sphere_split_one(self);
                while (self->polys < target && iters++ < max_iters)
                        roam_sphere_split_one(self);
+       }
 
 
-       if (self->polys - target > 100)
+       if (self->polys - target > 100) {
+               //g_debug("RoamSphere: split_merge - Merging %d - %d > 100", self->polys, target);
                while (self->polys > target && iters++ < max_iters)
                        roam_sphere_merge_one(self);
                while (self->polys > target && iters++ < max_iters)
                        roam_sphere_merge_one(self);
+       }
 
        while (((RoamTriangle*)g_pqueue_peek(self->triangles))->error >
               ((RoamDiamond *)g_pqueue_peek(self->diamonds ))->error &&
               iters++ < max_iters) {
 
        while (((RoamTriangle*)g_pqueue_peek(self->triangles))->error >
               ((RoamDiamond *)g_pqueue_peek(self->diamonds ))->error &&
               iters++ < max_iters) {
+               //g_debug("RoamSphere: split_merge - Fixing 1 %f > %f && %d < %d",
+               //              ((RoamTriangle*)g_pqueue_peek(self->triangles))->error,
+               //              ((RoamDiamond *)g_pqueue_peek(self->diamonds ))->error,
+               //              iters-1, max_iters);
                roam_sphere_merge_one(self);
                roam_sphere_split_one(self);
        }
                roam_sphere_merge_one(self);
                roam_sphere_split_one(self);
        }
@@ -564,12 +568,12 @@ gint roam_sphere_split_merge(RoamSphere *self)
 }
 void roam_sphere_draw(RoamSphere *self)
 {
 }
 void roam_sphere_draw(RoamSphere *self)
 {
-       g_message("RoamSphere: draw");
+       g_debug("RoamSphere: draw");
        g_pqueue_foreach(self->triangles, (GFunc)roam_triangle_draw, NULL);
 }
 void roam_sphere_draw_normals(RoamSphere *self)
 {
        g_pqueue_foreach(self->triangles, (GFunc)roam_triangle_draw, NULL);
 }
 void roam_sphere_draw_normals(RoamSphere *self)
 {
-       g_message("RoamSphere: draw_normal");
+       g_debug("RoamSphere: draw_normal");
        g_pqueue_foreach(self->triangles, (GFunc)roam_triangle_draw_normal, NULL);
 }
 void roam_sphere_free_tri(RoamTriangle *tri)
        g_pqueue_foreach(self->triangles, (GFunc)roam_triangle_draw_normal, NULL);
 }
 void roam_sphere_free_tri(RoamTriangle *tri)
@@ -588,5 +592,6 @@ void roam_sphere_free(RoamSphere *self)
        g_pqueue_foreach(self->triangles, (GFunc)roam_sphere_free_tri, NULL);
        g_pqueue_free(self->triangles);
        g_pqueue_free(self->diamonds);
        g_pqueue_foreach(self->triangles, (GFunc)roam_sphere_free_tri, NULL);
        g_pqueue_free(self->triangles);
        g_pqueue_free(self->diamonds);
+       g_free(self->view);
        g_free(self);
 }
        g_free(self);
 }
index 2eb4500fa1c323a120191f3909dc172ea677a068..59868e5f111e57085153e2c7a6fe3b15f946cc0f 100644 (file)
@@ -42,8 +42,9 @@ gboolean key_press_cb(GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 
 int main(int argc, char **argv)
 {
 
 int main(int argc, char **argv)
 {
-       gtk_init(&argc, &argv);
        g_thread_init(NULL);
        g_thread_init(NULL);
+       gdk_threads_init();
+       gtk_init(&argc, &argv);
 
        GtkWidget *win        = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        GtkWidget *vbox1      = gtk_vbox_new(FALSE, 0);
 
        GtkWidget *win        = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        GtkWidget *vbox1      = gtk_vbox_new(FALSE, 0);