/*! \file Gvl3.c \brief OGSF library - loading volumes (lower level functions) GRASS OpenGL gsurf OGSF Library (C) 1999-2008 by the GRASS Development Team This program is free software under the GNU General Public License (>=v2). Read the file COPYING that comes with GRASS for details. \author Tomas Paudits (December 2003) \author Doxygenized by Martin Landa (May 2008) */ #include #include #include #include #include /*! \brief Load color table \param[out] color_data color data buffer \param name 3D raster map name \return -1 on failure \return 1 on success */ int Gvl_load_colors_data(void **color_data, const char *name) { const char *mapset; struct Colors *colors; if (NULL == (mapset = G_find_raster3d(name, ""))) { G_warning(_("3D raster map <%s> not found"), name); return (-1); } if (NULL == (colors = (struct Colors *)G_malloc(sizeof(struct Colors)))) return (-1); if (0 > Rast3d_read_colors(name, mapset, colors)) { G_free(colors); return (-1); } *color_data = colors; return (1); } /*! \brief Unload color table \param color_data color data buffer \return -1 on failure \return 1 on success */ int Gvl_unload_colors_data(void *color_data) { Rast_free_colors(color_data); G_free(color_data); return (1); } /*! \brief Get color for value \param color_data color data value \param value data value \return color value */ int Gvl_get_color_for_value(void *color_data, float *value) { int r, g, b; Rast_get_f_color((FCELL *) value, &r, &g, &b, color_data); return ((r & 0xff) | ((g & 0xff) << 8) | ((b & 0xff) << 16)); }