show.c 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. #include <unistd.h>
  2. #include <string.h>
  3. #include <grass/gis.h>
  4. #include <grass/raster.h>
  5. static int nlines = 100;
  6. int show_cat(int width, int mwidth,
  7. char *name, char *mapset, int cat, char *label,
  8. int terse, char *fs, RASTER_MAP_TYPE map_type)
  9. {
  10. char *fname;
  11. char buf[100];
  12. CELL cell_val;
  13. cell_val = cat;
  14. if (map_type != CELL_TYPE)
  15. sprintf(buf, ", quant ");
  16. else
  17. sprintf(buf, " ");
  18. if (terse) {
  19. fname = G_fully_qualified_name(name, mapset);
  20. if (Rast_is_c_null_value(&cell_val)) {
  21. if (!isatty(fileno(stdout)))
  22. fprintf(stdout, "%s%s%sNull%s%s\n", fname, buf, fs, fs,
  23. label);
  24. fprintf(stderr, "%s%s%sNull%s%s\n", fname, buf, fs, fs, label);
  25. }
  26. else {
  27. if (!isatty(fileno(stdout)))
  28. fprintf(stdout, "%s%s%s%d%s%s\n", fname, buf, fs, cat, fs,
  29. label);
  30. fprintf(stderr, "%s%s%s%d%s%s\n", fname, buf, fs, cat, fs, label);
  31. }
  32. }
  33. else {
  34. if (Rast_is_c_null_value(&cell_val)) {
  35. if (!isatty(fileno(stdout)))
  36. fprintf(stdout, "%*s in %-*s%s (Null)%s\n", width, name,
  37. mwidth, mapset, buf, label);
  38. fprintf(stderr, "%*s in %-*s%s (Null)%s\n", width, name, mwidth,
  39. mapset, buf, label);
  40. }
  41. else {
  42. if (!isatty(fileno(stdout)))
  43. fprintf(stdout, "%*s in %-*s%s (%d)%s\n", width, name, mwidth,
  44. mapset, buf, cat, label);
  45. fprintf(stderr, "%*s in %-*s%s (%d)%s\n", width, name, mwidth,
  46. mapset, buf, cat, label);
  47. }
  48. }
  49. nlines += 1;
  50. return 0;
  51. }
  52. int show_dval(int width, int mwidth,
  53. char *name, char *mapset, DCELL dval, char *label,
  54. int terse, char *fs, RASTER_MAP_TYPE map_type)
  55. {
  56. DCELL dcell_val;
  57. char *fname;
  58. dcell_val = dval;
  59. if (terse) {
  60. fname = G_fully_qualified_name(name, mapset);
  61. if (Rast_is_d_null_value(&dcell_val)) {
  62. if (!isatty(fileno(stdout)))
  63. fprintf(stdout, "%s, actual %sNull%s%s\n", fname, fs, fs,
  64. label);
  65. fprintf(stderr, "%s, actual %sNull%s%s\n", fname, fs, fs, label);
  66. }
  67. else {
  68. if (!isatty(fileno(stdout)))
  69. fprintf(stdout, "%s, actual %s%.*g%s%s\n", fname, fs,
  70. map_type == FCELL_TYPE ? 7 : 15, dval, fs, label);
  71. fprintf(stderr, "%s, actual %s%.*g%s%s\n", fname, fs,
  72. map_type == FCELL_TYPE ? 7 : 15, dval, fs, label);
  73. }
  74. }
  75. else {
  76. if (Rast_is_d_null_value(&dcell_val)) {
  77. if (!isatty(fileno(stdout)))
  78. fprintf(stdout, "%*s in %-*s, actual (Null)%s\n", width,
  79. name, mwidth, mapset, label);
  80. fprintf(stderr, "%*s in %-*s, actual (Null)%s\n", width, name,
  81. mwidth, mapset, label);
  82. }
  83. else {
  84. if (!isatty(fileno(stdout)))
  85. fprintf(stdout, "%*s in %-*s, actual (%.*g)%s\n", width, name,
  86. mwidth, mapset, map_type == FCELL_TYPE ? 7 : 15,
  87. dval, label);
  88. fprintf(stderr, "%*s in %-*s, actual (%.*g)%s\n", width, name,
  89. mwidth, mapset, map_type == FCELL_TYPE ? 7 : 15, dval,
  90. label);
  91. }
  92. }
  93. nlines += 1;
  94. return 0;
  95. }
  96. int show_utm(char *name, char *mapset, double north, double east,
  97. struct Cell_head *window, int terse, int colrow, int button,
  98. char *fs)
  99. {
  100. char e[50], n[50];
  101. int e_col, n_row;
  102. static char once = 1;
  103. static struct Cell_head cellhd;
  104. if (window->proj == PROJECTION_LL && !isatty(fileno(stdout))) {
  105. /* format in decimal rather than d.m.s */
  106. G_format_northing(north, n, -1);
  107. G_format_easting(east, e, -1);
  108. }
  109. else {
  110. G_format_northing(north, n, window->proj);
  111. G_format_easting(east, e, window->proj);
  112. }
  113. if (once) {
  114. /* speed up? */
  115. once = 0;
  116. Rast_get_cellhd(name, mapset, &cellhd);
  117. }
  118. n_row = (int)((cellhd.north - north) / window->ns_res);
  119. e_col = (int)((east - cellhd.west) / window->ew_res);
  120. if (terse) {
  121. if (!isatty(fileno(stdout))) {
  122. fprintf(stdout, "\n%s%s%s%s", e, fs, n, fs);
  123. if (colrow)
  124. fprintf(stdout, "%d%s%d%s", e_col, fs, n_row, fs);
  125. fprintf(stdout, "%d\n", button);
  126. }
  127. fprintf(stderr, "\n%s%s%s%s", e, fs, n, fs);
  128. if (colrow)
  129. fprintf(stderr, "%d%s%d%s", e_col, fs, n_row, fs);
  130. fprintf(stderr, "%d\n", button);
  131. }
  132. else {
  133. if (window->proj != PROJECTION_LL) {
  134. strcat(n, "(N)");
  135. strcat(e, "(E)");
  136. }
  137. if (!isatty(fileno(stdout))) {
  138. fprintf(stdout, "\n%s %s", e, n);
  139. if (colrow)
  140. fprintf(stdout, ", %d(col) %d(row)", e_col, n_row);
  141. fprintf(stdout, "\n");
  142. }
  143. fprintf(stderr, "\n%s %s", e, n);
  144. if (colrow)
  145. fprintf(stderr, ", %d(col) %d(row)", e_col, n_row);
  146. fprintf(stderr, "\n");
  147. }
  148. nlines += 2;
  149. return 0;
  150. }
  151. int show_buttons(int once)
  152. {
  153. if (once) {
  154. fprintf(stderr, "\nClick mouse button on desired location\n\n");
  155. nlines = 3;
  156. }
  157. else if (nlines >= 18) { /* display prompt every screen full */
  158. fprintf(stderr, "\n");
  159. fprintf(stderr, "Buttons\n");
  160. fprintf(stderr, " Left: what's here\n");
  161. fprintf(stderr, " Right: quit\n");
  162. nlines = 4;
  163. }
  164. return 0;
  165. }