raster.c

Go to the documentation of this file.
00001 #include <grass/gis.h>
00002 
00003 
00032 void *G_incr_void_ptr(
00033 /* advances ptr by size bytes returns new position */
00034    void *ptr,
00035    int size)
00036 {
00037    /* assuming that the size of unsigned char is 1 */
00038    return (void *) ((unsigned char *) ptr + size);
00039 }
00040 
00041 
00056 int G_raster_cmp( void *v1,void *v2, RASTER_MAP_TYPE data_type)
00057 {
00058     if(G_is_null_value(v1, data_type ) )
00059     {
00060        if (G_is_null_value(v2, data_type ))
00061           return 0;
00062        else return -1;
00063     }
00064     else if(G_is_null_value(v2, data_type ) )
00065        return 1;
00066 
00067     switch (data_type)
00068     {
00069        case CELL_TYPE:  if(*((CELL *) v1) > *((CELL *) v2))
00070                              return 1;
00071                         else if(*((CELL *) v1) == *((CELL *) v2))
00072                              return 0;
00073                         else return -1;
00074        case FCELL_TYPE: if(*((FCELL *) v1) > *((FCELL *) v2))
00075                              return 1;
00076                         else if(*((FCELL *) v1) == *((FCELL *) v2))
00077                              return 0;
00078                         else return -1;
00079        case DCELL_TYPE: if(*((DCELL *) v1) > *((DCELL *) v2))
00080                              return 1;
00081                         else if(*((DCELL *) v1) == *((DCELL *) v2))
00082                              return 0;
00083                         else return -1;
00084      }
00085 
00086      return 0;
00087 }
00088 
00089 
00102 int G_raster_cpy(
00103     void *v1,void *v2,
00104     int n,
00105     RASTER_MAP_TYPE data_type)
00106 {
00107     G_copy((char *) v1, (char *) v2, n * G_raster_size(data_type));
00108     return 0;
00109 }
00110 
00111 
00125 int G_set_raster_value_c(
00126     void *rast,
00127     CELL cval,
00128     RASTER_MAP_TYPE data_type)
00129 {
00130     CELL c;
00131     c = cval;
00132     if(G_is_c_null_value(&c))
00133     {
00134        G_set_null_value(rast, 1, data_type);
00135        return 0;
00136     }
00137     switch (data_type)
00138     {
00139        case CELL_TYPE: *((CELL *)rast) = cval; break;
00140        case FCELL_TYPE: *((FCELL *)rast) = (FCELL ) cval; break;
00141        case DCELL_TYPE: *((DCELL *)rast) = (DCELL ) cval; break;
00142     }
00143 
00144     return 0;
00145 }
00146 
00147 
00161 int G_set_raster_value_f(
00162     void *rast,
00163     FCELL fval,
00164     RASTER_MAP_TYPE data_type)
00165 {
00166     FCELL f;
00167     f = fval;
00168     if(G_is_f_null_value(&f))
00169     {
00170        G_set_null_value(rast, 1, data_type);
00171        return 0;
00172     }
00173     switch (data_type)
00174     {
00175        case CELL_TYPE: *((CELL *)rast) = (CELL ) fval; break;
00176        case FCELL_TYPE: *((FCELL *)rast) = fval; break;
00177        case DCELL_TYPE: *((DCELL *)rast) = (DCELL ) fval; break;
00178     }
00179 
00180     return 0;
00181 }
00182 
00183 
00197 int G_set_raster_value_d(
00198     void *rast,
00199     DCELL dval,
00200     RASTER_MAP_TYPE data_type)
00201 {
00202     DCELL d;
00203     d = dval;
00204     if(G_is_d_null_value(&d))
00205     {
00206        G_set_null_value(rast, 1, data_type);
00207        return -1;
00208     }
00209     switch (data_type)
00210     {
00211        case CELL_TYPE: *((CELL *)rast) = (CELL ) dval; break;
00212        case FCELL_TYPE: *((FCELL *)rast) = (FCELL ) dval; break;
00213        case DCELL_TYPE: *((DCELL *)rast) = dval; break;
00214     }
00215 
00216     return 0;
00217 }
00218 
00219 
00237 CELL G_get_raster_value_c(
00238     void *rast,
00239     RASTER_MAP_TYPE data_type)
00240 {
00241     CELL c;
00242     if(G_is_null_value(rast, data_type))
00243     {
00244        G_set_c_null_value(&c, 1);
00245        return c;
00246     }
00247     switch (data_type)
00248     {
00249        case CELL_TYPE: return *((CELL *)rast);
00250        case FCELL_TYPE: return (CELL) *((FCELL *)rast);
00251        case DCELL_TYPE: return (CELL) *((DCELL *)rast);
00252     }
00253 
00254     return 0;
00255 }
00256 
00257 
00272 FCELL G_get_raster_value_f(
00273     void *rast,
00274     RASTER_MAP_TYPE data_type)
00275 {
00276     FCELL f;
00277     if(G_is_null_value(rast, data_type))
00278     {
00279        G_set_f_null_value(&f, 1);
00280        return f;
00281     }
00282     switch (data_type)
00283     {
00284        case CELL_TYPE: return (FCELL) *((CELL *)rast);
00285        case FCELL_TYPE: return *((FCELL *)rast);
00286        case DCELL_TYPE: return (FCELL) *((DCELL *)rast);
00287     }
00288 
00289     return 0;
00290 }
00291 
00292 
00307 DCELL G_get_raster_value_d(
00308     void *rast,
00309     RASTER_MAP_TYPE data_type)
00310 {
00311     DCELL d;
00312     if(G_is_null_value(rast, data_type))
00313     {
00314        G_set_d_null_value(&d, 1);
00315        return d;
00316     }
00317     switch (data_type)
00318     {
00319        case CELL_TYPE: return (DCELL) *((CELL *)rast);
00320        case FCELL_TYPE: return (DCELL) *((FCELL *)rast);
00321        case DCELL_TYPE: return *((DCELL *)rast);
00322     }
00323 
00324     return 0;
00325 }

Generated on Fri Nov 21 11:02:18 2008 for GRASS by  doxygen 1.5.1