int output_raster(int fd) { int i; for (i = 0; i < page.rows; i++, at_row++) { G_percent(i, page.rows, 2); switch (format) { case USE_CELL: cell = raster.cell[i]; /* insert the NULL values */ Rast_insert_c_null_values(cell, null_flags[i], page.cols); Rast_put_c_row(fd, cell); break; case USE_DCELL: dcell = raster.dcell[i]; /* insert the NULL values */ Rast_insert_d_null_values(dcell, null_flags[i], page.cols); Rast_put_d_row(fd, dcell); break; } } G_percent(1, 1, 1); return configure_plot(); }
static void write_row_int(png_bytep p) { unsigned int x, c; channel *ch; for (x = 0; x < width; x++) for (c = 0; c < 6; c++) { ch = &channels[c]; if (ch->active) ch->buf[x] = (CELL) get_png_val(&p, bit_depth); } if (channels[C_A].active && ialpha > 0) for (c = 0; c < 6; c++) { ch = &channels[c]; if (c != C_A && ch->active) for (x = 0; x < width; x++) if (channels[C_A].buf[x] <= ialpha) Rast_set_c_null_value(&ch->buf[x], 1); } for (c = 0; c < 6; c++) { ch = &channels[c]; if (ch->active) Rast_put_c_row(ch->fd, ch->buf); } }
int randsurf(char *out, /* Name of raster maps to be opened. */ int min, int max, /* Minimum and maximum cell values. */ int int_map) { /* if map is to be written as a CELL map */ int nrows, ncols; /* Number of cell rows and columns */ DCELL *row_out_D; /* Buffer just large enough to hold one */ CELL *row_out_C; /* row of the raster map layer. */ int fd_out; /* File descriptor - used to identify */ /* open raster maps. */ int row_count, col_count; /****** INITIALISE RANDOM NUMBER GENERATOR ******/ G_math_rand(-1 * getpid()); /****** OPEN CELL FILES AND GET CELL DETAILS ******/ fd_out = Rast_open_new(out, int_map ? CELL_TYPE : DCELL_TYPE); nrows = Rast_window_rows(); ncols = Rast_window_cols(); if (int_map) row_out_C = Rast_allocate_c_buf(); else row_out_D = Rast_allocate_d_buf(); /****** PASS THROUGH EACH CELL ASSIGNING RANDOM VALUE ******/ for (row_count = 0; row_count < nrows; row_count++) { G_percent(row_count, nrows, 2); for (col_count = 0; col_count < ncols; col_count++) { if (int_map) *(row_out_C + col_count) = (CELL) (G_math_rand(2742) * (max + 1 - min) + min); /* under represents first and last bin */ /* *(row_out_C + col_count) = (CELL) floor(rand1(2742)*(max-min)+min +0.5); */ else *(row_out_D + col_count) = (DCELL) (G_math_rand(2742) * (max - min) + min); } /* Write contents row by row */ if (int_map) Rast_put_c_row(fd_out, (CELL *) row_out_C); else Rast_put_d_row(fd_out, (DCELL *) row_out_D); } G_percent(1, 1, 1); Rast_close(fd_out); return 0; }
static void convert_and_write_di(int fd, const void *vbuf) { const DCELL *buf = vbuf; struct fileinfo *fcb = &R__.fileinfo[fd]; CELL *p = (CELL *) fcb->data; int i; for (i = 0; i < fcb->cellhd.cols; i++) if (Rast_is_d_null_value(&buf[i])) Rast_set_c_null_value(&p[i], 1); else p[i] = (CELL) buf[i]; Rast_put_c_row(fd, p); }