draw_cell.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include <stdlib.h>
  2. #include <grass/gis.h>
  3. #include "globals.h"
  4. #include <grass/display.h>
  5. #include "local_proto.h"
  6. int draw_cell(View * view, int overlay)
  7. {
  8. int fd;
  9. int left, top;
  10. int ncols, nrows;
  11. int row;
  12. DCELL *dcell;
  13. struct Colors colr;
  14. char msg[100];
  15. if (!view->cell.configured)
  16. return 0;
  17. if (Rast_read_colors(view->cell.name, view->cell.mapset, &colr) < 0)
  18. return 0;
  19. if (overlay == OVER_WRITE)
  20. display_title(view);
  21. Rast_set_window(&view->cell.head);
  22. nrows = Rast_window_rows();
  23. ncols = Rast_window_cols();
  24. left = view->cell.left;
  25. top = view->cell.top;
  26. R_standard_color(BLUE);
  27. Outline_box(top, top + nrows - 1, left, left + ncols - 1);
  28. if (getenv("NO_DRAW")) {
  29. Rast_free_colors(&colr);
  30. return 1;
  31. }
  32. fd = Rast_open_old(view->cell.name, view->cell.mapset);
  33. dcell = Rast_allocate_d_buf();
  34. sprintf(msg, "Plotting %s ...", view->cell.name);
  35. Menu_msg(msg);
  36. D_set_overlay_mode(!overlay);
  37. D_cell_draw_setup(top, top + nrows, left, left + ncols);
  38. for (row = 0; row < nrows; row++) {
  39. Rast_get_d_row_nomask(fd, dcell, row);
  40. D_draw_d_raster(row, dcell, &colr);
  41. }
  42. D_cell_draw_end();
  43. Rast_close(fd);
  44. G_free(dcell);
  45. Rast_free_colors(&colr);
  46. return row == nrows;
  47. }