]> Pileus Git - grits/blobdiff - src/gis-opengl.c
Convert GisObject to GObject
[grits] / src / gis-opengl.c
index 9a88896eccb5d67e3b2c9da580cf7c684157d5b1..7263ef4e7ad646aa2c109d10969a8f9beefdc00e 100644 (file)
@@ -188,15 +188,10 @@ static void _draw_object(GisOpenGL *self, GisObject *object)
        glMatrixMode(GL_PROJECTION); glPushMatrix();
        glMatrixMode(GL_MODELVIEW);  glPushMatrix();
        glPushAttrib(GL_ALL_ATTRIB_BITS);
-       switch (object->type) {
-       case GIS_TYPE_MARKER:
+       if (GIS_IS_MARKER(object)) {
                _draw_marker(self, GIS_MARKER(object));
-               break;
-       case GIS_TYPE_CALLBACK:
+       } else if (GIS_IS_CALLBACK(object)) {
                _draw_callback(self, GIS_CALLBACK(object));
-               break;
-       default:
-               break;
        }
        glPopAttrib();
        glMatrixMode(GL_PROJECTION); glPopMatrix();
@@ -206,8 +201,7 @@ static void _draw_object(GisOpenGL *self, GisObject *object)
 static void _load_object(GisOpenGL *self, GisObject *object)
 {
        g_debug("GisOpenGL: load_object");
-       switch (object->type) {
-       case GIS_TYPE_MARKER: {
+       if (GIS_IS_MARKER(object)) {
                GisMarker *marker = GIS_MARKER(object);
                cairo_surface_t *surface = cairo_get_target(marker->cairo);
                gdouble width  = cairo_image_surface_get_width(surface);
@@ -226,25 +220,16 @@ static void _load_object(GisOpenGL *self, GisObject *object)
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                g_debug("load_texture: %d", marker->tex);
                _gis_opengl_end(self);
-               break;
-       }
-       default:
-               break;
        }
 }
 
 static void _unload_object(GisOpenGL *self, GisObject *object)
 {
        g_debug("GisOpenGL: unload_object");
-       switch (object->type) {
-       case GIS_TYPE_MARKER: {
+       if (GIS_IS_MARKER(object)) {
                GisMarker *marker = GIS_MARKER(object);
                g_debug("delete_texture: %d", marker->tex);
                glDeleteTextures(1, &marker->tex);
-               break;
-       }
-       default:
-               break;
        }
 }
 
@@ -414,11 +399,11 @@ static gboolean on_idle(GisOpenGL *self)
 /*********************
  * GisViewer methods *
  *********************/
-GisViewer *gis_opengl_new(GisPlugins *plugins)
+GisViewer *gis_opengl_new(GisPlugins *plugins, GisPrefs *prefs)
 {
        g_debug("GisOpenGL: new");
        GisViewer *self = g_object_new(GIS_TYPE_OPENGL, NULL);
-       self->plugins = plugins;
+       gis_viewer_setup(self, plugins, prefs);
        return self;
 }