home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / x / volume17 / xtexcad1 / part10 < prev    next >
Encoding:
Text File  |  1992-04-20  |  39.5 KB  |  1,054 lines

  1. Newsgroups: comp.sources.x
  2. Path: uunet!zaphod.mps.ohio-state.edu!mips!msi!dcmartin
  3. From: Fritz Haubensak <hsk@informatik.uni-wuerzburg.de>
  4. Subject: v17i074: TeXcad (X) version 1.2, Part10/10
  5. Message-ID: <1992Apr21.131456.2652@msi.com>
  6. Originator: dcmartin@fascet
  7. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  8. Nntp-Posting-Host: fascet
  9. Organization: Molecular Simulations, Inc.
  10. References: <csx-17i065-xtexcad-1.2@uunet.UU.NET>
  11. Date: Tue, 21 Apr 1992 13:14:56 GMT
  12. Approved: dcmartin@msi.com
  13. Lines: 1039
  14.  
  15. Submitted-by: Fritz Haubensak <hsk@informatik.uni-wuerzburg.de>
  16. Posting-number: Volume 17, Issue 74
  17. Archive-name: xtexcad-1.2/part10
  18.  
  19. # this is part.10 (part 10 of a multipart archive)
  20. # do not concatenate these parts, unpack them in order with /bin/sh
  21. # file pics.h continued
  22. #
  23. if test ! -r _shar_seq_.tmp; then
  24.     echo 'Please unpack part 1 first!'
  25.     exit 1
  26. fi
  27. (read Scheck
  28.  if test "$Scheck" != 10; then
  29.     echo Please unpack part "$Scheck" next!
  30.     exit 1
  31.  else
  32.     exit 0
  33.  fi
  34. ) < _shar_seq_.tmp || exit 1
  35. if test ! -f _shar_wnt_.tmp; then
  36.     echo 'x - still skipping pics.h'
  37. else
  38. echo 'x - continuing file pics.h'
  39. sed 's/^X//' << 'SHAR_EOF' >> 'pics.h' &&
  40. X   0x04, 0xc1, 0x04, 0x00, 0x00, 0x61, 0x04, 0x11, 0x04, 0xc1, 0x04, 0x00,
  41. X   0x00, 0x61, 0x04, 0x29, 0x04, 0xc1, 0x04, 0x00, 0x00, 0xa1, 0x04, 0xc9,
  42. X   0x04, 0x21, 0x05, 0x00, 0x00, 0x12, 0x03, 0x06, 0x03, 0x12, 0x02, 0x00,
  43. X   0x00, 0x0c, 0x03, 0x06, 0x03, 0x0c, 0x03, 0x00, 0x00, 0xfc, 0x04, 0xf9,
  44. X   0x04, 0xfc, 0x04, 0x00, 0x00, 0x02, 0x08, 0x01, 0x08, 0x02, 0x08, 0x00,
  45. X   0x00, 0x01, 0x80, 0x00, 0x10, 0x01, 0x08, 0x00, 0x00, 0x01, 0x40, 0x00,
  46. X   0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  47. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  48. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  49. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  50. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  51. X   0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0xf8, 0x00, 0xf8,
  52. X   0x00, 0xf9, 0x80, 0x00, 0x00, 0x04, 0x01, 0x04, 0x01, 0x06, 0x61, 0x00,
  53. X   0x00, 0x02, 0x02, 0x02, 0x02, 0x06, 0x12, 0x00, 0x00, 0x01, 0x04, 0x01,
  54. X   0x04, 0x09, 0x0c, 0x00, 0x00, 0x01, 0x04, 0x01, 0x04, 0x11, 0x06, 0x00,
  55. X   0x00, 0x01, 0x04, 0x01, 0x04, 0x21, 0x05, 0x00, 0x00, 0x01, 0x04, 0x01,
  56. X   0x04, 0xc1, 0x04, 0x00, 0x00, 0x01, 0x04, 0x01, 0x04, 0xc1, 0x04, 0x00,
  57. X   0x00, 0x02, 0x02, 0x02, 0x02, 0x32, 0x03, 0x00, 0x00, 0x04, 0x01, 0x04,
  58. X   0x01, 0x0c, 0x03, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0xfc, 0x04, 0x00,
  59. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
  60. X   0x80, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x00,
  61. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
  62. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  63. #define text_width 60
  64. #define text_height 60
  65. static char text_bits[] = {
  66. X   0xfc, 0xfb, 0x19, 0xec, 0x1f, 0x00, 0x00, 0x00, 0xfc, 0xfb, 0x19, 0xec,
  67. X   0x1f, 0x00, 0x00, 0x00, 0x60, 0x18, 0x30, 0x06, 0x03, 0x00, 0x00, 0x00,
  68. X   0x60, 0x18, 0x30, 0x06, 0x03, 0x00, 0x00, 0x00, 0x60, 0x18, 0x60, 0x03,
  69. X   0x03, 0x00, 0x00, 0x00, 0x60, 0x78, 0xe0, 0x03, 0x03, 0x00, 0x00, 0x00,
  70. X   0x60, 0x78, 0xc0, 0x01, 0x03, 0x00, 0x00, 0x00, 0x60, 0x18, 0xe0, 0x03,
  71. X   0x03, 0x00, 0x00, 0x00, 0x60, 0x18, 0x60, 0x03, 0x03, 0x00, 0x00, 0x00,
  72. X   0x60, 0x18, 0x30, 0x06, 0x03, 0x00, 0x00, 0x00, 0x60, 0xf8, 0x19, 0x0c,
  73. X   0x03, 0x00, 0x00, 0x00, 0x60, 0xf8, 0x19, 0x0c, 0x03, 0x00, 0x00, 0x00,
  74. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  75. X   0x00, 0x80, 0x1f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x3f, 0x00,
  76. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x00, 0x40, 0x00, 0x00, 0x00,
  77. X   0x00, 0x18, 0x7e, 0x00, 0x40, 0x3e, 0xbe, 0x1f, 0x00, 0x08, 0xfe, 0x00,
  78. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfc, 0x00, 0x40, 0x00, 0x00, 0x00,
  79. X   0x00, 0x02, 0xf8, 0x00, 0x40, 0xfe, 0xf7, 0xdf, 0x03, 0x01, 0x40, 0x00,
  80. X   0x40, 0x00, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x40, 0x00, 0x00, 0x00,
  81. X   0x40, 0x00, 0x10, 0x00, 0x40, 0xfe, 0xef, 0xed, 0x23, 0x00, 0x08, 0x00,
  82. X   0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x00,
  83. X   0x08, 0x00, 0x02, 0x00, 0x40, 0xae, 0x6d, 0x03, 0x04, 0x00, 0x01, 0x00,
  84. X   0x40, 0x00, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  85. X   0x01, 0x40, 0x00, 0x00, 0x40, 0xa6, 0xea, 0x80, 0x00, 0x20, 0x00, 0x00,
  86. X   0x40, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20,
  87. X   0x00, 0x08, 0x00, 0x00, 0x40, 0x56, 0x3a, 0x10, 0x00, 0x0c, 0x00, 0x00,
  88. X   0x40, 0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x40, 0x00, 0x00, 0x04,
  89. X   0x00, 0x09, 0x00, 0x00, 0x40, 0xee, 0x7b, 0x02, 0x80, 0x08, 0x00, 0x00,
  90. X   0x40, 0x00, 0x00, 0x06, 0x40, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0f,
  91. X   0x20, 0x08, 0x00, 0x00, 0x40, 0xbe, 0x1f, 0x1f, 0x10, 0x08, 0x00, 0x00,
  92. X   0x40, 0x00, 0x00, 0x3f, 0x08, 0x08, 0x00, 0x00, 0x40, 0x00, 0x80, 0x7f,
  93. X   0x04, 0x08, 0x00, 0x00, 0x40, 0xbe, 0x8f, 0xff, 0x02, 0x08, 0x00, 0x00,
  94. X   0x40, 0x00, 0x80, 0xff, 0x01, 0x08, 0x00, 0x00, 0x40, 0x00, 0xc0, 0xff,
  95. X   0x00, 0x08, 0x00, 0x00, 0x40, 0x1e, 0xc0, 0x1f, 0x00, 0x08, 0x00, 0x00,
  96. X   0x40, 0x00, 0xc0, 0x01, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  97. X   0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
  98. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  99. X   0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
  100. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  101. X   0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
  102. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
  103. X   0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00,
  104. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff,
  105. X   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  106. #define vector_width 60
  107. #define vector_height 60
  108. static char vector_bits[] = {
  109. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
  110. X   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00,
  111. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x10, 0x00, 0x00, 0x00,
  112. X   0x00, 0xc0, 0x1f, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x1f, 0x00,
  113. X   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00,
  114. X   0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
  115. X   0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00,
  116. X   0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
  117. X   0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00,
  118. X   0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
  119. X   0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00,
  120. X   0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
  121. X   0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00,
  122. X   0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
  123. X   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
  124. X   0x00, 0x30, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf0, 0x02, 0x00,
  125. X   0x00, 0x04, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00,
  126. X   0x00, 0xf0, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
  127. X   0x00, 0x34, 0x00, 0x00, 0xe0, 0x70, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00,
  128. X   0x1e, 0x30, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00,
  129. X   0x00, 0x3f, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xc0, 0x01,
  130. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00,
  131. X   0x00, 0xd8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
  132. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  133. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  134. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  135. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  136. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  137. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xb0, 0x3f, 0xdf,
  138. X   0x3f, 0x1f, 0x3f, 0x00, 0x0c, 0xb0, 0xbf, 0xdf, 0xbf, 0x3f, 0x7f, 0x00,
  139. X   0x18, 0x98, 0x81, 0x01, 0x86, 0x31, 0xe3, 0x00, 0x18, 0x98, 0x81, 0x01,
  140. X   0x86, 0x31, 0xc3, 0x00, 0x30, 0x8c, 0x81, 0x01, 0x86, 0x31, 0xc3, 0x00,
  141. X   0x30, 0x8c, 0x87, 0x01, 0x86, 0x31, 0xe3, 0x00, 0x60, 0x86, 0x87, 0x01,
  142. X   0x86, 0x31, 0x7f, 0x00, 0x60, 0x86, 0x81, 0x01, 0x86, 0x31, 0x3f, 0x00,
  143. X   0xc0, 0x83, 0x81, 0x01, 0x86, 0x31, 0x3b, 0x00, 0xc0, 0x83, 0x81, 0x01,
  144. X   0x86, 0x31, 0x73, 0x00, 0x80, 0x81, 0xbf, 0x1f, 0x86, 0x3f, 0xe3, 0x00,
  145. X   0x80, 0x81, 0x3f, 0x1f, 0x06, 0x1f, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00,
  146. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  147. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  148. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  149. #define zoom_width 60
  150. #define zoom_height 60
  151. static char zoom_bits[] = {
  152. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xe3, 0xc3, 0xc7,
  153. X   0xc0, 0x00, 0x00, 0x00, 0xf8, 0xf3, 0xe7, 0xcf, 0xe1, 0x00, 0x00, 0x00,
  154. X   0x00, 0x31, 0x66, 0xcc, 0xe1, 0x00, 0x00, 0x00, 0x80, 0x31, 0x66, 0xcc,
  155. X   0xf3, 0x00, 0x00, 0x00, 0x80, 0x30, 0x66, 0xcc, 0xde, 0x00, 0x00, 0x00,
  156. X   0xc0, 0x30, 0x66, 0xcc, 0xcc, 0x00, 0x00, 0x00, 0x60, 0x30, 0x66, 0xcc,
  157. X   0xcc, 0x00, 0x00, 0x00, 0x20, 0x30, 0x66, 0xcc, 0xc0, 0x00, 0x00, 0x00,
  158. X   0x30, 0x30, 0x66, 0xcc, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x30, 0x66, 0xcc,
  159. X   0xc0, 0x00, 0x00, 0x00, 0xf8, 0xf3, 0xe7, 0xcf, 0xc0, 0x00, 0x00, 0x00,
  160. X   0xf8, 0xe3, 0xc3, 0xc7, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  161. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
  162. X   0x00, 0x00, 0x00, 0xe0, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
  163. X   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x18, 0x00, 0x00,
  164. X   0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
  165. X   0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, 0x00, 0x00,
  166. X   0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
  167. X   0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00,
  168. X   0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc0, 0xff,
  169. X   0x3f, 0x00, 0x01, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x01, 0x00,
  170. X   0x20, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x01, 0x00, 0x20, 0x00, 0xc0, 0xff,
  171. X   0x3f, 0x00, 0x01, 0x00, 0x20, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x01, 0x00,
  172. X   0x20, 0x00, 0x40, 0x00, 0x3e, 0x00, 0x01, 0x00, 0x20, 0x00, 0x80, 0x00,
  173. X   0x3e, 0x80, 0x00, 0x00, 0x20, 0x00, 0x80, 0x00, 0x3e, 0x80, 0x00, 0x00,
  174. X   0x20, 0x00, 0x80, 0x00, 0x3e, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x01,
  175. X   0x3e, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x02, 0x3e, 0x20, 0x00, 0x00,
  176. X   0x20, 0x00, 0x00, 0x02, 0x3e, 0x60, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0c,
  177. X   0x3e, 0xf8, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x3e, 0xfc, 0x01, 0x00,
  178. X   0x20, 0x00, 0x00, 0xe0, 0xbe, 0xfb, 0x03, 0x00, 0x20, 0x00, 0x00, 0x00,
  179. X   0x7f, 0xf0, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0xe0, 0x0f, 0x00,
  180. X   0x20, 0x00, 0x00, 0x00, 0x08, 0xc0, 0x1f, 0x00, 0x20, 0x00, 0x00, 0x00,
  181. X   0x08, 0x80, 0x3f, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x7f, 0x00,
  182. X   0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0xfe, 0x00, 0x20, 0x00, 0x00, 0x00,
  183. X   0x08, 0x00, 0xfc, 0x01, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0xf8, 0x03,
  184. X   0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0xf0, 0x07, 0x20, 0x00, 0x00, 0x00,
  185. X   0x08, 0x00, 0xe0, 0x0f, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0xc0, 0x07,
  186. X   0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x03, 0x20, 0x00, 0x00, 0x00,
  187. X   0x08, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
  188. X   0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
  189. X   0x08, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00,
  190. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  191. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  192. X
  193. #define bezier_width 60
  194. #define bezier_height 60
  195. static char bezier_bits[] = {
  196. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  197. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  198. X   0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x76, 0x00, 0x00,
  199. X   0x00, 0x00, 0x00, 0x00, 0x60, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  200. X   0x60, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00,
  201. X   0x00, 0x00, 0x3c, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00,
  202. X   0x80, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x66, 0x00, 0x40, 0x00, 0x06, 0x3c,
  203. X   0x00, 0x00, 0x66, 0x00, 0x20, 0x04, 0x01, 0xc0, 0x00, 0x00, 0x30, 0x00,
  204. X   0x20, 0x84, 0x00, 0x00, 0x07, 0x00, 0x38, 0x00, 0xe0, 0x87, 0x00, 0x00,
  205. X   0x18, 0x00, 0x60, 0x00, 0xa0, 0x47, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00,
  206. X   0x00, 0x40, 0x00, 0x00, 0x80, 0x01, 0x66, 0x00, 0x00, 0x20, 0x00, 0x00,
  207. X   0x00, 0x06, 0x66, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 0x66, 0x00,
  208. X   0x00, 0x10, 0x00, 0x00, 0x00, 0x30, 0x3c, 0x00, 0x00, 0x10, 0x00, 0x00,
  209. X   0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00,
  210. X   0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00,
  211. X   0x00, 0x80, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
  212. X   0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x02, 0x00, 0x08, 0x00, 0x08,
  213. X   0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01,
  214. X   0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0x03,
  215. X   0x00, 0x00, 0xc0, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  216. X   0x00, 0x84, 0x9f, 0xdf, 0xdf, 0x7e, 0x3f, 0x00, 0x00, 0x84, 0xbf, 0xdf,
  217. X   0xdf, 0x7e, 0x7f, 0x00, 0x00, 0x84, 0xb1, 0x01, 0xc8, 0x06, 0x63, 0x00,
  218. X   0x00, 0x84, 0xb1, 0x01, 0xcc, 0x06, 0x63, 0x00, 0x00, 0x84, 0xb1, 0x01,
  219. X   0xc4, 0x06, 0x63, 0x00, 0x00, 0x82, 0x9f, 0x07, 0xc6, 0x1e, 0x3f, 0x00,
  220. X   0x00, 0x82, 0x9f, 0x07, 0xc3, 0x1e, 0x3f, 0x00, 0x00, 0x82, 0xb1, 0x01,
  221. X   0xc1, 0x06, 0x1b, 0x00, 0x00, 0x82, 0xb1, 0x81, 0xc1, 0x06, 0x33, 0x00,
  222. X   0x00, 0x82, 0xb1, 0x81, 0xc0, 0x06, 0x63, 0x00, 0x00, 0x82, 0xbf, 0xdf,
  223. X   0xdf, 0x7e, 0x63, 0x00, 0x00, 0x82, 0x9f, 0xdf, 0xdf, 0x7e, 0x63, 0x00,
  224. X   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
  225. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  226. X   0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
  227. X   0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
  228. X   0x00, 0x01, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x81, 0x01, 0x97,
  229. X   0x9c, 0x60, 0xcf, 0x01, 0x00, 0xc1, 0x81, 0x90, 0xa4, 0x20, 0x21, 0x00,
  230. X   0x00, 0x81, 0x81, 0x90, 0x24, 0x91, 0x23, 0x00, 0x00, 0x81, 0x81, 0x90,
  231. X   0x1a, 0x8a, 0xc0, 0x00, 0x00, 0x81, 0x81, 0x50, 0x32, 0x4c, 0x00, 0x01,
  232. X   0x80, 0x83, 0x81, 0x60, 0x62, 0xc4, 0x03, 0x01, 0x80, 0x82, 0x01, 0x01,
  233. X   0x01, 0x00, 0x80, 0x01, 0x80, 0x83, 0x01, 0x0e, 0x01, 0x00, 0xe0, 0x00,
  234. X   0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x80, 0x01, 0x00,
  235. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00};
  236. X
  237. X
  238. #define up_width 35
  239. #define up_height 20
  240. static char up_bits[] = {
  241. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  242. X   0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00,
  243. X   0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00,
  244. X   0xf0, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x00, 0x00, 0x00, 0xfc, 0xff,
  245. X   0x01, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00,
  246. X   0x80, 0xff, 0xf8, 0x0f, 0x00, 0xc0, 0x3f, 0xe0, 0x1f, 0x00, 0xe0, 0x07,
  247. X   0x00, 0x3f, 0x00, 0xf0, 0x01, 0x00, 0x7c, 0x00, 0x38, 0x00, 0x00, 0xe0,
  248. X   0x00, 0x0c, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  249. X   0x00, 0x00, 0x00, 0x00};
  250. X
  251. #define down_width 35
  252. #define down_height 20
  253. static char down_bits[] = {
  254. X 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0xf8,0x0c,0x00,0x00,0x80,0xf9,
  255. X 0x38,0x00,0x00,0xe0,0xf8,0xf0,0x01,0x00,0x7c,0xf8,0xe0,0x07,0x00,0x3f,0xf8,
  256. X 0xc0,0x3f,0xe0,0x1f,0xf8,0x80,0xff,0xf8,0x0f,0xf8,0x00,0xff,0xff,0x07,0xf8,
  257. X 0x00,0xfe,0xff,0x03,0xf8,0x00,0xfc,0xff,0x01,0xf8,0x00,0xf8,0xff,0x00,0xf8,
  258. X 0x00,0xf0,0x7f,0x00,0xf8,0x00,0xe0,0x3f,0x00,0xf8,0x00,0xc0,0x1f,0x00,0xf8,
  259. X 0x00,0x80,0x0f,0x00,0xf8,0x00,0x00,0x07,0x00,0xf8,0x00,0x00,0x02,0x00,0xf8,
  260. X 0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0x00,0xf8};
  261. X
  262. #define left_width 20
  263. #define left_height 35
  264. static char left_bits[] = {
  265. X 0x00,0x00,0xf0,0x00,0x00,0xf0,0x00,0x00,0xf2,0x00,0x00,0xf3,0x00,0x80,0xf1,
  266. X 0x00,0xc0,0xf1,0x00,0xe0,0xf0,0x00,0xf0,0xf0,0x00,0xf8,0xf0,0x00,0x7c,0xf0,
  267. X 0x00,0x7e,0xf0,0x00,0x3f,0xf0,0x80,0x3f,0xf0,0xc0,0x3f,0xf0,0xe0,0x1f,0xf0,
  268. X 0xf0,0x1f,0xf0,0xf8,0x0f,0xf0,0xfc,0x0f,0xf0,0xf8,0x0f,0xf0,0xf0,0x1f,0xf0,
  269. X 0xe0,0x1f,0xf0,0xc0,0x3f,0xf0,0x80,0x3f,0xf0,0x00,0x3f,0xf0,0x00,0x7e,0xf0,
  270. X 0x00,0x7c,0xf0,0x00,0xf8,0xf0,0x00,0xf0,0xf0,0x00,0xe0,0xf0,0x00,0xc0,0xf1,
  271. X 0x00,0x80,0xf1,0x00,0x00,0xf3,0x00,0x00,0xf2,0x00,0x00,0xf0,0x00,0x00,0xf0
  272. X };
  273. X
  274. #define right_width 20
  275. #define right_height 35
  276. static char right_bits[] = {
  277. X 0x00,0x00,0xf0,0x00,0x00,0xf0,0x04,0x00,0xf0,0x0c,0x00,0xf0,0x18,0x00,0xf0,
  278. X 0x38,0x00,0xf0,0x70,0x00,0xf0,0xf0,0x00,0xf0,0xf0,0x01,0xf0,0xe0,0x03,0xf0,
  279. X 0xe0,0x07,0xf0,0xc0,0x0f,0xf0,0xc0,0x1f,0xf0,0xc0,0x3f,0xf0,0x80,0x7f,0xf0,
  280. X 0x80,0xff,0xf0,0x00,0xff,0xf1,0x00,0xff,0xf3,0x00,0xff,0xf1,0x80,0xff,0xf0,
  281. X 0x80,0x7f,0xf0,0xc0,0x3f,0xf0,0xc0,0x1f,0xf0,0xc0,0x0f,0xf0,0xe0,0x07,0xf0,
  282. X 0xe0,0x03,0xf0,0xf0,0x01,0xf0,0xf0,0x00,0xf0,0x70,0x00,0xf0,0x38,0x00,0xf0,
  283. X 0x18,0x00,0xf0,0x0c,0x00,0xf0,0x04,0x00,0xf0,0x00,0x00,0xf0,0x00,0x00,0xf0
  284. X };
  285. X
  286. #define zen_width 8
  287. #define zen_height 8
  288. static char zen_bits[] = {
  289. X   0xe7, 0x81, 0x81, 0x00, 0x00, 0x81, 0x81, 0xe7};
  290. X
  291. #endif
  292. SHAR_EOF
  293. echo 'File pics.h is complete' &&
  294. chmod 0644 pics.h ||
  295. echo 'restore of pics.h failed'
  296. Wc_c="`wc -c < 'pics.h'`"
  297. test 65217 -eq "$Wc_c" ||
  298.     echo 'pics.h: original size 65217, current size' "$Wc_c"
  299. rm -f _shar_wnt_.tmp
  300. fi
  301. # ============= texcad ==============
  302. if test -f 'texcad' -a X"$1" != X"-c"; then
  303.     echo 'x - skipping texcad (File already exists)'
  304.     rm -f _shar_wnt_.tmp
  305. else
  306. > _shar_wnt_.tmp
  307. echo 'x - extracting texcad (Text)'
  308. sed 's/^X//' << 'SHAR_EOF' > 'texcad' &&
  309. xtexcad $* -fn 6x13
  310. SHAR_EOF
  311. chmod 0755 texcad ||
  312. echo 'restore of texcad failed'
  313. Wc_c="`wc -c < 'texcad'`"
  314. test 20 -eq "$Wc_c" ||
  315.     echo 'texcad: original size 20, current size' "$Wc_c"
  316. rm -f _shar_wnt_.tmp
  317. fi
  318. # ============= texcad12.man ==============
  319. if test -f 'texcad12.man' -a X"$1" != X"-c"; then
  320.     echo 'x - skipping texcad12.man (File already exists)'
  321.     rm -f _shar_wnt_.tmp
  322. else
  323. > _shar_wnt_.tmp
  324. echo 'x - extracting texcad12.man (Text)'
  325. sed 's/^X//' << 'SHAR_EOF' > 'texcad12.man' &&
  326. \documentstyle[11pt, titlepage]{article}
  327. X
  328. \parindent0pt
  329. X
  330. \begin{document}
  331. X
  332. \title{{\Huge TeXcad}\\
  333. X       {\large Version 1.2 \\
  334. X           {\sc Shareware}}}
  335. \author{Klaus Zitzmann}
  336. \date{\today}
  337. X
  338. \maketitle
  339. X
  340. \section{Preface}
  341. X
  342. X     This is TeXcad Version 1.2 .
  343. X  
  344. X     TeXcad is distributed as a SHAREWARE product.
  345. X     If you like it and find it convenient to use,
  346. X     please don't hesitate to send an appreciation of \$20
  347. X     to\footnote{Any update or newer version is free !}:
  348. X
  349. \begin{tabbing}
  350. X  \hspace{2cm} \= \kill
  351. X  \>        Klaus Zitzmann \\
  352. X  \>        Langenau Stra\ss{}e 20 \\
  353. X  \>        D-5400 Koblenz, Germany \\
  354. \\
  355. X  \>        Kreissparkasse Koeln/Germany \\
  356. X  \>        Bank Code   : 37050299 (BLZ)\\
  357. X  \>        Account No. : 1359024299\\
  358. \\ 
  359. X  \>        e-mail : zitzmann@infko.uni-koblenz.de \\
  360. X  \>                 ...!uunet!mcsun!unido!infko!zitzmann \\
  361. \end{tabbing}
  362. X
  363. X     You must not use this program as a part of a commercial
  364. X     distribution.
  365. X
  366. X     The author makes no guarantees with this program and
  367. X     is not responsible for any damage caused by it.
  368. X     
  369. \section{Introduction}
  370. X
  371. \LaTeX~is a professional `{\it document preparation system}' for all
  372. kinds of documents like books, articles etc.
  373. It is obvious that those documents can contain graphics.
  374. Although \LaTeX~offers some graphics primitives, it is 
  375. difficult and awkward to produce a picture with them.
  376. The TeXcad package is a comfortable editor for \LaTeX~ pictures
  377. which translates the drawn images into pure \LaTeX~ code and also
  378. allows a subsequent editing.
  379. X
  380. \mbox{}
  381. X
  382. \mbox{}\hfill    Klaus Zitzmann,\hfill Koblenz/Germany in Oktober 91
  383. X  
  384. \newpage
  385. X  
  386. \section{User Guide}
  387. X
  388. \subsection{Installation}
  389. X
  390. The program is written in ANSI-C and compiled with the
  391. GNU-C-Compiler.
  392. It uses the MIT's X-Window-System and includes the major
  393. part of the ATHENA Widget Set. It runs under UNIX.
  394. I've developed and tested this program on a SUN 3 and 4 (Sparc Sun).
  395. X
  396. TeXcad is distributed with the following files:
  397. X
  398. \begin{center}
  399. \begin{tabbing}
  400. X  \hspace{4cm} \= \hspace{4cm} \= \hspace{4cm} \kill
  401. X  oberfl.c       \> oberfl.h           \> graphics.c \\
  402. X  graphics.h     \> file\_sel.c        \> file\_sel.h \\
  403. X  extdef.h       \> x\_stuff.h         \> Imakefile \\
  404. X  texcad         \> Makefile.std       \> ereignis.c \\
  405. X  ereignis.h     \> pickedit.c         \> pickedit.h \\
  406. X  io\_trans.c    \> io\_trans.h        \> pics.h \\
  407. X  yyscan.l       \> yyscan.h           \> Xtexcad.ad \\
  408. X  patchlevel.h   \> texcad12.man       \> README
  409. \end{tabbing}
  410. X
  411. \end{center}
  412. X
  413. If you use the {\it Makefile.std}, type `make -f Makefile.std cad' to produce
  414. the code named `xtexcad'.
  415. X
  416. Type `xrdb -merge Xtexcad.ad' to load the resources.
  417. You can start the program by typing `xtexcad [filename] \{toolkit options\}'
  418. or `texcad [filename] \{toolkit options\}'.
  419. X
  420. \subsection{Particularities}
  421. X
  422. The biggest picture the present program normally creates is of A4 size.\\
  423. If this is not large enough, you have to use the {\bf move image} option
  424. {\it (see below)} or just modify the `{\it unitlength-parameter}' within
  425. your TeX file\footnote{Manipulating the {\it unitlength} parameter always
  426. leads to a complete recomputation of circle diameters. Since these diameters
  427. are limited, it is possible that the results of this recomputation are
  428. invalid diameters, which are not displayed in the output.\\
  429. Nevertheless it is possible to abuse this modification as
  430. a {\it n-level zoom}.}.
  431. The internal unit of measurement is points (pt). All relevant
  432. values of an external picture will be transformed while reading
  433. it into the database.
  434. X
  435. During the development of TeXcad, I tried to keep the code as
  436. portable as possible\footnote{TeXcad was successfully installed on NeXT
  437. and Data General computers at the University of Koblenz.}.
  438. Nevertheless, there occurred multiple (unsolved) problems, especially
  439. when using the {\it NeWS} Server with the {\it twm} Window Manager.
  440. X
  441. X
  442. X
  443. \subsection{Commands}
  444. X
  445. TeXcad supports the following commands:
  446. X
  447. \begin{itemize}
  448. X  \item line 
  449. X  \item vector
  450. X  \item box (normal, framed, filled)
  451. X  \item circle (normal,oval,filled) 
  452. X  \item b\'{e}zier
  453. X  \item text
  454. \end{itemize}
  455. X
  456. X
  457. X     {\bf {\it CONVENTION:}}
  458. \\
  459. X     Pressing button 1 on an icon selects the function.
  460. X     Watch the status line of the window manager. The current
  461. X     context and possible user actions are shown there.
  462. X     When moving the pointer into the {\bf canvas}\footnote{The area in
  463. X      which the picture is drawn.}
  464. X     area, the selected command becomes active. Move the pointer out of
  465. X     the canvas to cancel the current command.
  466. X
  467. X
  468. Sometimes the computer displays certain messages in a
  469. popup window.
  470. If there is no other possibility, you can close this window
  471. by moving the pointer (in and) out of this window.
  472. X
  473. X
  474. \begin{description}
  475. X  \item{\bf The line and vector functions:} \\
  476. X     The start and end points of a line are specified by pressing
  477. X     button 1 on the canvas.
  478. X     Press one of the other buttons to start drawing a new line.
  479. X  \item{\bf The box function:} \\
  480. X     Hold button 1 on the box icon to pop up a menu.
  481. X     Move the pointer on one of the options ({\bf framed, filled,
  482. X     dashed}). Release the button to select the desired function.
  483. X     After the rectangle has been drawn, you are prompted for the
  484. X     box text and its position.
  485. X
  486. X  \item{\bf The circle function:} \\
  487. X     (see {\it function box} !)
  488. X
  489. X  \item{\bf The b\'{e}zier function:} \\
  490. X     Draws a quadratic B-Spline curve.
  491. X     After determining start and end points of the curve ({\it see
  492. X     line/vector}) you have to control its curvature.
  493. X     Be sure to add the b\'{e}zier style option to the header of your document
  494. X     (e.g.~{\it documentstyle[11pt, bezier]\{book\}}).
  495. X     
  496. X  \item{\bf The text function:} \\
  497. X     After pressing button 1 on the canvas, you are prompted for
  498. X     textual input.
  499. X     You can specify the text position relative to the 
  500. X     selected point.\\
  501. X     Examples:\\
  502. X     Press BOTTOM to center the text relative to this point.\\
  503. X     Press TOP RIGHT and this point will be the upper right edge
  504. X     of the text.
  505. \end{description}
  506. X
  507. X
  508. X
  509. The following commands allow a convenient editing of the
  510. picture:
  511. X
  512. X
  513. \begin{description}
  514. X  \item{\bf zoom:} \\
  515. X     A constant zoom area is supported.
  516. X     There is only one zoom level possible (and necessary !).
  517. X  \item{\bf refresh:} \\
  518. X     Redraws the screen.
  519. X     Leaves the zoom function.
  520. X  \item{\bf erase:} \\
  521. X     Holding button 1 on the `erase' icon pops up a menu
  522. X     with the options {\bf erase entire database} and {\bf pick erase}.\\
  523. X     The first option deletes all objects.\\
  524. X     With the second option, you can erase individual
  525. X     objects from a complex picture by picking them with
  526. X     the pointer: move the pointer close to the desired object
  527. X     and press button 1. The object will be marked on the
  528. X     screen and you can delete it by pressing the second button.
  529. X     Sometimes, when editing complex pictures where objects
  530. X     are very close to each other or overlapping, it can occur
  531. X     that the computer picks the wrong object. In this case,
  532. X     use button 3 to select the next possible object in the
  533. X     vicinity.
  534. X  \item{\bf copy:} \\
  535. X     Copies the object.\\
  536. X     First you have to pick the desired object ( see {\it erase} !).
  537. X     Hold button 2 and move the pointer to position the object
  538. X     on the screen.
  539. X     
  540. X    
  541. X  \item{\bf pickedit:} \\
  542. X     Holding button 1 on the erase icon pops up a menu
  543. X     with the option {\bf pick object} and some {\bf TEXT-edit} options.
  544. X
  545. X     What concerns the first option:\\
  546. X      Pick the desired object!
  547. X      To move the object, just hold button 2 and move the
  548. X      pointer.
  549. X      The object gets markers (little circles). Move the
  550. X      pointer into one of these markers and hold button 1 to
  551. X      edit the object. Only circle objects don't get
  552. X      markers. It is sufficient to move the pointer close to
  553. X      the arc.
  554. X
  555. X     The other options:\\
  556. X      These options ({\bf TEXT, framedBox Text, dashedBox Text})
  557. X      allow a comfortable editing of text.
  558. X
  559. X  \item{\bf Settings:} \\
  560. X     It is possible to switch between different default settings within
  561. X     the `settings` menu:
  562. X     \begin{itemize}
  563. X    \item Unlimited Slopes \\
  564. X      \LaTeX~offers only limited vector and line slopes.
  565. X      This option turns this restriction off but be sure
  566. X      that your TeX Version can handle these slopes.
  567. X    \item Watch Line Length \\
  568. X      The minimum length of a line or a vector is 10 points.
  569. X      By turning this option on, the computer will not allow to
  570. X      draw a shorter line/vector.
  571. X
  572. X    \item Enable Raster \\
  573. X      Shows a raster.
  574. X    \item Snap Pointer \\
  575. X      If the raster is active, the pointer will be snapped
  576. X      on the\\
  577. X      knot-points of the raster.
  578. X    \item Cross Wire \\
  579. X      Creates an additional pointer - a cross wire.
  580. X
  581. X    \item Center DIN A4 \\
  582. X      The computer suggests that the picture shall be
  583. X      centered horizontally and vertically on the screen.
  584. X      The final adjustment can be done `by hand' only!
  585. X      Some hints are generated within the *.tex file.
  586. X
  587. X    \item Automatic Refresh \\
  588. X      Some floating point operations cause an internal
  589. X      rounding error so that sometimes individual objects
  590. X      cannot be deleted correctly.
  591. X      The refresh removes this garbage automatically.
  592. X    \item Enable Ruler\\
  593. X      Shows a ruler.
  594. X      The unit of measurement is pt (points).
  595. X     \end{itemize}
  596. X
  597. X
  598. X  \item{\bf The function file:} \\
  599. X     This function manages the i/o of pictures.
  600. X     The file format is pure \LaTeX~code.
  601. X     The structure of a file, created by TeXcad, is the
  602. X     following:
  603. X     \begin{verbatim}
  604. X      %
  605. X      % /* comments */
  606. X      %
  607. X      begin{picture}(xdim,ydim)(xref,yref)
  608. X           .
  609. X           .
  610. X           /* LaTeX graphic commands */
  611. X           .
  612. X           .
  613. X      end{picture}
  614. X     \end{verbatim}
  615. X
  616. X     While reading an external document into the database,
  617. X     TeXcad skips all unknown commands until it recognizes the
  618. X     picture environment. This environment will be extracted
  619. X     from the document.
  620. X
  621. X  \item{\bf Coordinates: } \\
  622. X     The absolute and relative (relative to the zoom area) coordinates
  623. X     are displayed at the top right corner of the screen.
  624. X     Sometimes this is useful for a correct positioning of the
  625. X     pointer.
  626. X
  627. X  \item{\bf Move picture: } \\
  628. X     Select one of the four arrows diplayed below the coordinates box to move
  629. X     the entire picture to the corresponding direction. Selecting the square
  630. X     will center your picture.
  631. X     
  632. \end{description}
  633. X
  634. \end{document}
  635. SHAR_EOF
  636. chmod 0644 texcad12.man ||
  637. echo 'restore of texcad12.man failed'
  638. Wc_c="`wc -c < 'texcad12.man'`"
  639. test 10421 -eq "$Wc_c" ||
  640.     echo 'texcad12.man: original size 10421, current size' "$Wc_c"
  641. rm -f _shar_wnt_.tmp
  642. fi
  643. # ============= x_stuff.h ==============
  644. if test -f 'x_stuff.h' -a X"$1" != X"-c"; then
  645.     echo 'x - skipping x_stuff.h (File already exists)'
  646.     rm -f _shar_wnt_.tmp
  647. else
  648. > _shar_wnt_.tmp
  649. echo 'x - extracting x_stuff.h (Text)'
  650. sed 's/^X//' << 'SHAR_EOF' > 'x_stuff.h' &&
  651. /* xtexcad  V1.2 - graphic editor for LaTeX */
  652. /* 1991 by K.Zitzmann */
  653. /* x_stuff.h Header-File */
  654. X
  655. #ifndef X_STUFFH
  656. #define X_STUFFH
  657. X
  658. X
  659. X
  660. X
  661. #include <stdio.h>
  662. #include <string.h>
  663. #include <ctype.h>
  664. #include <X11/Xlib.h>
  665. #include <X11/StringDefs.h>
  666. #include <X11/Intrinsic.h>
  667. #include <X11/X.h>
  668. #include <X11/Xaw/Command.h>
  669. #include <X11/Xaw/SimpleMenu.h>
  670. #include <X11/Xaw/SmeBSB.h>
  671. #include <X11/Xaw/SmeLine.h>
  672. #include <X11/Xaw/MenuButton.h>
  673. #include <X11/Xaw/AsciiText.h>
  674. #include <X11/Xaw/TextSink.h>
  675. #include <X11/Xaw/Dialog.h>
  676. #include <X11/keysymdef.h>
  677. #include <X11/Xaw/Toggle.h>
  678. #include <X11/Xaw/Box.h>
  679. #include <X11/Xaw/List.h>
  680. #include <X11/Xaw/Form.h>
  681. #include <X11/Xaw/Label.h>
  682. X
  683. #endif
  684. X
  685. SHAR_EOF
  686. chmod 0644 x_stuff.h ||
  687. echo 'restore of x_stuff.h failed'
  688. Wc_c="`wc -c < 'x_stuff.h'`"
  689. test 700 -eq "$Wc_c" ||
  690.     echo 'x_stuff.h: original size 700, current size' "$Wc_c"
  691. rm -f _shar_wnt_.tmp
  692. fi
  693. # ============= yyscan.h ==============
  694. if test -f 'yyscan.h' -a X"$1" != X"-c"; then
  695.     echo 'x - skipping yyscan.h (File already exists)'
  696.     rm -f _shar_wnt_.tmp
  697. else
  698. > _shar_wnt_.tmp
  699. echo 'x - extracting yyscan.h (Text)'
  700. sed 's/^X//' << 'SHAR_EOF' > 'yyscan.h' &&
  701. /* xtexcad  V1.2 - graphic editor for LaTeX */
  702. /* 1991 by K.Zitzmann */
  703. /* scanner definition header-file yyscan.h */
  704. X
  705. X
  706. /* 06.11.91 */
  707. X
  708. X
  709. /* fuer FILE */
  710. #include <stdio.h>
  711. X
  712. X
  713. /* Tokens, die von yylex in yyscan.l
  714. X   zurueckgeliefert werden
  715. */
  716. X
  717. #define   TOK_BEGIN           1
  718. #define   TOK_END             2
  719. X
  720. #define   TOK_TEXT            3
  721. #define   TOK_LETTERS_OPT     4
  722. X
  723. #define   TOK_FLOAT           5
  724. X
  725. #define   TOK_PUT             6
  726. #define   TOK_FRAMEBOX        7
  727. #define   TOK_DASHBOX         8
  728. #define   TOK_LINE            9
  729. #define   TOK_VECTOR         10
  730. #define   TOK_CIRCLE         11
  731. #define   TOK_CIRCLE_AST     12
  732. #define   TOK_OVAL           13
  733. #define   TOK_RULE           14
  734. #define   TOK_MAKEBOX        15
  735. #define      TOK_BEZIER         16
  736. X
  737. #define   TOK_UNITLENGTH     20
  738. X
  739. #define   TOK_DIM_PT         21
  740. #define   TOK_DIM_CM         22
  741. #define   TOK_DIM_MM         23
  742. #define   TOK_DIM_PC         24
  743. #define   TOK_DIM_IN         25
  744. #define   TOK_DIM_UNITLENGTH 26
  745. X
  746. X
  747. /* Prototypen der Funktionen, die von yyscan.l 'exportiert' werden */
  748. X
  749. int yylex(void);
  750. X  /* Scanner; liefert das jeweils naechste erkannte Token */
  751. X
  752. void yyinitscan(FILE *fp);
  753. X  /* MUSS vor dem Beginn des Scannens aufgerufen werden (also vor dem
  754. X     ersten Aufruf von yylex).
  755. X     Setzt die Eingabedatei auf fp. Dabei MUSS die Datei fp schon offen sein!
  756. X   */
  757. X
  758. X
  759. /* Daten, die von yyscan.l 'exportiert' werden */
  760. X
  761. extern float yyfloatval;
  762. X  /* Falls eine float erkannt wurde (Token TOK_FLOAT oder TOK_UNITLENGTH),
  763. X     enthaelt yyfloatval deren Wert.
  764. X   */
  765. X
  766. #define YY_MAX_LEN  200
  767. X
  768. extern char yystrval[YY_MAX_LEN];
  769. X  /* Falls ein Text oder Buchstaben erkannt wurden (Token TOK_TEXT oder
  770. X     TOK_LETTERS_OPT), enthaelt yystrval deren Wert.
  771. X   */
  772. SHAR_EOF
  773. chmod 0644 yyscan.h ||
  774. echo 'restore of yyscan.h failed'
  775. Wc_c="`wc -c < 'yyscan.h'`"
  776. test 1731 -eq "$Wc_c" ||
  777.     echo 'yyscan.h: original size 1731, current size' "$Wc_c"
  778. rm -f _shar_wnt_.tmp
  779. fi
  780. # ============= yyscan.l ==============
  781. if test -f 'yyscan.l' -a X"$1" != X"-c"; then
  782.     echo 'x - skipping yyscan.l (File already exists)'
  783.     rm -f _shar_wnt_.tmp
  784. else
  785. > _shar_wnt_.tmp
  786. echo 'x - extracting yyscan.l (Text)'
  787. sed 's/^X//' << 'SHAR_EOF' > 'yyscan.l' &&
  788. /* xtexcad  V1.2 - graphic editor for LaTeX */
  789. /* 1991 by K.Zitzmann */
  790. /* scanner definition yyscan.l */
  791. X
  792. X /* 07.11.91 */
  793. X
  794. X
  795. %{
  796. #include <string.h>
  797. #include <ctype.h>
  798. X
  799. /* fuer atof */
  800. #if defined(__TURBOC__)
  801. #   include <stdlib.h>
  802. # else
  803. #   include "extdef.h"
  804. #endif
  805. X
  806. #if defined(__TURBOC__)
  807. #  define yywrap()  1
  808. #endif
  809. X
  810. /* Prototypen von Funktionen, die von lex NACH ihrem Aufruf
  811. X   definiert werden
  812. X */
  813. int yylook(void);
  814. int yyback(int *p, int m);
  815. X
  816. X
  817. #include "yyscan.h"
  818. X
  819. char *readText(unsigned numBr);
  820. X
  821. float yyfloatval;
  822. X  /* Falls eine float erkannt wurde (Token TOK_FLOAT oder TOK_UNITLENGTH),
  823. X     enthaelt yyfloatval deren Wert.
  824. X   */
  825. char yystrval[YY_MAX_LEN];
  826. X  /* Falls ein Text oder Buchstaben erkannt wurden (Token TOK_TEXT oder
  827. X     TOK_LETTERS_OPT), enthaelt yystrval deren Wert.
  828. X   */
  829. X
  830. enum {gtNo,gtNext,gtForceNext,gtForceNext2} getText;
  831. X  /* Gibt an, wann ein 'Text'-Argument vorkommen kann bzw. muss.
  832. X     Moegliche Werte:
  833. X       gtNo        : kann nicht
  834. X       gtNext      : kann nach der naechsten {
  835. X       gtForceNext : muss nach der naechsten {
  836. X       gtForceNext2: muss nach der uebernaechsten {
  837. X   */
  838. X
  839. typedef unsigned char BOOL;
  840. #define TRUE  1
  841. #define FALSE 0
  842. X
  843. BOOL getUnitLen,
  844. X  /* Gibt an, ob die Laengenangabe fuer \unitlength gelesen werden soll. */
  845. X     getDim;
  846. X  /* Gibt an, ob die Dimension fuer \unitlength gelesen werden soll. */
  847. %}
  848. X
  849. X
  850. %s  inPictEnv  inPut  lookOut
  851. X
  852. X
  853. ws           [ \t\n]
  854. digit        [0-9]
  855. letter       [A-Za-z]
  856. sign         [+-]
  857. X
  858. X
  859. %%
  860. X
  861. X
  862. {ws}+                  {/* ignorieren */}
  863. "%".*\n                {/* LaTeX-Kommentar ignorieren */}
  864. X
  865. <INITIAL>\\unitlength=                 getUnitLen = TRUE;
  866. <INITIAL>{sign}?{digit}+               |
  867. <INITIAL>{sign}?{digit}*"."{digit}*    {if(getUnitLen)
  868. X                      {
  869. X                        yyfloatval = (float) atof(yytext);
  870. X                        getUnitLen = FALSE;
  871. X                        getDim = TRUE;
  872. X                        return TOK_UNITLENGTH;
  873. X                      }
  874. X                       }
  875. <INITIAL>pt           {if(getDim)
  876. X             {
  877. X               getDim = FALSE;
  878. X               return TOK_DIM_PT;
  879. X             }
  880. X              }
  881. <INITIAL>cm           {if(getDim)
  882. X             {
  883. X               getDim = FALSE;
  884. X               return TOK_DIM_CM;
  885. X             }
  886. X              }
  887. <INITIAL>mm           {if(getDim)
  888. X             {
  889. X               getDim = FALSE;
  890. X               return TOK_DIM_MM;
  891. X             }
  892. X              }
  893. <INITIAL>pc           {if(getDim)
  894. X             {
  895. X               getDim = FALSE;
  896. X               return TOK_DIM_PC;
  897. X             }
  898. X              }
  899. <INITIAL>in           {if(getDim)
  900. X             {
  901. X               getDim = FALSE;
  902. X               return TOK_DIM_IN;
  903. X             }
  904. X              }
  905. X
  906. <INITIAL>\\begin\{picture\}       {BEGIN inPictEnv; return TOK_BEGIN;}
  907. X
  908. <INITIAL>.|\n                     {/* ignorieren */}
  909. X
  910. X
  911. <inPictEnv>\\bezier        return TOK_BEZIER;
  912. <inPictEnv>\\put                {BEGIN inPut; return TOK_PUT;}
  913. X
  914. <lookOut>\\framebox             {getText = gtForceNext;  BEGIN inPictEnv;
  915. X                 return TOK_FRAMEBOX;}
  916. <lookOut>\\makebox              {getText = gtForceNext;  BEGIN inPictEnv;
  917. X                 return TOK_MAKEBOX;}
  918. <lookOut>\\dashbox              {getText = gtForceNext2; BEGIN inPictEnv;
  919. X                 return TOK_DASHBOX;}
  920. <lookOut>\\line                 {BEGIN inPictEnv; return TOK_LINE;}
  921. <lookOut>\\vector               {BEGIN inPictEnv; return TOK_VECTOR;}
  922. <lookOut>\\circle               {BEGIN inPictEnv; return TOK_CIRCLE;}
  923. <lookOut>\\circle\*             {BEGIN inPictEnv; return TOK_CIRCLE_AST;}
  924. <lookOut>\\oval                 {BEGIN inPictEnv; return TOK_OVAL;}
  925. <lookOut>\\rule                 {BEGIN inPictEnv; return TOK_RULE;}
  926. X
  927. <lookOut>\}            {/* 'leerer' Text */
  928. X                 yystrval[0] = '\0';
  929. X                 BEGIN inPictEnv;
  930. X                 return TOK_TEXT;}
  931. <lookOut>.            {/* 'nichtleerer' Text */
  932. X                 yystrval[0] = yytext[0];
  933. X                 (void) strcpy(&yystrval[1],
  934. X                    readText(yytext[0] == '{'));
  935. X                 BEGIN inPictEnv;
  936. X                 return TOK_TEXT;}
  937. X
  938. <inPictEnv>\\unitlength           return TOK_DIM_UNITLENGTH;
  939. <inPictEnv>pt              return TOK_DIM_PT;
  940. <inPictEnv>cm              return TOK_DIM_CM;
  941. <inPictEnv>mm              return TOK_DIM_MM;
  942. <inPictEnv>pc              return TOK_DIM_PC;
  943. <inPictEnv>in              return TOK_DIM_IN;
  944. X
  945. <inPictEnv,inPut>{sign}?{digit}+               |
  946. <inPictEnv,inPut>{sign}?{digit}*"."{digit}*    {yyfloatval = (float) atof(yytext);
  947. X                             return TOK_FLOAT;}
  948. X
  949. <inPictEnv>\{          {if(getText == gtForceNext)
  950. X                {
  951. X                  (void) strcpy(yystrval,readText(0));
  952. X                  getText = gtNo;
  953. X                  return TOK_TEXT;
  954. X                }
  955. X              else if(getText == gtForceNext2)
  956. X                getText = gtForceNext;}
  957. X
  958. <inPut>\{          BEGIN lookOut;
  959. <inPictEnv>\}             {/* ignorieren */}
  960. <inPictEnv,inPut>[(),]    {/* ignorieren */}
  961. X
  962. <inPictEnv>\\end\{picture\}     return TOK_END;
  963. X
  964. <inPictEnv>\[({letter}{1,2})?\]   {(void) strcpy(yystrval,&yytext[1]);
  965. X                   yystrval[yyleng - 2] = '\0';
  966. X                   return TOK_LETTERS_OPT;}
  967. X
  968. <inPictEnv>.        {(void) fprintf(stderr,
  969. X               "yylex: unrecognized char '%c' (%#X) in line %d\n",
  970. X               yytext[0],yytext[0],yylineno);}
  971. X
  972. X
  973. %%
  974. X
  975. X
  976. /* Muss vor dem Beginn des Scannens aufgerufen werden.
  977. X   Setzt die Datei auf fp und geht in den richtigen Zustand
  978. X   ('eat up') ueber. Die Datei fp muss offen sein!
  979. X */
  980. void yyinitscan(FILE *fp)
  981. X  {
  982. X    yyin = fp;
  983. X
  984. X    BEGIN INITIAL;
  985. X
  986. X    getUnitLen = FALSE;
  987. X    getDim = FALSE;
  988. X  } /* yyinitscan */
  989. X
  990. X
  991. /* Liest (LaTeX-) Text, der als Argument eines Befehls auftritt,
  992. X   bis (einschliesslich) zur schliessenden Argumentklammer.
  993. X   Kommt mit verschachtelten { } zurecht. Liefert den Text (ohne
  994. X   die Argumentklammern) zurueck. DIESES ERGEBNIS MUSS SOFORT
  995. X   KOPIERT WERDEN, DA ES DIE ADRESSE EINES LOKALEN ARRAYS IST!!
  996. X   Im Fehlerfall (unerwartetes Dateiende) liefert die Funktion
  997. X   einen Zeiger auf den leeren String zurueck.
  998. X */
  999. char *readText(unsigned numBr)
  1000. X  {
  1001. X    static char text[YY_MAX_LEN];
  1002. X    unsigned    i = 0;
  1003. X    char        ch;
  1004. X    unsigned    numBraces = numBr + 1;
  1005. X
  1006. X
  1007. X    /* pre: (numBr + 1) '{' wurden schon ueberlesen */
  1008. X    while(numBraces > 0)
  1009. X      {
  1010. X    if((ch = input()) == '\0' /*end of file*/)
  1011. X          {
  1012. X        (void) fprintf(stderr,
  1013. X          "readText: premature end of file in line %d\n",
  1014. X          yylineno);
  1015. X        return "";
  1016. X          }
  1017. X          
  1018. X    if(ch == '{')
  1019. X        numBraces++;
  1020. X      else if(ch == '}')
  1021. X        numBraces--;
  1022. X
  1023. X    if(i >= YY_MAX_LEN)
  1024. X          {
  1025. X        (void) fprintf(stderr,
  1026. X          "readText: text argument too long in line %d\n",
  1027. X          yylineno);
  1028. X        return "";
  1029. X          }
  1030. X    text[i++] = ch;
  1031. X      }
  1032. X    /* jetzt ist die schliessende Argumentklammer das letzte Zeichen
  1033. X       in text */
  1034. X    text[--i] = '\0';
  1035. X
  1036. X    return text;
  1037. X  } /* readText */
  1038. SHAR_EOF
  1039. chmod 0644 yyscan.l ||
  1040. echo 'restore of yyscan.l failed'
  1041. Wc_c="`wc -c < 'yyscan.l'`"
  1042. test 6312 -eq "$Wc_c" ||
  1043.     echo 'yyscan.l: original size 6312, current size' "$Wc_c"
  1044. rm -f _shar_wnt_.tmp
  1045. fi
  1046. rm -f _shar_seq_.tmp
  1047. echo You have unpacked the last part
  1048. exit 0
  1049. -- 
  1050. --
  1051. Molecular Simulations, Inc.            mail: dcmartin@msi.com
  1052. 796 N. Pastoria Avenue                uucp: uunet!dcmartin
  1053. Sunnyvale, California 94086            at&t: 408/522-9236
  1054.