home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-05-26 | 67.0 KB | 1,962 lines |
- Newsgroups: comp.sources.x
- From: envbvs@epb9.lbl.gov (Brian V. Smith)
- Subject: v19i122: xfig - Draw amd manipulate objects in an X-Window, Part10/27
- Message-ID: <1993May21.021410.5721@sparky.imd.sterling.com>
- X-Md4-Signature: 8668f40929a940a8696cb1a1ff29d102
- Sender: chris@sparky.imd.sterling.com (Chris Olson)
- Organization: Sterling Software
- Date: Fri, 21 May 1993 02:14:10 GMT
- Approved: chris@sparky.imd.sterling.com
-
- Submitted-by: envbvs@epb9.lbl.gov (Brian V. Smith)
- Posting-number: Volume 19, Issue 122
- Archive-name: xfig/part10
- Environment: X11
- Supersedes: xfig: Volume 16, Issue 6-30,39
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 10 (of 27)."
- # Contents: Examples/house_elev.fig.uu Examples/office.fig.uu
- # e_rotate.c e_update.c w_canvas.c
- # Wrapped by envbvs@epb9.lbl.gov.lbl.gov on Mon May 3 12:05:53 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Examples/house_elev.fig.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Examples/house_elev.fig.uu'\"
- else
- echo shar: Extracting \"'Examples/house_elev.fig.uu'\" \(13167 characters\)
- sed "s/^X//" >'Examples/house_elev.fig.uu' <<'END_OF_FILE'
- Xbegin 444 house_elev.fig
- XM(T9)1R`R+C$*.#`@,@HQ(#,@,"`Q("TQ(#`@,"`P(#`N,#`P(#$@,"XP,#`@
- XM,S<W(#0U-B`S(#,@,S<W(#0U-B`S.#`@-#4W"C(@,B`P(#$@+3$@,"`P(#`@
- XM,"XP,#`@,"`P(#`*"2`T,3(@,SDW(#0Q,B`T-C`@-#(U(#0V,"`T,C4@,SDW
- XM(#0Q,B`S.3<@.3DY.2`Y.3DY"C(@,B`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P
- XM(#`*"2`R.#(@,SDW(#(X,B`T-C`@,CDU(#0V,"`R.34@,SDW(#(X,B`S.3<@
- XM.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T-3D@
- XM-#4Y(#4S.2`T-3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`T-3D@-#0Y(#4S.2`T-#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@
- XM,"`P(#`@,"XP,#`@,"`P(#`*"2`T-3D@-#,Y(#4S.2`T,SD@.3DY.2`Y.3DY
- XM"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T-3D@-#(Y(#4S.2`T
- XM,CD@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T
- XM-3D@-#$Y(#4S.2`T,3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP
- XM,#`@,"`P(#`*"2`T-3D@-#`Y(#4S.2`T,#D@.3DY.2`Y.3DY"C(@,2`P(#$@
- XM+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T-3D@,SDY(#4S.2`S.3D@.3DY.2`Y
- XM.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T,CD@-#4Y(#0U
- XM.2`T-3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*
- XM"2`T,CD@-#0Y(#0U.2`T-#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@
- XM,"XP,#`@,"`P(#`*"2`T,CD@-#,Y(#0U.2`T,SD@.3DY.2`Y.3DY"C(@,2`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T,CD@-#(Y(#0U.2`T,CD@.3DY
- XM.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T,CD@-#$Y
- XM(#0U.2`T,3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P
- XM(#`*"2`T,CD@-#`Y(#0U.2`T,#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P
- XM(#`@,"XP,#`@,"`P(#`*"2`S.#D@-#4Y(#0P.2`T-3D@.3DY.2`Y.3DY"C(@
- XM,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`S.#D@-#0Y(#0P.2`T-#D@
- XM.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`S.#D@
- XM-#,Y(#0P.2`T,SD@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`S.#D@-#(Y(#0P.2`T,CD@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@
- XM,"`P(#`@,"XP,#`@,"`P(#`*"2`S.#D@-#$Y(#0P.2`T,3D@.3DY.2`Y.3DY
- XM"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`S.#D@-#`Y(#0P.2`T
- XM,#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T
- XM,CD@,SDY(#0U.2`S.3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP
- XM,#`@,"`P(#`*"2`S.#D@,SDY(#0P.2`S.3D@.3DY.2`Y.3DY"C(@,2`P(#$@
- XM+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@-#4Y(#(W.2`T-3D@.3DY.2`Y
- XM.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@-#0Y(#(W
- XM.2`T-#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*
- XM"2`R,SD@-#,Y(#(W.2`T,SD@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@
- XM,"XP,#`@,"`P(#`*"2`R,SD@-#(Y(#(W.2`T,CD@.3DY.2`Y.3DY"C(@,2`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R.3D@-#4Y(#,Q.2`T-3D@.3DY
- XM.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R.3D@-#0Y
- XM(#,Q.2`T-#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P
- XM(#`*"2`R.3D@-#,Y(#,Q.2`T,SD@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P
- XM(#`@,"XP,#`@,"`P(#`*"2`R.3D@-#(Y(#,Q.2`T,CD@.3DY.2`Y.3DY"C(@
- XM,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R.3D@-#$Y(#,Q.2`T,3D@
- XM.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@
- XM-#$Y(#(W.2`T,3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`R.3D@-#`Y(#,Q.2`T,#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@
- XM,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@-#`Y(#(W.2`T,#D@.3DY.2`Y.3DY
- XM"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R.3D@,SDY(#,Q.2`S
- XM.3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R
- XM,SD@,SDY(#(W.2`S.3D@.3DY.2`Y.3DY"C(@,B`P(#(@+3$@,"`P(#`@,"XP
- XM,#`@,"`P(#`*"2`T,#D@,SDT(#0R.2`S.30@-#(Y(#0V-"`T,#D@-#8T(#0P
- XM.2`S.30@.3DY.2`Y.3DY"C(@,B`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*
- XM"2`R-SD@,SDT(#(Y.2`S.30@,CDY(#0V-"`R-SD@-#8T(#(W.2`S.30@.3DY
- XM.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`V-CD@,S<Y
- XM(#0W-"`S-SD@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P
- XM(#`*"2`S,S0@,S4Y(#,V.2`S-3D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P
- XM(#`@,"XP,#`@,"`P(#`*"2`R,SD@,S8Y(#(U-"`S-CD@.3DY.2`Y.3DY"C(@
- XM,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`V-CD@,S8Y(#0T.2`S-CD@
- XM.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@
- XM,S0Y(#,P.2`S-#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`V-CD@,S0Y(#,Y-"`S-#D@.3DY.2`Y.3DY"C(@,2`P(#$@+3$@
- XM,"`P(#`@,"XP,#`@,"`P(#`*"2`S-CD@,S,Y(#8V.2`S,SD@.3DY.2`Y.3DY
- XM"C(@,2`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@,S,Y(#,S.2`S
- XM,SD@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R
- XM,SD@,S4Y(#(X-"`S-3D@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP
- XM,#`@,"`P(#`*"2`V-CD@,S4Y(#0Q.2`S-3D@.3DY.2`Y.3DY"C(@,2`P(#(@
- XM+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,SD@,S<U(#(S.2`R,#D@-C8Y(#(P
- XM.2`V-CD@-3$Y(#(S.2`U,3D@,C,Y(#,Y-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0X.2`S.#D@-3,Y(#,X.2`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,X.2`S.#D@-#4Y
- XM(#,X.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#(T.2`S.#D@,S$Y(#,X.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#,P-"`S-CD@,SDY(#,V.2`Y.3DY(#DY.3D*,B`Q(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(W.2`S-SD@-#(Y(#,W.2`Y.3DY
- XM(#DY.3D*,B`Q(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0U.2`S.#D@
- XM-#4Y(#4Q.2`Y.3DY(#DY.3D*,B`S(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#(Q.2`S.3D@,S4T(#,U,B`T.#0@,SDY(#0Y,2`S.#4@,S4T(#,S-"`R
- XM,3,@,S@T(#(Q.2`S.3D@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP
- XM,#`@,"`P(#`*"2`S,3D@-3$Y(#,Q.2`S.#0@,S@Y(#,X-"`S.#D@-3$Y(#DY
- XM.3D@.3DY.0HR(#(@,"`R("TQ(#`@,"`P(#`N,#`P(#`@,"`P"@D@-3,Y(#,X
- XM-"`U,SD@-#8Y(#8Q.2`T-CD@-C$Y(#,X-"`U,SD@,S@T(#DY.3D@.3DY.0HR
- XM(#(@,"`R("TQ(#`@,"`P(#`N,#`P(#`@,"`P"@D@,S$Y(#(T.2`S,3D@,S$T
- XM(#,X.2`S,30@,S@Y(#(T.2`S,3D@,C0Y(#DY.3D@.3DY.0HR(#(@,"`R("TQ
- XM(#`@,"`P(#`N,#`P(#`@,"`P"@D@-3$Y(#(T.2`U,3D@,S$T(#4X.2`S,30@
- XM-3@Y(#(T.2`U,3D@,C0Y(#DY.3D@.3DY.0HR(#,@,"`R("TQ(#`@,"`P(#`N
- XM,#`P(#`@,"`P"@D@,C$Y(#(Q-"`R,30@,3DX(#0U-"`Q,3$@-CDU(#(P,"`V
- XM.#D@,C$T(#0U-"`Q,CD@,C$Y(#(Q-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#0V.2`Q-3D@-3,T(#$U.2`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,W-"`Q-3D@-#,Y(#$U
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0R
- XM.2`Q,SD@-#<Y(#$S.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#,Y.2`Q-#D@-3`T(#$T.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0V.2`Q-CD@-38T(#$V.2`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,T-"`Q-CD@-#,Y
- XM(#$V.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#0V.2`Q-SD@-3@Y(#$W.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#,Q-"`Q-SD@-#,Y(#$W.2`Y.3DY(#DY.3D*,B`Q(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(X.2`Q.#D@-C$Y(#$X.2`Y.3DY
- XM(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(U.2`Q.3D@
- XM-C0Y(#$Y.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#,X.2`U,#D@-C8Y(#4P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#,X.2`T.3D@-C8Y(#0Y.2`Y.3DY(#DY.3D*,B`Q
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,X.2`T.#D@-C8Y(#0X.2`Y
- XM.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,X.2`T
- XM-SD@-C8Y(#0W.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#,X.2`T-CD@-3,Y(#0V.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#8Q.2`T-CD@-C8Y(#0V.2`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8Q.2`T-3D@-C8Y(#0U
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8Q
- XM.2`T-#D@-C8Y(#0T.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#8Q.2`T,SD@-C8Y(#0S.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8Q.2`T,CD@-C8Y(#0R.2`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8Q.2`T,3D@-C8Y
- XM(#0Q.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#8Q.2`T,#D@-C8Y(#0P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#8Q.2`S.3D@-C8Y(#,Y.2`Y.3DY(#DY.3D*,B`Q(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8Q.2`S.#D@-C8Y(#,X.2`Y.3DY
- XM(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,X.2`S,#D@
- XM-3$Y(#,P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#,X.2`R.3D@-3$Y(#(Y.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#,X.2`R.#D@-3$Y(#(X.2`Y.3DY(#DY.3D*,B`Q
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,X.2`R-SD@-3$Y(#(W.2`Y
- XM.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,X.2`R
- XM-CD@-3$Y(#(V.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#,X.2`R-3D@-3$Y(#(U.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`R,3D@-C8Y(#(Q.2`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`R,CD@-C8Y(#(R
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S
- XM.2`R,SD@-C8Y(#(S.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#(S.2`R-#D@-C8Y(#(T.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`S,3D@-C8Y(#,Q.2`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`S,CD@-C8Y
- XM(#,R.2`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#,R-"`S.#D@,S(T(#4Q.2`S.#0@-3$Y(#,X-"`S.#D@,S(T(#,X.2`Y.3DY
- XM(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`U,3D@
- XM-C8Y(#4Q.2`V-CD@-34T(#(S.2`U-30@,C,Y(#4Q.2`Y.3DY(#DY.3D*,B`R
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4T-"`S.#D@-30T(#0R-"`V
- XM,30@-#(T(#8Q-"`S.#D@-30T(#,X.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#4T-"`T,#`@-C$T(#0P,"`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4T-"`T,3,@-C$T(#0Q
- XM,R`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4U
- XM."`S.#D@-34X(#0R-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#4W,B`S.#D@-3<R(#0R-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4X-B`S.#D@-3@V(#0R-"`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8P,"`S.#D@-C`P
- XM(#0R-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#8P,"`T,CD@-C`P(#0V-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#4X-B`T,CD@-3@V(#0V-"`Y.3DY(#DY.3D*,B`Q(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4W,B`T,CD@-3<R(#0V-"`Y.3DY
- XM(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4U."`T,CD@
- XM-34X(#0V-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#4T-"`T-3,@-C$T(#0U,R`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#4T-"`T-#`@-C$T(#0T,"`Y.3DY(#DY.3D*,B`R
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4T-"`T,CD@-30T(#0V-"`V
- XM,30@-#8T(#8Q-"`T,CD@-30T(#0R.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#,R-"`R.3<@,S@T(#(Y-R`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,V.2`R.#0@,S8Y(#,P
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,S
- XM.2`R.#0@,S,Y(#,P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#,U-"`R.#0@,S4T(#,P.2`Y.3DY(#DY.3D*,B`R(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,R-"`R.#0@,S@T(#(X-"`S.#0@,S`Y
- XM(#,R-"`S,#D@,S(T(#(X-"`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#,R-"`R-30@,S@T(#(U-"`S.#0@,C<Y(#,R-"`R-SD@
- XM,S(T(#(U-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#,U-"`R-30@,S4T(#(W.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#,S.2`R-30@,S,Y(#(W.2`Y.3DY(#DY.3D*,B`Q
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,V.2`R-30@,S8Y(#(W.2`Y
- XM.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#,R-"`R
- XM-C<@,S@T(#(V-R`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#4R-"`R-C<@-3@T(#(V-R`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#4V.2`R-30@-38Y(#(W.2`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4S.2`R-30@-3,Y(#(W
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4U
- XM-"`R-30@-34T(#(W.2`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#4R-"`R-30@-3@T(#(U-"`U.#0@,C<Y(#4R-"`R-SD@-3(T
- XM(#(U-"`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#4R-"`R.#0@-3@T(#(X-"`U.#0@,S`Y(#4R-"`S,#D@-3(T(#(X-"`Y.3DY
- XM(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4U-"`R.#0@
- XM-34T(#,P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#4S.2`R.#0@-3,Y(#,P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#4V.2`R.#0@-38Y(#,P.2`Y.3DY(#DY.3D*,B`Q
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4R-"`R.3<@-3@T(#(Y-R`Y
- XM.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4X.2`R
- XM-3D@-C8Y(#(U.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#4X.2`R-CD@-C8Y(#(V.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#4X.2`R-SD@-C8Y(#(W.2`Y.3DY(#DY.3D*
- XM,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4X.2`R.#D@-C8Y(#(X
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4X
- XM.2`R.3D@-C8Y(#(Y.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#4X.2`S,#D@-C8Y(#,P.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`T-CD@,S$Y(#0V.2`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`T-SD@,S$Y
- XM(#0W.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#(S.2`T.#D@,S$Y(#0X.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#(S.2`T.3D@,S$Y(#0Y.2`Y.3DY(#DY.3D*,B`Q(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`U,#D@,S$Y(#4P.2`Y.3DY
- XM(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`R-3D@
- XM,S$Y(#(U.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#(S.2`R-CD@,S$Y(#(V.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#(S.2`R-SD@,S$Y(#(W.2`Y.3DY(#DY.3D*,B`Q
- XM(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`R.#D@,S$Y(#(X.2`Y
- XM.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S.2`R
- XM.3D@,S$Y(#(Y.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#(S.2`S,#D@,S$Y(#,P.2`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#0S.2`Q-30@-#,Y(#$X-"`T-CD@,3@T(#0V
- XM.2`Q-30@-#,Y(#$U-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#0T-"`Q-3D@-#8T(#$U.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0T-"`Q-C0@-#8T(#$V-"`Y.3DY(#DY
- XM.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0T-"`Q-CD@-#8T
- XM(#$V.2`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)
- XM(#0T-"`Q-S0@-#8T(#$W-"`Y.3DY(#DY.3D*,B`Q(#`@,2`M,2`P(#`@,"`P
- XG+C`P,"`P(#`@,`H)(#0T-"`Q-SD@-#8T(#$W.2`Y.3DY(#DY.3D*
- X`
- Xend
- END_OF_FILE
- if test 13167 -ne `wc -c <'Examples/house_elev.fig.uu'`; then
- echo shar: \"'Examples/house_elev.fig.uu'\" unpacked with wrong size!
- fi
- # end of 'Examples/house_elev.fig.uu'
- fi
- if test -f 'Examples/office.fig.uu' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Examples/office.fig.uu'\"
- else
- echo shar: Extracting \"'Examples/office.fig.uu'\" \(13043 characters\)
- sed "s/^X//" >'Examples/office.fig.uu' <<'END_OF_FILE'
- Xbegin 444 office.fig
- XM(T9)1R`R+C$*.#`@,@HR(#,@,"`Q("TQ(#`@,"`Y(#`N,#`P(#`@,"`P"@D@
- XM-C0V(#$P-2`V-#$@,3`X(#8S-B`Q,#4@-C,V(#DS(#8T,2`Y,"`V-#8@.3,@
- XM-C0V(#$P-2`Y.3DY(#DY.3D*,B`S(#`@,2`M,2`P(#`@.2`P+C`P,"`P(#`@
- XM,`H)(#,W.2`U,#$@,S<T(#4P-"`S-CD@-3`Q(#,V.2`T.#D@,S<T(#0X-B`S
- XM-SD@-#@Y(#,W.2`U,#$@.3DY.2`Y.3DY"C(@,R`P(#$@+3$@,"`P(#D@,"XP
- XM,#`@,"`P(#`*"2`S,3,@-3`R(#,P."`U,#4@,S`S(#4P,B`S,#,@-#DP(#,P
- XM."`T.#<@,S$S(#0Y,"`S,3,@-3`R(#DY.3D@.3DY.0HR(#,@,"`Q("TQ(#`@
- XM,"`Y(#`N,#`P(#`@,"`P"@D@,C<W(#$P-B`R-S(@,3`Y(#(V-R`Q,#8@,C8W
- XM(#DT(#(W,B`Y,2`R-S<@.30@,C<W(#$P-B`Y.3DY(#DY.3D*,B`S(#`@,2`M
- XM,2`P(#`@.2`P+C`P,"`P(#`@,`H)(#<Q,"`X,"`W,#4@.#,@-S`P(#@P(#<P
- XM,"`V."`W,#4@-C4@-S$P(#8X(#<Q,"`X,"`Y.3DY(#DY.3D*,B`S(#`@,2`M
- XM,2`P(#`@.2`P+C`P,"`P(#`@,`H)(#0Q-"`Q,#`@-#`Y(#$P,R`T,#0@,3`P
- XM(#0P-"`X."`T,#D@.#4@-#$T(#@X(#0Q-"`Q,#`@.3DY.2`Y.3DY"C(@,R`P
- XM(#$@+3$@,"`P(#D@,"XP,#`@,"`P(#`*"2`S-#@@,3(T(#,T,R`Q,C<@,S,X
- XM(#$R-"`S,S@@,3$R(#,T,R`Q,#D@,S0X(#$Q,B`S-#@@,3(T(#DY.3D@.3DY
- XM.0HR(#,@,"`Q("TQ(#`@,"`Y(#`N,#`P(#`@,"`P"@D@-#4Y(#4P,B`T-C(@
- XM-3`W(#0U.2`U,3(@-#0W(#4Q,B`T-#0@-3`W(#0T-R`U,#(@-#4Y(#4P,B`Y
- XM.3DY(#DY.3D*,B`S(#`@,2`M,2`P(#`@.2`P+C`P,"`P(#`@,`H)(#4P.2`U
- XM,#(@-3$R(#4P-R`U,#D@-3$R(#0Y-R`U,3(@-#DT(#4P-R`T.3<@-3`R(#4P
- XM.2`U,#(@.3DY.2`Y.3DY"C(@,R`P(#$@+3$@,"`P(#D@,"XP,#`@,"`P(#`*
- XM"2`U.2`U-"`V,B`U.2`U.2`V-"`T-R`V-"`T-"`U.2`T-R`U-"`U.2`U-"`Y
- XM.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8W,"`R
- XM,C$@-C@X(#(R,2`V.#@@,C,Q(#8W,"`R,S$@-C<P(#(R,2`Y.3DY(#DY.3D*
- XM,B`T(#`@,2`M,2`P(#`@,"`P+C`P,"`T(#`@,`H)(#4T.2`W.2`U-#D@-CD@
- XM-38T(#8Y(#4V-"`W.2`U-#D@-SD@.3DY.2`Y.3DY"C(@,B`P(#$@+3$@,"`P
- XM(#4@,"XP,#`@,"`P(#`*"2`U,"`U.#`@-C0@-3@P(#8T(#4X-2`U,"`U.#4@
- XM-3`@-3@P(#DY.3D@.3DY.0HR(#(@,"`Q("TQ(#`@,"`U(#`N,#`P(#`@,"`P
- XM"@D@-3,Q(#8R(#4T-2`V,B`U-#4@-C<@-3,Q(#8W(#4S,2`V,B`Y.3DY(#DY
- XM.3D*,B`R(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0R."`T-"`S,C@@
- XM-#0@,S(X(#$T-"`T,C@@,30T(#0R."`T-"`Y.3DY(#DY.3D*,B`R(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(S-"`V,"`R,S0@.#4@,C0T(#@U(#(T
- XM-"`V,"`R,S0@-C`@.3DY.2`Y.3DY"C(@,R`P(#$@+3$@,"`P(#D@,"XP,#`@
- XM,"`P(#`*"2`V,R`U-34@-C8@-38P(#8S(#4V-2`U,2`U-C4@-#@@-38P(#4Q
- XM(#4U-2`V,R`U-34@.3DY.2`Y.3DY"C(@,B`P(#$@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`U-#D@-SD@-38T(#<Y(#4V-"`X-R`U-#D@.#<@-30Y(#<Y(#DY
- XM.3D@.3DY.0HR(#$@,"`U("TQ(#`@,"`P(#`N,#`P(#`@,"`P"@D@-#D@,S`T
- XM(#@Y(#,P-"`Y.3DY(#DY.3D*,B`Q(#`@,R`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#0Y(#,Q.2`X.2`S,3D@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@
- XM,"XP,#`@,"`P(#`*"2`T.2`S,S0@.#D@,S,T(#DY.3D@.3DY.0HR(#$@,"`Q
- XM("TQ(#`@,"`P(#`N,#`P(#`@,"`P"@D@-#D@,S0Y(#@Y(#,T.2`Y.3DY(#DY
- XM.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0S."`Q,34@-#,X
- XM(#$S-"`T-#<@,3,T(#0T-R`Q,34@-#,X(#$Q-2`Y.3DY(#DY.3D*,B`R(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0S,R`Q-3`@-#,S(#$W.2`T-#0@
- XM,3<Y(#0T-"`Q-3`@-#,S(#$U,"`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#0S-"`Q.3D@-#0T(#$Y.2`T-#0@,C`Y(#0S-"`R
- XM,#D@-#,T(#$Y.2`Y.3DY(#DY.3D*,B`Q(#`@-2`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#<Y-"`T,30@-SDT(#4S-"`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#<X.2`T,#0@-SDY(#0P-"`W.3D@-#$T(#<X
- XM.2`T,30@-S@Y(#0P-"`Y.3DY(#DY.3D*,B`Q(#`@-2`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#<Y-"`R,#D@-SDT(#0P-"`Y.3DY(#DY.3D*,B`R(#`@,B`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(X(#0T(#$R."`T-"`Q,C@@,30T(#(X
- XM(#$T-"`R."`T-"`Y.3DY(#DY.3D*,B`R(#`@,B`M,2`P(#`@,"`P+C`P,"`P
- XM(#`@,`H)(#(R."`T-"`Q,C@@-#0@,3(X(#$T-"`R,C@@,30T(#(R."`T-"`Y
- XM.3DY(#DY.3D*,B`R(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(R."`T
- XM-"`S,C@@-#0@,S(X(#$T-"`R,C@@,30T(#(R."`T-"`Y.3DY(#DY.3D*,B`R
- XM(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0R."`T-"`U,C@@-#0@-3(X
- XM(#$T-"`T,C@@,30T(#0R."`T-"`Y.3DY(#DY.3D*,B`R(#`@,B`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#4R."`T-"`U-S@@-#0@-3<X(#$T-"`U,C@@,30T
- XM(#4R."`T-"`Y.3DY(#DY.3D*,B`R(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@
- XM,`H)(#8R."`T-"`U-S@@-#0@-3<X(#$T-"`V,C@@,30T(#8R."`T-"`Y.3DY
- XM(#DY.3D*,B`R(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#8R."`T-"`W
- XM-C@@-#0@-S8X(#(T-"`V,C@@,C0T(#8R."`T-"`Y.3DY(#DY.3D*,B`R(#`@
- XM,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#<Q."`T-"`W-C@@-#0@-S8X(#$R
- XM-"`W,3@@,3(T(#<Q."`T-"`Y.3DY(#DY.3D*,B`Q(#`@,R`M,2`P(#`@,"`P
- XM+C`P,"`P(#`@,`H)(#0T-"`R,#0@-S@Y(#(P-"`Y.3DY(#DY.3D*,B`R(#`@
- XM,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#<X.2`Q.3D@-SDY(#$Y.2`W.3D@
- XM,C`Y(#<X.2`R,#D@-S@Y(#$Y.2`Y.3DY(#DY.3D*,B`Q(#`@-2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#<Y-"`Q.3D@-SDT(#D@.3DY.2`Y.3DY"C(@,B`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R,S0@,3DY(#(T-"`Q.3D@,C0T
- XM(#(P.2`R,S0@,C`Y(#(S-"`Q.3D@.3DY.2`Y.3DY"C(@,2`P(#,@+3$@,"`P
- XM(#`@,"XP,#`@,"`P(#`*"2`R,S0@,C`T(#,Y(#(P-"`Y.3DY(#DY.3D*,B`Q
- XM(#`@,R`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#0S-"`R,#0@,C0T(#(P-"`Y
- XM.3DY(#DY.3D*,B`T(#`@,2`M,2`P(#`@,"`P+C`P,"`T(#`@,`H)(#0R.2`X
- XM-"`T,CD@.3D@-#,Y(#DY(#0S.2`X-"`T,CD@.#0@.3DY.2`Y.3DY"C(@,B`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`T,SD@.#0@-#,Y(#DY(#0T."`Y
- XM.2`T-#@@.#0@-#,Y(#@T(#DY.3D@.3DY.0HR(#(@,"`Q("TQ(#`@,"`P(#`N
- XM,#`P(#`@,"`P"@D@,C`U(#0W(#(P-2`T-R`R,#4@-#<@,C`U(#0W(#(P-2`T
- XM-R`Y.3DY(#DY.3D*,B`T(#`@,2`M,2`P(#`@,"`P+C`P,"`T(#`@,`H)(#<V
- XM-"`X.2`W-30@.#D@-S4T(#<T(#<V-"`W-"`W-C0@.#D@.3DY.2`Y.3DY"C(@
- XM,B`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`W-30@-S0@-S4T(#@Y(#<T
- XM-B`X.2`W-#8@-S0@-S4T(#<T(#DY.3D@.3DY.0HR(#0@,"`Q("TQ(#`@,"`P
- XM(#`N,#`P(#0@,"`P"@D@-3DY(#$Q-"`U.3D@,3`T(#8Q-"`Q,#0@-C$T(#$Q
- XM-"`U.3D@,3$T(#DY.3D@.3DY.0HR(#(@,"`Q("TQ(#`@,"`P(#`N,#`P(#`@
- XM,"`P"@D@-C$T(#$P-"`U.3D@,3`T(#4Y.2`Y-B`V,30@.38@-C$T(#$P-"`Y
- XM.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4Q(#,Y
- XM-B`U,2`T,C$@-C$@-#(Q(#8Q(#,Y-B`U,2`S.38@.3DY.2`Y.3DY"C(@,B`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`U,2`T-3<@-3$@-#,R(#8Q(#0S
- XM,B`V,2`T-3<@-3$@-#4W(#DY.3D@.3DY.0HR(#(@,"`Q("TQ(#`@,"`P(#`N
- XM,#`P(#`@,"`P"@D@-3(@-#<Q(#8R(#0W,2`V,B`T.#$@-3(@-#@Q(#4R(#0W
- XM,2`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4R
- XM(#0Y,R`V,B`T.3,@-C(@-3`S(#4R(#4P,R`U,B`T.3,@.3DY.2`Y.3DY"C(@
- XM,B`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`U,B`U,30@-C(@-3$T(#8R
- XM(#4R-"`U,B`U,C0@-3(@-3$T(#DY.3D@.3DY.0HR(#(@,"`Q("TQ(#`@,"`P
- XM(#`N,#`P(#`@,"`P"@D@-C$T(#0U-"`V,C0@-#4T(#8R-"`T-C0@-C$T(#0V
- XM-"`V,30@-#4T(#DY.3D@.3DY.0HR(#(@,"`Q("TQ(#`@,"`P(#`N,#`P(#`@
- XM,"`P"@D@-C$T(#0V.2`U.#D@-#8Y(#4X.2`T-SD@-C$T(#0W.2`V,30@-#8Y
- XM(#DY.3D@.3DY.0HR(#$@,"`R("TQ(#`@,"`P(#`N,#`P(#`@,"`P"@D@-#<T
- XM(#0V.2`T-S0@-3(T(#DY.3D@.3DY.0HR(#$@,"`R("TQ(#`@,"`P(#`N,#`P
- XM(#`@,"`P"@D@-#0T(#0V.2`U,30@-#8Y(#DY.3D@.3DY.0HR(#$@,"`R("TQ
- XM(#`@,"`P(#`N,#`P(#`@,"`P"@D@,S<Y(#0V.2`S.#D@-#8Y(#,X.2`U,C0@
- XM.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`S,C0@
- XM-#8Y(#,R-"`U,C0@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`R.#D@-#8Y(#,U-"`T-CD@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@
- XM,"`P(#`@,"XP,#`@,"`P(#`*"2`U,SD@-#8Y(#4S.2`U,C0@.3DY.2`Y.3DY
- XM"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`U,S0@-#0T(#8S-"`T
- XM-#0@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R
- XM.#D@-#0T(#4P-"`T-#0@-3`T(#0P-"`Y.3DY(#DY.3D*,B`Q(#`@,B`M,2`P
- XM(#`@,"`P+C`P,"`P(#`@,`H)(#(V-"`T-#0@,C`T(#0T-"`Y.3DY(#DY.3D*
- XM,B`Q(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(V-"`U,C0@,C8T(#0W
- XM.2`Y.3DY(#DY.3D*,B`Q(#`@,B`M,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#(V
- XM-"`T,S0@,C8T(#0U-"`Y.3DY(#DY.3D*,B`Q(#`@,B`M,2`P(#`@,"`P+C`P
- XM,"`P(#`@,`H)(#(V-"`S-C0@,C8T(#0P.2`Y.3DY(#DY.3D*,B`R(#`@,2`M
- XM,2`P(#`@,"`P+C`P,"`P(#`@,`H)(#4Y(#(T.2`U.2`R-C0@-S0@,C8T(#<T
- XM(#(T.2`U.2`R-#D@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@
- XM,"`P(#`*"2`S.30@,S8T(#,Y-"`T-#0@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@
- XM,"`P(#`@,"XP,#`@,"`P(#`*"2`R.#D@,S8T(#(X.2`T,3D@.3DY.2`Y.3DY
- XM"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`S,SD@,S8T(#,S.2`T
- XM,3D@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P(#`*"2`R
- XM-C0@,S8T(#(X-"`S-#D@.3DY.2`Y.3DY"C(@,2`P(#(@+3$@,"`P(#`@,"XP
- XM,#`@,"`P(#`*"2`R-C0@,S8T(#(P-"`S-C0@,C`T(#4R-"`V,S0@-3(T(#8S
- XM-"`S-C0@-3(Y(#,V-"`U,#D@,S0Y(#DY.3D@.3DY.0HR(#$@,"`R("TQ(#`@
- XM,"`P(#`N,#`P(#`@,"`P"@D@-3`T(#,V-"`R.#D@,S8T(#DY.3D@.3DY.0HR
- XM(#0@,"`Q("TQ(#`@,"`P(#`N,#`P(#0@,"`P"@D@-C,@,S8Y(#8S(#,W.2`T
- XM."`S-SD@-#@@,S8Y(#8S(#,V.2`Y.3DY(#DY.3D*,B`R(#`@,2`M,2`P(#`@
- XM,"`P+C`P,"`P(#`@,`H)(#0X(#,W.2`V,R`S-SD@-C,@,S@W(#0X(#,X-R`T
- XM."`S-SD@.3DY.2`Y.3DY"C,@,"`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P"@D@
- XM-S4Q(#@Y(#<U-"`R,S0@-C@Q(#(S.2`V-SD@,C,Q(#DY.3D@.3DY.0HS(#`@
- XM,"`Q("TQ(#`@,"`P(#`N,#`P(#`@,`H)(#4S."`V-R`U,S@@.#(@-30Y(#@S
- XM(#DY.3D@.3DY.0HS(#`@,"`Q("TQ(#`@,"`P(#`N,#`P(#`@,`H)(#<P-2`V
- XM-2`W,#4@,34@-#<U(#$P(#0T-2`U-"`T-#0@.#0@.3DY.2`Y.3DY"C,@,"`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P"@D@-#$T(#DT(#0R,B`Y-"`T,C0@,3`Y
- XM(#0T-2`Q,#D@-#0T(#DY(#DY.3D@.3DY.0HS(#`@,"`Q("TQ(#`@,"`P(#`N
- XM,#`P(#`@,`H)(#(T-"`W,"`S,3<@-S(@,S$R(#$R(#8T,"`Q.2`V-#$@.3$@
- XM.3DY.2`Y.3DY"C,@,"`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P"@D@,C0T(#<W
- XM(#,P.2`W."`S,#D@,3$X(#,S."`Q,3@@.3DY.2`Y.3DY"C,@,"`P(#$@+3$@
- XM,"`P(#`@,"XP,#`@,"`P"@D@,C0T(#8S(#(U."`V,R`R-38@,3<@-3,@,C,@
- XM-30@-30@.3DY.2`Y.3DY"C,@,"`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P"@D@
- XM,C0T(#@R(#(U.2`X,R`R-3@@,3`P(#(V-R`Q,#`@.3DY.2`Y.3DY"C,@,"`P
- XM(#$@+3$@,"`P(#`@,"XP,#`@,"`P"@D@-C$Q(#0W.2`V,#4@-34R(#0U,B`U
- XM-C,@,S,Q(#4U-R`S,SD@-#DX(#,Q,R`T.38@.3DY.2`Y.3DY"C,@,"`P(#$@
- XM+3$@,"`P(#`@,"XP,#`@,"`P"@D@-C`U(#0W.2`U.3D@-30U(#0P,"`U-3$@
- XM-#`U(#0Y-2`S-SD@-#DU(#DY.3D@.3DY.0HS(#`@,"`Q("TQ(#`@,"`P(#`N
- XM,#`P(#`@,`H)(#4Y.2`T-SD@-3DU(#4S-"`T-3(@-3,U(#0U,R`U,3(@.3DY
- XM.2`Y.3DY"C,@,"`P(#$@+3$@,"`P(#`@,"XP,#`@,"`P"@D@-3DS(#0W.2`U
- XM.#8@-3$W(#4P-B`U,3@@-3`S(#4Q,B`Y.3DY(#DY.3D*,R`P(#`@,B`M,2`P
- XM(#`@,"`P+C`P,"`P(#`*"2`T-#0@,3<W(#0W,B`Q.#$@-#8W(#(U-2`W-"`R
- XM-30@.3DY.2`Y.3DY"C,@,"`P(#(@+3$@,"`P(#`@,"XP,#`@,"`P"@D@-#0T
- XM(#$U-"`T-CD@,30V(#0V.2`Q,C<@-#0W(#$R,R`Y.3DY(#DY.3D*,R`P(#`@
- XM,B`M,2`P(#`@,"`P+C`P,"`P(#`*"2`T-#@@.3(@-#DP(#DY(#0Y,"`Q-#4@
- XM-#0T(#$U.2`Y.3DY(#DY.3D*,R`P(#`@,R`M,2`P(#`@,"`P+C`P,"`P(#`*
- XM"2`T,SD@,3<Y(#0S-2`Q.#@@-#0R(#$Y-"`T,SD@,3DY(#DY.3D@.3DY.0HS
- XM(#`@,"`R("TQ(#`@,"`P(#`N,#`P(#`@,`H)(#0T-"`Q-S,@-C4P(#$W-2`V
- XM.3`@,3(T(#<R-R`W.2`W-#8@.#(@.3DY.2`Y.3DY"C,@,"`P(#(@+3$@,"`P
- XM(#`@,"XP,#`@,"`P"@D@-#0T(#$V.2`U,C`@,38P(#4U-B`Q,CD@-3@V(#@V
- XM(#8P,2`X-2`V,#<@.38@.3DY.2`Y.3DY"C,@,"`P(#(@+3$@,"`P(#`@,"XP
- XM,#`@,"`P"@D@-34V(#@W(#4T-"`Q,30@-#DX(#$U,2`T-#0@,38T(#DY.3D@
- XM.3DY.0HS(#`@,"`S("TQ(#`@,"`P(#`N,#`P(#`@,`H)(#(S.2`X-"`R-38@
- XM,3(V(#(R-R`Q-3@@,C,Y(#$X-"`R,SD@,3DY(#DY.3D@.3DY.0HS(#`@,"`R
- XM("TQ(#`@,"`P(#`N,#`P(#`@,`H)(#<X.2`T,#D@-S$Y(#,Y.2`V.#D@-#8T
- XM(#8R-"`T-3D@.3DY.2`Y.3DY"C,@,"`P(#,@+3$@,"`P(#`@,"XP,#`@,"`P
- XM"@D@-C$T(#0U.2`V,#$@-#4X(#4Y.2`T-CD@.3DY.2`Y.3DY"C0@,"`P(#$R
- XM(#`@+3$@,"`P+C`P,"`T(#D@,S`@-#<Y(#0X-"!X-C0V.`$*-"`P(#`@,3(@
- XM,"`M,2`P(#`N,#`P(#0@.2`S,"`T,S0@-#@T('@W-#<V`0HT(#`@,"`Q,B`P
- XM("TQ(#`@,"XP,#`@-"`Y(#,P(#,Y-"`T.#0@>#8T.#@!"C0@,"`P(#$R(#`@
- XM+3$@,"`P+C`P,"`T(#D@,S`@,S(Y(#0X-"!X-S0W,@$*-"`P(#`@,3(@,"`M
- XM,2`P(#`N,#`P(#0@.2`Q,B`S,#(@-3$W(#`S`0HT(#`@,"`Q,B`P("TQ(#`@
- XM,"XP,#`@-"`Y(#$R(#,W,"`U,3<@,#(!"C0@,"`P(#$R(#`@+3$@,"`P+C`P
- XM,"`T(#D@,3(@-#0W(#0Y."`P,0$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@
- XM.2`R-B`T.34@-#DW($-/3@$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`Q
- XM,B`V.3(@,C(Y(#`S`0HT(#`@,"`Q,B`P("TQ(#`@,"XP,#`@-"`Y(#,S(#8U
- XM-B`R,3<@1&EA8FQO`0HT(#`@,"`Q,B`P("TQ(#`@,"XP,#`@-"`Y(#$R(#4S
- XM-2`Y,R`P,@$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`S."`W."`U.#@@
- XM36]D96T!"C0@,"`P(#$R(#`@+3$@,"`P+C`P,"`T(#D@,3(@-#`S(#$Q-B`P
- XM,@$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`Q,B`V-3$@,3`S(#`Q`0HT
- XM(#`@,"`Q,B`P("TQ(#`@,"XP,#`@-"`Y(#$R(#0X(#<W(#`S`0HT(#`@,"`Q
- XM,B`P("TQ(#`@,"XP,#`@-"`Y(#$R(#,S."`Q,#8@,#`!"C0@,"`P(#$R(#`@
- XM+3$@,"`P+C`P,"`T(#D@,C8@,C8P(#$R,B!#3TX!"C0@,"`P(#$R(#`@+3$@
- XM,"`P+C`P,"`T(#D@,3(@-C@U(#<X(#`S`0HT(#`@,"`Q,B`P("TQ(#`@,"XP
- XM,#`@-"`Y(#0T(#<V(#4V-"!497)M:6YA;`$*-"`P(#`@,3(@,"`M,2`P(#`N
- XM,#`P(#0@.2`W-"`Y.2`S-#D@1'5M8B!T97)M:6YA;`$*-"`P(#`@,3(@,"`M
- XM,2`P(#`N,#`P(#0@.2`W-2`Y.2`S,S0@5&AI;FYE="!S=6)N970!"C0@,"`P
- XM(#$R(#`@+3$@,"`P+C`P,"`T(#D@.#`@.3D@,S$Y(%1H:6-K;F5T('-U8FYE
- XM=`$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`W."`Y.2`S,#0@36%I;B!"
- XM86-K8F]N90$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`Q-B`T-3(@,3(P
- XM($%4`0HT(#`@,"`Q,B`P("TQ(#`@,"XP,#`@-"`Y(#<@-S<Y(#0P-"!4`0HT
- XM(#`@,"`Q,B`P("TQ(#`@,"XP,#`@-"`Y(#(P(#0P-B`Q-CD@1$T!"C0@,"`P
- XM(#$R(#`@+3$@,"`P+C`P,"`T(#D@,C0@-C8@-3D@,S`X.`$*-"`P(#`@,3(@
- XM,"`M,2`P(#`N,#`P(#0@.2`R-"`Q-C,@-3D@,S`X-@$*-"`P(#`@,3(@,"`M
- XM,2`P(#`N,#`P(#0@.2`R-"`R-C,@-3D@,S`X-`$*-"`P(#`@,3(@,"`M,2`P
- XM(#`N,#`P(#0@.2`R-"`S-C,@-3D@,S`X,@$*-"`P(#`@,3(@,"`M,2`P(#`N
- XM,#`P(#0@.2`R-"`T-C,@-3D@,S`X,`$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P
- XM(#0@.2`R-"`U-#(@-3D@,S`W.`$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@
- XM.2`R-"`U.#@@-3D@,S`W-@$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`R
- XM-"`V-3@@-3D@,S`W-`$*-"`P(#`@,3(@,"`M,2`P(#`N,#`P(#0@.2`S,R`W
- XM,C@@-3D@,S`W-$$!"C0@,"`P(#$R(#`@+3$@,"`P+C`P,"`T(#D@."`W-SD@
- XM,3DT($(!"C0@,"`P(#$R(#`@+3$@,"`P+C`P,"`T(#D@-R`R,C0@,3DY(%0!
- XM"C0@,"`P(#$R(#`@+3$@,"`P+C`P,"`T(#D@-R`T,C0@,3DY(%0!"C0@,"`P
- XM(#$R(#`@+3$@,"`P+C`P,"`T(#D@-C<@-SD@-#$V(%9A>'-T871I;VX@24D!
- XM"C0@,"`P(#$R(#`@+3$@,"`P+C`P,"`T(#D@,C`@,C8@-#0Y($1-`0HT(#`@
- XM,"`Q,B`P("TQ(#`@,"XP,#`@-"`Y(#0S(#<X(#0T."!$14U04@$*-"`P(#`@
- XM,3(@,"`M,2`P(#`N,#`P(#0@.2`W(#,U(#0X,"!4`0HT(#`@,"`Q,B`P("TQ
- XM(#`@,"XP,#`@-"`Y(#4S(#<V(#0W.2!4<F%N8V5I=F5R`0HT(#`@,"`Q,B`P
- XM("TQ(#`@,"XP,#`@-"`Y(#@@,S4@-3`R($(!"C0@,"`P(#$R(#`@+3$@,"`P
- XM+C`P,"`T(#D@,3,@,S(@-3(S(%1H`0HT(#`@,"`Q,B`P("TQ(#`@,"XP,#`@
- XM-"`Q,B`S,R`W-B`U,#$@0G)I9&=E`0HT(#`@,"`Q,B`P("TQ(#`@,"XP,#`@
- XM-"`Y(#4Q(#<V(#4S."!T;R!4:&EN;F5T`0HT(#`@,"`Q,B`P("TQ(#`@,"XP
- XM,#`@-"`Y(#@T(#<V(#4R,R!88V5I=F5R(%1H:6-K;F5T`0HT(#`@,"`Q,B`P
- XM("TQ(#`@,"XP,#`@-"`Y(#$S(#4Y-R`T-34@5&@!"C0@,"`P(#$R(#`@+3$@
- XM,"`P+C`P,"`T(#D@-#,@-#(@,C0T(%-U;B`S+S8P`0HT(#`@,"`Q,B`P("TQ
- XH(#`@,"XP,#`@-"`Y(#@S(#<X(#,X."!687AS=&%T:6]N(#(P,#`!"B`P
- X`
- Xend
- END_OF_FILE
- if test 13043 -ne `wc -c <'Examples/office.fig.uu'`; then
- echo shar: \"'Examples/office.fig.uu'\" unpacked with wrong size!
- fi
- # end of 'Examples/office.fig.uu'
- fi
- if test -f 'e_rotate.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'e_rotate.c'\"
- else
- echo shar: Extracting \"'e_rotate.c'\" \(11790 characters\)
- sed "s/^X//" >'e_rotate.c' <<'END_OF_FILE'
- X/*
- X * FIG : Facility for Interactive Generation of figures
- X * Copyright (c) 1985 by Supoj Sutanthavibul
- X *
- X * "Permission to use, copy, modify, distribute, and sell this software and its
- X * documentation for any purpose is hereby granted without fee, provided that
- X * the above copyright notice appear in all copies and that both the copyright
- X * notice and this permission notice appear in supporting documentation.
- X * No representations are made about the suitability of this software for
- X * any purpose. It is provided "as is" without express or implied warranty."
- X */
- X
- X#include "fig.h"
- X#include "resources.h"
- X#include "mode.h"
- X#include "object.h"
- X#include "paintop.h"
- X#include "u_draw.h"
- X#include "u_search.h"
- X#include "u_create.h"
- X#include "u_list.h"
- X#include "w_canvas.h"
- X#include "w_mousefun.h"
- X
- Xextern float compute_angle();
- X
- Xstatic int copy;
- Xstatic int rotn_dirn;
- Xstatic int init_rotate();
- Xstatic int init_copynrotate();
- Xstatic int rotate_selected();
- Xstatic int rotate_search();
- Xstatic int init_rotateline();
- Xstatic int init_rotatetext();
- X
- Xrotate_cw_selected()
- X{
- X rotn_dirn = 1;
- X rotate_selected();
- X}
- X
- Xrotate_ccw_selected()
- X{
- X rotn_dirn = -1;
- X rotate_selected();
- X}
- X
- Xstatic
- Xrotate_selected()
- X{
- X set_mousefun("rotate object", "copy & rotate", "");
- X canvas_kbd_proc = null_proc;
- X canvas_locmove_proc = null_proc;
- X init_searchproc_left(init_rotate);
- X init_searchproc_middle(init_copynrotate);
- X canvas_leftbut_proc = object_search_left;
- X canvas_middlebut_proc = object_search_middle;
- X canvas_rightbut_proc = null_proc;
- X set_cursor(pick15_cursor);
- X}
- X
- Xstatic
- Xinit_rotate(p, type, x, y, px, py)
- X char *p;
- X int type;
- X int x, y;
- X int px, py;
- X{
- X copy = 0;
- X rotate_search(p, type, x, y, px, py);
- X}
- X
- Xstatic
- Xinit_copynrotate(p, type, x, y, px, py)
- X char *p;
- X int type;
- X int x, y;
- X int px, py;
- X{
- X copy = 1;
- X rotate_search(p, type, x, y, px, py);
- X}
- X
- Xstatic
- Xrotate_search(p, type, x, y, px, py)
- X char *p;
- X int type;
- X int x, y;
- X int px, py;
- X{
- X switch (type) {
- X case O_POLYLINE:
- X cur_l = (F_line *) p;
- X init_rotateline(cur_l, px, py);
- X break;
- X case O_ARC:
- X cur_a = (F_arc *) p;
- X init_rotatearc(cur_a, px, py);
- X break;
- X case O_ELLIPSE:
- X cur_e = (F_ellipse *) p;
- X init_rotateellipse(cur_e, px, py);
- X break;
- X case O_SPLINE:
- X cur_s = (F_spline *) p;
- X init_rotatespline(cur_s, px, py);
- X break;
- X case O_TEXT:
- X cur_t = (F_text *) p;
- X init_rotatetext(cur_t, px, py);
- X break;
- X case O_COMPOUND:
- X cur_c = (F_compound *) p;
- X init_rotatecompound(cur_c, px, py);
- X break;
- X default:
- X return;
- X }
- X}
- X
- Xstatic
- Xinit_rotateline(l, px, py)
- X F_line *l;
- X int px, py;
- X{
- X F_line *line;
- X
- X set_temp_cursor(wait_cursor);
- X line = copy_line(l);
- X rotate_line(line, px, py, rotn_dirn);
- X if (copy) {
- X add_line(line);
- X } else {
- X toggle_linemarker(l);
- X draw_line(l, ERASE);
- X change_line(l, line);
- X }
- X draw_line(line, PAINT);
- X toggle_linemarker(line);
- X reset_cursor();
- X}
- X
- Xstatic
- Xinit_rotatetext(t, px, py)
- X F_text *t;
- X int px, py;
- X{
- X F_text *text;
- X
- X set_temp_cursor(wait_cursor);
- X text = copy_text(t);
- X rotate_text(text, px, py, rotn_dirn);
- X if (copy) {
- X add_text(text);
- X } else {
- X toggle_textmarker(t);
- X draw_text(t, ERASE);
- X change_text(t, text);
- X }
- X draw_text(text, PAINT);
- X toggle_textmarker(text);
- X reset_cursor();
- X}
- X
- Xinit_rotateellipse(e, px, py)
- X F_ellipse *e;
- X int px, py;
- X{
- X F_ellipse *ellipse;
- X
- X set_temp_cursor(wait_cursor);
- X ellipse = copy_ellipse(e);
- X rotate_ellipse(ellipse, px, py, rotn_dirn);
- X if (copy) {
- X add_ellipse(ellipse);
- X } else {
- X toggle_ellipsemarker(e);
- X draw_ellipse(e, ERASE);
- X change_ellipse(e, ellipse);
- X }
- X draw_ellipse(ellipse, PAINT);
- X toggle_ellipsemarker(ellipse);
- X reset_cursor();
- X}
- X
- Xinit_rotatearc(a, px, py)
- X F_arc *a;
- X int px, py;
- X{
- X F_arc *arc;
- X
- X set_temp_cursor(wait_cursor);
- X arc = copy_arc(a);
- X rotate_arc(arc, px, py, rotn_dirn);
- X if (copy) {
- X add_arc(arc);
- X } else {
- X toggle_arcmarker(a);
- X draw_arc(a, ERASE);
- X change_arc(a, arc);
- X }
- X draw_arc(arc, PAINT);
- X toggle_arcmarker(arc);
- X reset_cursor();
- X}
- X
- Xinit_rotatespline(s, px, py)
- X F_spline *s;
- X int px, py;
- X{
- X F_spline *spline;
- X
- X set_temp_cursor(wait_cursor);
- X spline = copy_spline(s);
- X rotate_spline(spline, px, py, rotn_dirn);
- X if (copy) {
- X add_spline(spline);
- X } else {
- X toggle_splinemarker(s);
- X draw_spline(s, ERASE);
- X change_spline(s, spline);
- X }
- X draw_spline(spline, PAINT);
- X toggle_splinemarker(spline);
- X reset_cursor();
- X}
- X
- Xinit_rotatecompound(c, px, py)
- X F_compound *c;
- X int px, py;
- X{
- X F_compound *compound;
- X
- X if (!valid_rot_angle(c)) {
- X put_msg("Invalid rotation angle for this compound object");
- X return;
- X }
- X
- X set_temp_cursor(wait_cursor);
- X compound = copy_compound(c);
- X rotate_compound(compound, px, py, rotn_dirn);
- X if (copy) {
- X add_compound(compound);
- X } else {
- X toggle_compoundmarker(c);
- X draw_compoundelements(c, ERASE);
- X change_compound(c, compound);
- X }
- X draw_compoundelements(compound, PAINT);
- X toggle_compoundmarker(compound);
- X reset_cursor();
- X}
- X
- Xrotate_line(l, x, y, rotn_dirn)
- X F_line *l;
- X int x, y, rotn_dirn;
- X{
- X F_point *p;
- X int dx;
- X
- X /* for speed we treat 90 degrees as a special case */
- X if (cur_rotnangle == 90) {
- X for (p = l->points; p != NULL; p = p->next) {
- X dx = p->x - x;
- X p->x = x + rotn_dirn * (y - p->y);
- X p->y = y + rotn_dirn * dx;
- X }
- X } else {
- X for (p = l->points; p != NULL; p = p->next)
- X rotate_point(p, x, y, rotn_dirn);
- X }
- X}
- X
- Xrotate_spline(s, x, y, rotn_dirn)
- X F_spline *s;
- X int x, y, rotn_dirn;
- X{
- X F_point *p;
- X F_control *cp;
- X int dx;
- X
- X /* for speed we treat 90 degrees as a special case */
- X if (cur_rotnangle == 90) {
- X for (p = s->points; p != NULL; p = p->next) {
- X dx = p->x - x;
- X p->x = x + rotn_dirn * (y - p->y);
- X p->y = y + rotn_dirn * dx;
- X }
- X for (cp = s->controls; cp != NULL; cp = cp->next) {
- X dx = cp->lx - x;
- X cp->lx = x + rotn_dirn * (y - cp->ly);
- X cp->ly = y + rotn_dirn * dx;
- X dx = cp->rx - x;
- X cp->rx = x + rotn_dirn * (y - cp->ry);
- X cp->ry = y + rotn_dirn * dx;
- X }
- X } else {
- X for (p = s->points; p != NULL; p = p->next)
- X rotate_point(p, x, y, rotn_dirn);
- X if (int_spline(s))
- X remake_control_points(s);
- X }
- X}
- X
- Xrotate_text(t, x, y, rotn_dirn)
- X F_text *t;
- X int x, y, rotn_dirn;
- X{
- X int dx;
- X
- X if (cur_rotnangle == 90) { /* treat 90 degs as special case for speed */
- X dx = t->base_x - x;
- X t->base_x = x + rotn_dirn * (y - t->base_y);
- X t->base_y = y + rotn_dirn * dx;
- X } else {
- X rotate_xy(&t->base_x, &t->base_y, x, y, rotn_dirn);
- X }
- X t->angle -= (float) (rotn_dirn * cur_rotnangle * M_PI / 180.0);
- X if (t->angle < 0.0)
- X t->angle += M_2PI;
- X else if (t->angle >= M_2PI - 0.001)
- X t->angle -= M_2PI;
- X reload_text_fstruct(t);
- X}
- X
- Xrotate_ellipse(e, x, y, rotn_dirn)
- X F_ellipse *e;
- X int x, y, rotn_dirn;
- X{
- X int dxc,dxs,dxe;
- X
- X if (cur_rotnangle == 90) { /* treat 90 degs as special case for speed */
- X dxc = e->center.x - x;
- X dxs = e->start.x - x;
- X dxe = e->end.x - x;
- X e->center.x = x + rotn_dirn * (y - e->center.y);
- X e->center.y = y + rotn_dirn * dxc;
- X e->start.x = x + rotn_dirn * (y - e->start.y);
- X e->start.y = y + rotn_dirn * dxs;
- X e->end.x = x + rotn_dirn * (y - e->end.y);
- X e->end.y = y + rotn_dirn * dxe;
- X } else {
- X rotate_point(&e->center, x, y, rotn_dirn);
- X rotate_point(&e->start, x, y, rotn_dirn);
- X rotate_point(&e->end, x, y, rotn_dirn);
- X }
- X e->angle -= (float) (rotn_dirn * cur_rotnangle * M_PI / 180);
- X if (e->angle < 0.0)
- X e->angle += M_2PI;
- X else if (e->angle >= M_2PI - 0.001)
- X e->angle -= M_2PI;
- X}
- X
- Xrotate_arc(a, x, y, rotn_dirn)
- X F_arc *a;
- X int x, y, rotn_dirn;
- X{
- X int dx;
- X F_pos p[3];
- X float xx, yy;
- X
- X /* for speed we treat 90 degrees as a special case */
- X if (cur_rotnangle == 90) {
- X dx = a->center.x - x;
- X a->center.x = x + rotn_dirn * (y - a->center.y);
- X a->center.y = y + rotn_dirn * dx;
- X dx = a->point[0].x - x;
- X a->point[0].x = x + rotn_dirn * (y - a->point[0].y);
- X a->point[0].y = y + rotn_dirn * dx;
- X dx = a->point[1].x - x;
- X a->point[1].x = x + rotn_dirn * (y - a->point[1].y);
- X a->point[1].y = y + rotn_dirn * dx;
- X dx = a->point[2].x - x;
- X a->point[2].x = x + rotn_dirn * (y - a->point[2].y);
- X a->point[2].y = y + rotn_dirn * dx;
- X } else {
- X p[0] = a->point[0];
- X p[1] = a->point[1];
- X p[2] = a->point[2];
- X rotate_point(&p[0], x, y, rotn_dirn);
- X rotate_point(&p[1], x, y, rotn_dirn);
- X rotate_point(&p[2], x, y, rotn_dirn);
- X if (compute_arccenter(p[0], p[1], p[2], &xx, &yy)) {
- X a->point[0].x = p[0].x;
- X a->point[0].y = p[0].y;
- X a->point[1].x = p[1].x;
- X a->point[1].y = p[1].y;
- X a->point[2].x = p[2].x;
- X a->point[2].y = p[2].y;
- X a->center.x = xx;
- X a->center.y = yy;
- X a->direction = compute_direction(p[0], p[1], p[2]);
- X }
- X }
- X}
- X
- X/* checks to see if the objects within c can be rotated by cur_rotnangle */
- X
- Xvalid_rot_angle(c)
- X F_compound *c;
- X{
- X F_line *l;
- X F_compound *c1;
- X
- X if (cur_rotnangle == 90)
- X return 1; /* always valid */
- X for (l = c->lines; l != NULL; l = l->next)
- X if (l->type == T_ARC_BOX || l->type == T_BOX)
- X return 0;
- X for (c1 = c->compounds; c1 != NULL; c1 = c1->next)
- X if (!valid_rot_angle(c1))
- X return 0;
- X return 1;
- X}
- X
- Xrotate_compound(c, x, y, rotn_dirn)
- X F_compound *c;
- X int x, y, rotn_dirn;
- X{
- X F_line *l;
- X F_arc *a;
- X F_ellipse *e;
- X F_spline *s;
- X F_text *t;
- X F_compound *c1;
- X
- X for (l = c->lines; l != NULL; l = l->next)
- X rotate_line(l, x, y, rotn_dirn);
- X for (a = c->arcs; a != NULL; a = a->next)
- X rotate_arc(a, x, y, rotn_dirn);
- X for (e = c->ellipses; e != NULL; e = e->next)
- X rotate_ellipse(e, x, y, rotn_dirn);
- X for (s = c->splines; s != NULL; s = s->next)
- X rotate_spline(s, x, y, rotn_dirn);
- X for (t = c->texts; t != NULL; t = t->next)
- X rotate_text(t, x, y, rotn_dirn);
- X for (c1 = c->compounds; c1 != NULL; c1 = c1->next)
- X rotate_compound(c1, x, y, rotn_dirn);
- X
- X /*
- X * Make the bounding box exactly match the dimensions of the compound.
- X */
- X compound_bound(c, &c->nwcorner.x, &c->nwcorner.y,
- X &c->secorner.x, &c->secorner.y);
- X}
- X
- Xrotate_point(p, x, y, rotn)
- X F_point *p;
- X int x, y, rotn;
- X{
- X /* rotate point p about coordinate (x, y) */
- X int dx, dy;
- X float cosa, sina, mag, theta;
- X
- X dx = p->x - x;
- X dy = y - p->y;
- X if (dx == 0 && dy == 0)
- X return;
- X
- X theta = compute_angle((float) dx, (float) dy);
- X theta -= (float) (rotn_dirn * cur_rotnangle * M_PI / 180.0);
- X if (theta < 0.0)
- X theta += M_2PI;
- X else if (theta >= M_2PI - 0.001)
- X theta -= M_2PI;
- X mag = sqrt((double) (dx * dx + dy * dy));
- X cosa = mag * cos((double) theta);
- X sina = mag * sin((double) theta);
- X p->x = x + cosa;
- X p->y = y - sina;
- X}
- X
- Xrotate_xy(orig_x, orig_y, x, y, rotn)
- X int *orig_x, *orig_y, x, y, rotn;
- X{
- X /* rotate coord (orig_x, orig_y) about coordinate (x, y) */
- X int dx, dy;
- X float cosa, sina, mag, theta;
- X
- X dx = *orig_x - x;
- X dy = y - *orig_y;
- X if (dx == 0 && dy == 0)
- X return;
- X
- X theta = compute_angle((float) dx, (float) dy);
- X theta -= (float) (rotn_dirn * cur_rotnangle * M_PI / 180.0);
- X if (theta < 0.0)
- X theta += M_2PI;
- X else if (theta >= M_2PI - 0.001)
- X theta -= M_2PI;
- X mag = sqrt((double) (dx * dx + dy * dy));
- X cosa = mag * cos((double) theta);
- X sina = mag * sin((double) theta);
- X *orig_x = x + cosa;
- X *orig_y = y - sina;
- X}
- END_OF_FILE
- if test 11790 -ne `wc -c <'e_rotate.c'`; then
- echo shar: \"'e_rotate.c'\" unpacked with wrong size!
- fi
- # end of 'e_rotate.c'
- fi
- if test -f 'e_update.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'e_update.c'\"
- else
- echo shar: Extracting \"'e_update.c'\" \(12320 characters\)
- sed "s/^X//" >'e_update.c' <<'END_OF_FILE'
- X/*
- X * FIG : Facility for Interactive Generation of figures
- X * Copyright (c) 1985 by Supoj Sutanthavibul
- X *
- X * "Permission to use, copy, modify, distribute, and sell this software and its
- X * documentation for any purpose is hereby granted without fee, provided that
- X * the above copyright notice appear in all copies and that both the copyright
- X * notice and this permission notice appear in supporting documentation.
- X * No representations are made about the suitability of this software for
- X * any purpose. It is provided "as is" without express or implied warranty."
- X */
- X
- X#include "fig.h"
- X#include "resources.h"
- X#include "object.h"
- X#include "mode.h"
- X#include "paintop.h"
- X#include "u_create.h"
- X#include "u_list.h"
- X#include "u_search.h"
- X#include "w_canvas.h"
- X#include "w_drawprim.h"
- X#include "w_indpanel.h"
- X#include "w_mousefun.h"
- X
- Xextern update_current_settings();
- Xstatic int init_update_object();
- Xstatic int init_update_settings();
- X
- X#define up_part(lv,rv,mask) \
- X if (cur_updatemask & (mask)) \
- X (lv) = (rv)
- X
- Xupdate_selected()
- X{
- X set_mousefun("update object", "update settings", "");
- X canvas_kbd_proc = null_proc;
- X canvas_locmove_proc = null_proc;
- X init_searchproc_left(init_update_object);
- X init_searchproc_middle(init_update_settings);
- X canvas_leftbut_proc = object_search_left;
- X canvas_middlebut_proc = object_search_middle;
- X canvas_rightbut_proc = null_proc;
- X set_cursor(pick9_cursor);
- X /* manage on the update buttons */
- X manage_update_buts();
- X}
- X
- Xstatic
- Xget_arrow_mode(object)
- X F_line *object;
- X{
- X if (!object->for_arrow && !object->back_arrow)
- X return L_NOARROWS;
- X else if (object->for_arrow && !object->back_arrow)
- X return L_FARROWS;
- X else if (!object->for_arrow && object->back_arrow)
- X return L_BARROWS;
- X else
- X return L_FBARROWS;
- X}
- X
- Xstatic
- Xinit_update_settings(p, type, x, y, px, py)
- X char *p;
- X int type;
- X int x, y;
- X int px, py;
- X{
- X int old_psfont_flag, new_psfont_flag;
- X
- X switch (type) {
- X case O_COMPOUND:
- X put_msg("There is no support for updating settings from a compound object");
- X return;
- X case O_POLYLINE:
- X cur_l = (F_line *) p;
- X if (cur_l->type != T_EPS_BOX) {
- X up_part(cur_linewidth, cur_l->thickness, I_LINEWIDTH);
- X up_part(cur_fillstyle, cur_l->fill_style, I_FILLSTYLE);
- X up_part(cur_color, cur_l->color, I_COLOR);
- X up_part(cur_linestyle, cur_l->style, I_LINESTYLE);
- X up_part(cur_styleval, cur_l->style_val, I_LINESTYLE);
- X up_part(cur_arrowmode, get_arrow_mode(cur_l), I_ARROWMODE);
- X }
- X up_part(cur_depth, cur_l->depth, I_DEPTH);
- X if (cur_l->type == T_ARC_BOX)
- X up_part(cur_boxradius, cur_l->radius, I_BOXRADIUS);
- X break;
- X case O_TEXT:
- X cur_t = (F_text *) p;
- X up_part(cur_textjust, cur_t->type, I_TEXTJUST);
- X up_part(cur_color, cur_t->color, I_COLOR);
- X up_part(cur_depth, cur_t->depth, I_DEPTH);
- X up_part(cur_elltextangle, cur_t->angle/M_PI*180.0, I_ELLTEXTANGLE);
- X old_psfont_flag = (cur_t->flags & PSFONT_TEXT);
- X new_psfont_flag = (cur_textflags & PSFONT_TEXT);
- X up_part(cur_textflags, cur_t->flags & ~PSFONT_TEXT, I_TEXTFLAGS);
- X if (cur_updatemask & I_FONT)
- X cur_textflags |= new_psfont_flag;
- X else
- X cur_textflags |= old_psfont_flag;
- X if (using_ps)
- X { /* must use {} because macro has 'if' */
- X up_part(cur_ps_font, cur_t->font, I_FONT);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(cur_latex_font, cur_t->font, I_FONT);
- X }
- X up_part(cur_fontsize, cur_t->size, I_FONTSIZE);
- X break;
- X case O_ELLIPSE:
- X cur_e = (F_ellipse *) p;
- X up_part(cur_linewidth, cur_e->thickness, I_LINEWIDTH);
- X up_part(cur_elltextangle, cur_e->angle/M_PI*180.0, I_ELLTEXTANGLE);
- X up_part(cur_fillstyle, cur_e->fill_style, I_FILLSTYLE);
- X up_part(cur_color, cur_e->color, I_COLOR);
- X up_part(cur_linestyle, cur_e->style, I_LINESTYLE);
- X up_part(cur_styleval, cur_e->style_val, I_LINESTYLE);
- X up_part(cur_depth, cur_e->depth, I_DEPTH);
- X break;
- X case O_ARC:
- X cur_a = (F_arc *) p;
- X up_part(cur_linewidth, cur_a->thickness, I_LINEWIDTH);
- X up_part(cur_fillstyle, cur_a->fill_style, I_FILLSTYLE);
- X up_part(cur_color, cur_a->color, I_COLOR);
- X up_part(cur_linestyle, cur_a->style, I_LINESTYLE);
- X up_part(cur_styleval, cur_a->style_val, I_LINESTYLE);
- X up_part(cur_depth, cur_a->depth, I_DEPTH);
- X up_part(cur_arrowmode, get_arrow_mode(cur_a), I_ARROWMODE);
- X break;
- X case O_SPLINE:
- X cur_s = (F_spline *) p;
- X up_part(cur_linewidth, cur_s->thickness, I_LINEWIDTH);
- X up_part(cur_fillstyle, cur_s->fill_style, I_FILLSTYLE);
- X up_part(cur_color, cur_s->color, I_COLOR);
- X up_part(cur_linestyle, cur_s->style, I_LINESTYLE);
- X up_part(cur_styleval, cur_s->style_val, I_LINESTYLE);
- X up_part(cur_depth, cur_s->depth, I_DEPTH);
- X up_part(cur_arrowmode, get_arrow_mode(cur_s), I_ARROWMODE);
- X break;
- X default:
- X return;
- X }
- X update_current_settings();
- X put_msg("Settings UPDATED");
- X}
- X
- Xstatic
- Xinit_update_object(p, type, x, y, px, py)
- X char *p;
- X int type;
- X int x, y;
- X int px, py;
- X{
- X switch (type) {
- X case O_COMPOUND:
- X set_temp_cursor(wait_cursor);
- X cur_c = (F_compound *) p;
- X toggle_compoundmarker(cur_c);
- X new_c = copy_compound(cur_c);
- X update_compound(new_c);
- X change_compound(cur_c, new_c);
- X toggle_compoundmarker(new_c);
- X break;
- X case O_POLYLINE:
- X set_temp_cursor(wait_cursor);
- X cur_l = (F_line *) p;
- X toggle_linemarker(cur_l);
- X new_l = copy_line(cur_l);
- X update_line(new_l);
- X change_line(cur_l, new_l);
- X toggle_linemarker(new_l);
- X break;
- X case O_TEXT:
- X set_temp_cursor(wait_cursor);
- X cur_t = (F_text *) p;
- X toggle_textmarker(cur_t);
- X new_t = copy_text(cur_t);
- X update_text(new_t);
- X change_text(cur_t, new_t);
- X toggle_textmarker(new_t);
- X break;
- X case O_ELLIPSE:
- X set_temp_cursor(wait_cursor);
- X cur_e = (F_ellipse *) p;
- X toggle_ellipsemarker(cur_e);
- X new_e = copy_ellipse(cur_e);
- X update_ellipse(new_e);
- X change_ellipse(cur_e, new_e);
- X toggle_ellipsemarker(new_e);
- X break;
- X case O_ARC:
- X set_temp_cursor(wait_cursor);
- X cur_a = (F_arc *) p;
- X toggle_arcmarker(cur_a);
- X new_a = copy_arc(cur_a);
- X update_arc(new_a);
- X change_arc(cur_a, new_a);
- X toggle_arcmarker(new_a);
- X break;
- X case O_SPLINE:
- X set_temp_cursor(wait_cursor);
- X cur_s = (F_spline *) p;
- X toggle_splinemarker(cur_s);
- X new_s = copy_spline(cur_s);
- X update_spline(new_s);
- X change_spline(cur_s, new_s);
- X toggle_splinemarker(new_s);
- X break;
- X default:
- X return;
- X }
- X reset_cursor();
- X put_msg("Object(s) UPDATED");
- X}
- X
- Xupdate_ellipse(ellipse)
- X F_ellipse *ellipse;
- X{
- X draw_ellipse(ellipse, ERASE);
- X up_part(ellipse->thickness, cur_linewidth, I_LINEWIDTH);
- X up_part(ellipse->angle, cur_elltextangle*M_PI/180.0, I_ELLTEXTANGLE);
- X up_part(ellipse->style, cur_linestyle, I_LINESTYLE);
- X up_part(ellipse->style_val, cur_styleval * (cur_linewidth + 1) / 2,
- X I_LINESTYLE);
- X up_part(ellipse->fill_style, cur_fillstyle, I_FILLSTYLE);
- X up_part(ellipse->color, cur_color, I_COLOR);
- X up_part(ellipse->depth, cur_depth, I_DEPTH);
- X draw_ellipse(ellipse, PAINT);
- X}
- X
- Xupdate_arc(arc)
- X F_arc *arc;
- X{
- X draw_arc(arc, ERASE);
- X up_part(arc->thickness, cur_linewidth, I_LINEWIDTH);
- X up_part(arc->style, cur_linestyle, I_LINESTYLE);
- X up_part(arc->style_val, cur_styleval * (cur_linewidth + 1) / 2,
- X I_LINESTYLE);
- X up_part(arc->fill_style, cur_fillstyle, I_FILLSTYLE);
- X up_part(arc->color, cur_color, I_COLOR);
- X up_part(arc->depth, cur_depth, I_DEPTH);
- X if (autoforwardarrow_mode)
- X { /* must use {} because macro has 'if' */
- X up_part(arc->for_arrow, forward_arrow(), I_ARROWMODE);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(arc->for_arrow, NULL, I_ARROWMODE);
- X }
- X if (autobackwardarrow_mode)
- X { /* must use {} because macro has 'if' */
- X up_part(arc->back_arrow, backward_arrow(), I_ARROWMODE);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(arc->back_arrow, NULL, I_ARROWMODE);
- X }
- X draw_arc(arc, PAINT);
- X}
- X
- Xupdate_line(line)
- X F_line *line;
- X{
- X draw_line(line, ERASE);
- X if (line->type != T_EPS_BOX) {
- X up_part(line->thickness, cur_linewidth, I_LINEWIDTH);
- X up_part(line->style, cur_linestyle, I_LINESTYLE);
- X up_part(line->style_val, cur_styleval * (cur_linewidth + 1) / 2,
- X I_LINESTYLE);
- X up_part(line->color, cur_color, I_COLOR);
- X up_part(line->radius, cur_boxradius, I_BOXRADIUS);
- X up_part(line->fill_style, cur_fillstyle, I_FILLSTYLE);
- X }
- X up_part(line->depth, cur_depth, I_DEPTH);
- X if (line->type == T_POLYLINE && line->points->next != NULL) {
- X if (autoforwardarrow_mode)
- X { /* must use {} because macro has 'if' */
- X up_part(line->for_arrow, forward_arrow(), I_ARROWMODE);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(line->for_arrow, NULL, I_ARROWMODE);
- X }
- X if (autobackwardarrow_mode)
- X { /* must use {} because macro has 'if' */
- X up_part(line->back_arrow, backward_arrow(), I_ARROWMODE);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(line->back_arrow, NULL, I_ARROWMODE);
- X }
- X }
- X draw_line(line, PAINT);
- X}
- X
- Xupdate_text(text)
- X F_text *text;
- X{
- X PR_SIZE size;
- X int old_psfont_flag, new_psfont_flag;
- X
- X draw_text(text, ERASE);
- X up_part(text->type, cur_textjust, I_TEXTJUST);
- X up_part(text->font, using_ps ? cur_ps_font : cur_latex_font, I_FONT);
- X old_psfont_flag = (text->flags & PSFONT_TEXT);
- X new_psfont_flag = (cur_textflags & PSFONT_TEXT);
- X up_part(text->flags, cur_textflags & ~PSFONT_TEXT, I_TEXTFLAGS);
- X if (cur_updatemask & I_FONT)
- X text->flags |= new_psfont_flag;
- X else
- X text->flags |= old_psfont_flag;
- X up_part(text->size, cur_fontsize, I_FONTSIZE);
- X up_part(text->angle, cur_elltextangle*M_PI/180.0, I_ELLTEXTANGLE);
- X up_part(text->color, cur_color, I_COLOR);
- X up_part(text->depth, cur_depth, I_DEPTH);
- X size = pf_textwidth(lookfont(x_fontnum(text->flags, text->font), text->size,
- X cur_elltextangle), strlen(text->cstring), text->cstring);
- X text->length = size.x; /* in pixels */
- X text->height = size.y; /* in pixels */
- X reload_text_fstruct(text); /* make sure fontstruct is current */
- X draw_text(text, PAINT);
- X}
- X
- Xupdate_spline(spline)
- X F_spline *spline;
- X{
- X draw_spline(spline, ERASE);
- X up_part(spline->thickness, cur_linewidth, I_LINEWIDTH);
- X up_part(spline->style, cur_linestyle, I_LINESTYLE);
- X up_part(spline->style_val, cur_styleval * (cur_linewidth + 1) / 2,
- X I_LINESTYLE);
- X up_part(spline->fill_style, cur_fillstyle, I_FILLSTYLE);
- X up_part(spline->color, cur_color, I_COLOR);
- X up_part(spline->depth, cur_depth, I_DEPTH);
- X if (open_spline(spline)) {
- X if (autoforwardarrow_mode)
- X { /* must use {} because macro has 'if' */
- X up_part(spline->for_arrow, forward_arrow(), I_ARROWMODE);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(spline->for_arrow, NULL, I_ARROWMODE);
- X }
- X if (autobackwardarrow_mode)
- X { /* must use {} because macro has 'if' */
- X up_part(spline->back_arrow, backward_arrow(), I_ARROWMODE);
- X }
- X else
- X { /* must use {} because macro has 'if' */
- X up_part(spline->back_arrow, NULL, I_ARROWMODE);
- X }
- X }
- X draw_spline(spline, PAINT);
- X}
- X
- Xupdate_compound(compound)
- X F_compound *compound;
- X{
- X update_lines(compound->lines);
- X update_splines(compound->splines);
- X update_ellipses(compound->ellipses);
- X update_arcs(compound->arcs);
- X update_texts(compound->texts);
- X update_compounds(compound->compounds);
- X compound_bound(compound, &compound->nwcorner.x, &compound->nwcorner.y,
- X &compound->secorner.x, &compound->secorner.y);
- X}
- X
- Xupdate_arcs(arcs)
- X F_arc *arcs;
- X{
- X F_arc *a;
- X
- X for (a = arcs; a != NULL; a = a->next)
- X update_arc(a);
- X}
- X
- Xupdate_compounds(compounds)
- X F_compound *compounds;
- X{
- X F_compound *c;
- X
- X for (c = compounds; c != NULL; c = c->next)
- X update_compound(c);
- X}
- X
- Xupdate_ellipses(ellipses)
- X F_ellipse *ellipses;
- X{
- X F_ellipse *e;
- X
- X for (e = ellipses; e != NULL; e = e->next)
- X update_ellipse(e);
- X}
- X
- Xupdate_lines(lines)
- X F_line *lines;
- X{
- X F_line *l;
- X
- X for (l = lines; l != NULL; l = l->next)
- X update_line(l);
- X}
- X
- Xupdate_splines(splines)
- X F_spline *splines;
- X{
- X F_spline *s;
- X
- X for (s = splines; s != NULL; s = s->next)
- X update_spline(s);
- X}
- X
- Xupdate_texts(texts)
- X F_text *texts;
- X{
- X F_text *t;
- X
- X for (t = texts; t != NULL; t = t->next)
- X update_text(t);
- X}
- END_OF_FILE
- if test 12320 -ne `wc -c <'e_update.c'`; then
- echo shar: \"'e_update.c'\" unpacked with wrong size!
- fi
- # end of 'e_update.c'
- fi
- if test -f 'w_canvas.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'w_canvas.c'\"
- else
- echo shar: Extracting \"'w_canvas.c'\" \(12414 characters\)
- sed "s/^X//" >'w_canvas.c' <<'END_OF_FILE'
- X/*
- X * FIG : Facility for Interactive Generation of figures
- X * Copyright (c) 1985 by Supoj Sutanthavibul
- X *
- X * "Permission to use, copy, modify, distribute, and sell this software and its
- X * documentation for any purpose is hereby granted without fee, provided that
- X * the above copyright notice appear in all copies and that both the copyright
- X * notice and this permission notice appear in supporting documentation.
- X * No representations are made about the suitability of this software for
- X * any purpose. It is provided "as is" without express or implied warranty."
- X */
- X
- X/*********************** IMPORTS ************************/
- X
- X#include "fig.h"
- X#include "figx.h"
- X#include "resources.h"
- X#include "mode.h"
- X#include "paintop.h"
- X#include <X11/keysym.h>
- X#include "u_bound.h"
- X#include "w_canvas.h"
- X#include "w_mousefun.h"
- X#include "w_setup.h"
- X#include "w_util.h"
- X#include "w_zoom.h"
- X#ifndef SYSV
- X#include "sys/time.h"
- X#endif
- X#include <X11/Xatom.h>
- X
- Xextern erase_rulermark();
- Xextern erase_objecthighlight();
- Xextern char_handler();
- X
- X/************** LOCAL STRUCTURE ***************/
- X
- Xtypedef struct _CompKey CompKey;
- X
- Xstruct _CompKey {
- X unsigned char key;
- X unsigned char first;
- X unsigned char second;
- X CompKey *next;
- X};
- X
- X/*********************** EXPORTS ************************/
- X
- Xint (*canvas_kbd_proc) ();
- Xint (*canvas_locmove_proc) ();
- Xint (*canvas_leftbut_proc) ();
- Xint (*canvas_middlebut_proc) ();
- Xint (*canvas_middlebut_save) ();
- Xint (*canvas_rightbut_proc) ();
- Xint (*return_proc) ();
- Xint null_proc();
- Xint clip_xmin, clip_ymin, clip_xmax, clip_ymax;
- Xint clip_width, clip_height;
- Xint cur_x, cur_y;
- X
- XString local_translations = "";
- X
- X/*********************** LOCAL ************************/
- X
- Xstatic CompKey *allCompKey = NULL;
- Xstatic canvas_selected();
- Xstatic unsigned char getComposeKey();
- Xstatic readComposeKey();
- X
- Xint ignore_exp_cnt = 2; /* we get 2 expose events at startup */
- X
- Xnull_proc()
- X{
- X /* almost does nothing */
- X if (highlighting)
- X erase_objecthighlight();
- X}
- X
- Xstatic void
- Xcanvas_exposed(tool, event, params, nparams)
- X TOOL tool;
- X XButtonEvent *event;
- X String *params;
- X Cardinal *nparams;
- X{
- X static xmin = 9999, xmax = -9999, ymin = 9999, ymax = -9999;
- X XExposeEvent *xe = (XExposeEvent *) event;
- X register int tmp;
- X
- X if (xe->x < xmin)
- X xmin = xe->x;
- X if (xe->y < ymin)
- X ymin = xe->y;
- X if ((tmp = xe->x + xe->width) > xmax)
- X xmax = tmp;
- X if ((tmp = xe->y + xe->height) > ymax)
- X ymax = tmp;
- X if (xe->count > 0)
- X return;
- X
- X /* kludge to stop getting extra redraws at start up */
- X if (ignore_exp_cnt)
- X ignore_exp_cnt--;
- X else
- X redisplay_region(xmin, ymin, xmax, ymax);
- X xmin = 9999, xmax = -9999, ymin = 9999, ymax = -9999;
- X}
- X
- Xstatic void canvas_paste();
- X
- XXtActionsRec canvas_actions[] =
- X{
- X {"EventCanv", (XtActionProc) canvas_selected},
- X {"ExposeCanv", (XtActionProc) canvas_exposed},
- X {"EnterCanv", (XtActionProc) draw_mousefun_canvas},
- X {"PasteCanv", (XtActionProc) canvas_paste},
- X {"LeaveCanv", (XtActionProc) clear_mousefun},
- X {"EraseRulerMark", (XtActionProc) erase_rulermark},
- X};
- X
- X/* need the ~Meta for the EventCanv action so that the accelerators still work */
- Xstatic String canvas_translations =
- X"<Motion>:EventCanv()\n\
- X Any<BtnDown>:EventCanv()\n\
- X <Key>F18: PasteCanv()\n\
- X <EnterWindow>:EnterCanv()\n\
- X <LeaveWindow>:LeaveCanv()EraseRulerMark()\n\
- X ~Meta<Key>:EventCanv()\n\
- X <Expose>:ExposeCanv()\n";
- X
- Xinit_canvas(tool)
- X TOOL tool;
- X{
- X XColor fixcolors[2];
- X
- X DeclareArgs(10);
- X
- X FirstArg(XtNlabel, "");
- X NextArg(XtNwidth, CANVAS_WD);
- X NextArg(XtNheight, CANVAS_HT);
- X NextArg(XtNfromHoriz, mode_panel);
- X NextArg(XtNhorizDistance, -INTERNAL_BW);
- X NextArg(XtNfromVert, topruler_sw);
- X NextArg(XtNvertDistance, -INTERNAL_BW);
- X NextArg(XtNtop, XtChainTop);
- X NextArg(XtNleft, XtChainLeft);
- X NextArg(XtNborderWidth, INTERNAL_BW);
- X
- X canvas_sw = XtCreateWidget("canvas", labelWidgetClass, tool,
- X Args, ArgCount);
- X
- X FirstArg(XtNforeground, &x_fg_color.pixel);
- X NextArg(XtNbackground, &x_bg_color.pixel);
- X GetValues(canvas_sw);
- X
- X /*
- X * get the RGB values for recolor cursor use -- may want to have cursor
- X * color resource
- X */
- X fixcolors[0] = x_fg_color;
- X fixcolors[1] = x_bg_color;
- X XQueryColors(tool_d, DefaultColormapOfScreen(tool_s), fixcolors, 2);
- X x_fg_color = fixcolors[0];
- X x_bg_color = fixcolors[1];
- X
- X /* now fix the global GC */
- X XSetState(tool_d, gc, x_fg_color.pixel, x_bg_color.pixel, GXcopy,
- X AllPlanes);
- X
- X /* and recolor the cursors */
- X recolor_cursors();
- X
- X canvas_leftbut_proc = null_proc;
- X canvas_middlebut_proc = null_proc;
- X canvas_rightbut_proc = null_proc;
- X canvas_kbd_proc = canvas_locmove_proc = null_proc;
- X XtAppAddActions(tool_app, canvas_actions, XtNumber(canvas_actions));
- X XtAugmentTranslations(canvas_sw,
- X XtParseTranslationTable(canvas_translations));
- X
- X readComposeKey();
- X
- X return (1);
- X}
- X
- Xsetup_canvas()
- X{
- X canvas_win = XtWindow(canvas_sw);
- X init_grid();
- X reset_clip_window();
- X}
- X
- Xstatic
- Xcanvas_selected(tool, event, params, nparams)
- X TOOL tool;
- X XButtonEvent *event;
- X String *params;
- X Cardinal *nparams;
- X{
- X register int x, y;
- X KeySym key;
- X static int sx = -10000, sy = -10000;
- X char buf[1];
- X XButtonPressedEvent *be = (XButtonPressedEvent *) event;
- X XKeyPressedEvent *ke = (XKeyPressedEvent *) event;
- X
- X static char compose_buf[2];
- X static char compose_key = 0;
- X unsigned char c;
- X
- X switch (event->type) {
- X case MotionNotify:
- X#if defined(SMOOTHMOTION) || defined(OPENWIN)
- X /* translate from zoomed coords to object coords */
- X x = BACKX(event->x);
- X y = BACKY(event->y);
- X
- X /* perform appropriate rounding if necessary */
- X round_coords(x, y);
- X
- X if (x == sx && y == sy)
- X return;
- X sx = x;
- X sy = y;
- X#else
- X {
- X Window rw, cw;
- X int rx, ry, cx, cy;
- X unsigned int mask;
- X
- X XQueryPointer(event->display, event->window,
- X &rw, &cw,
- X &rx, &ry,
- X &cx, &cy,
- X &mask);
- X cx = BACKX(cx);
- X cy = BACKY(cy);
- X
- X /* perform appropriate rounding if necessary */
- X round_coords(cx, cy);
- X
- X if (cx == sx && cy == sy)
- X break;
- X x = sx = cx; /* these are zoomed */
- X y = sy = cy; /* coordinates! */
- X }
- X#endif /* SMOOTHMOTION || OPENWIN */
- X set_rulermark(x, y);
- X (*canvas_locmove_proc) (x, y);
- X break;
- X case ButtonPress:
- X /* translate from zoomed coords to object coords */
- X x = BACKX(event->x);
- X y = BACKY(event->y);
- X
- X /* Convert Alt-Button3 to Button2 */
- X if (be->button == Button3 && be->state & Mod1Mask) {
- X be->button = Button2;
- X be->state &= ~Mod1Mask;
- X }
- X
- X /* call interactive zoom function if control key is pressed */
- X if (be->state & ControlMask) {
- X zoom_selected(x, y, be->button);
- X break;
- X }
- X /* perform appropriate rounding if necessary */
- X round_coords(x, y);
- X
- X if (be->button == Button1)
- X (*canvas_leftbut_proc) (x, y, be->state & ShiftMask);
- X else if (be->button == Button2)
- X (*canvas_middlebut_proc) (x, y, be->state & ShiftMask);
- X else if (be->button == Button3)
- X (*canvas_rightbut_proc) (x, y, be->state & ShiftMask);
- X break;
- X case KeyPress:
- X /* we might want to check action_on */
- X /* if arrow keys are pressed, pan */
- X key = XLookupKeysym(ke, 0);
- X if (key == XK_Left ||
- X key == XK_Right ||
- X key == XK_Up ||
- X key == XK_Down ||
- X key == XK_Home ||
- X key == XK_Multi_key ||
- X key == XK_Alt_L ) {
- X switch (key) {
- X case XK_Left:
- X pan_left();
- X break;
- X case XK_Right:
- X pan_right();
- X break;
- X case XK_Up:
- X pan_up();
- X break;
- X case XK_Down:
- X pan_down();
- X break;
- X case XK_Home:
- X pan_origin();
- X break;
- X case XK_Multi_key:
- X case XK_Alt_L:
- X compose_key = 1;
- X break;
- X }
- X } else {
- X switch (compose_key) {
- X case 0:
- X if (XLookupString(ke, buf, sizeof(buf), NULL, NULL) > 0)
- X (*canvas_kbd_proc) ((unsigned char) buf[0]);
- X break;
- X case 1:
- X if (XLookupString(ke, &compose_buf[0], 1, NULL, NULL)
- X > 0)
- X compose_key = 2;
- X break;
- X case 2:
- X if (XLookupString(ke, &compose_buf[1], 1, NULL, NULL)
- X > 0) {
- X if ((c = getComposeKey(compose_buf)) != '\0')
- X (*canvas_kbd_proc) (c);
- X else {
- X (*canvas_kbd_proc) ((unsigned char) compose_buf[0]);
- X (*canvas_kbd_proc) ((unsigned char) compose_buf[1]);
- X }
- X compose_key = 0;
- X }
- X break;
- X }
- X }
- X break;
- X }
- X}
- X
- Xclear_canvas()
- X{
- X XClearArea(tool_d, canvas_win, clip_xmin, clip_ymin,
- X clip_width, clip_height, False);
- X}
- X
- Xclear_region(xmin, ymin, xmax, ymax)
- X int xmin, ymin, xmax, ymax;
- X{
- X XClearArea(tool_d, canvas_win, xmin, ymin,
- X xmax - xmin + 1, ymax - ymin + 1, False);
- X}
- X
- Xstatic void get_canvas_clipboard();
- X
- Xstatic void canvas_paste(w, paste_event)
- XWidget w;
- XXKeyEvent *paste_event;
- X{
- X Time event_time;
- X
- X if (canvas_kbd_proc != char_handler)
- X return;
- X
- X if (paste_event != NULL)
- X event_time = paste_event->time;
- X else
- X time((time_t *) &event_time);
- X /***
- X This doesn't seem to work:
- X XtGetSelectionValue(w, XInternAtom(XtDisplay(w), "XA_PRIMARY", False),
- X XA_STRING, get_canvas_clipboard, NULL, event_time);
- X ***/
- X XtGetSelectionValue(w, XA_PRIMARY,
- X XA_STRING, get_canvas_clipboard, NULL, event_time);
- X}
- X
- Xstatic void
- Xget_canvas_clipboard(w, client_data, selection, type, buf, length, format)
- XWidget w;
- XXtPointer client_data;
- XAtom *selection;
- XAtom *type;
- XXtPointer buf;
- Xunsigned long *length;
- Xint *format;
- X{
- X char *c;
- X int i;
- X
- X c = buf;
- X for (i=0; i<*length; i++) {
- X canvas_kbd_proc(*c);
- X c++;
- X }
- X XtFree(buf);
- X}
- X
- Xstatic unsigned char
- XgetComposeKey(buf)
- X char *buf;
- X{
- X CompKey *compKeyPtr = allCompKey;
- X
- X while (compKeyPtr != NULL) {
- X if (compKeyPtr->first == (unsigned char) (buf[0]) &&
- X compKeyPtr->second == (unsigned char) (buf[1]))
- X return (compKeyPtr->key);
- X else
- X compKeyPtr = compKeyPtr->next;
- X }
- X return ('\0');
- X}
- X
- Xstatic
- XreadComposeKey()
- X{
- X FILE *st;
- X CompKey *compKeyPtr;
- X char line[255];
- X char *p;
- X char *p1;
- X char *p2;
- X char *p3;
- X long size;
- X int charfrom;
- X int charinto;
- X
- X
- X/* Treat the compose key DB a different way. In this order:
- X *
- X * 1. If the resource contains no "/", prefix it with the name of
- X * the wired-in directory and use that.
- X *
- X * 2. Otherwise see if it begins with "~/", and if so use that,
- X * with the leading "~" replaced by the name of this user's
- X * $HOME directory.
- X *
- X * This way a user can have private compose key settings even when running
- X * xfig privately.
- X *
- X * Pete Kaiser
- X * 24 April 1992
- X */
- X
- X /* no / in name, make relative to XFIGLIBDIR */
- X if (strchr(appres.keyFile, '/') == NULL) {
- X strcpy(line, XFIGLIBDIR);
- X strcat(line, "/");
- X strcat(line, appres.keyFile);
- X }
- X
- X /* expand the ~ to the user's home directory */
- X else if (! strncmp(appres.keyFile, "~/", 2)) {
- X strcpy(line, getenv("HOME"));
- X for (charinto = strlen(line), charfrom = 1;
- X line[charinto++] = appres.keyFile[charfrom++]; );
- X }
- X else
- X strcpy(line, appres.keyFile);
- X
- X if ((st = fopen(line, "r")) == NULL) {
- X allCompKey = NULL;
- X fprintf(stderr,"%cCan't open compose key file '%s',\n",007,line);
- X fprintf(stderr,"\tno multi-key sequences available\n");
- X return;
- X }
- X fseek(st, 0, 2);
- X size = ftell(st);
- X fseek(st, 0, 0);
- X
- X local_translations = (String) malloc(size + 1);
- X
- X strcpy(local_translations, "");
- X while (fgets(line, 250, st) != NULL) {
- X if (line[0] != '#') {
- X strcat(local_translations, line);
- X if ((p = strstr(line, "Multi_key")) != NULL) {
- X if (allCompKey == NULL) {
- X allCompKey = (CompKey *) malloc(sizeof(CompKey));
- X compKeyPtr = allCompKey;
- X } else {
- X compKeyPtr->next = (CompKey *) malloc(sizeof(CompKey));
- X compKeyPtr = compKeyPtr->next;
- X }
- X
- X p1 = strstr(p, "<Key>") + strlen("<Key>");
- X p = strstr(p1, ",");
- X *p++ = '\0';
- X p2 = strstr(p, "<Key>") + strlen("<Key>");
- X p = strstr(p2, ":");
- X *p++ = '\0';
- X p3 = strstr(p, "insert-string(") + strlen("insert-string(");
- X p = strstr(p3, ")");
- X *p++ = '\0';
- X
- X if (strlen(p3) == 1)
- X compKeyPtr->key = *p3;
- X else
- X compKeyPtr->key = strtol(p3, NULL, 16);
- X compKeyPtr->first = XStringToKeysym(p1);
- X compKeyPtr->second = XStringToKeysym(p2);
- X compKeyPtr->next = NULL;
- X }
- X }
- X }
- X
- X fclose(st);
- X
- X}
- END_OF_FILE
- if test 12414 -ne `wc -c <'w_canvas.c'`; then
- echo shar: \"'w_canvas.c'\" unpacked with wrong size!
- fi
- # end of 'w_canvas.c'
- fi
- echo shar: End of archive 10 \(of 27\).
- cp /dev/null ark10isdone
- MISSING=""
- 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 26 27 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 27 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
- exit 0 # Just in case...
- --
- // chris@IMD.Sterling.COM | Send comp.sources.x submissions to:
- \X/ Amiga - The only way to fly! | sources-x@imd.sterling.com
- "It's intuitively obvious to the |
- most casual observer..." | GCS d+/-- p+ c++ l+ m+ s++/+ g+ w+ t+ r+ x+
-