postmd.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. *
  3. * An interval list used to map matrix elements into integers in the range 0 to
  4. * 254 representing shades of gray on a PostScript printer. The list can be given
  5. * using the -i option or can be set in the optional header that can preceed each
  6. * matrix. The list should be a comma or space separated list that looks like,
  7. *
  8. * num1,num2, ... ,numn
  9. *
  10. * where each num is a floating point number. The list must be given in increasing
  11. * numerical order. The n numbers in the list partion the real line into 2n+1
  12. * regions given by,
  13. *
  14. * region1 element < num1
  15. * region2 element = num1
  16. * region3 element < num2
  17. * region4 element = num3
  18. * . .
  19. * . .
  20. * . .
  21. * region2n element = numn
  22. * region2n+1 element > numn
  23. *
  24. * Every number in a given region is mapped into an integer in the range 0 to 254
  25. * and that number, when displayed on a PostScript printer using the image operator,
  26. * prints as a square filled with a gray scale that reflects the integer that was
  27. * chosen. 0 maps to black and 255 white (that's why 255 is normally omitted).
  28. *
  29. * The shades of gray chosen by the program are normally generated automatically,
  30. * but can be reassigned using the -g option or by including a grayscale line in
  31. * the optional header. The grayscale list is comma or space separated list of
  32. * integers between 0 and 255 that's used to map individual regions into arbitray
  33. * shade of gray, thus overriding the default choice made in the program. The list
  34. * should look like,
  35. *
  36. * color1,color2, ... ,color2n+1
  37. *
  38. * where color1 applies to region1 and color2n+1 applies to region2n+1. If less
  39. * than 2n+1 numbers are given the default assignments will be used for the missing
  40. * regions. Each color must be an integer in the range 0 to 255.
  41. *
  42. * The default interval list is given below. The default grayscale maps 254 (almost
  43. * white) into the first region and 0 (black) into the last.
  44. *
  45. */
  46. #define DFLTILIST "-1,0,1"
  47. /*
  48. *
  49. * The active interval list is built from an interval string and stored in an array
  50. * whose elements are of type Ilist.
  51. *
  52. */
  53. typedef struct {
  54. double val; /* only valid in kind is ENDPOINT */
  55. int color; /* gray scale color */
  56. long count; /* statistics for each region */
  57. } Ilist;
  58. /*
  59. *
  60. * Non-integer function declarations.
  61. *
  62. */
  63. char *savestring();