1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*!
- \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/raster.h>
- #include <grass/raster3d.h>
- #include <grass/ogsf.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_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));
- }
|