home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / x / volume16 / xfig-2.1.3 / part20 < prev    next >
Internet Message Format  |  1992-02-04  |  57KB

  1. Path: uunet!zaphod.mps.ohio-state.edu!mips!msi!dcmartin
  2. From: envbvs@bea.lbl.gov (Brian V. Smith)
  3. Newsgroups: comp.sources.x
  4. Subject: v16i025: Xfig 2.1.3, Part20/25
  5. Message-ID: <1992Feb4.150245.1378@msi.com>
  6. Date: 4 Feb 92 15:02:45 GMT
  7. References: <csx-16i006-xfig-2.1.3@uunet.UU.NET>
  8. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  9. Organization: Molecular Simulations, Inc.
  10. Lines: 1573
  11. Approved: dcmartin@msi.com
  12. Originator: dcmartin@fascet
  13.  
  14. Submitted-by: envbvs@bea.lbl.gov (Brian V. Smith)
  15. Posting-number: Volume 16, Issue 25
  16. Archive-name: xfig-2.1.3/part20
  17.  
  18. # This is a shell archive.  Remove anything before this line, then feed it
  19. # into a shell via "sh file" or similar.  To overwrite existing files,
  20. # type "sh file -c".
  21. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  22. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  23. # If this archive is complete, you will see the following message at the end:
  24. #        "End of archive 20 (of 25)."
  25. # Contents:  Examples/experiment.fig.uu Examples/housecheck.fig.uu
  26. #   Examples/orifices.fig.uu d_line.c e_convert.c e_deletept.c
  27. #   f_save.c w_cmdpanel.c
  28. # Wrapped by dcmartin@fascet on Tue Feb  4 06:42:32 1992
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'Examples/experiment.fig.uu' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'Examples/experiment.fig.uu'\"
  32. else
  33. echo shar: Extracting \"'Examples/experiment.fig.uu'\" \(6943 characters\)
  34. sed "s/^X//" >'Examples/experiment.fig.uu' <<'END_OF_FILE'
  35. Xbegin 664 experiment.fig
  36. XM(T9)1R`R+C`*.#`@,@HQ(#,@,"`Q(#`@,"`P(#`@,"XP,#`@,2`P+C`P,"`T
  37. XM,S0@,3`Y(#4@-2`T,S0@,3`Y(#0S.2`Q,#D*,2`S(#`@,2`P(#`@,"`P(#`N
  38. XM,#`P(#$@,"XP,#`@-34Y(#$X-"`U(#4@-34Y(#$X-"`U-C0@,3@T"C$@,R`P
  39. XM(#$@,"`P(#`@,"`P+C`P,"`Q(#`N,#`P(#4U.2`Q,C0@-2`U(#4U.2`Q,C0@
  40. XM-38T(#$R-`HQ(#,@,"`Q(#`@,"`P(#`@,"XP,#`@,2`P+C`P,"`T,#D@,34T
  41. XM(#4@-2`T,#D@,34T(#0Q-"`Q-30*,2`S(#`@,B`P(#`@,"`P(#`N,#`P(#$@
  42. XM,"XP,#`@,3$T(#$U-"`R,"`R,"`Q,30@,34T(#$S-"`Q-30*,B`Q(#`@,B`P
  43. XM(#`@,"`P(#`N,#`P(#`@,`H)(#DT(#$U-"`W.2`Q-30@.3DY.2`Y.3DY"C(@
  44. XM,2`P(#(@,"`P(#`@,"`P+C`P,"`Q(#`*"3`@,"`R+C`P,"`X+C`P,"`Q-BXP
  45. XM,#`*"2`W,S0@,C8T(#<S-"`R.#0@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@
  46. XM,"`P+C`P,"`P(#`*"2`T,S$@,3$R(#0S-R`Q,#8@.3DY.2`Y.3DY"C(@,2`P
  47. XM(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`T,S$@,3`V(#0S."`Q,3,@.3DY.2`Y
  48. XM.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`U-38@,3@W(#4V,B`Q
  49. XM.#$@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`U-38@
  50. XM,3@Q(#4V,R`Q.#@@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P
  51. XM(#`*"2`U-38@,3(Q(#4V,R`Q,C@@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@
  52. XM,"`P+C`P,"`P(#`*"2`U-38@,3(W(#4V,B`Q,C$@.3DY.2`Y.3DY"C(@,2`P
  53. XM(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`T,#8@,34Q(#0Q,R`Q-3@@.3DY.2`Y
  54. XM.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`T,#8@,34W(#0Q,B`Q
  55. XM-3$@.3DY.2`Y.3DY"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`Q,#D@
  56. XM,3<T(#$P-"`Q.#0@,3(T(#$X-"`Q,3D@,3<T(#DY.3D@.3DY.0HR(#$@,"`Q
  57. XM(#`@,"`P(#`@,"XP,#`@,2`P"@DP(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`Q
  58. XM,#0@,34T(#$R-"`Q-30@.3DY.2`Y.3DY"C(@,B`P(#(@,"`P(#`@,"`P+C`P
  59. XM,"`P(#`*"2`Q-30@,3,T(#$U-"`Q-S0@,3<T(#$W-"`Q-S0@,3,T(#$U-"`Q
  60. XM,S0@.3DY.2`Y.3DY"C(@,B`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`Q.30@
  61. XM,3,T(#$Y-"`Q-S0@,C,T(#$W-"`R,S0@,3,T(#$Y-"`Q,S0@.3DY.2`Y.3DY
  62. XM"C(@,B`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`R-30@,3,T(#(U-"`Q-S0@
  63. XM,CDT(#$W-"`R.30@,3,T(#(U-"`Q,S0@.3DY.2`Y.3DY"C(@,B`P(#(@,"`P
  64. XM(#`@,"`P+C`P,"`P(#`*"2`S,30@,3,T(#,Q-"`Q-S0@,S4T(#$W-"`S-30@
  65. XM,3,T(#,Q-"`Q,S0@.3DY.2`Y.3DY"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P
  66. XM(#`*"2`Q,S0@,34T(#$U-"`Q-30@.3DY.2`Y.3DY"C(@,2`P(#(@,"`P(#`@
  67. XM,"`P+C`P,"`P(#`*"2`Q-S0@,34T(#$Y-"`Q-30@.3DY.2`Y.3DY"C(@,2`P
  68. XM(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`R,S0@,34T(#(U-"`Q-30@.3DY.2`Y
  69. XM.3DY"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`R.30@,34T(#,Q-"`Q
  70. XM-30@.3DY.2`Y.3DY"C(@,B`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`T,30@
  71. XM,3,T(#0U-"`Q,S0@-#4T(#$Y-"`T,30@,3DT(#0Q-"`Q,S0@.3DY.2`Y.3DY
  72. XM"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`S-30@,34T(#0P-"`Q-30@
  73. XM.3DY.2`Y.3DY"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`T-30@,34T
  74. XM(#4Q-"`Q-30@.3DY.2`Y.3DY"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*
  75. XM"2`S.#0@,34T(#,X-"`Q,#D@-#(Y(#$P.2`Y.3DY(#DY.3D*,B`Q(#`@,B`P
  76. XM(#`@,"`P(#`N,#`P(#`@,`H)(#0S.2`Q,#D@-#@T(#$P.2`T.#0@,34T(#DY
  77. XM.3D@.3DY.0HR(#$@,"`R(#`@,"`P(#`@,"XP,#`@,"`P"@D@-34T(#$R-"`U
  78. XM,30@,3(T(#4Q-"`Q.#0@-34T(#$X-"`Y.3DY(#DY.3D*,B`Q(#`@,B`P(#`@
  79. XM,"`P(#`N,#`P(#`@,`H)(#4V-"`Q,C0@-C<T(#$R-"`V-S0@,3<T(#8R-"`Q
  80. XM-S0@.3DY.2`Y.3DY"C(@,B`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`V,#D@
  81. XM,38T(#8R-"`Q-C0@-C(T(#$Y.2`V,#D@,3DY(#8P.2`Q-C0@.3DY.2`Y.3DY
  82. XM"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`U-C0@,3@T(#8P.2`Q.#0@
  83. XM.3DY.2`Y.3DY"C(@,2`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`V-S0@,34T
  84. XM(#<S-"`Q-30@-S,T(#0T-"`U,S0@-#0T(#DY.3D@.3DY.0HR(#,@,"`R(#`@
  85. XM,"`P(#`@,"XP,#`@,"`P"@D@-3,T(#0Q-"`T.#0@-#$T(#0X-"`T,SD@-#0T
  86. XM(#0S.2`T-#0@-#$T(#,Y-"`T,30@,SDT(#0W-"`T-#0@-#<T(#0T-"`T-#D@
  87. XM-#@T(#0T.2`T.#0@-#<T(#4S-"`T-S0@-3,T(#0Q-"`Y.3DY(#DY.3D*,B`Q
  88. XM(#`@,B`P(#`@,"`P(#`N,#`P(#$@,`H),"`P(#$N,#`P(#0N,#`P(#@N,#`P
  89. XM"@D@,SDT(#0T-"`S,30@-#0T(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@
  90. XM,"XP,#`@,"`P"@D@,38T(#$S-"`Q-30@,30T(#DY.3D@.3DY.0HR(#$@,"`Q
  91. XM(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3<T(#$S-"`Q-30@,34T(#DY.3D@.3DY
  92. XM.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3<T(#$T-"`Q-30@,38T
  93. XM(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3<T(#$U
  94. XM-"`Q-30@,3<T(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P
  95. XM"@D@,3<T(#$V-"`Q-C0@,3<T(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@
  96. XM,"XP,#`@,"`Q"@DP(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`S-CD@,30Y(#,V
  97. XM.2`X.2`Y.3DY(#DY.3D*,B`R(#$@,2`P(#`@,"`P(#0N,#`P(#`@,`H)(#4X
  98. XM-"`Q,SD@-3@T(#(P.2`V-#0@,C`Y(#8T-"`Q,SD@-3@T(#$S.2`Y.3DY(#DY
  99. XM.3D*,B`Q(#`@,2`P(#`@,"`P(#`N,#`P(#$@,`H),"`P(#$N,#`P(#0N,#`P
  100. XM(#@N,#`P"@D@-#8T(#0P-"`T-C0@-#,T(#DY.3D@.3DY.0HR(#$@,"`Q(#`@
  101. XM,"`P(#`@,"XP,#`@,"`Q"@DP(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`T,#D@
  102. XM-#4Y(#0P.2`T.3D@,S@T(#4Q-"`Y.3DY(#DY.3D*,B`Q(#`@,2`P(#`@,"`P
  103. XM(#`N,#`P(#`@,0H),"`P(#$N,#`P(#0N,#`P(#@N,#`P"@D@-3$Y(#0U.2`U
  104. XM,3D@-#DY(#4T-"`U,30@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P
  105. XM,"`P(#$*"3`@,"`Q+C`P,"`T+C`P,"`X+C`P,`H)(#0S-"`Q.3D@-#,T(#(U
  106. XM-"`Y.3DY(#DY.3D*-"`Q(#`@,38@,"`P(#`@,"XP,#`@,2`Q-R`Q.#4@,S<Y
  107. XM(#0T($5X<&5R:6UE;G1A;"!!<'!A<F%T=7,!"C0@,2`P(#$R(#`@,"`P(#`N
  108. XM,#`P(#$@,3(@,34R(#8S-"`T-C0@2'5M:61I='D@86YD($\@(&-O;F-E;G1R
  109. XM871I;VX!"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@,3(@,C@@,3$T(#$R-"!0
  110. XM=6UP`0HT(#(@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@-#@@-CD@,34W(%)O;VT@
  111. XM06ER`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@,S@@,38T(#$Y-"!087)T
  112. XM:6-L90$*-"`Q(#`@,3(@,"`P(#`@,"XP,#`@,2`Y(#0P(#$V-"`R,#D@4')E
  113. XM9FEL=&5R`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$R(#0S(#$V-"`R,C0@
  114. XM*&-O87)S92D!"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@.2`T."`R,30@,3(T
  115. XM(%-I;&EC82!'96P!"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@.2`T,2`R,30@
  116. XM,3DT(%)E;6]V90$*-"`Q(#`@,3(@,"`P(#`@,"XP,#`@,2`Y(#(T(#(Q-"`R
  117. XM,#D@2"`@3P$*-"`Q(#`@,3`@,"`P(#`@,"XP,#`@,2`W(#4@,C$T(#(Q-"`R
  118. XM`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@,S(@,C<T(#$R-"!0=7)A9FEL
  119. XM`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@-#$@,C<T(#$Y-"!296UO=F4!
  120. XM"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@.2`T-R`R-S0@,C`Y($Y/("`K4T\@
  121. XM`0HT(#$@,"`Q,"`P(#`@,"`P+C`P,"`Q(#<@-2`R-CD@,C$T(#(!"C0@,2`P
  122. XM(#$P(#`@,"`P(#`N,#`P(#$@-R`U(#,P,"`R,30@,@$*-"`Q(#`@,3(@,"`P
  123. XM(#`@,"XP,#`@,2`Y(#0Y(#,S-"`Q,30@06-T:79A=&5D`0HT(#$@,"`Q,B`P
  124. XM(#`@,"`P+C`P,"`Q(#D@,S8@,S,T(#$R.2!#87)B;VX!"C0@,2`P(#$R(#`@
  125. XM,"`P(#`N,#`P(#$@.2`T,2`S,S0@,3DT(%)E;6]V90$*-"`Q(#`@,3(@,"`P
  126. XM(#`@,"XP,#`@,2`Y(#4S(#,S-"`R,#D@3R`@86YD($A#`0HT(#$@,"`Q,"`P
  127. XM(#`@,"`P+C`P,"`Q(#<@-2`S,3<@,C$T(#,!"C0@,2`P(#$R(#`@,"`P(#`N
  128. XM,#`P(#$@,3(@-S,@,S8Y(#@T($1R>2P@0VQE86X@06ER`0HT(#$@,"`Q,B`P
  129. XM(#`@,"`P+C`P,"`Q(#D@,S`@-#,T(#$R.2!686QV90$*-"`Q(#`@,3(@,"`P
  130. XM(#`@,"XP,#`@,2`Q,B`S."`T,S0@.3D@0GEP87-S`0HT(#(@,"`Q,B`P(#`@
  131. XM,"`P+C`P,"`Q(#D@,S`@-#`Y(#$W-"!686QV90$*-"`Q(#`@,3(@,"`P(#`@
  132. XM,"XP,#`@,2`Y(#,P(#4U.2`Q,30@5F%L=F4!"C0@,2`P(#$R(#`@,"`P(#`N
  133. XM,#`P(#$@.2`S,"`U-3D@,3<T(%9A;'9E`0HT(#$@,"`Q,B`P(#`@,"`P+C`P
  134. XM,"`Q(#D@,SD@-C$T(#$U.2!"=6)B;&5R`0HT(#$@,"`Q,B`P(#`@,"`P+C`P
  135. XM,"`Q(#$R(#$Q-2`V,S0@-#,Y($%I<B!3=')E86T@=VET:"!P<F]P97(!"C0@
  136. XM,2`P(#$P(#`@,"`P(#`N,#`P(#$@-R`U(#8T,"`T-CD@,P$*-"`Q(#`@,3(@
  137. XM,"`P(#`@,"XP,#`@,2`Y(#0V(#0V-"`S.3D@5&5S="!3;&]T`0HT(#(@,"`Q
  138. XM,B`P(#`@,"`P+C`P,"`Q(#D@-#,@,S`T(#0T.2!4;R!(;V]D`0HT(#(@,"`Q
  139. XM,B`P(#`@,"`P+C`P,"`Q(#$R(#<P(#,W.2`U,3D@4V%M<&QI;F<@4&]R=`$*
  140. XM-"`R(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,2`U,2`S-SD@-3,Y($\@("P@5"P@
  141. XM4D@!"C0@,B`P(#$P(#`@,"`P(#`N,#`P(#$@-R`U(#,S-R`U-#4@,P$*-"`P
  142. XM(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`W,"`U-#D@-3$Y(%-A;7!L:6YG(%!O
  143. XM<G0!"C0@,"`P(#$R(#`@,"`P(#`N,#`P(#$@,3$@-3$@-30Y(#4S.2!/("`L
  144. XM(%0L(%)(`0HT(#`@,"`Q,"`P(#`@,"`P+C`P,"`Q(#<@-2`U-3@@-30U(#,!
  145. XM"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@.2`X-R`T,S0@,C<T($]Z;VYE($=E
  146. XM;F5R871O<@$*-"`Q(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`Y-"`T,S0@,CDT
  147. X5("A5;'1R879I;VQE="!,86UP*0$*
  148. X`
  149. Xend
  150. END_OF_FILE
  151. if test 6943 -ne `wc -c <'Examples/experiment.fig.uu'`; then
  152.     echo shar: \"'Examples/experiment.fig.uu'\" unpacked with wrong size!
  153. fi
  154. # end of 'Examples/experiment.fig.uu'
  155. fi
  156. if test -f 'Examples/housecheck.fig.uu' -a "${1}" != "-c" ; then 
  157.   echo shar: Will not clobber existing file \"'Examples/housecheck.fig.uu'\"
  158. else
  159. echo shar: Extracting \"'Examples/housecheck.fig.uu'\" \(6649 characters\)
  160. sed "s/^X//" >'Examples/housecheck.fig.uu' <<'END_OF_FILE'
  161. Xbegin 664 housecheck.fig
  162. XM(T9)1R`R+C`*.#`@,@HR(#0@,"`S(#`@,"`P(#`@,"XP,#`@,38@,"`P"@D@
  163. XM,SD@,30@,SD@.#0@-C`Y(#@T(#8P.2`Q-"`S.2`Q-"`Y.3DY(#DY.3D*,B`T
  164. XM(#`@,R`P(#`@,"`P(#`N,#`P(#$V(#`@,`H)(#,Y(#DT(#,Y(#<R-"`V,#D@
  165. XM-S(T(#8P.2`Y-"`S.2`Y-"`Y.3DY(#DY.3D*,B`R(#`@,2`P(#`@,"`P(#`N
  166. XM,#`P(#`@,`H)(#DY(#,V-"`Q,#D@,S8T(#$P.2`S-S0@.3D@,S<T(#DY(#,V
  167. XM-"`Y.3DY(#DY.3D*,B`R(#`@,B`P(#`@,"`P(#`N,#`P(#`@,`H)(#<T(#,S
  168. XM.2`W-"`S-30@.#D@,S4T(#@Y(#,S.2`W-"`S,SD@.3DY.2`Y.3DY"C(@,2`P
  169. XM(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`T.#0@,SD@-3<T(#,Y(#DY.3D@.3DY
  170. XM.0HR(#(@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@.3D@,38Y(#$P.2`Q-CD@
  171. XM,3`Y(#$W.2`Y.2`Q-SD@.3D@,38Y(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P
  172. XM(#`@,"XP,#`@,"`P"@D@,C(Y(#<T(#4W-"`W-"`Y.3DY(#DY.3D*,B`Q(#`@
  173. XM,2`P(#`@,"`P(#`N,#`P(#`@,`H)(#$T-"`S.2`T,CD@,SD@.3DY.2`Y.3DY
  174. XM"C(@,B`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Y.2`Q,SD@,3`Y(#$S.2`Q
  175. XM,#D@,30Y(#DY(#$T.2`Y.2`Q,SD@.3DY.2`Y.3DY"C(@,B`P(#(@,"`P(#`@
  176. XM,"`P+C`P,"`P(#`*"2`W-"`Q,30@-S0@,3(Y(#@Y(#$R.2`X.2`Q,30@-S0@
  177. XM,3$T(#DY.3D@.3DY.0HR(#(@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@.3D@
  178. XM,34T(#$P.2`Q-30@,3`Y(#$V-"`Y.2`Q-C0@.3D@,34T(#DY.3D@.3DY.0HR
  179. XM(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@-3,T(#$R.2`U.#D@,3(Y(#DY
  180. XM.3D@.3DY.0HR(#(@,"`R(#`@,"`P(#`@,"XP,#`@,"`P"@D@,S`T(#$Q-"`S
  181. XM,#0@,3(Y(#,Q.2`Q,CD@,S$Y(#$Q-"`S,#0@,3$T(#DY.3D@.3DY.0HR(#(@
  182. XM,"`R(#`@,"`P(#`@,"XP,#`@,"`P"@D@-S0@,3DT(#<T(#(P.2`X.2`R,#D@
  183. XM.#D@,3DT(#<T(#$Y-"`Y.3DY(#DY.3D*,B`R(#`@,2`P(#`@,"`P(#`N,#`P
  184. XM(#`@,`H)(#DY(#(T.2`Q,#D@,C0Y(#$P.2`R-3D@.3D@,C4Y(#DY(#(T.2`Y
  185. XM.3DY(#DY.3D*,B`R(#`@,2`P(#`@,"`P(#`N,#`P(#`@,`H)(#DY(#(S-"`Q
  186. XM,#D@,C,T(#$P.2`R-#0@.3D@,C0T(#DY(#(S-"`Y.3DY(#DY.3D*,B`R(#`@
  187. XM,B`P(#`@,"`P(#`N,#`P(#`@,`H)(#<T(#(W-"`W-"`R.#D@.#D@,C@Y(#@Y
  188. XM(#(W-"`W-"`R-S0@.3DY.2`Y.3DY"C(@,B`P(#$@,"`P(#`@,"`P+C`P,"`P
  189. XM(#`*"2`Y.2`R.3D@,3`Y(#(Y.2`Q,#D@,S`Y(#DY(#,P.2`Y.2`R.3D@.3DY
  190. XM.2`Y.3DY"C(@,B`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Y.2`S,30@,3`Y
  191. XM(#,Q-"`Q,#D@,S(T(#DY(#,R-"`Y.2`S,30@.3DY.2`Y.3DY"C(@,B`P(#(@
  192. XM,"`P(#`@,"`P+C`P,"`P(#`*"2`W-"`V-SD@-S0@-CDT(#@Y(#8Y-"`X.2`V
  193. XM-SD@-S0@-C<Y(#DY.3D@.3DY.0HR(#(@,"`R(#`@,"`P(#`@,"XP,#`@,"`P
  194. XM"@D@-S0@,S@Y(#<T(#0P-"`X.2`T,#0@.#D@,S@Y(#<T(#,X.2`Y.3DY(#DY
  195. XM.3D*,B`R(#`@,2`P(#`@,"`P(#`N,#`P(#`@,`H)(#DY(#0Q-"`Q,#D@-#$T
  196. XM(#$P.2`T,C0@.3D@-#(T(#DY(#0Q-"`Y.3DY(#DY.3D*,B`R(#`@,2`P(#`@
  197. XM,"`P(#`N,#`P(#`@,`H)(#DY(#8R-"`Q,#D@-C(T(#$P.2`V,S0@.3D@-C,T
  198. XM(#DY(#8R-"`Y.3DY(#DY.3D*,B`R(#`@,B`P(#`@,"`P(#`N,#`P(#`@,`H)
  199. XM(#<T(#4Y.2`W-"`V,30@.#D@-C$T(#@Y(#4Y.2`W-"`U.3D@.3DY.2`Y.3DY
  200. XM"C(@,B`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Y.2`V,SD@,3`Y(#8S.2`Q
  201. XM,#D@-C0Y(#DY(#8T.2`Y.2`V,SD@.3DY.2`Y.3DY"C(@,B`P(#$@,"`P(#`@
  202. XM,"`P+C`P,"`P(#`*"2`Y.2`V-30@,3`Y(#8U-"`Q,#D@-C8T(#DY(#8V-"`Y
  203. XM.2`V-30@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`S
  204. XM-S0@-C8T(#0W-"`V-C0@.3DY.2`Y.3DY"C(@,B`P(#$@,"`P(#`@,"`P+C`P
  205. XM,"`P(#`*"2`Y.2`U,#D@,3`Y(#4P.2`Q,#D@-3$Y(#DY(#4Q.2`Y.2`U,#D@
  206. XM.3DY.2`Y.3DY"C(@,B`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Y.2`T.30@
  207. XM,3`Y(#0Y-"`Q,#D@-3`T(#DY(#4P-"`Y.2`T.30@.3DY.2`Y.3DY"C(@,B`P
  208. XM(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Y.2`T-SD@,3`Y(#0W.2`Q,#D@-#@Y
  209. XM(#DY(#0X.2`Y.2`T-SD@.3DY.2`Y.3DY"C(@,B`P(#$@,"`P(#`@,"`P+C`P
  210. XM,"`P(#`*"2`Y.2`T-C0@,3`Y(#0V-"`Q,#D@-#<T(#DY(#0W-"`Y.2`T-C0@
  211. XM.3DY.2`Y.3DY"C(@,B`P(#(@,"`P(#`@,"`P+C`P,"`P(#`*"2`W-"`T,SD@
  212. XM-S0@-#4T(#@Y(#0U-"`X.2`T,SD@-S0@-#,Y(#DY.3D@.3DY.0HR(#(@,"`R
  213. XM(#`@,"`P(#`@,"XP,#`@,"`P"@D@-S0@-3,T(#<T(#4T.2`X.2`U-#D@.#D@
  214. XM-3,T(#<T(#4S-"`Y.3DY(#DY.3D*,B`R(#`@,2`P(#`@,"`P(#`N,#`P(#`@
  215. XM,`H)(#DY(#4U.2`Q,#D@-34Y(#$P.2`U-CD@.3D@-38Y(#DY(#4U.2`Y.3DY
  216. XM(#DY.3D*,B`R(#`@,2`P(#`@,"`P(#`N,#`P(#`@,`H)(#DY(#4W-"`Q,#D@
  217. XM-3<T(#$P.2`U.#0@.3D@-3@T(#DY(#4W-"`Y.3DY(#DY.3D*,B`R(#`@,2`P
  218. XM(#`@,"`P(#`N,#`P(#`@,`H)(#,S.2`R-#D@,S0Y(#(T.2`S-#D@,C4Y(#,S
  219. XM.2`R-3D@,S,Y(#(T.2`Y.3DY(#DY.3D*,B`R(#`@,2`P(#`@,"`P(#`N,#`P
  220. XM(#`@,`H)(#,S.2`R,S0@,S0Y(#(S-"`S-#D@,C0T(#,S.2`R-#0@,S,Y(#(S
  221. XM-"`Y.3DY(#DY.3D*-"`P(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`Q-S`@,3$Y
  222. XM(#(T-"!3:7IE("`M("!,87)G92`@+R`@365D:75M("`O("!3;6%L;`$*-"`P
  223. XM(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`Q,C@@,3$Y(#,W-"!,87)G92`@+R`@
  224. XM365D:75M("`O("!3;6%L;`$*-"`P(#`@,30@,"`P(#`@,"XP,#`@,2`Q,R`Q
  225. XM-3$@.3D@,S4T($1I;FEN9R!2;V]M("`M("!997,@("\@($YO`0HT(#`@,"`Q
  226. XM-"`P(#`@,"`P+C`P,"`Q(#$P(#<P(#DY(#(R.2!"961R;V]M(",Q`0HT(#`@
  227. XM,"`Q-"`P(#`@,"`P+C`P,"`Q(#$P(#,T(#0S.2`S.2!0<FEC93H!"C0@,"`P
  228. XM(#$R(#`@,"`P(#`N,#`P(#$@.2`V-"`Q,3D@,3<Y($QI;F5N($-L;W-E=`$*
  229. XM-"`P(#`@,30@,"`P(#`@,"XP,#`@,2`Q,R`Q,S@@-CD@-S0@1&ES=&EN9W5I
  230. XM<VAI;F<@1F5A='5R97,Z`0HT(#`@,"`Q-"`P(#`@,"`P+C`P,"`Q(#$P(#4S
  231. XM(#8Y(#,Y($%D9')E<W,Z`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$R(#$Q
  232. XM-"`Q,3D@,30Y(%!L=6UB:6YG("T@($YE=R`O($]L9`$*-"`P(#`@,30@,"`P
  233. XM(#`@,"XP,#`@,2`Q,"`Q,C`@.3D@,3(Y($)A=&AR;V]M<SH@("`Q("`Q*R`@
  234. XM(#(!"C0@,"`P(#$R(#`@,"`P(#`N,#`P(#$@.2`W,B`Q,3D@,38T(%1U8B`@
  235. XM+R`@4VAO=V5R`0HT(#`@,"`Q-"`P(#`@,"`P+C`P,"`Q(#$T(#$W,R`S,CD@
  236. XM,3(Y(%1E<FUI=&4@4F5P;W)T.B`@(%EE<R`@+R!.;R`@("`D`0HT(#`@,"`Q
  237. XM-"`P(#`@,"`P+C`P,"`Q(#$P(#$Q.2`Y.2`R,#D@0F5D<F]O;7,Z("`@,B`@
  238. XM(#(K("`@,P$*-"`P(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`Q.#<@,3$Y(#(U
  239. XM.2!#;&]S971S("`M("!,87)G92`@+R`@365D:75M("`O("!3;6%L;`$*-"`P
  240. XM(#`@,30@,"`P(#`@,"XP,#`@,2`Q,R`W,R`Q,#`@,C@Y($QI=FEN9R!2;V]M
  241. XM`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$R(#$R."`Q,3D@,S`Y($QA<F=E
  242. XM("`O("!-961I=6T@("\@(%-M86QL`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q
  243. XM(#$R(#0W(#$Q.2`S,C8@1FER97!L86-E`0HT(#`@,"`Q-"`P(#`@,"`P+C`P
  244. XM,"`Q(#$S(#$Q,2`Y.2`V.30@3&%U;F1R>2`@665S("`O("!.;P$*-"`P(#`@
  245. XM,30@,"`P(#`@,"XP,#`@,2`Q,R`Y,2`Y.2`T,#0@2&5A=&EN9R!3>7-T96T!
  246. XM"C0@,"`P(#$R(#`@,"`P(#`N,#`P(#$@.2`Q,#8@,3$Y(#0R-"!&;&]O<B`O
  247. XM(%=A;&P@+R!#96YT<F%L`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@.3$@
  248. XM,3$Y(#8S-"!2;V]F("T@($YE=R`O($]L9`$*-"`P(#`@,30@,"`P(#`@,"XP
  249. XM,#`@,2`Q,"`S,R`Y.2`V,30@3W1H97(!"C0@,"`P(#$R(#`@,"`P(#`N,#`P
  250. XM(#$@,3(@,3@V(#$Q.2`V-#D@5VER:6YG("`M("!.97<@+R!/;&0@("`@,3$P
  251. XM5B`@+R`@,C(P5@$*-"`P(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`R,S4@,3$Y
  252. XM(#8V-"!7:6YD;W=S("`M("!#87-E;65N="`O($1O=6)L92!(=6YG("\@3W1H
  253. XM97(Z`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@,3$W(#$Q.2`U,3D@4W1O
  254. XM=F4@("T@($=A<R`O($5L96-T<FEC`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q
  255. XM(#$R(#$Y-2`Q,3D@-3`T($-A8FEN971S("T@($UA;GD@+R!&97<@("`@($YE
  256. XM=R`@+R`@3VQD`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$R(#,S(#$Q.2`T
  257. XM.#D@4&%N=')Y`0HT(#`@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$R(#(R."`Q,3D@
  258. XM-#<T(%-I;FL@+2`@3&%R9V4@+R!3;6%L;"`@("`@4&]R8V5L86EN("`O("!3
  259. XM=&%I;FQE<W,!"C0@,"`P(#$T(#`@,"`P(#`N,#`P(#$@,3`@-#4@.3D@-#4T
  260. XM($MI=&-H96X!"C0@,"`P(#$T(#`@,"`P(#`N,#`P(#$@,3`@-#0@.3D@-30Y
  261. XM($]U='-I9&4!"C0@,"`P(#$R(#`@,"`P(#`N,#`P(#$@,3(@,30U(#$Q.2`U
  262. XM-CD@1V%R86=E("`M("!/;F4@8V%R("\@5'=O(&-A<@$*-"`P(#`@,3(@,"`P
  263. XM(#`@,"XP,#`@,2`Q,B`Q-#<@,3$Y(#4X-"!987)D("!,87)G92`O($UE9&EU
  264. XM;2`O(%-M86QL`0HT(#`@,"`Q-"`P(#`@,"`P+C`P,"`Q(#$P(#<P(#,S.2`R
  265. XM,CD@0F5D<F]O;2`C,@$*-"`P(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`Q-S`@
  266. XM,S4Y(#(T-"!3:7IE("`M("!,87)G92`@+R`@365D:75M("`O("!3;6%L;`$*
  267. XM-"`P(#`@,3(@,"`P(#`@,"XP,#`@,2`Q,B`Q.#<@,S4Y(#(U.2!#;&]S971S
  268. XA("`M("!,87)G92`@+R`@365D:75M("`O("!3;6%L;`$*
  269. X`
  270. Xend
  271. END_OF_FILE
  272. if test 6649 -ne `wc -c <'Examples/housecheck.fig.uu'`; then
  273.     echo shar: \"'Examples/housecheck.fig.uu'\" unpacked with wrong size!
  274. fi
  275. # end of 'Examples/housecheck.fig.uu'
  276. fi
  277. if test -f 'Examples/orifices.fig.uu' -a "${1}" != "-c" ; then 
  278.   echo shar: Will not clobber existing file \"'Examples/orifices.fig.uu'\"
  279. else
  280. echo shar: Extracting \"'Examples/orifices.fig.uu'\" \(6759 characters\)
  281. sed "s/^X//" >'Examples/orifices.fig.uu' <<'END_OF_FILE'
  282. Xbegin 664 orifices.fig
  283. XM(T9)1R`R+C`*.#`@,@HU(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,2`Q(#$@,3DQ
  284. XM+C<P,"`T-3DN-3`P(#$V-R`T-#,@,38R(#0V,"`Q-C<@-#<V"@DP(#`@,2XP
  285. XM,#`@-"XP,#`@."XP,#`*"3`@,"`Q+C`P,"`T+C`P,"`X+C`P,`HU(#$@,B`Q
  286. XM(#`@,"`P(#`@,RXR,#`@,"`P(#`@,38X+C,R-B`Q.#DN.3<X(#$V.2`Q-C0@
  287. XM,3@X(#$W,R`Q.30@,3DT"C4@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`@,"`Q
  288. XM-C4N,S0P(#$Y,BXV-C`@,34Y(#$T.2`Q.3@@,38S(#(P.2`Q.3D*-2`Q(#`@
  289. XM,2`P(#`@,"`P(#`N,#`P(#`@,"`P(#$V,2XV,#`@,3DV+C0P,"`Q-3D@,3<Y
  290. XM(#$W-2`Q.#4@,3<Y(#$Y.0HU(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,2`Q(#$@
  291. XM,30Y+C8Q,2`S-#0N.30T(#$V,R`S-3D@,38Y(#,T-"`Q-C(@,S,P"@DP(#`@
  292. XM,2XP,#`@-"XP,#`@."XP,#`*"3`@,"`Q+C`P,"`T+C`P,"`X+C`P,`HU(#$@
  293. XM,"`Q(#`@,"`P(#`@,"XP,#`@,"`Q(#$@,3<P+C@U.2`Y-BXR,#0@,34S(#$P
  294. XM.2`Q-#D@.30@,34U(#@Q"@DP(#`@,2XP,#`@-"XP,#`@."XP,#`*"3`@,"`Q
  295. XM+C`P,"`T+C`P,"`X+C`P,`HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,2`P"@DP
  296. XM(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`Q.30@-#4Y(#(Q.2`T-3D@.3DY.2`Y
  297. XM.3DY"C(@,2`R(#$@,"`P(#`@,"`S+C(P,"`P(#`*"2`Q-S0@-#0T(#$W-"`T
  298. XM-S0@.3DY.2`Y.3DY"C(@,2`R(#$@,"`P(#`@,"`S+C(P,"`P(#`*"2`Q-#D@
  299. XM-#(Y(#$T.2`T.#D@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P
  300. XM(#`*"2`Q,3D@-#@Y(#$T.2`T.#D@,3<T(#0W-"`R,#D@-#<T(#DY.3D@.3DY
  301. XM.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3$Y(#0R.2`Q-#D@-#(Y
  302. XM(#$W-"`T-#0@,C`Y(#0T-"`Y.3DY(#DY.3D*,B`Q(#`@,2`P(#`@,"`P(#`N
  303. XM,#`P(#$@,0H),"`P(#$N,#`P(#0N,#`P(#@N,#`P"@DP(#`@,2XP,#`@-"XP
  304. XM,#`@."XP,#`*"2`R,#0@,S$V(#(P-"`S-S$@.3DY.2`Y.3DY"C(@,2`P(#$@
  305. XM,"`P(#`@,"`P+C`P,"`Q(#$*"3`@,"`Q+C`P,"`T+C`P,"`X+C`P,`H),"`P
  306. XM(#$N,#`P(#0N,#`P(#@N,#`P"@D@,3,T(#,S-B`Q,S0@,S4Q(#DY.3D@.3DY
  307. XM.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3$Y(#,U-"`Q-30@,S4T
  308. XM(#$W.2`S-S0@,C(Y(#,W-"`Y.3DY(#DY.3D*,B`Q(#`@,2`P(#`@,"`P(#`N
  309. XM,#`P(#`@,`H)(#$Q.2`S,S0@,34T(#,S-"`Q-SD@,S$T(#(R.2`S,30@.3DY
  310. XM.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`Q(#$*"3`@,"`Q+C`P,"`T
  311. XM+C`P,"`X+C`P,`H),"`P(#$N,#`P(#0N,#`P(#@N,#`P"@D@,3@Q(#(S.2`R
  312. XM,#8@,C,Y(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@
  313. XM,C`Y(#(R.2`R,#D@,C0Y(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP
  314. XM,#`@,"`P"@D@,3<Y(#(R.2`Q-SD@,C0Y(#DY.3D@.3DY.0HR(#$@,"`Q(#`@
  315. XM,"`P(#`@,"XP,#`@,"`Q"@DP(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`Q-SD@
  316. XM,3<P(#$V,R`Q.3@@.3DY.2`Y.3DY"C(@,2`R(#$@,"`P(#`@,"`S+C(P,"`P
  317. XM(#`*"2`Q.30@,3DT(#$Y-"`R,3D@.3DY.2`Y.3DY"C(@,2`R(#$@,"`P(#`@
  318. XM,"`S+C(P,"`P(#`*"2`Q,SD@,38T(#$V.2`Q-C0@.3DY.2`Y.3DY"C(@,2`P
  319. XM(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`R,#D@,3DY(#(P.2`R,3D@.3DY.2`Y
  320. XM.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Q-SD@,3DY(#$W.2`R
  321. XM,3D@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P(#`*"2`Q,SD@
  322. XM,3<Y(#$U.2`Q-SD@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`P
  323. XM(#`*"2`Q,SD@,30Y(#$U.2`Q-#D@.3DY.2`Y.3DY"C(@,2`R(#$@,"`P(#`@
  324. XM,"`S+C(P,"`P(#`*"2`Q-SD@,S$T(#$W.2`S-S0@.3DY.2`Y.3DY"C(@,2`R
  325. XM(#$@,"`P(#`@,"`S+C(P,"`P(#`*"2`Q-30@,S,T(#$U-"`S-30@.3DY.2`Y
  326. XM.3DY"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`Q(#`*"3`@,"`Q+C`P,"`T+C`P
  327. XM,"`X+C`P,`H)(#@Y(#,T-"`Q,30@,S0T(#DY.3D@.3DY.0HR(#$@,"`Q(#`@
  328. XM,"`P(#`@,"XP,#`@,2`P"@DP(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`Q-SD@
  329. XM.30@,C`T(#DT(#DY.3D@.3DY.0HR(#$@,B`Q(#`@,"`P(#`@,RXR,#`@,"`P
  330. XM"@D@,38T(#@T(#$V-"`Q,#0@.3DY.2`Y.3DY"C(@,2`R(#$@,"`P(#`@,"`S
  331. XM+C(P,"`P(#`*"2`Q,SD@-C0@,3,Y(#$R-"`Y.3DY(#DY.3D*,B`Q(#`@,2`P
  332. XM(#`@,"`P(#`N,#`P(#`@,`H)(#$Y.2`X-"`Q-C0@.#0@,3,Y(#8T(#$R.2`V
  333. XM-"`Q,CD@,3(T(#$S.2`Q,C0@,38T(#$P-"`Q.3D@,3`T(#DY.3D@.3DY.0HR
  334. XM(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`Q"@DP(#`@,2XP,#`@-"XP,#`@."XP
  335. XM,#`*"2`Q.#0@-30T(#$U-"`U-#0@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@
  336. XM,"`P+C`P,"`P(#$*"3`@,"`Q+C`P,"`T+C`P,"`X+C`P,`H)(#$S.2`U-30@
  337. XM,3(T(#4U-"`Y.3DY(#DY.3D*,B`Q(#`@,2`P(#`@,"`P(#`N,#`P(#`@,0H)
  338. XM,"`P(#$N,#`P(#0N,#`P(#@N,#`P"@D@,38Y(#4W-"`Q-CD@-3@Y(#DY.3D@
  339. XM.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,38Y(#4U-"`Q-CD@
  340. XM-3DT(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,2`P"@DP(#`@
  341. XM,2XP,#`@-"XP,#`@."XP,#`*"2`Q,3D@-34T(#(Q.2`U-30@.3DY.2`Y.3DY
  342. XM"C(@,2`P(#$@,"`P(#`@,"`P+C`P,"`Q(#`*"3`@,"`Q+C`P,"`T+C`P,"`X
  343. XM+C`P,`H)(#,U-"`Y-"`T-30@.30@.3DY.2`Y.3DY"C(@,2`P(#$@,"`P(#`@
  344. XM,"`P+C`P,"`Q(#`*"3`@,"`Q+C`P,"`T+C`P,"`X+C`P,`H)(#0P-"`Y-"`T
  345. XM,#0@,3,T(#DY.3D@.3DY.0HR(#$@,"`Q(#`@,"`P(#`@,"XP,#`@,"`Q"@DP
  346. XM(#`@,2XP,#`@-"XP,#`@."XP,#`*"2`S-S0@.30@,S4Y(#DT(#DY.3D@.3DY
  347. XM.0HS(#(@,"`Q(#`@,"`P(#`@,"XP,#`@,2`P"@DP(#`@,2XP,#`@-"XP,#`@
  348. XM."XP,#`*"2`S-S0@.3D@,S@V(#DY(#,Y-"`Q,#0@,SDY(#$Q,2`S.3D@,3(T
  349. XM(#DY.3D@.3DY.0H)(#`N,#`P(#`N,#`P(#,X,"XX-#4@.3@N,S@R(#,X,RXX
  350. XM-#4@.3@N,S@R(#,X."XR-3D@.3DN-C0X(#,Y,BXS-C(@,3`R+C0V,"`S.34N
  351. XM-#DT(#$P-2XT,#0@,SDX+C,S,R`Q,#@N.3$Y(#,Y.2XW-38@,3$S+C,U.2`S
  352. XM.3DN-S4V(#$Q-BXV,#D@,"XP,#`@,"XP,#`*,R`R(#`@,2`P(#`@,"`P(#`N
  353. XM,#`P(#`@,`H)(#$S.2`Q-C0@,3,T(#$V.2`Q,SD@,3<Y(#DY.3D@.3DY.0H)
  354. XM(#`N,#`P(#`N,#`P(#$S-2XU,S(@,38V+C`Q-"`Q,S0N,C@R(#$V-RXR-C0@
  355. XM,3,S+C4U-2`Q-S$N-S0U(#$S-"XX,#4@,3<T+C(T-2`P+C`P,"`P+C`P,`HS
  356. XM(#(@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3,Y(#$T.2`Q,S0@,34T(#$T
  357. XM-"`Q-CD@,3,Y(#$W.2`Y.3DY(#DY.3D*"2`P+C`P,"`P+C`P,"`Q,S4N-#,T
  358. XM(#$U,"XX.3`@,3,T+C$X-"`Q-3(N,30P(#$S,RXS-S0@,38P+C,R,R`Q-#,N
  359. XM-C8Q(#$V,RXU-C0@,30T+C$U-R`Q-S$N-3(X(#$T,BXY,#<@,3<T+C`R."`P
  360. XM+C`P,"`P+C`P,`HS(#(@,"`Q(#`@,"`P(#`@,"XP,#`@,"`P"@D@,3DT(#(Q
  361. XM.2`Q.3D@,C(T(#(P.2`R,3D@.3DY.2`Y.3DY"@D@,"XP,#`@,"XP,#`@,3DV
  362. XM+C`Q-"`R,C(N-#8X(#$Y-RXR-C0@,C(S+C<Q."`R,#$N-S0U(#(R-"XT-#4@
  363. XM,C`T+C(T-2`R,C,N,3DU(#`N,#`P(#`N,#`P"C,@,B`P(#$@,"`P(#`@,"`P
  364. XM+C`P,"`P(#`*"2`Q-SD@,C$Y(#$X.2`R,C0@,3DY(#(Q-"`R,#D@,C$Y(#DY
  365. XM.3D@.3DY.0H)(#`N,#`P(#`N,#`P(#$X,RXW-34@,C(S+C$Y-2`Q.#8N,C4U
  366. XM(#(R-"XT-#4@,3DS+C8R.2`R,C,N,C0Y(#$Y-"XS-S$@,C$T+C<U,2`R,#$N
  367. XM-S0U(#(Q,RXU-34@,C`T+C(T-2`R,30N.#`U(#`N,#`P(#`N,#`P"C0@,2`S
  368. XM,B`Q,B`P(#`@,"`P+C`P,"`Q(#D@-R`Q-34@-#8U('$!"C0@,2`P(#$R(#`@
  369. XM,"`P(#`N,#`P(#$@-B`V(#(R.2`T-C0@=@$*-"`Q(#`@,3(@,"`P(#`@,"XP
  370. XM,#`@,2`V(#8@-SD@,S0Y('8!"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@-B`V
  371. XM(#(Q-"`Y.2!V`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@.2`Q.30@,C4Y
  372. XM($0!"C0@,2`P(#$R(#`@,"`P(#`N,#`P(#$@-B`T(#$U-"`R,#<@<@$*-"`Q
  373. XM(#,R(#$R(#`@,"`P(#`N,#`P(#$@.2`W(#$W,R`S-#@@<0$*-"`Q(#`@,3`@
  374. XM,"`P(#`@,"XP,#`@,2`W(#4@,C$R(#@R(#`!"C0@,2`P(#$P(#`@,"`P(#`N
  375. XM,#`P(#$@-R`U(#$R-R`V,R`Q`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@
  376. XM.2`R,#,@-SD@00$*-"`Q(#`@,3(@,"`P(#`@,"XP,#`@,2`Y(#D@,3(P(#4Y
  377. XM($$!"C0@,2`S,B`Q,B`P(#`@,"`P+C`P,"`Q(#D@-R`Q-#4@.3@@<0$*-"`Q
  378. XM(#`@,3`@,"`P(#`@,"XP,#`@,2`W(#4@,3,V(#,R-B`Q`0HT(#$@,"`Q,B`P
  379. XM(#`@,"`P+C`P,"`Q(#D@.2`Q,CD@,S(P($$!"C0@,2`P(#$R(#`@,"`P(#`N
  380. XM,#`P(#$@.2`Y(#(Q-"`S-#D@00$*-"`Q(#`@,3`@,"`P(#`@,"XP,#`@,2`W
  381. XM(#4@,C(S(#,U-"`R`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#D@.2`Q,CD@
  382. XM-#<U($$!"C0@,2`P(#$P(#`@,"`P(#`N,#`P(#$@-R`U(#$S-B`T.#$@,0$*
  383. XM-"`Q(#`@,3`@,"`P(#`@,"XP,#`@,2`W(#4@,3DS(#0W,B`R`0HT(#$@,"`Q
  384. XM,B`P(#`@,"`P+C`P,"`Q(#D@.2`Q.#0@-#8W($$!"C0@,2`P(#$P(#`@,"`P
  385. XM(#`N,#`P(#$@-R`U(#(R,B`U-#D@,P$*-"`Q(#`@,3`@,"`P(#`@,"XP,#`@
  386. XM,2`W(#4@,3(V(#4T.2`Q`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$Q(#D@
  387. XM,C$T(#4T-"!1`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$Q(#D@,3$Y(#4T
  388. XM-"!1`0HT(#$@,"`Q,B`P(#`@,"`P+C`P,"`Q(#$Q(#D@,S4T(#@T(%$!"C0@
  389. XM,2`P(#$P(#`@,"`P(#`N,#`P(#$@-R`U(#,V,2`X.2`Q`0HT(#$@,"`Q,B`P
  390. XM(#`@,"`P+C`P,"`Q(#$Q(#D@-#$Y(#$S-"!1`0HT(#$@,"`Q,"`P(#`@,"`P
  391. X6+C`P,"`Q(#<@-2`T,C<@,3,Y(#,!"C$S
  392. X`
  393. Xend
  394. END_OF_FILE
  395. if test 6759 -ne `wc -c <'Examples/orifices.fig.uu'`; then
  396.     echo shar: \"'Examples/orifices.fig.uu'\" unpacked with wrong size!
  397. fi
  398. # end of 'Examples/orifices.fig.uu'
  399. fi
  400. if test -f 'd_line.c' -a "${1}" != "-c" ; then 
  401.   echo shar: Will not clobber existing file \"'d_line.c'\"
  402. else
  403. echo shar: Extracting \"'d_line.c'\" \(6682 characters\)
  404. sed "s/^X//" >'d_line.c' <<'END_OF_FILE'
  405. X/*
  406. X * FIG : Facility for Interactive Generation of figures
  407. X * Copyright (c) 1985 by Supoj Sutanthavibul
  408. X *
  409. X * "Permission to use, copy, modify, distribute, and sell this software and its
  410. X * documentation for any purpose is hereby granted without fee, provided that
  411. X * the above copyright notice appear in all copies and that both that
  412. X * copyright notice and this permission notice appear in supporting
  413. X * documentation, and that the name of M.I.T. not be used in advertising or
  414. X * publicity pertaining to distribution of the software without specific,
  415. X * written prior permission.  M.I.T. makes no representations about the
  416. X * suitability of this software for any purpose.  It is provided "as is"
  417. X * without express or implied warranty."
  418. X *
  419. X */
  420. X
  421. X#include "fig.h"
  422. X#include "resources.h"
  423. X#include "mode.h"
  424. X#include "object.h"
  425. X#include "paintop.h"
  426. X#include "u_create.h"
  427. X#include "u_elastic.h"
  428. X#include "u_list.h"
  429. X#include "w_canvas.h"
  430. X#include "w_mousefun.h"
  431. X
  432. Xextern int    latex_endpoint();
  433. X
  434. X/*************************** locally global variables *********************/
  435. X
  436. Xstatic int    init_line_drawing();
  437. X
  438. Xint        create_lineobject();
  439. Xint        create_latexobject();
  440. Xint        get_direction();
  441. Xint        get_intermediatepoint();
  442. Xint        get_latexpoint();
  443. X
  444. X/**********************     polyline and polygon section  **********************/
  445. X
  446. Xline_drawing_selected()
  447. X{
  448. X    canvas_kbd_proc = null_proc;
  449. X    canvas_locmove_proc = null_proc;
  450. X    canvas_leftbut_proc = init_line_drawing;
  451. X    canvas_rightbut_proc = null_proc;
  452. X    set_cursor(arrow_cursor);
  453. X    reset_action_on();
  454. X    if (cur_mode == F_POLYGON) {
  455. X    set_mousefun("first point", "", "");
  456. X    min_num_points = 3;
  457. X    canvas_middlebut_proc = null_proc;
  458. X    } else {
  459. X    set_mousefun("first point", "single point", "");
  460. X    min_num_points = 1;
  461. X    num_point = 0;
  462. X    fix_x = fix_y = -1;
  463. X    canvas_middlebut_proc = create_lineobject;
  464. X    }
  465. X}
  466. X
  467. Xstatic
  468. Xinit_line_drawing(x, y)
  469. X    int            x, y;
  470. X{
  471. X    init_trace_drawing(x, y);
  472. X}
  473. X
  474. Xcancel_line_drawing()
  475. X{
  476. X    elastic_line();
  477. X    cur_x = fix_x;
  478. X    cur_y = fix_y;
  479. X    if (cur_point != first_point)
  480. X    elastic_moveline(first_point);    /* erase control vector */
  481. X    free_points(first_point);
  482. X    return_proc();
  483. X    draw_mousefun_canvas();
  484. X}
  485. X
  486. Xinit_trace_drawing(x, y)
  487. X    int            x, y;
  488. X{
  489. X    if ((first_point = create_point()) == NULL)
  490. X    return;
  491. X
  492. X    cur_point = first_point;
  493. X    set_action_on();
  494. X    cur_point->x = fix_x = cur_x = x;
  495. X    cur_point->y = fix_y = cur_y = y;
  496. X    cur_point->next = NULL;
  497. X    if (latexline_mode || latexarrow_mode) {
  498. X    canvas_locmove_proc = latex_line;
  499. X    canvas_leftbut_proc = get_latexpoint;
  500. X    canvas_middlebut_save = create_latexobject;
  501. X    } else if (manhattan_mode || mountain_mode) {
  502. X    canvas_locmove_proc = constrainedangle_line;
  503. X    canvas_leftbut_proc = get_direction;
  504. X    canvas_middlebut_save = create_lineobject;
  505. X    } else {
  506. X    canvas_locmove_proc = freehand_line;
  507. X    canvas_leftbut_proc = get_intermediatepoint;
  508. X    canvas_middlebut_save = create_lineobject;
  509. X    }
  510. X    canvas_rightbut_proc = cancel_line_drawing;
  511. X    return_proc = line_drawing_selected;
  512. X    num_point = 1;
  513. X    set_mousefun("next point", "", "cancel");
  514. X    if (num_point >= min_num_points - 1) {
  515. X    set_mousefun("next point", "final point", "cancel");
  516. X    canvas_middlebut_proc = canvas_middlebut_save;
  517. X    }
  518. X    draw_mousefun_canvas();
  519. X    set_temp_cursor(null_cursor);
  520. X    cur_cursor = null_cursor;
  521. X    elastic_line();
  522. X}
  523. X
  524. Xget_direction(x, y)
  525. X    int            x, y;
  526. X{
  527. X    (*canvas_locmove_proc) (x, y);
  528. X    canvas_locmove_proc = constrainedangle_line;
  529. X    get_intermediatepoint(cur_x, cur_y);
  530. X}
  531. X
  532. Xget_latexpoint(x, y)
  533. X    int            x, y;
  534. X{
  535. X    elastic_latexline();
  536. X    latex_endpoint(fix_x, fix_y, x, y, &cur_x, &cur_y, latexarrow_mode,
  537. X           (cur_pointposn == P_ANY) ? 1 : posn_rnd[cur_pointposn]);
  538. X    if (cur_cursor != null_cursor) {
  539. X    set_temp_cursor(null_cursor);
  540. X    cur_cursor = null_cursor;
  541. X    }
  542. X    win_setmouseposition(canvas_win, cur_x, cur_y);
  543. X    get_intermediatepoint(cur_x, cur_y);
  544. X}
  545. X
  546. Xget_intermediatepoint(x, y)
  547. X    int            x, y;
  548. X{
  549. X    elastic_line();        /* erase elastic line */
  550. X    cur_x = x;
  551. X    cur_y = y;
  552. X    elastic_line();
  553. X    num_point++;
  554. X    fix_x = x;
  555. X    fix_y = y;
  556. X    elastic_line();
  557. X    append_point(fix_x, fix_y, &cur_point);
  558. X    if (num_point == min_num_points - 1) {
  559. X    set_mousefun("next point", "final point", "cancel");
  560. X    draw_mousefun_canvas();
  561. X    canvas_middlebut_proc = canvas_middlebut_save;
  562. X    }
  563. X}
  564. X
  565. Xcreate_latexobject(x, y)
  566. X    int            x, y;
  567. X{
  568. X    if (x != fix_x || y != fix_y) {
  569. X    elastic_latexline();
  570. X    latex_endpoint(fix_x, fix_y, x, y, &cur_x, &cur_y, latexarrow_mode,
  571. X            (cur_pointposn == P_ANY) ? 1 : posn_rnd[cur_pointposn]);
  572. X    if (cur_cursor != null_cursor) {
  573. X        set_temp_cursor(null_cursor);
  574. X        cur_cursor = null_cursor;
  575. X    }
  576. X    }
  577. X    create_lineobject(cur_x, cur_y);
  578. X}
  579. X
  580. X/* come here upon pressing middle button (last point of lineobject) */
  581. X
  582. Xcreate_lineobject(x, y)
  583. X    int            x, y;
  584. X{
  585. X    F_line       *line;
  586. X    int            dot;
  587. X
  588. X    if (num_point == 0) {
  589. X    if ((first_point = create_point()) == NULL) {
  590. X        line_drawing_selected();
  591. X        draw_mousefun_canvas();
  592. X        return;
  593. X    }
  594. X    cur_point = first_point;
  595. X    first_point->x = fix_x = cur_x = x;
  596. X    first_point->y = fix_y = cur_y = y;
  597. X    first_point->next = NULL;
  598. X    num_point++;
  599. X    } else if (x != fix_x || y != fix_y) {
  600. X    if (manhattan_mode || mountain_mode)
  601. X        get_direction(x, y);
  602. X    else if (latexline_mode || latexarrow_mode)
  603. X        get_latexpoint(x, y);
  604. X    else
  605. X        get_intermediatepoint(x, y);
  606. X    }
  607. X    dot = (num_point == 1);
  608. X    elastic_line();
  609. X    if ((line = create_line()) == NULL) {
  610. X    line_drawing_selected();
  611. X    draw_mousefun_canvas();
  612. X    return;
  613. X    }
  614. X    line->type = T_POLYLINE;
  615. X    line->thickness = cur_linewidth;
  616. X    line->fill_style = cur_fillstyle;
  617. X    line->style = cur_linestyle;
  618. X    line->style_val = cur_styleval * (cur_linewidth + 1) / 2;
  619. X    line->color = cur_color;
  620. X    line->depth = 0;
  621. X    line->pen = 0;
  622. X    line->points = first_point;
  623. X    if (!dot) {
  624. X    if (cur_mode == F_POLYGON) {    /* close off polygon */
  625. X        line->type = T_POLYGON;
  626. X        num_point++;
  627. X        append_point(first_point->x, first_point->y, &cur_point);
  628. X        elastic_line();
  629. X        fix_x = first_point->x;
  630. X        fix_y = first_point->y;
  631. X        elastic_line();    /* fix last elastic line */
  632. X    } else {        /* polyline; draw any arrows */
  633. X        if (autoforwardarrow_mode)
  634. X        line->for_arrow = forward_arrow();
  635. X        /* arrow will be drawn in draw_line below */
  636. X        if (autobackwardarrow_mode)
  637. X        line->back_arrow = backward_arrow();
  638. X        /* arrow will be drawn in draw_line below */
  639. X    }
  640. X    cur_x = fix_x;
  641. X    cur_y = fix_y;
  642. X    elastic_moveline(first_point);    /* erase temporary outline */
  643. X    }
  644. X    draw_line(line, PAINT);    /* draw final */
  645. X    add_line(line);
  646. X    line_drawing_selected();
  647. X    draw_mousefun_canvas();
  648. X}
  649. END_OF_FILE
  650. if test 6682 -ne `wc -c <'d_line.c'`; then
  651.     echo shar: \"'d_line.c'\" unpacked with wrong size!
  652. fi
  653. # end of 'd_line.c'
  654. fi
  655. if test -f 'e_convert.c' -a "${1}" != "-c" ; then 
  656.   echo shar: Will not clobber existing file \"'e_convert.c'\"
  657. else
  658. echo shar: Extracting \"'e_convert.c'\" \(4408 characters\)
  659. sed "s/^X//" >'e_convert.c' <<'END_OF_FILE'
  660. X/*
  661. X * FIG : Facility for Interactive Generation of figures
  662. X * Copyright (c) 1985 by Supoj Sutanthavibul
  663. X *
  664. X * "Permission to use, copy, modify, distribute, and sell this software and its
  665. X * documentation for any purpose is hereby granted without fee, provided that
  666. X * the above copyright notice appear in all copies and that both that
  667. X * copyright notice and this permission notice appear in supporting
  668. X * documentation, and that the name of M.I.T. not be used in advertising or
  669. X * publicity pertaining to distribution of the software without specific,
  670. X * written prior permission.  M.I.T. makes no representations about the
  671. X * suitability of this software for any purpose.  It is provided "as is"
  672. X * without express or implied warranty."
  673. X *
  674. X */
  675. X
  676. X#include "fig.h"
  677. X#include "resources.h"
  678. X#include "mode.h"
  679. X#include "object.h"
  680. X#include "paintop.h"
  681. X#include "u_create.h"
  682. X#include "u_list.h"
  683. X#include "u_search.h"
  684. X#include "w_canvas.h"
  685. X#include "w_mousefun.h"
  686. X
  687. Xstatic int    init_convert();
  688. X
  689. Xconvert_selected()
  690. X{
  691. X    set_mousefun("spline<->line", "", "");
  692. X    canvas_kbd_proc = null_proc;
  693. X    canvas_locmove_proc = null_proc;
  694. X    init_searchproc_left(init_convert);
  695. X    canvas_leftbut_proc = object_search_left;
  696. X    canvas_middlebut_proc = null_proc;
  697. X    canvas_rightbut_proc = null_proc;
  698. X    set_cursor(pick15_cursor);
  699. X}
  700. X
  701. Xstatic
  702. Xinit_convert(p, type, x, y, px, py)
  703. X    char       *p;
  704. X    int            type;
  705. X    int            x, y;
  706. X    int            px, py;
  707. X{
  708. X    switch (type) {
  709. X    case O_POLYLINE:
  710. X    cur_l = (F_line *) p;
  711. X    /* the search routine will ensure that we don't have a box */
  712. X    line_2_spline(cur_l);
  713. X    break;
  714. X    case O_SPLINE:
  715. X    cur_s = (F_spline *) p;
  716. X    /* the search routine will ensure that we have a interp spline */
  717. X    spline_2_line(cur_s);
  718. X    break;
  719. X    default:
  720. X    return;
  721. X    }
  722. X}
  723. X
  724. Xline_2_spline(l)
  725. X    F_line       *l;
  726. X{
  727. X    F_spline       *s;
  728. X
  729. X    if (num_points(l->points) < 3) {
  730. X    put_msg("Can't CONVERT this line into a spline: insufficient points");
  731. X    return;
  732. X    }
  733. X    if ((s = create_spline()) == NULL)
  734. X    return;
  735. X
  736. X    if (l->type == T_POLYGON)
  737. X    s->type = T_CLOSED_INTERP;
  738. X    else
  739. X    s->type = T_OPEN_INTERP;
  740. X    s->style = l->style;
  741. X    s->thickness = l->thickness;
  742. X    s->color = l->color;
  743. X    s->depth = l->depth;
  744. X    s->style_val = l->style_val;
  745. X    s->pen = l->pen;
  746. X    s->fill_style = l->fill_style;
  747. X    s->for_arrow = l->for_arrow;
  748. X    s->back_arrow = l->back_arrow;
  749. X    s->points = l->points;
  750. X    s->controls = NULL;
  751. X    s->next = NULL;
  752. X
  753. X    if (-1 == create_control_list(s)) {
  754. X    free_splinestorage(s);
  755. X    return;
  756. X    }
  757. X    remake_control_points(s);
  758. X
  759. X    /* now we have finished creating the spline, we can get rid of the line */
  760. X    /* first off the screen */
  761. X    mask_toggle_linemarker(l);
  762. X    draw_line(l, ERASE);
  763. X    list_delete_line(&objects.lines, l);
  764. X    /* we reuse the arrows and points, so `detach' them from the line */
  765. X    l->for_arrow = l->back_arrow = NULL;
  766. X    l->points = NULL;
  767. X    /* now get rid of the rest */
  768. X    free_linestorage(l);
  769. X
  770. X    /* now put back the new spline */
  771. X    draw_spline(s, PAINT);
  772. X    mask_toggle_splinemarker(s);
  773. X    list_add_spline(&objects.splines, s);
  774. X    clean_up();
  775. X    set_action_object(F_CONVERT, O_POLYLINE);
  776. X    set_latestspline(s);
  777. X    return;
  778. X}
  779. X
  780. Xspline_2_line(s)
  781. X    F_spline       *s;
  782. X{
  783. X    F_line       *l;
  784. X
  785. X    /* Now we turn s into a line */
  786. X    if ((l = create_line()) == NULL)
  787. X    return;
  788. X
  789. X    if (s->type == T_OPEN_INTERP)
  790. X    l->type = T_POLYLINE;
  791. X    else if (s->type == T_CLOSED_INTERP)
  792. X    l->type = T_POLYGON;
  793. X    l->style = s->style;
  794. X    l->thickness = s->thickness;
  795. X    l->color = s->color;
  796. X    l->depth = s->depth;
  797. X    l->style_val = s->style_val;
  798. X    l->pen = s->pen;
  799. X    l->radius = DEF_BOXRADIUS;
  800. X    l->fill_style = s->fill_style;
  801. X    l->for_arrow = s->for_arrow;
  802. X    l->back_arrow = s->back_arrow;
  803. X    l->points = s->points;
  804. X
  805. X    /* now we have finished creating the line, we can get rid of the spline */
  806. X    /* first off the screen */
  807. X    mask_toggle_splinemarker(s);
  808. X    draw_spline(s, ERASE);
  809. X    list_delete_spline(&objects.splines, s);
  810. X    /* we reuse the arrows and points, so `detach' them from the spline */
  811. X    s->for_arrow = s->back_arrow = NULL;
  812. X    s->points = NULL;
  813. X    /* now get rid of the rest */
  814. X    free_splinestorage(s);
  815. X
  816. X    /* and put in the new line */
  817. X    draw_line(l, PAINT);
  818. X    mask_toggle_linemarker(l);
  819. X    list_add_line(&objects.lines, l);
  820. X    clean_up();
  821. X    set_action_object(F_CONVERT, O_SPLINE);
  822. X    set_latestline(l);
  823. X    return;
  824. X}
  825. END_OF_FILE
  826. if test 4408 -ne `wc -c <'e_convert.c'`; then
  827.     echo shar: \"'e_convert.c'\" unpacked with wrong size!
  828. fi
  829. # end of 'e_convert.c'
  830. fi
  831. if test -f 'e_deletept.c' -a "${1}" != "-c" ; then 
  832.   echo shar: Will not clobber existing file \"'e_deletept.c'\"
  833. else
  834. echo shar: Extracting \"'e_deletept.c'\" \(6233 characters\)
  835. sed "s/^X//" >'e_deletept.c' <<'END_OF_FILE'
  836. X/*
  837. X * FIG : Facility for Interactive Generation of figures
  838. X * Copyright (c) 1985 by Supoj Sutanthavibul
  839. X *
  840. X * "Permission to use, copy, modify, distribute, and sell this software and its
  841. X * documentation for any purpose is hereby granted without fee, provided that
  842. X * the above copyright notice appear in all copies and that both that
  843. X * copyright notice and this permission notice appear in supporting
  844. X * documentation, and that the name of M.I.T. not be used in advertising or
  845. X * publicity pertaining to distribution of the software without specific,
  846. X * written prior permission.  M.I.T. makes no representations about the
  847. X * suitability of this software for any purpose.  It is provided "as is"
  848. X * without express or implied warranty."
  849. X *
  850. X */
  851. X
  852. X#include "fig.h"
  853. X#include "resources.h"
  854. X#include "mode.h"
  855. X#include "object.h"
  856. X#include "paintop.h"
  857. X#include "u_search.h"
  858. X#include "w_canvas.h"
  859. X#include "w_mousefun.h"
  860. X
  861. Xstatic int    init_delete_point();
  862. X
  863. Xdelete_point_selected()
  864. X{
  865. X    set_mousefun("delete point", "", "");
  866. X    canvas_kbd_proc = null_proc;
  867. X    canvas_locmove_proc = null_proc;
  868. X    init_searchproc_left(init_delete_point);
  869. X    canvas_leftbut_proc = point_search_left;
  870. X    canvas_middlebut_proc = null_proc;
  871. X    canvas_rightbut_proc = null_proc;
  872. X    set_cursor(pick9_cursor);
  873. X}
  874. X
  875. Xstatic
  876. Xinit_delete_point(obj, type, x, y, p, q)
  877. X    char       *obj;
  878. X    int            type, x, y;
  879. X    F_point       *p, *q;
  880. X{
  881. X    int            n;
  882. X
  883. X    switch (type) {
  884. X    case O_POLYLINE:
  885. X    cur_l = (F_line *) obj;
  886. X    /* the search routine will ensure we don't have a box */
  887. X    n = num_points(cur_l->points);
  888. X    if (cur_l->type == T_POLYGON) {
  889. X        if (n <= 4) {    /* count first pt twice for closed object */
  890. X        put_msg("A polygon cannot have less than 3 points");
  891. X        return;
  892. X        }
  893. X    } else if (n <= 1) {
  894. X        /* alternative would be to remove the dot altogether */
  895. X        put_msg("A dot must have at least 1 point");
  896. X        return;
  897. X    }
  898. X    linepoint_deleting(cur_l, p, q);
  899. X    break;
  900. X    case O_SPLINE:
  901. X    cur_s = (F_spline *) obj;
  902. X    n = num_points(cur_s->points);
  903. X    if (closed_spline(cur_s)) {
  904. X        if (n <= 4) {    /* count first pt twice for closed object */
  905. X        put_msg("A closed spline cannot have less than 3 points");
  906. X        return;
  907. X        }
  908. X    } else if (normal_spline(cur_s)) {
  909. X        if (n <= 2) {
  910. X        put_msg("A spline cannot have less than 2 points");
  911. X        return;
  912. X        }
  913. X    } else if (n <= 3) {    /* it must be an open interpolated spline */
  914. X        put_msg("An interpolated spline cannot have less than 3 points");
  915. X        return;
  916. X    }
  917. X    splinepoint_deleting(cur_s, p, q);
  918. X    break;
  919. X    default:
  920. X    return;
  921. X    }
  922. X}
  923. X
  924. X/**************************  spline  *******************************/
  925. X
  926. Xsplinepoint_deleting(spline, prev_point, selected_point)
  927. X    F_spline       *spline;
  928. X    F_point       *prev_point, *selected_point;
  929. X{
  930. X    F_point       *p, *next_point;
  931. X
  932. X    next_point = selected_point->next;
  933. X    set_temp_cursor(wait_cursor);
  934. X    if (closed_spline(spline)) {
  935. X    mask_toggle_splinemarker(spline);
  936. X    draw_spline(spline, ERASE);    /* erase the spline */
  937. X    if (prev_point == NULL) {
  938. X        /* The deleted point is the first point */
  939. X        spline->points = next_point;
  940. X        for (prev_point = next_point, p = prev_point->next;
  941. X         p->next != NULL;
  942. X         prev_point = p, p = p->next);
  943. X        /*
  944. X         * prev_point now points at next to last point (the last point is
  945. X         * a copy of the first).
  946. X         */
  947. X        p->x = spline->points->x;
  948. X        p->y = spline->points->y;
  949. X        next_point = p;
  950. X        /*
  951. X         * next_point becomes the last point.  If this operation (point
  952. X         * deletion) is reversed (undo), the selected_point will not be
  953. X         * inserted into it original place, but will be between
  954. X         * prev_point and next_point.
  955. X         */
  956. X    } else
  957. X        prev_point->next = next_point;
  958. X    } else {            /* open spline */
  959. X    mask_toggle_splinemarker(spline);
  960. X    draw_spline(spline, ERASE);    /* erase the spline */
  961. X    if (prev_point == NULL)
  962. X        spline->points = next_point;
  963. X    else
  964. X        prev_point->next = next_point;
  965. X    }
  966. X    if (int_spline(spline)) {
  967. X    F_control      *c;
  968. X
  969. X    c = spline->controls;
  970. X    spline->controls = c->next;
  971. X    c->next = NULL;
  972. X    free((char *) c);
  973. X    remake_control_points(spline);
  974. X    }
  975. X    draw_spline(spline, PAINT);
  976. X    mask_toggle_splinemarker(spline);
  977. X    clean_up();
  978. X    set_action_object(F_DELETE_POINT, O_SPLINE);
  979. X    set_latestspline(spline);
  980. X    set_last_prevpoint(prev_point);
  981. X    set_last_selectedpoint(selected_point);
  982. X    set_last_nextpoint(next_point);
  983. X    set_modifiedflag();
  984. X    reset_cursor();
  985. X}
  986. X
  987. X/***************************  line  ********************************/
  988. X
  989. X/*
  990. X * In deleting a point selected_point, linepoint_deleting uses prev_point and
  991. X * next_point of the point. The relationship between the three points is:
  992. X * prev_point->selected_point->next_point except when selected_point is the
  993. X * first point in the list, in which case prev_point will be NULL.
  994. X */
  995. Xlinepoint_deleting(line, prev_point, selected_point)
  996. X    F_line       *line;
  997. X    F_point       *prev_point, *selected_point;
  998. X{
  999. X    F_point       *p, *next_point;
  1000. X
  1001. X    next_point = selected_point->next;
  1002. X    mask_toggle_linemarker(line);
  1003. X    draw_line(line, ERASE);    /* erase the line */
  1004. X    if (line->type == T_POLYGON) {
  1005. X    if (prev_point == NULL) {
  1006. X        /* The deleted point is the first point */
  1007. X        line->points = next_point;
  1008. X        for (prev_point = next_point, p = prev_point->next;
  1009. X         p->next != NULL;
  1010. X         prev_point = p, p = p->next);
  1011. X        /*
  1012. X         * prev_point now points at next to last point (the last point is
  1013. X         * a copy of the first).
  1014. X         */
  1015. X        p->x = next_point->x;
  1016. X        p->y = next_point->y;
  1017. X        next_point = p;
  1018. X        /*
  1019. X         * next_point becomes the last point.  If this operation (point
  1020. X         * deletion) is reversed (undo), the selected_point will not be
  1021. X         * inserted into it original place, but will be between
  1022. X         * prev_point and next_point.
  1023. X         */
  1024. X    } else
  1025. X        prev_point->next = next_point;
  1026. X    } else {            /* polyline */
  1027. X    if (prev_point == NULL)
  1028. X        line->points = next_point;
  1029. X    else
  1030. X        prev_point->next = next_point;
  1031. X    }
  1032. X    draw_line(line, PAINT);
  1033. X    mask_toggle_linemarker(line);
  1034. X    clean_up();
  1035. X    set_modifiedflag();
  1036. X    set_action_object(F_DELETE_POINT, O_POLYLINE);
  1037. X    set_latestline(line);
  1038. X    set_last_prevpoint(prev_point);
  1039. X    set_last_selectedpoint(selected_point);
  1040. X    set_last_nextpoint(next_point);
  1041. X}
  1042. END_OF_FILE
  1043. if test 6233 -ne `wc -c <'e_deletept.c'`; then
  1044.     echo shar: \"'e_deletept.c'\" unpacked with wrong size!
  1045. fi
  1046. # end of 'e_deletept.c'
  1047. fi
  1048. if test -f 'f_save.c' -a "${1}" != "-c" ; then 
  1049.   echo shar: Will not clobber existing file \"'f_save.c'\"
  1050. else
  1051. echo shar: Extracting \"'f_save.c'\" \(6881 characters\)
  1052. sed "s/^X//" >'f_save.c' <<'END_OF_FILE'
  1053. X/*
  1054. X * FIG : Facility for Interactive Generation of figures
  1055. X * Copyright (c) 1985 by Supoj Sutanthavibul
  1056. X *
  1057. X * "Permission to use, copy, modify, distribute, and sell this software and its
  1058. X * documentation for any purpose is hereby granted without fee, provided that
  1059. X * the above copyright notice appear in all copies and that both that
  1060. X * copyright notice and this permission notice appear in supporting
  1061. X * documentation, and that the name of M.I.T. not be used in advertising or
  1062. X * publicity pertaining to distribution of the software without specific,
  1063. X * written prior permission.  M.I.T. makes no representations about the
  1064. X * suitability of this software for any purpose.  It is provided "as is"
  1065. X * without express or implied warranty."
  1066. X *
  1067. X */
  1068. X
  1069. X#include "fig.h"
  1070. X#include "resources.h"
  1071. X#include "mode.h"
  1072. X#include "object.h"
  1073. X#include "w_setup.h"
  1074. X
  1075. Xextern int    num_object;
  1076. X
  1077. Xwrite_file(file_name)
  1078. X    char       *file_name;
  1079. X{
  1080. X    FILE       *fp;
  1081. X
  1082. X    if (!ok_to_write(file_name, "SAVE"))
  1083. X    return (-1);
  1084. X
  1085. X    if ((fp = fopen(file_name, "w")) == NULL) {
  1086. X    put_msg("Couldn't open file %s, %s", file_name, sys_errlist[errno]);
  1087. X    return (-1);
  1088. X    }
  1089. X    num_object = 0;
  1090. X    if (write_objects(fp)) {
  1091. X    put_msg("Error writing file %s, %s", file_name, sys_errlist[errno]);
  1092. X    return (-1);
  1093. X    }
  1094. X    put_msg("%d object(s) saved in \"%s\"", num_object, file_name);
  1095. X    return (0);
  1096. X}
  1097. X
  1098. Xint
  1099. Xwrite_objects(fp)
  1100. X    FILE       *fp;
  1101. X{
  1102. X    extern char        file_header[];
  1103. X    F_arc       *a;
  1104. X    F_compound       *c;
  1105. X    F_ellipse       *e;
  1106. X    F_line       *l;
  1107. X    F_spline       *s;
  1108. X    F_text       *t;
  1109. X
  1110. X    /*
  1111. X     * Number 2 means that the origin (0,0) is at the upper left corner of
  1112. X     * the screen (2nd quadrant)
  1113. X     */
  1114. X
  1115. X    put_msg("Writing . . .");
  1116. X    fprintf(fp, "%s\n", file_header);
  1117. X    fprintf(fp, "%d %d\n", PIX_PER_INCH, 2);
  1118. X    for (a = objects.arcs; a != NULL; a = a->next) {
  1119. X    num_object++;
  1120. X    write_arc(fp, a);
  1121. X    }
  1122. X    for (c = objects.compounds; c != NULL; c = c->next) {
  1123. X    num_object++;
  1124. X    write_compound(fp, c);
  1125. X    }
  1126. X    for (e = objects.ellipses; e != NULL; e = e->next) {
  1127. X    num_object++;
  1128. X    write_ellipse(fp, e);
  1129. X    }
  1130. X    for (l = objects.lines; l != NULL; l = l->next) {
  1131. X    num_object++;
  1132. X    write_line(fp, l);
  1133. X    }
  1134. X    for (s = objects.splines; s != NULL; s = s->next) {
  1135. X    num_object++;
  1136. X    write_spline(fp, s);
  1137. X    }
  1138. X    for (t = objects.texts; t != NULL; t = t->next) {
  1139. X    num_object++;
  1140. X    write_text(fp, t);
  1141. X    }
  1142. X    if (ferror(fp)) {
  1143. X    fclose(fp);
  1144. X    return (-1);
  1145. X    }
  1146. X    if (fclose(fp) == EOF)
  1147. X    return (-1);
  1148. X    return (0);
  1149. X}
  1150. X
  1151. Xwrite_arc(fp, a)
  1152. X    FILE       *fp;
  1153. X    F_arc       *a;
  1154. X{
  1155. X    F_arrow       *f, *b;
  1156. X
  1157. X    fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d %d %.3f %.3f %d %d %d %d %d %d\n",
  1158. X        O_ARC, a->type, a->style, a->thickness,
  1159. X        a->color, a->depth, a->pen, a->fill_style,
  1160. X        a->style_val, a->direction,
  1161. X        ((f = a->for_arrow) ? 1 : 0), ((b = a->back_arrow) ? 1 : 0),
  1162. X        a->center.x, a->center.y,
  1163. X        a->point[0].x, a->point[0].y,
  1164. X        a->point[1].x, a->point[1].y,
  1165. X        a->point[2].x, a->point[2].y);
  1166. X    if (f)
  1167. X    fprintf(fp, "\t%d %d %.3f %.3f %.3f\n", f->type, f->style,
  1168. X        f->thickness, f->wid, f->ht);
  1169. X    if (b)
  1170. X    fprintf(fp, "\t%d %d %.3f %.3f %.3f\n", b->type, b->style,
  1171. X        b->thickness, b->wid, b->ht);
  1172. X}
  1173. X
  1174. Xwrite_compound(fp, com)
  1175. X    FILE       *fp;
  1176. X    F_compound       *com;
  1177. X{
  1178. X    F_arc       *a;
  1179. X    F_compound       *c;
  1180. X    F_ellipse       *e;
  1181. X    F_line       *l;
  1182. X    F_spline       *s;
  1183. X    F_text       *t;
  1184. X
  1185. X    fprintf(fp, "%d %d %d %d %d\n", O_COMPOUND, com->nwcorner.x,
  1186. X        com->nwcorner.y, com->secorner.x, com->secorner.y);
  1187. X    for (a = com->arcs; a != NULL; a = a->next)
  1188. X    write_arc(fp, a);
  1189. X    for (c = com->compounds; c != NULL; c = c->next)
  1190. X    write_compound(fp, c);
  1191. X    for (e = com->ellipses; e != NULL; e = e->next)
  1192. X    write_ellipse(fp, e);
  1193. X    for (l = com->lines; l != NULL; l = l->next)
  1194. X    write_line(fp, l);
  1195. X    for (s = com->splines; s != NULL; s = s->next)
  1196. X    write_spline(fp, s);
  1197. X    for (t = com->texts; t != NULL; t = t->next)
  1198. X    write_text(fp, t);
  1199. X    fprintf(fp, "%d\n", O_END_COMPOUND);
  1200. X}
  1201. X
  1202. Xwrite_ellipse(fp, e)
  1203. X    FILE       *fp;
  1204. X    F_ellipse       *e;
  1205. X{
  1206. X    if (e->radiuses.x == 0 || e->radiuses.y == 0)
  1207. X    return;
  1208. X
  1209. X    fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %.3f %d %d %d %d %d %d %d %d\n",
  1210. X        O_ELLIPSE, e->type, e->style, e->thickness,
  1211. X        e->color, e->depth, e->pen, e->fill_style,
  1212. X        e->style_val, e->direction, e->angle,
  1213. X        e->center.x, e->center.y,
  1214. X        e->radiuses.x, e->radiuses.y,
  1215. X        e->start.x, e->start.y,
  1216. X        e->end.x, e->end.y);
  1217. X}
  1218. X
  1219. Xwrite_line(fp, l)
  1220. X    FILE       *fp;
  1221. X    F_line       *l;
  1222. X{
  1223. X    F_point       *p;
  1224. X    F_arrow       *f, *b;
  1225. X
  1226. X    if (l->points == NULL)
  1227. X    return;
  1228. X    fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d %d\n",
  1229. X        O_POLYLINE, l->type, l->style, l->thickness,
  1230. X     l->color, l->depth, l->pen, l->fill_style, l->style_val, l->radius,
  1231. X        ((f = l->for_arrow) ? 1 : 0), ((b = l->back_arrow) ? 1 : 0));
  1232. X    if (f)
  1233. X    fprintf(fp, "\t%d %d %.3f %.3f %.3f\n", f->type, f->style,
  1234. X        f->thickness, f->wid, f->ht);
  1235. X    if (b)
  1236. X    fprintf(fp, "\t%d %d %.3f %.3f %.3f\n", b->type, b->style,
  1237. X        b->thickness, b->wid, b->ht);
  1238. X    if (l->type == T_EPS_BOX)
  1239. X    fprintf(fp, "\t%d %s\n", l->eps->flipped, l->eps->file);
  1240. X
  1241. X    fprintf(fp, "\t");
  1242. X    for (p = l->points; p != NULL; p = p->next) {
  1243. X    fprintf(fp, " %d %d", p->x, p->y);
  1244. X    };
  1245. X    fprintf(fp, " 9999 9999\n");
  1246. X}
  1247. X
  1248. Xwrite_spline(fp, s)
  1249. X    FILE       *fp;
  1250. X    F_spline       *s;
  1251. X{
  1252. X    F_control       *cp;
  1253. X    F_point       *p;
  1254. X    F_arrow       *f, *b;
  1255. X
  1256. X    if (s->points == NULL)
  1257. X    return;
  1258. X    fprintf(fp, "%d %d %d %d %d %d %d %d %.3f %d %d\n",
  1259. X        O_SPLINE, s->type, s->style, s->thickness,
  1260. X        s->color, s->depth, s->pen, s->fill_style, s->style_val,
  1261. X        ((f = s->for_arrow) ? 1 : 0), ((b = s->back_arrow) ? 1 : 0));
  1262. X    if (f)
  1263. X    fprintf(fp, "\t%d %d %.3f %.3f %.3f\n", f->type, f->style,
  1264. X        f->thickness, f->wid, f->ht);
  1265. X    if (b)
  1266. X    fprintf(fp, "\t%d %d %.3f %.3f %.3f\n", b->type, b->style,
  1267. X        b->thickness, b->wid, b->ht);
  1268. X    fprintf(fp, "\t");
  1269. X    for (p = s->points; p != NULL; p = p->next) {
  1270. X    fprintf(fp, " %d %d", p->x, p->y);
  1271. X    };
  1272. X    fprintf(fp, " 9999 9999\n");/* terminating code  */
  1273. X
  1274. X    if (s->controls == NULL)
  1275. X    return;
  1276. X    fprintf(fp, "\t");
  1277. X    for (cp = s->controls; cp != NULL; cp = cp->next) {
  1278. X    fprintf(fp, " %.3f %.3f %.3f %.3f",
  1279. X        cp->lx, cp->ly, cp->rx, cp->ry);
  1280. X    };
  1281. X    fprintf(fp, "\n");
  1282. X}
  1283. X
  1284. Xwrite_text(fp, t)
  1285. X    FILE       *fp;
  1286. X    F_text       *t;
  1287. X{
  1288. X    if (t->length == 0)
  1289. X    return;
  1290. X    fprintf(fp, "%d %d %d %d %d %d %d %.3f %d %d %d %d %d %s\1\n",
  1291. X        O_TEXT, t->type, t->font, t->size, t->pen,
  1292. X        t->color, t->depth, t->angle,
  1293. X        t->flags, t->height, t->length,
  1294. X        t->base_x, t->base_y, t->cstring);
  1295. X}
  1296. X
  1297. Xemergency_save(file_name)
  1298. X    char       *file_name;
  1299. X{
  1300. X    FILE       *fp;
  1301. X
  1302. X    if ((fp = fopen(file_name, "w")) == NULL)
  1303. X    return (-1);
  1304. X    num_object = 0;
  1305. X    if (write_objects(fp))
  1306. X    return (-1);
  1307. X    (void) fprintf(stderr, "xfig: %d object(s) saved in \"%s\"\n",
  1308. X           num_object, file_name);
  1309. X    return (0);
  1310. X}
  1311. END_OF_FILE
  1312. if test 6881 -ne `wc -c <'f_save.c'`; then
  1313.     echo shar: \"'f_save.c'\" unpacked with wrong size!
  1314. fi
  1315. # end of 'f_save.c'
  1316. fi
  1317. if test -f 'w_cmdpanel.c' -a "${1}" != "-c" ; then 
  1318.   echo shar: Will not clobber existing file \"'w_cmdpanel.c'\"
  1319. else
  1320. echo shar: Extracting \"'w_cmdpanel.c'\" \(6242 characters\)
  1321. sed "s/^X//" >'w_cmdpanel.c' <<'END_OF_FILE'
  1322. X/*
  1323. X * FIG : Facility for Interactive Generation of figures
  1324. X * Copyright (c) 1985 by Supoj Sutanthavibul
  1325. X *
  1326. X * "Permission to use, copy, modify, distribute, and sell this software and its
  1327. X * documentation for any purpose is hereby granted without fee, provided that
  1328. X * the above copyright notice appear in all copies and that both that
  1329. X * copyright notice and this permission notice appear in supporting
  1330. X * documentation, and that the name of M.I.T. not be used in advertising or
  1331. X * publicity pertaining to distribution of the software without specific,
  1332. X * written prior permission.  M.I.T. makes no representations about the
  1333. X * suitability of this software for any purpose.  It is provided "as is"
  1334. X * without express or implied warranty."
  1335. X *
  1336. X */
  1337. X
  1338. X/* IMPORTS */
  1339. X
  1340. X#include "fig.h"
  1341. X#include "resources.h"
  1342. X#include "mode.h"
  1343. X#include "w_canvas.h"        /* for null_proc() */
  1344. X#include "w_drawprim.h"
  1345. X#include "w_mousefun.h"
  1346. X#include "w_util.h"
  1347. X#include "w_setup.h"
  1348. X
  1349. Xextern        erase_objecthighlight();
  1350. Xextern        emptyfigure();
  1351. Xextern        do_print(), do_export(), do_save();
  1352. Xextern void    undo(), redisplay_canvas();
  1353. Xextern void    popup_print_panel(), popup_file_panel(), popup_export_panel();
  1354. X
  1355. Xvoid        init_cmd_panel();
  1356. Xvoid        setup_cmd_panel();
  1357. X
  1358. X/* internal features and definitions */
  1359. X
  1360. X/* cmd panel definitions */
  1361. X#define CMD_LABEL_LEN    16
  1362. Xtypedef struct cmd_switch_struct {
  1363. X    char        label[CMD_LABEL_LEN];
  1364. X    void        (*cmd_func) ();
  1365. X    int            (*quick_func) ();
  1366. X    char        mousefun_l[CMD_LABEL_LEN];
  1367. X    char        mousefun_r[CMD_LABEL_LEN];
  1368. X    TOOL        widget;
  1369. X}        cmd_sw_info;
  1370. X
  1371. X#define cmd_action(z)    (z->cmd_func)(z->widget)
  1372. X#define quick_action(z) (z->quick_func)(z->widget)
  1373. X
  1374. X/* prototypes */
  1375. Xstatic void    sel_cmd_but();
  1376. Xstatic void    enter_cmd_but();
  1377. Xvoid        quit();
  1378. Xstatic void    delete_all_cmd();
  1379. Xstatic void    paste();
  1380. X
  1381. X/* command panel of switches below the lower ruler */
  1382. Xstatic cmd_sw_info cmd_switches[] = {
  1383. X    {"Quit", quit, null_proc, "command", ""},
  1384. X    {"Delete ALL", delete_all_cmd, null_proc, "command", ""},
  1385. X    {"Undo", undo, null_proc, "command", ""},
  1386. X    {"Redraw", redisplay_canvas, null_proc, "command", ""},
  1387. X    {"Paste", paste, null_proc, "command", ""},
  1388. X    {"File...", popup_file_panel, do_save, "popup", "save shortcut"},
  1389. X    {"Export...", popup_export_panel, do_export, "popup", "export shortcut"},
  1390. X    {"Print...", popup_print_panel, do_print, "popup", "print shortcut"},
  1391. X};
  1392. X
  1393. X#define        NUM_CMD_SW  (sizeof(cmd_switches) / sizeof(cmd_sw_info))
  1394. X
  1395. Xstatic XtActionsRec cmd_actions[] =
  1396. X{
  1397. X    {"LeaveCmdSw", (XtActionProc) clear_mousefun},
  1398. X};
  1399. X
  1400. Xstatic String    cmd_translations =
  1401. X"<Btn1Down>:set()\n\
  1402. X    <Btn1Up>:unset()\n\
  1403. X    <LeaveWindow>:LeaveCmdSw()reset()\n";
  1404. X
  1405. XDeclareStaticArgs(11);
  1406. X
  1407. Xint
  1408. Xnum_cmd_sw()
  1409. X{
  1410. X    return (NUM_CMD_SW);
  1411. X}
  1412. X
  1413. X/* command panel */
  1414. Xvoid
  1415. Xinit_cmd_panel(tool)
  1416. X    TOOL        tool;
  1417. X{
  1418. X    register int    i;
  1419. X    register cmd_sw_info *sw;
  1420. X    Widget        beside = NULL;
  1421. X
  1422. X    FirstArg(XtNborderWidth, 0);
  1423. X    NextArg(XtNdefaultDistance, 0);
  1424. X    NextArg(XtNhorizDistance, 0);
  1425. X    NextArg(XtNvertDistance, 0);
  1426. X    NextArg(XtNleft, XtChainLeft);
  1427. X    NextArg(XtNright, XtChainLeft);
  1428. X    NextArg(XtNtop, XtChainTop);
  1429. X    NextArg(XtNbottom, XtChainTop);
  1430. X    cmd_panel = XtCreateWidget("commands", formWidgetClass, tool,
  1431. X                   Args, ArgCount);
  1432. X    XtAppAddActions(tool_app, cmd_actions, XtNumber(cmd_actions));
  1433. X
  1434. X    FirstArg(XtNborderWidth, INTERNAL_BW);
  1435. X    NextArg(XtNfont, button_font);
  1436. X    NextArg(XtNheight, CMDPANEL_HT - 2 * INTERNAL_BW);
  1437. X    NextArg(XtNwidth, CMDPANEL_WD / NUM_CMD_SW - INTERNAL_BW);
  1438. X    NextArg(XtNvertDistance, 0);
  1439. X    NextArg(XtNhorizDistance, 0);
  1440. X    for (i = 0; i < NUM_CMD_SW; ++i) {
  1441. X    sw = &cmd_switches[i];
  1442. X    NextArg(XtNlabel, sw->label);
  1443. X    NextArg(XtNfromHoriz, beside);
  1444. X    sw->widget = XtCreateManagedWidget("button", commandWidgetClass,
  1445. X                       cmd_panel, Args, ArgCount);
  1446. X    /* setup callback and default actions */
  1447. X    XtAddEventHandler(sw->widget, ButtonReleaseMask, (Boolean) 0,
  1448. X              sel_cmd_but, (caddr_t) sw);
  1449. X    XtAddEventHandler(sw->widget, EnterWindowMask, (Boolean) 0,
  1450. X              enter_cmd_but, (caddr_t) sw);
  1451. X    XtOverrideTranslations(sw->widget,
  1452. X                   XtParseTranslationTable(cmd_translations));
  1453. X    ArgCount -= 3;
  1454. X    NextArg(XtNhorizDistance, -INTERNAL_BW);
  1455. X    beside = sw->widget;
  1456. X    }
  1457. X    return;
  1458. X}
  1459. X
  1460. Xvoid
  1461. Xsetup_cmd_panel()
  1462. X{
  1463. X    register int    i;
  1464. X    register cmd_sw_info *sw;
  1465. X
  1466. X    XDefineCursor(tool_d, XtWindow(cmd_panel), arrow_cursor);
  1467. X
  1468. X    for (i = 0; i < NUM_CMD_SW; ++i) {
  1469. X    sw = &cmd_switches[i];
  1470. X    FirstArg(XtNfont, button_font); /* label font */
  1471. X    SetValues(sw->widget);
  1472. X    }
  1473. X}
  1474. X
  1475. Xstatic void
  1476. Xenter_cmd_but(widget, sw, event)
  1477. X    Widget        widget;
  1478. X    cmd_sw_info       *sw;
  1479. X    XButtonEvent   *event;
  1480. X{
  1481. X    clear_mousefun();
  1482. X    draw_mousefun(sw->mousefun_l, "", sw->mousefun_r);
  1483. X}
  1484. X
  1485. Xstatic void
  1486. Xsel_cmd_but(widget, sw, event)
  1487. X    Widget        widget;
  1488. X    cmd_sw_info       *sw;
  1489. X    XButtonEvent   *event;
  1490. X{
  1491. X    if (event->button == Button2)
  1492. X    return;
  1493. X
  1494. X    if (action_on) {
  1495. X    if (cur_mode == F_TEXT)
  1496. X        finish_text_input();/* finish up any text input */
  1497. X    else {
  1498. X        put_msg("FINISH drawing current object first");
  1499. X        return;
  1500. X    }
  1501. X    } else if (highlighting)
  1502. X    erase_objecthighlight();
  1503. X
  1504. X    if (event->button == Button1)
  1505. X    cmd_action(sw);
  1506. X    else
  1507. X    quick_action(sw);
  1508. X}
  1509. X
  1510. Xstatic char    quit_msg[] = "The current figure is modified.\nDo you want to save it before quitting?";
  1511. X
  1512. Xvoid
  1513. Xquit(w)
  1514. X    Widget        w;
  1515. X{
  1516. X    int            qresult;
  1517. X
  1518. X    if (!emptyfigure() && figure_modified && !aborting) {
  1519. X    XtSetSensitive(w, False);
  1520. X    if ((qresult = popup_query(QUERY_YESNO, quit_msg)) == RESULT_CANCEL) {
  1521. X        XtSetSensitive(w, True);
  1522. X        return;
  1523. X    } else if (qresult == RESULT_YES) {
  1524. X        do_save(w);
  1525. X        /*
  1526. X         * if saving was not successful, figure_modified is still true:
  1527. X         * do not quit!
  1528. X         */
  1529. X        if (figure_modified) {
  1530. X        XtSetSensitive(w, True);
  1531. X        return;
  1532. X        }
  1533. X    }
  1534. X    }
  1535. X    /* delete the cut buffer only if it is a temporary file */
  1536. X    if (strncmp(cut_buf_name, "/tmp", 4) == 0)
  1537. X    unlink(cut_buf_name);
  1538. X
  1539. X    XtDestroyWidget(tool);
  1540. X    exit(0);
  1541. X}
  1542. X
  1543. Xstatic void
  1544. Xpaste()
  1545. X{
  1546. X    merge_file(cut_buf_name);
  1547. X}
  1548. X
  1549. Xstatic void
  1550. Xdelete_all_cmd()
  1551. X{
  1552. X    if (emptyfigure()) {
  1553. X    put_msg("Figure already empty");
  1554. X    return;
  1555. X    }
  1556. X    delete_all();
  1557. X    put_msg("Immediate Undo will restore the figure");
  1558. X    redisplay_canvas();
  1559. X}
  1560. END_OF_FILE
  1561. if test 6242 -ne `wc -c <'w_cmdpanel.c'`; then
  1562.     echo shar: \"'w_cmdpanel.c'\" unpacked with wrong size!
  1563. fi
  1564. # end of 'w_cmdpanel.c'
  1565. fi
  1566. echo shar: End of archive 20 \(of 25\).
  1567. cp /dev/null ark20isdone
  1568. MISSING=""
  1569. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ; do
  1570.     if test ! -f ark${I}isdone ; then
  1571.     MISSING="${MISSING} ${I}"
  1572.     fi
  1573. done
  1574. if test "${MISSING}" = "" ; then
  1575.     echo You have unpacked all 25 archives.
  1576.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1577. else
  1578.     echo You still need to unpack the following archives:
  1579.     echo "        " ${MISSING}
  1580. fi
  1581. ##  End of shell archive.
  1582. exit 0
  1583. -- 
  1584. Molecular Simulations, Inc.             mail: dcmartin@msi.com
  1585. 796 N. Pastoria Avenue                  uucp: uunet!dcmartin
  1586. Sunnyvale, California 94086             at&t: 408/522-9236
  1587.