get_row_colr.c

Go to the documentation of this file.
00001 #include <grass/gis.h>
00002 #include "G.h"
00003 
00004 
00023 int
00024 G_get_raster_row_colors(
00025         int fd, int row, struct Colors *colors,
00026         unsigned char *red, unsigned char *grn, unsigned char *blu,
00027         unsigned char *nul)
00028 {
00029         static void *array;
00030         static int array_size;
00031         static unsigned char *set;
00032         static int set_size;
00033 
00034         int cols = G__.window.cols;
00035         int type = G__.fileinfo[fd].map_type;
00036         int size = G_raster_size(type);
00037         void *p;
00038         int i;
00039 
00040         if (array_size < cols * size)
00041         {
00042                 array_size = cols * size;
00043                 array = (DCELL *) G_realloc(array, array_size);
00044         }
00045 
00046         if (set_size < cols)
00047         {
00048                 set_size = cols;
00049                 set = G_realloc(set, set_size);
00050         }
00051 
00052         if (G_get_raster_row(fd, array, row, type) < 0)
00053                 return -1;
00054 
00055         if (nul)
00056                 for (i = 0, p = array; i < cols; i++, p = G_incr_void_ptr(p, size))
00057                         nul[i] = G_is_null_value(p, type);
00058 
00059         G_lookup_raster_colors(array, red, grn, blu, set, cols, colors, type);
00060 
00061         return 0;
00062 }
00063 

Generated on Wed Dec 19 14:59:06 2007 for GRASS by  doxygen 1.5.4