reclas_txt.c 897 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include <string.h>
  2. #include <grass/gis.h>
  3. #include "local_proto.h"
  4. int reclass_text(char *text, const CELL cat, struct Reclass *reclass,
  5. const int next)
  6. {
  7. int i;
  8. int n;
  9. int first;
  10. CELL min;
  11. *text = 0;
  12. n = reclass->num;
  13. min = reclass->min;
  14. first = -1;
  15. for (i = next; i < n; i++) {
  16. if (reclass->table[i] == cat) {
  17. if (first < 0)
  18. first = i;
  19. }
  20. else if (first >= 0) {
  21. do_text(text, (long)first + min, (long)i - 1 + min);
  22. first = -1;
  23. if (strlen(text) > 20)
  24. return i;
  25. }
  26. }
  27. if (first >= 0)
  28. do_text(text, (long)first + min, (long)i - 1 + min);
  29. return -1;
  30. }
  31. int do_text(char *text, const long first, const long last)
  32. {
  33. char work[40];
  34. if (*text)
  35. strcat(text, " ");
  36. if (first == last)
  37. sprintf(work, "%ld", first);
  38. else
  39. sprintf(work, "%ld-%ld", first, last);
  40. strcat(text, work);
  41. return 0;
  42. }