- g_debug("GisPluginElev: load_pixbuf %p", pixbuf);
- return pixbuf;
-}
-static guint _load_opengl(GdkPixbuf *pixbuf)
-{
- /* Load image */
- guchar *pixels = gdk_pixbuf_get_pixels(pixbuf);
- gint alpha = gdk_pixbuf_get_has_alpha(pixbuf);
- gint nchan = 4; // gdk_pixbuf_get_n_channels(pixbuf);
- gint width = gdk_pixbuf_get_width(pixbuf);
- gint height = gdk_pixbuf_get_height(pixbuf);
-
- /* Create Texture */
- guint opengl;
- glGenTextures(1, &opengl);
- glBindTexture(GL_TEXTURE_2D, opengl);
-
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
- glTexImage2D(GL_TEXTURE_2D, 0, nchan, width, height, 0,
- (alpha ? GL_RGBA : GL_RGB), GL_UNSIGNED_BYTE, pixels);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
-
- g_debug("GisPluginElev: load_opengl %d", opengl);
- return opengl;
-}
-static gboolean _load_tile_cb(gpointer _load)
-{
- struct _LoadTileData *load = _load;
- g_debug("GisPluginElev: _load_tile_cb: %s", load->path);
- GisPluginElev *elev = load->elev;
- GisTile *tile = load->tile;
- GdkPixbuf *pixbuf = load->pixbuf;
- struct _TileData *data = load->data;
- g_free(load->path);
- g_free(load);
-
- if (LOAD_OPENGL)
- data->opengl = _load_opengl(pixbuf);
-
- tile->data = data;
-
- /* Do necessasairy processing */
- /* TODO: Lock this and move to thread, can remove elev from _load then */
- if (LOAD_BIL)
- gis_viewer_set_height_func(elev->viewer, tile, _height_func, elev, TRUE);
-
- /* Cleanup unneeded things */
- if (!LOAD_BIL)
- g_free(data->bil);
- if (LOAD_OPENGL)
- g_object_unref(pixbuf);