Updated i.rgb.his in sandbox.

As part of my learning process, I chose to not use mapcalc (as suggested in
ticket #774 by Glynn). Will do so later on, if mapcalc is better.

I seek for assistance regarding the following:

1) on opening files

The following code works:

globals.h:

void openfiles(char *, char *, char *,
              char *, char *, char *,
              int[3], int[3],
              DCELL *[3]);

openfiles.c:

void openfiles(char *red, char *green, char *blue,
              char *hue, char *saturation, char *lightness,
              int fd_input[3], int fd_output[3], DCELL * rowbuffer[3])
{

   /* open input files */
   fd_input[0] = Rast_open_old(red, "");
   fd_input[1] = Rast_open_old(green, "");
   fd_input[2] = Rast_open_old(blue, "");

   /* open output files */
   fd_output[0] = Rast_open_fp_new(hue);
   fd_output[1] = Rast_open_fp_new(saturation);
   fd_output[2] = Rast_open_fp_new(lightness);

   /* allocate row buffers */
   rowbuffer[0] = Rast_allocate_d_buf();
   rowbuffer[1] = Rast_allocate_d_buf();
   rowbuffer[2] = Rast_allocate_d_buf();

}

I want to let `Rast_map_type()` retrieve the data type (see r.example) and use 
`Rast_allocate_buf(data_type)` instead.
Trying something like:

   const char *mapset;
   RASTER_MAP_TYPE red_data_type;

   /* get mapset (NULL if map not found in any mapset) */
   mapset = (char *) G_find_raster2(red, "");
   if (mapset == NULL)
       G_fatal_error(_("Raster map <%s> not found"), red);

   /* determine input raster map type */
   red_data_type = Rast_map_type(red, mapset);

   /* allocate the cell row buffer */
   rowbuffer[0] = Rast_allocate_buf(red_data_type);

This segfaults because the returned data_type is NULL.

2) Much like in `r.example`, I unsuccessfully try to define, in `globals.h` and
subsequently in `openfiles.c` the following:

void openfiles(char *, char *, char *,
              char *, char *, char *,
              int[3], int[3],
              void *[3]);

and

void openfiles(char *red, char *green, char *blue,
              char *hue, char *saturation, char *intensity,
              int fd_input[3], int fd_output[3],
              void *rowbuffer[3])

and whatever follows up in `main.c` (and elsewhere).

3) How to I print a DATA_TYPE?, ie:

   G_debug(1, "Red input raster map is of type: %?", red_data_type);

  Is data_type, as returned by `Rast_map_type()` a string?

4) Again, like in `r.example`, I would like to split `rowbuffer` in main(), in
`input_rowbuffer` and `output_rowbuffer`.


Thank you, Nikos
_______________________________________________
grass-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to