1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
/*!
\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 <landa.martin gmail.com> (May 2008)
*/
#include <grass/gis.h>
#include <grass/G3d.h>
#include <grass/gstypes.h>
#include <grass/glocale.h>
/*!
\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_grid3(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 > G3d_readColors(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)
{
if (!G_free_colors(color_data))
return (-1);
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;
G_get_f_raster_color((FCELL *) value, &r, &g, &b, color_data);
return ((r & 0xff) | ((g & 0xff) << 8) | ((b & 0xff) << 16));
}
|