v04i058: xtroff -- troff previewer for X11, Part13/18
Dan Heller
argv at island.uu.net
Wed Jul 19 19:11:45 AEST 1989
Submitted-by: Mark Moraes <moraes at ai.toronto.edu>
Posting-number: Volume 4, Issue 58
Archive-name: xtroff/part13
#! /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 13 (of 18)."
# Contents: xtroff/suntroff.tr xtroff/sunwindows.c
# Wrapped by moraes at neat.ai on Thu Jul 13 20:55:20 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'xtroff/suntroff.tr' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xtroff/suntroff.tr'\"
else
echo shar: Extracting \"'xtroff/suntroff.tr'\" \(21525 characters\)
sed "s/^X//" >'xtroff/suntroff.tr' <<'END_OF_FILE'
Xx T psc
Xx res 576 1 1
Xx init
XV0
Xp1
Xx font 1 R
Xx font 2 I
Xx font 3 B
Xx font 4 BI
Xx font 5 H
Xx font 6 HB
Xx font 7 C
Xx font 8 CB
Xx font 9 S
Xx font 10 SS
Xs10
Xf1
XH518
XV384
XcS
X44U58N58T49R53O58F44F57(40153)h1010cU
X58S44E49R53 20C53O58M71M71A58N58D58Sh1028cS
X44U58N58T49R53O58F44F57(40153)n96 0
XH518
Xf3
Xs9
XV768
XcN
X52A52M68Ewwwwwn96 0
XH518
Xf1
Xs10
XV864
Xh288cs
X31u40n40t22r27o40f27fw47-w47S44u40nw60D58e36v40i22c36ew56I27n40d40e36p40e36n40d40e36n40tw42T49r27o40f27fw47P44r27e36v40i22e36w58e36rn96 0
XH518
Xf3
Xs9
XV998
XcS
X40Y52N52O56P44S40I28Swwwwwn96 0
XH518
Xs10
XV1094
Xh288cs
X31u44n44t27r36o40f27fwf1
X47[wf3
X47S44h44e36l22l22-27T53o40o40lw42A58r36g40u44m67e36n44t27swf1
X51]w47[wf3
X47-27s31c36r36o40l22l22b44a40r36swf1
X51]w47[wf3
X47-27c36o40m67m67a40n44dw64D58i22t27r36o40f27fw47C58o40m67m67a40n44dw64P49i22p44ewf1
X56]n96 0
XH518
Xf3
XV1286
Xh288cs
X31u44n44t27r36o40f27fwf1
X47[wf3
X47S44h44e36l22l22-27T53o40o40lw42A58r36g40u44m67e36n44t27swf1
X51]w47[wf3
X47-27s31c36r36o40l22l22b44a40r36swf1
X51]w47[wf3
X47d44i22t27r36o40f27fw47o40u44t27p44u44twh47Cfi
X44l22ewf1
X56]n96 0
XH518
Xf3
Xs9
XV1420
XcD
X52E48S40C52R52I28P44T48I28O56Nwwwwwn96 0
XH518
Xf2
Xs10
XV1516
Xh288cS
X40u40n40t22r31o40f22fwf1
X46r27e36a36d40swf2
X55d40i22t22r31o40f22ff1
X22(27140)w51o40u40t22p40u40twh46Cfi
X44l22e36sw55a36n40dw64d40i22s31p40l22a36y40sw55a36nw64a36p40p40r27o40x40i22m62a36t22i22o40nw64o40fw51t22h40ew60t22y40p40e36s31e36tw46o40u40t22p40u40tw46i22nw64aw60w58i22n40d40o40ww83o40nw65an96 0
XH518
XV1612
Xh288cS
X44u40nw68w58o40r27k40s31t22a36t22i22o40n40.w68U58s31i22n40gw68t22h40ew64m62o40u40s31ew64t22h40ew64u40s31e36rw55c36a36nw68p40a36nw68e36a36c36hw68p40a36g40ew64i22m62a36g40ew64w58i22t22h40i22nw68t22h40ew64w58i22n40d40o40w58,w48m62o40v40ew64t22ow67o40t22h40e36rn96 0
XH518
XV1708
Xh288cp
X40a36g40e36s31,w40l22o40o40kw60a36tw42d40i22f27f27e36r27e36n40twh42Cfi
X44l22e36sw51a36n40dwh60Cfi
X44n40a36l22l22yw60s31e36n40dw60t22h40ewh56Cfi
X44l22ew56t22owf2
X60l22p40rf1
X31(27140)w47f27o40rw47t22y40p40e36s31e36t22t22i22n40g40.n96 0
XH518
XV1842
Xh288cT
X49h40ew61p40r27o40g40r27a36mw87c36a36nw65b40ew61u40s31e36dw65i22nw65t22w58ow65d40i22f27f27e36r27e36n40tw47w58a36y40s31.w65P44e36r27h40a36p40sw57t22h40ew62m62o40s31tw48e36fh27Cfi
X44c36i22e36n40tw48w58a36yw66t22ow66u40s31ew62t22h40i22sw57p40r27o40g40r27a36mw88i22sw57t22on96 0
XH518
XV1938
Xh288ce
X36x40e36c36u40t22ewf2
X58s31u40n40t22r31o40f22fwf1
X43i22nw61t22h40ew57c36o40m62m62a36n40dw61m62o40d40ew57(h27Cfi
X44r27s31tw43e36x40a36m62p40l22ew57i22nw61t22h40ew57s31y40n40o40p40s31i22sw52a36b40o40v40e36)27.w61I27nw61t22h40ew57c36o40m62m62a36n40dw61m62o40d40ew57aw57d40i22t22rh27Chy
Xn96 0
XH518
XV2034
Xh288co
X40f27fw57c36o40m62m62a36n40dw70s31t22r27i22n40gw70i22sw61s31p40e36c36ih22Cfi
X44e36dw70t22h40a36tw52i22n40c36l22u40d40e36sw61a36l22lw52t22h40ew66p40r27o40c36e36s31s31i22n40gw70s31t22e36p40sw61(f2
X27e36q40n40,w50t22b40l22,w50p40i22c36,w50i22d40e36a40l22,w50t22r31o40f22f22)wf1
X57t22h40a36tw52a36r27en96 0
XH518
XV2130
Xh288cn
X40e36e36d40e36dw65t22ow65t22r27a36n40s31f27o40r27mw87aw61u40s31e36r27'27sw56d40o40c36u40m62e36n40tw47i22n40t22ow65d40i22t22r27o40f27fw52o40u40t22p40u40t22.w65T49h40e36nw65w58h40e36n40e36v40e36rw52aw61c36h40a36n40g40ew61i22sw56m62a36d40ew61i22nw65t22h40ew61d40o40c36uh40Chy
Xn96 0
XH518
XV2226
Xh288cm
X62e36n40tw42aw56"33r27e36r27a36s31t22e36r27i22z36e36"w53c36o40m62m62a36n40dw60c36a36nw60b40ew56u40s31e36dw60t22ow60r27e36r27u40nw60t22h40ew56c36o40m62m62a36n40dw61s31t22r27i22n40gw61a36n40dw61s31h40o40ww79t22h40ew57n40e36ww79d40o40c36u40m62e36n40tw43o40nw61t22h40en96 0
XH518
XV2322
Xh288cs
X31c36r27e36e36n40.w68T49h40ew64"33r27e36r27a36s31t22e36r27i22z36e36"w61c36o40m62m62a36n40dw68i22sw59a36nw68o40p40t22i22o40nw68a36v40a36i22l22a36b40l22ew64o40nw67aw63m62e36n40uw67t22h40a36tw49p40o40p40sw58u40pw67w58h40e36nw67t22h40ew63r27i22g40h40tw49m62o40u40s31en96 0
XH518
XV2418
Xh288cb
X40u40t22t22o40nw61i22sw52p40r27e36s31s31e36dw61o40rw48i22nw61aw57s31t22a36t22u40sw52p40a36n40e36l22.w61T49h40ew57s31t22a36t22u40sw52p40a36n40e36lw43i22sw52a36l22s31ow61e36n40a36b40l22e36dw61u40s31i22n40gw61t22h40ew57m62e36n40uw61t22h40a36tw43p40o40p40sw53u40pw62w58i22t22hw62t22h40en96 0
XH518
XV2514
Xh288cr
X27i22g40h40tw49m62o40u40s31ew63b40u40t22t22o40n40.w67I27tw49i22sw58i22m62p40o40r27t22a36n40tw49t22h40a36tw49t22h40ewf2
X63d40i22t22r31o40f22fwf1
X49c36o40m62m62a36n40dw67t22h40a36tw49e36n40d40sw58t22h40ew63p40i22p40ew63i22n40c36l22u40d40ew63t22h40ewf2
X62-27twf1
Xh48Cfl
X44a36gw66s31ow66t22h40a36tn96 0
XH518
Xf2
XV2610
Xh288cs
X31u40n40t22r31o40f22fwf1
X42c36a36nw60r27e36a36dw60t22h40ew56o40u40t22p40u40t22.n96 0
XH518
XV2744
Xh288cA
X58l22t22e36r27n40a36t22i22v40e36l22y40,w42t22h40ew58o40u40t22p40u40tw44f27r27o40mwf2
X84d40i22t22r31o40f22fwf1
X44c36a36nw62b40ew58u40s31e36dw63a36sw54i22n40p40u40tw45t22ow63t22h40i22sw54p40r27o40g40r27a36mw85(27s31e36c36o40n40dw63e36x40a36m62p40l22ew59i22nw63t22h40ew59s31y40n40o40p40s31i22sn96 0
XH518
XV2840
Xh288ca
X36b40o40v40e36.20)w68I27nw61t22h40i22sw52c36a36s31e36,w41e36a36c36hw61t22i22m62ew57t22h40ew57d40o40c36u40m62e36n40tw43c36h40a36n40g40e36sw52i22tw43i22sw52u40pw61t22ow61t22h40ew57u40s31e36rw47t22ow60r27e36r27u40nw60t22h40ewf2
X56d40i22t22r31o40f22fwf1
X42p40i22p40ew56t22ow60p40r27o40d40u40c36en96 0
XH518
XV2936
Xh288ci
X22n40p40u40tw42f27o40rw47t22h40ewf2
X56s31u40n40t22r31o40f22fwf1
X42p40r27o40g40r27a36m62.w60T49h40i22sw51c36a36nw60b40ew56e36a36s31i22l22yw60d40o40n40ew56u40s31i22n40gw60t22h40ew56"33r27e36r27a36s31t22e36r27i22z36e36"w53c36o40m62m62a36n40d40.n96 0
XH518
XV3070
Xh288cF
X44o40n40t22sw54u40s31e36dw63b40ywf2
X63s31u40n40t22r31o40f22fwf1
X45a36r27ew60r27o40u40g40hw64a36p40p40r27o40x40i22m62a36t22i22o40n40sw55t22ow64t22h40o40s31ew60t22h40a36tw46w58i22l22lw46b40ew60p40r27i22n40t22e36dw64i22nw64t22h40ewh60Cfi
X44n40a36lw46t22y40p40e36s31e36t22t22e36rw51o40u40t22p40u40t22.n96 0
XH518
XV3166
Xh288cC
X53u40r27r27e36n40t22l22yw65o40n40l22yw65t22h40ew613400400w64d40o40tw46p40e36rw51i22n40c36hw64(27d40p40i22)w51I27m62a36g40e36nw64f27o40n40t22sw55a36n40dw64t22h40ew602400400w64d40p40iw46V58e36r27s31a36t22e36cw60f27o40n40t22sw55h40a36v40ew60b40e36e36nw64p40r27o40p40e36r27l22yn96 0
XH518
XV3262
Xh288cs
X31c36a36l22e36dw66f27o40rwf2
X53s31u40n40t22r31o40f22ff1
X22.w66A58l22lw48o40u40t22p40u40tw48d40e36s31t22i22n40e36dw66f27o40rw53p40r27i22n40t22e36r27sw57o40t22h40e36rw54t22h40a36nw67t22h40ew63I27m62a36g40e36n40sw58w58i22l22lw49b40ew63s31h40o40w58nw67u40s31i22n40gw67V58e36r27s31a36t22e36cn96 0
XH518
XV3358
Xh288cf
X27o40n40t22s31.w70A58l22t22h40o40u40g40hw70t22h40ew66a36c36t22u40a36lw52b40i22tw52m62a36p40sw61u40s31e36dw70f27o40rw57t22h40ew65c36h40a36r27a36c36t22e36r27sw60m62i22g40h40tw51n40o40tw51b40ew65c36o40r27r27e36c36tw51a36l22lwf2
X51s31u40n40t22r31o40f22fwf1
X51o40u40t22p40u40tw51w58i22l22ln96 0
XH518
XV3454
Xh288ch
X40a36v40ew56t22h40ew56c36o40r27r27e36c36tw42h40o40r27i22z36o40n40t22a36lw42a36n40dw60v40e36r27t22i22c36a36lw42s31p40a36c36i22n40g40.n96 0
XH518
Xf2
XV3588
Xh288cS
X40u40n40t22r31o40f22fwf1
X43c36a36nw61b40ew57c36o40n40t22r27o40l22l22e36dw61u40s31i22n40gw61aw57c36o40m62b40i22n40a36t22i22o40nw61o40fw48m62o40u40s31e36,w41m62e36n40uw61a36n40dw62t22y40p40e36dw62c36o40m62m62a36n40d40s31.w42W76i22t22h40i22nw62t22h40ew58m62a36i22nw62t22e36x40tn96 0
XH518
XV3684
Xh288cw
X58i22n40d40o40ww80w58h40e36nw62t22h40ew58m62i22d40d40l22ew58b40u40t22t22o40nw62o40fw49t22h40ew58m62o40u40s31ew58i22sw52p40r27e36s31s31e36dw61t22h40ew57c36u40r27s31o40rw48i22sw52c36h40a36n40g40e36dw61i22n40t22ow61t22h40ew57s31h40a36p40ew57o40fw48aw57h40a36n40dw61t22h40a36tn96 0
XH518
XV3780
Xh288cg
X40r27a36b40sw57t22h40ew62t22e36x40t22.w46A58sw57t22h40ew62m62o40u40s31ew62i22sw58m62o40v40e36dw67a36r27o40u40n40dw67i22n40s31i22d40ew63t22h40ew63w58i22n40d40o40ww85t22h40ew63d40i22s31p40l22a36y40e36dw67t22e36x40tw49(27a36n40dw67t22h40ew63h40a36n40d40)w54m62o40v40en96 0
XH518
XV3876
Xh288ca
X36c36c36o40r27d40i22n40g40l22y40.w61W76h40e36nw61t22h40ew57r27i22g40h40tw43b40u40t22t22o40nw61i22sw52p40r27e36s31s31e36dw61aw57m62e36n40uw61p40o40p40sw52u40pw61t22h40a36tw43c36o40n40t22a36i22n40sw52o40p40t22i22o40n40sw52f27o40rw47m62o40v40i22n40gw60t22ow60d40i22f27f27e36r27e36n40tn96 0
XH518
XV3972
Xh288cp
X40a36g40e36s31,w47p40r27i22n40tw49p40a36r27t22sw58o40fw54t22h40ew63d40o40c36u40m62e36n40t22,w47r27e36r27a36s31t22e36r27i22z36i22n40gw67t22h40ew63i22n40p40u40tw49a36n40dwh67Cfi
X44n40a36l22l22yw67p40o40p40p40i22n40gw67u40pw67aw63m62o40r27ew63e36x40t22e36n40s31i22v40ew64s31t22a36t22u40sn96 0
XH518
XV4068
Xh288ca
X36n40dw60c36o40m62m62a36n40dw60w58i22n40d40o40w58.n96 0
XH518
XV4202
Xh288cT
X49h40ewf2
X65s31u40n40t22r31o40f22fwf1
X51c36o40m62m62a36n40dw69a36n40dw69s31t22a36t22u40sw60w58i22n40d40o40ww87a36l22l22o40w58sw60t22h40ew65u40s31e36rw56t22ow69s31p40e36c36i22f27yw69t22h40ew65s31o40u40r27c36ew65o40fw57i22n40p40u40t22,w50s31e36a36r27c36hw70f27o40rw57t22e36x40tn96 0
XH518
XV4298
Xh288cw
X58i22t22h40i22nw61t22h40ew56d40o40c36u40m62e36n40t22,w40m62o40v40ew56t22ow60a36n40yw60p40a36g40ew56w58i22t22h40i22nw60t22h40ew56d40o40c36u40m62e36n40tw42a36n40dw60t22ow60p40r27i22n40tw42e36i22t22h40e36rw47o40n40ew56p40a36g40ew56o40rw47t22h40ew56e36n40t22i22r27ew56d40o40c36uh40Chy
Xn96 0
XH518
XV4394
Xh288cm
X62e36n40t22.w68T49h40i22sw59p40a36n40e36lw50i22sw59h40i22d40d40e36nw68a36twh50Cfi
X44r27s31tw50a36n40dw68i22sw59d40i22s31p40l22a36y40e36dw68w58h40e36nw68t22h40ew64u40s31e36rw56p40i22c36k40sw60t22h40ew65"33s31h40o40ww87s31t22a36t22u40s31"w62o40p40t22i22o40nw69o40nw69t22h40en96 0
XH518
XV4490
Xh288cr
X27i22g40h40tw42m62o40u40s31ew56b40u40t22t22o40nw60m62e36n40u40.n96 0
XH518
Xf3
Xs9
XV4624
XcH
X56O56Wwh102cT
X48Owwwwn96 0
XH518
Xf1
Xs10
XV4720
Xh288cM
X71o40v40ew56A58r27o40u40n40dw60w58i22t22h40i22nw60P44a36g40en96 0
XH518
XV4816
Xh888cU
X58s31ew56t22h40ew56m62i22d40d40l22ew56m62o40u40s31ew56b40u40t22t22o40n40.w40W76h40e36nw60i22tw42i22swh51Cfi
X44r27s31tw42p40r27e36s31s31e36dw60aw57h40a36n40dw61w58i22l22lw43a36p40p40e36a36rw48o40nw61t22h40ew57p40a36g40ew57a36n40dn96 0
XH518
XV4912
Xh888ce
X36f27f27e36c36t22i22v40e36l22yw64g40r27a36bw64t22h40ew60t22e36x40t22.w64A58sw55t22h40ew60m62o40u40s31ew60(27a36n40dw64h40a36n40d40)w51m62o40v40ew60t22h40ew60p40a36g40ew60w58i22l22lw45m62o40v40ew59w58i22t22h40i22nw63t22h40en96 0
XH518
XV5008
Xh888cf
X27r27a36m62e36.n96 0
XH518
XV5142
Xh288cG
X58ow60T49ow60A58n40o40t22h40e36rw47P44a36g40en96 0
XH518
XV5238
Xh888cE
X49n40t22e36rw59t22h40ew68p40a36g40ew68n40u40m62b40e36rw59i22nw72t22h40ew68a36p40p40r27o40p40i22a36t22ewh68Cfi
X44e36l22dw72o40fw59t22h40ew69s31t22a36t22u40sw64p40a36n40e36l22.w73T49h40e36nw73c36l22i22c36kw73o40nw73t22h40en96 0
XH518
XV5334
Xh888c"
X33G58o40t22ow60P44a36g40e36"w53b40u40t22t22o40n40.n96 0
XH518
XV5526
Xh888cA
X58l22t22e36r27n40a36t22i22v40e36l22yw67y40o40uw68c36a36nw68t22y40p40ew64t22h40ew64d40e36s31i22r27e36dw68p40a36g40ew64n40u40m62b40e36rw55t22ow68t22h40ew64m62a36i22nwf2
X68S40u40n40T44r31o40f22fwf1
X50w58i22n40d40o40ww86f27o40lh22Chy
Xn96 0
XH518
XV5622
Xh888cl
X22o40w58e36dw60b40yw60aw56c36a36r27r27i22a36g40ew56r27e36t22u40r27nw60(27o40rw47n40e36w58-27l22i22n40e36)27.n96 0
XH518
XV5814
Xh888cA
X58l22s31o40,w43y40o40uw63c36a36nw63g40ow64f27o40r27w58a36r27dw64a36n40dw64b40a36c36k40w58a36r27dw64aw60p40a36g40ew60u40s31i22n40gw64t22h40ew60e36n40t22r27i22e36sw55i22nw64t22h40ew60r27i22g40h40tw46b40u40t22t22o40nw64p40o40pn96 0
XH518
XV6198
XcS
X44u40n40 20R53e36l22e36a36s31e36 20340.202h898cL
X49a36s31t22 20c36h40a36n40g40e36:22 20140 20D58e36c36e36m62b40e36r27 201409408406h1373c1
Xn96 0
XV6336
Xp2
Xx font 1 R
Xx font 2 I
Xx font 3 B
Xx font 4 BI
Xx font 5 H
Xx font 6 HB
Xx font 7 C
Xx font 8 CB
Xx font 9 S
Xx font 10 SS
Xs10
Xf1
XH518
XV384
XcS
X44U58N58T49R53O58F44F57(40153)h1010cU
X58S44E49R53 20C53O58M71M71A58N58D58Sh1028cS
X44U58N58T49R53O58F44F57(40153)n96 0
XH518
XV768
Xh888cu
X40pw60m62e36n40u40.n96 0
XH518
XV902
Xh288cS
X44e36a36r27c36hw60f27o40rw47aw56P44a36t22t22e36r27nn96 0
XH518
XV998
Xh888cT
X49owh63Cfi
X44n40dw63aw59p40a36t22t22e36r27nw63i22nw63t22h40ew59o40u40t22p40u40tw45e36n40t22e36rw50t22h40ew59d40e36s31i22r27e36dw63s31e36a36r27c36hw63p40a36t22t22e36r27nw63i22nw63t22h40ew59s31t22a36t22u40sw54p40a36n40e36l22.w63N58o40t22e36,n96 0
XH518
XV1094
Xh888ct
X22h40ew62o40n40l22yw65v40a36l22i22dw65c36h40a36r27a36c36t22e36r27sw56i22nw65aw61s31e36a36r27c36hw65p40a36t22t22e36r27nw65a36r27ew61p40r27i22n40t22a36b40l22ew61a36s31c36i22iw47c36h40a36r27a36c36t22e36r27sw56a36n40dw65t22h40ew61s31p40a36c36en96 0
XH518
XV1190
Xh888cc
X36h40a36r27a36c36t22e36r27.w67F44o40r27w58a36r27dw67a36n40dw67b40a36c36k40w58a36r27dw67s31e36a36r27c36h40e36sw58a36r27ew63p40e36r27f27o40r27m62e36dw67u40s31i22n40gw67t22h40ew63a36p40p40r27o40p40r27i22a36t22ew64b40u40t22t22o40nn96 0
XH518
XV1286
Xh888ci
X22nw69t22h40ew65s31t22a36t22u40sw59p40a36n40e36l22.w68Aw86s31e36a36r27c36hw68i22g40n40o40r27e36sw59t22h40ew64c36u40r27r27e36n40tw50p40a36g40ew64a36n40dw68w58i22l22lwh50Cfi
X44n40dw68t22h40ew64n40e36x40tw50p40a36g40ew64t22h40a36tn96 0
XH518
XV1382
Xh888cc
X36o40n40t22a36i22n40sw61t22h40ew67d40e36s31i22r27e36dw71w58o40r27d40s31.w51H58o40p40e36f27u40l22l22y40,w51a36tw53s31o40m62ew67p40o40i22n40tw53i22nw71t22h40ew67f27u40t22u40r27ew67t22h40ew67d40e36s31i22r27e36dw71p40a36t22t22e36r27nn96 0
XH518
XV1478
Xh888cw
X58i22l22lw42b40ew56h40i22g40h40l22i22g40h40t22e36d40.n96 0
XH518
XV1612
Xh288cP
X44r27i22n40tw42P44a36r27tw42o40fw47D58o40c36u40m62e36n40tn96 0
XH518
XV1708
Xh888cE
X49i22t22h40e36rw55aw65s31i22n40g40l22ew65p40a36g40ew65o40rw56t22h40ew65e36n40t22i22r27ew65d40o40c36u40m62e36n40tw51c36a36nw69b40ew65p40r27i22n40t22e36dw69u40s31i22n40gw69b40u40t22t22o40n40sw60o40nw69t22h40ew65s31t22a36t22u40sn96 0
XH518
XV1804
Xh888cp
X40a36n40e36lw46o40rw51e36n40t22r27i22e36sw55i22nw64t22h40ew60r27i22g40h40tw46b40u40t22t22o40nw64p40o40pw64u40pw63m62e36n40u40.w63T49h40ew59p40r27i22n40t22e36rw50n40a36m62ew59e36n40t22e36r27e36dw63i22nw63t22h40ew59s31t22a36t22u40sn96 0
XH518
XV1900
Xh888cp
X40a36n40e36lw43w58i22l22lw43b40ew57p40a36s31s31e36dw61d40i22r27e36c36t22l22yw61t22ow61t22h40ewf2
X57l22p40rf1
X31(27140)27.w61I27tw43i22sw52i22m62p40o40r27t22a36n40tw43t22h40a36tw43t22h40ew57u40s31e36rw48v40e36r27i22f27yw61i22tw43i22sw53c36o40r27r27e36c36tn96 0
XH518
XV1996
Xh888co
X40t22h40e36r27w58i22s31ew73t22y40p40e36s31e36t22t22i22n40gw77c36o40m62m62a36n40d40sw67m62e36a36n40tw58f27o40rw63o40n40ew72t22y40p40ew72o40fw63p40r27i22n40t22e36rw63m62i22g40h40tw58b40ew72s31e36n40tw58t22ow76t22h40en96 0
XH518
XV2092
Xh888cw
X58r27o40n40gw60p40r27i22n40t22e36r27.n96 0
XH518
XV2226
Xh288cR
X53e36r27a36s31t22e36r27i22z36eh274cA
X58f27t22e36rw53c36h40a36n40g40e36sw57a36r27ew62m62a36d40ew62t22ow66aw62d40o40c36u40m62e36n40tw48i22tw48i22sw57n40e36c36e36s31s31a36r27yw66t22ow66t22e36l22lwf2
X48S40u40n40T44r31o40f22fwf1
X48t22ow66r27e36r27a36s31t22e36r27i22z36ew63t22h40en96 0
XH518
XV2322
Xh888Cfi
X44l22e36.w48T49h40i22sw59c36a36nw68b40ew64d40o40n40ew64u40s31i22n40gw68e36i22t22h40e36rw55aw64b40u40t22t22o40nw68o40nw68t22h40ew64s31t22a36t22u40sw59p40a36n40e36lw50o40rw54a36nw67e36n40t22r27yw67i22nw67t22h40ew63r27i22g40h40tn96 0
XH518
XV2418
Xh888cm
X62o40u40s31ew56b40u40t22t22o40nw60p40o40pw60u40pw60m62e36n40u40.n96 0
XH518
Xf3
Xs9
XV2552
XcE
X48X52A52M68P44L48E48Swwwwwn96 0
XH518
Xf1
Xs10
XV2648
Xh288cT
X49ow60p40r27e36v40i22e36ww78awh56Cfi
X44l22ew56t22h40a36tw42h40a36sw51a36l22r27e36a36d40yw60b40e36e36nw60p40r27o40c36e36s31s31e36dw60b40yw60d40i22t22r27o40f27fw47(27u40s31i22n40gw60t22h40ew56-27tw42o40p40t22i22o40n40)n96 0
XH518
XV2744
Xh576cs
X31u40n40t22r27o40f27fwh47Cfi
X44l22e36-27c36o40n40t22a36i22n40i22n40g40-27d40i22t22r27o40f27f27-27o40u40t22p40u40tn96 0
XH518
XV2840
Xh288cW
X76h40e36nw69t22h40ew65"33r27e36r27a36s31t22e36r27i22z36e36"w62c36o40m62m62a36n40dw69i22sw61i22s31s31u40e36dw70t22h40e36nw70t22h40ew66i22n40d40i22c36a36t22e36dwh70Cfi
X44l22ew66w58i22l22lw52b40ew66r27e36o40p40e36n40e36dw70a36n40dw70i22t22sw61n40e36ww88c36o40n40t22e36n40t22sn96 0
XH518
XV2936
Xh288cd
X40i22s31p40l22a36y40e36d40.n96 0
XH518
XV3128
Xh288cT
X49ow60t22y40p40e36s31e36tw42a36n40dw60p40r27e36v40i22e36ww78aw56d40o40c36u40m62e36n40tw42u40s31ew56t22h40ew56f27o40l22l22o40w58i22n40gw60c36o40m62m62a36n40dn96 0
XH518
XV3224
Xh576cs
X31u40n40t22r27o40f27fw47-27c36o40m62m62a36n40dw60"33d40e36q40nw60-27P44l22w581w60d40i22t22r27o40f27f27-27i22n40p40u40t22-h27Cfi
X44l22ew56|w36d40i22t22r27o40f27fw47-27m62sw51-27P44l22w581w60-27t22"n96 0
XH518
XV3320
Xh288cN
X58o40t22ew62t22h40a36tw48i22tw48i22sw57i22m62p40o40r27t22a36n40tw48t22ow66s31p40e36c36i22f27yw67t22h40ew63"33-27t22"w60o40p40t22i22o40nw67t22ow67d40i22t22r27o40f27fw54s31ow67t22h40a36tw49t22h40ewf2
X63S40u40n40T44r31o40f22fwf1
X49p40r27o40g40r27a36mw89c36a36nw67c36a36p40t22u40r27ew63t22h40en96 0
XH518
XV3416
Xh288co
X40u40t22p40u40t22.w61T49h40ew57"33r27e36r27a36s31t22e36r27i22z36e36"w54c36o40m62m62a36n40dw61w58i22l22lw43c36l22o40s31ew57a36n40yw60o40p40e36nwh60Cfi
X44l22e36sw51(27o40rw47p40i22p40e36s31)w47a36n40dw60o40p40e36nw60aw56n40e36ww78p40i22p40e36.w60T49h40ew56i22n40d40i22c36a36t22e36dn96 0
XH518
XV3512
Xh288cc
X36o40m62m62a36n40dw65w58i22l22lw47b40ew61r27u40nw65o40nw65t22h40ew61i22n40p40u40tw47s31i22d40ew61o40fw52t22h40ew61p40i22p40ew61t22ow65p40r27o40v40i22d40ewf2
X61S40u40n40T44r31o40f22fwf1
X47w58i22t22hw65i22t22sw56i22n40p40u40t22.w65T49h40ew62c36o40m62m62a36n40dw66p40r27oh40Chy
Xn96 0
XH518
XV3608
Xh288cv
X40i22d40i22n40gw63i22n40p40u40tw45t22owf2
X63S40u40n40T44r31o40f22fwf1
X45c36a36nw63c36o40n40t22a36i22nw63a36n40yw63c36o40m62b40i22n40a36t22i22o40nw63o40fw50p40r27o40g40r27a36m62sw54a36sw54l22o40n40gw63a36sw54t22h40ewh59Cfi
X44n40a36lw45o40u40t22p40u40tw45i22swf2
X53d40i22t22r31o40f22fwf1
X44o40u40th22Chy
Xn96 0
XH518
XV3704
Xh288cp
X40u40t22.n96 0
XH518
Xf3
Xs9
XV3838
XcS
X40E48Ew66A52L48S40Owwwwwn96 0
XH518
Xf2
Xs10
XV3934
Xh288cs
X31u40n40t22o40o40l22sf1
X37(27140)wf2
X47d40i22t22r31o40f22ff1
X28(27140)n96 0
XH518
Xf3
Xs9
XV4068
XcB
X48U52G56Swwwwwn96 0
XH518
Xf1
Xs10
XV4164
Xh288cD
X58u40ew60t22ow64b40u40g40sw55i22nw64S44u40n40V58i22e36w58,w44s31c36r27o40l22l22b40a36r27sw55d40ow64n40o40tw46w58o40r27k40.w44H58o40p40e36f27u40l22l22yw64t22h40i22sw55p40r27o40b40l22e36m62sw55w58i22l22lw47b40ewh61Cfi
X44x40e36dw65i22nw65aw61f27u40t22u40r27ew61r27e36l22e36a36s31en96 0
XH518
XV4260
Xh288co
X40fw47S44u40nw60s31o40f27t22w58a36r27e36.n96 0
XH518
XV4394
Xh288cS
X44o40m62e36d40a36y40,w40t22h40ew56s31e36a36r27c36hw60c36o40m62m62a36n40d40sw51w58i22l22lw42h40i22g40h40l22i22g40h40tw42t22h40ew56t22e36x40tw42t22h40a36tw42t22h40e36ywh60Cfi
X44n40d40.w60T49h40i22sw51w58i22l22lw42b40ew56m62u40c36hw60e36a36s31i22e36rw47o40nw60t22h40ew56u40s31e36r27.n96 0
XH518
Xf3
Xs9
XV4528
XcA
X52U52T48H56O56Rwwwwwn96 0
XH518
Xf1
Xs10
XV4624
Xh288cC
X53r27e36d40i22tw42f27o40rw47t22h40i22sw51p40r27o40g40r27a36mw82g40o40e36sw51t22ow60aw56n40u40m62b40e36rw47o40fw47p40e36o40p40l22ew56i22n40c36l22u40d40i22n40gw60B53r27i22a36nw60K58e36r27n40i22g40h40a36nw60(27B53e36l22lw42L49a36b40s31)w48f27o40rwh48Cfi
X44r27s31tw43d40e36v40e36l22o40ph40Chy
Xn96 0
XH518
XV4720
Xh288ci
X22n40gw63D58e36v40i22c36ew59I27n40d40e36p40e36n40d40e36n40tw45T49r27o40f27f27,w43U58.w43C53.w43B53e36r27k40e36l22e36yw63f27o40rw50d40e36v40e36l22o40p40i22n40gw62t22h40ew58o40r27i22g40i22n40a36lwf2
X44v36c36a40twf1
X44p40r27o40g40r27a36m62.w62R53i22c36h40a36r27dw62L49.w42H58y40d40e36,n96 0
XH518
XV4816
Xh288cP
X44u40r27d40u40ew66U58n40i22v40e36r27s31i22t22y40,w50a36n40dw70D58a36v40i22dw71S44l22a36t22t22e36n40g40r27e36n40,w51U58.20C53.w51B53e36r27k40e36l22e36y40,w51w58r27o40t22ew67t22h40ew67o40r27i22g40i22n40a36lw53v40e36r27s31i22o40nw71o40fw58t22h40i22sw62p40r27o40g40r27a36mw93t22on96 0
XH518
XV4912
Xh288cr
X27a36s31t22e36r27i22z36ewf2
X63d40i22t22r31o40f22fwf1
X49o40u40t22p40u40tw49f27o40rw54t22h40ew63S44u40n40s31.w67F44i22n40a36l22l22yw67M71a36l22c36o40l22mw88S44l22a36n40e36y40,w46S44c36h40l22u40m62b40e36r27g40e36rw53P44a36l22ow66A58l22t22ow66R53e36s31e36a36r27c36h40,w46r27e36w58r27o40t22en96 0
XH518
XV5008
Xh288cm
X62o40s31tw44o40fw49t22h40ew58c36o40d40ew58t22ow62m62a36k40ew59i22tw45r27u40nw63u40n40d40e36rw50S44u40n40-273w63U58n40i22xw63a36n40dw63t22ow63e36x40t22e36n40dw63t22h40ew59u40s31e36rw50i22n40t22e36r27f27a36c36e36.w63N58e36e36d40l22e36s31sw54t22ow63s31a36y40,w43c36r27e36d40i22tn96 0
XH518
XV5104
Xh288cf
X27o40rw49a36l22lw44g40o40o40dw61p40o40r27t22i22o40n40sw52o40fw48t22h40i22sw52p40r27o40g40r27a36mw83s31h40o40u40l22dw61g40ow61t22ow61t22h40ewh57Cfi
X44r27s31tw43a36u40t22h40o40r27s31;w43b40l22a36m62ew57f27o40rw48t22h40ew57b40a36dw61s31e36c36t22i22o40n40sw52r27e36s31t22sw52w58i22t22hw61t22h40en96 0
XH518
XV5200
Xh288Cfi
X44n40a36lw42a36u40t22h40o40r27.n96 0
XH518
Xf3
Xs9
XV5334
XcS
X40U52P44P44O56R52Twwwwwn96 0
XH518
Xf1
Xs10
XV5430
Xh288cT
X49h40i22sw52c36o40m62m62a36n40dw61w58a36sw52d40e36v40e36l22o40p40e36dw61a36sw52a36nw61i22n40d40e36p40e36n40d40e36n40tw43p40r27o40j22e36c36tw43t22ow61s31a36t22i22s31f27yw61aw58n40e36e36dw62o40fw49t22h40ew58a36u40t22h40o40r27.w62T49h40i22sw53p40r27o40g40r27a36mw84m62a36yn96 0
XH518
XV5526
Xh288cc
X36o40n40t22a36i22nw68b40u40g40sw59a36n40dw68t22h40ew64u40s31e36rw55i22sw59c36a36u40t22i22o40n40e36dw68t22ow68i22n40d40e36p40e36n40d40e36n40t22l22yw68v40e36r27i22f27yw68t22h40a36tw50t22h40ew64p40r27o40g40r27a36mw90i22sw58s31u40i22t22a36b40l22ew63f27o40rw54t22h40ew63u40s31e36r27'27sn96 0
XH518
XV5622
Xh288ci
X22n40t22e36n40d40e36dw72p40u40r27p40o40s31e36.w72T49h40ew68p40r27o40g40r27a36mw94i22sw63m62a36d40ew68a36v40a36i22l22a36b40l22ew68o40nw72a36nw72`27`27a36sw64i22s31'27'w60b40a36s31i22sw64w58i22t22hw73a36l22lw55f27a36u40l22t22sw64a36n40dw73w58i22t22h40o40u40tw55a36n40yn96 0
XH518
XV5718
Xh288ci
X22m62p40l22i22e36dw68o40rw55e36x40p40r27e36s31s31e36dw68w58a36r27r27a36n40t22i22e36sw59o40rw54s31u40p40p40o40r27tw49f27r27o40mw89e36i22t22h40e36rw54t22h40ew63a36u40t22h40o40r27,w47M71a36l22c36o40l22mw89S44l22a36n40e36y40,w47o40rw54t22h40ew63S44c36h40l22u40m62b40e36r27g40e36rn96 0
XH518
XV5814
Xh288cP
X44a36l22ow60A58l22t22ow60R53e36s31e36a36r27c36hw60L49a36b40o40r27a36t22o40r27y40.n96 0
XH518
XV6198
XcS
X44u40n40 20R53e36l22e36a36s31e36 20340.202h898cL
X49a36s31t22 20c36h40a36n40g40e36:22 20140 20D58e36c36e36m62b40e36r27 201409408406h1373c2
Xn96 0
Xx trailer
XV6336
Xx stop
END_OF_FILE
if test 21525 -ne `wc -c <'xtroff/suntroff.tr'`; then
echo shar: \"'xtroff/suntroff.tr'\" unpacked with wrong size!
fi
# end of 'xtroff/suntroff.tr'
fi
if test -f 'xtroff/sunwindows.c' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'xtroff/sunwindows.c'\"
else
echo shar: Extracting \"'xtroff/sunwindows.c'\" \(23542 characters\)
sed "s/^X//" >'xtroff/sunwindows.c' <<'END_OF_FILE'
X/*
X * SunTroff - A program to display the output of Device Independent
X * Troff as a window on a Sun Workstation.
X *
X * Windows.c - This file contains the user interface and most of the
X * high level window manager code. This file provides a page
X * size bitmap for the actual drawing routines to work on.
X *
X * Authors - The original version of this program was written by
X * Richard L. Hyde (Purdue)
X * David Slattengren (Berkeley)
X * It was nearly all rewritten, cleaned up and a more elegant
X * user interface installed by
X * Malcolm Slaney (Schlumberger Palo Alto Research)
X *
X * Legalese - This command was developed as an independent project
X * to satisfy a need of the author. This program may contain
X * bugs and the user is cautioned to independently verify that
X * the program is suitable for the user's intended purpose.
X * The program is made available on an ``as is'' basis with
X * all faults and without any implied or expressed warranties
X * or support from either the author, Malcolm Slaney, or
X * Schlumberger Palo Alto Research Laboratory.
X *
X * I am putting this program in the public domain. You are
X * free to use it as you wish. In return I ask two things.
X * First, that you do not remove the names of the authors
X * from this work. Secondly, if you make changes or
X * improvements to this program that you pass these back to
X * the author so that everybody can benefit from the
X * improvements.
X *
X * Malcolm Slaney (December 1986)
X * Schlumberger Palo Alto Research
X * 3340 Hillview Avenue
X * Palo Alto, CA 94304
X * (415) 496-4669
X * spar!malcolm at decwrl.dec.com
X * malcolm at ecn.purdue.edu
X * malcolm at spar.slb.com (Someday)
X */
X
X#ifdef SUNTOOLS
X#include <suntool/sunview.h>
X#include <suntool/panel.h>
X#include <suntool/canvas.h>
X#include <suntool/scrollbar.h>
X#include <stdio.h>
X#include <ctype.h>
X#include <signal.h>
X#include <sys/types.h>
X#include <sys/file.h>
X#include "suntroff.h"
X
XFrame BaseFrame; /* Top Level Window Frame */
XCanvas DrawingCanvas; /* Main Drawing Window for Text */
XMenu MainMenu; /* Top Level User Menu */
XScrollbar HorzScroll; /* Horizontal Scroll Bar */
XScrollbar VertScroll; /* Vertical Scroll Bar */
Xstruct pixrect *PagePixRect; /* Full Page Pix Rect for Drawing Page */
XCursor OriginalCursor;
Xint ViewLeft = 0, ViewTop = 0; /* Page Offset for display */
Xint OriginalX = -1;
Xint OriginalY = -1;
Xint Scrollbars = 1; /* Does User want scrollbars????? */
X
X#define PAGE_WIDTH 8.5
X#define PAGE_HEIGHT 11
X#define PAGE_PIXEL_WIDTH (int)(SUNRES*PAGE_WIDTH)
X#define PAGE_PIXEL_HEIGHT (int)(SUNRES*PAGE_HEIGHT)
X
Xstatic int CurrentPage = 1;/* Current Page Number Being Displayed */
Xchar FileName[BUFSIZ]; /* File containing ditroff output */
Xchar TempFileName[BUFSIZ]; /* Temp file that can be deleted. */
Xchar CommandString[BUFSIZ]; /* String pointer to ditroff command */
Xchar *ActualFileName; /* File that buffers ditroff output */
Xint PageRequest = 0; /* Partially read page number request */
Xint CommandMode = 0; /* Taking input from file or command line */
Xint ErrorsPending = 0; /* Set if errors are pending and need to be
X * displayed. Used in case tool is iconic
X * when error message is needed. This boolean
X * variable is checked at redisplay time.
X * This was done at the suggestion of
X * davy at ecn.purdue.edu.......11/28/86
X */
X
XPanel CommandPanel;
XFrame CommandFrame;
XPanel_item InputItem;
XPanel_item SearchItem;
XPanel_item PageItem;
XPanel_item PrinterItem;
XPanel ErrorPanel = 0;
XFrame ErrorFrame = 0;
X
X
Xmain(argc, argv)
Xint argc;
Xchar **argv;
X{
X int RepaintCanvas(), CanvasInput();
X Pixwin *PixWin;
X
X BaseFrame = window_create(NULL,FRAME,
X FRAME_ARGC_PTR_ARGV, &argc, argv,
X FRAME_LABEL,"Generic Previewer 0.0",
X WIN_ERROR_MSG,"Can't create window.",
X FRAME_INHERIT_COLORS, 1,
X#if FULLPAGE > 0
X WIN_WIDTH, PAGE_PIXEL_WIDTH,
X#endif FULLPAGE
X 0);
X
X CreatePopUpPanel();
X
X DrawingCanvas = window_create(BaseFrame,CANVAS,
X CANVAS_REPAINT_PROC, RepaintCanvas,
X WIN_EVENT_PROC, CanvasInput,
X 0);
X
X PagePixRect = mem_create(PAGE_PIXEL_WIDTH,PAGE_PIXEL_HEIGHT,1);
X if (!PagePixRect){
X fprintf(stderr,"Can't create page pixrect.\n");
X exit(1);
X }
X
X
X window_set(DrawingCanvas,WIN_CONSUME_PICK_EVENTS,
X WIN_IN_TRANSIT_EVENTS,
X WIN_MOUSE_BUTTONS,WIN_ASCII_EVENTS,0,
X 0);
X
X MainMenu = menu_create(MENU_STRINGS,"Show Status", "Rerasterize",
X "Print", "Print Page", "Previous Page",
X "Next Page", "Quit",0);
X
X PixWin = canvas_pixwin(DrawingCanvas);
X#ifdef WINDOWDEBUG
X pr_vector(PagePixRect,0,0,
X PAGE_PIXEL_WIDTH,PAGE_PIXEL_HEIGHT,PIX_SRC,1);
X pr_vector(PagePixRect,PAGE_PIXEL_WIDTH,0,
X 0,PAGE_PIXEL_HEIGHT,PIX_SRC,1);
X#endif WINDOWDEBUG
X OriginalCursor = cursor_copy(window_get(DrawingCanvas,WIN_CURSOR));
X InitializeApplication(BaseFrame, DrawingCanvas);
X
X argv++;
X while (*argv && argv[0][0] == '-'){
X if (strncmp(argv[0],"-scrollbar",4) == NULL){
X Scrollbars = 0;
X } else if (strncmp(argv[0],"-command",3) == NULL){
X strcpy(CommandString,argv[1]);
X CommandMode = 1;
X PanelInputItem();
X argv++;
X } else {
X fprintf(stderr,"Unknown option %s\n",argv[0]);
X }
X if (*argv){
X argv++;
X }
X }
X if (argv[0] && argv[0][0]){
X CommandMode = 0;
X strcpy(FileName,argv[0]);
X PanelInputItem();
X }
X
X if (Scrollbars) {
X HorzScroll = scrollbar_create(0);
X VertScroll = scrollbar_create(0);
X window_set(DrawingCanvas,
X WIN_VERTICAL_SCROLLBAR,VertScroll,
X WIN_HORIZONTAL_SCROLLBAR,HorzScroll,
X 0);
X SetScrollBarSize(BaseFrame,DrawingCanvas,
X VertScroll,HorzScroll);
X }
X
X Rerasterize();
X
X window_main_loop(BaseFrame);
X if (*TempFileName)
X unlink(TempFileName);
X exit(0);
X}
X
XRepaintCanvas(canvas,pw,repaint_area)
XCanvas canvas;
XPixwin *pw;
XRectlist *repaint_area;
X{
X pw_write(pw,0,0,PAGE_PIXEL_WIDTH,PAGE_PIXEL_HEIGHT,PIX_SRC,
X PagePixRect,ViewLeft,ViewTop);
X
X if (ErrorsPending && !window_get(BaseFrame, FRAME_CLOSED)){
X ErrorsPending = 0;
X window_set(ErrorFrame,WIN_SHOW,TRUE,0);
X }
X}
X
XCanvasInput(window,event,arg)
XWindow window;
XEvent *event;
Xcaddr_t arg;
X{
X int i;
X
X switch(event_id(event)){
X case MS_RIGHT:
X PageRequest = 0;
X event = canvas_window_event(DrawingCanvas,event);
X PopUpMenu(window,event,arg);
X break;
X case MS_MIDDLE:
X PageRequest = 0;
X if (event_is_down(event)) {
X StartPan(event);
X } else {
X EndPan(event);
X } break;
X case LOC_WINEXIT:
X EndPan(event);
X break;
X case LOC_STILL:
X case LOC_MOVE:
X if (OriginalX > 0){
X if (event_is_up(event)){
X EndPan();
X } else {
X PagePan(event);
X }
X }
X break;
X case WIN_REPAINT:
X break;
X case WIN_RESIZE:
X if (Scrollbars){
X SetScrollBarSize(BaseFrame,DrawingCanvas,
X VertScroll,HorzScroll);
X }
X break;
X case SCROLL_ENTER:
X break;
X case SCROLL_REQUEST:
X if (Scrollbars){
X scrollbar_paint((Scrollbar)arg);
X#ifdef SCROLLDEBUG
X printf("Scrollbars are at (%d,%d).\n",
X scrollbar_get(HorzScroll,SCROLL_VIEW_START),
X scrollbar_get(VertScroll,SCROLL_VIEW_START));
X#endif SCROLLDEBUG
X /*
X * Due to a bug in suntools, these
X * two calls ALWAYS seem to return
X * zero.
X */
X ViewLeft = (int)scrollbar_get(HorzScroll,
X SCROLL_VIEW_START);
X ViewTop = (int)scrollbar_get(VertScroll,
X SCROLL_VIEW_START);
X RepaintCanvas(DrawingCanvas,
X canvas_pixwin(DrawingCanvas),0);
X }
X break;
X case '0': case '1': case '2': case '3': case '4':
X case '5': case '6': case '7': case '8': case '9':
X PageRequest = PageRequest*10 + event_id(event) - '0';
X break;
X case 'g': case 'G': case '\n':
X CurrentPage = ShowPage(PageRequest);
X PageRequest = 0;
X break;
X case 033: /* Escape */
X PageRequest = 0;
X default:
X#ifdef WINDOWDEBUG
X printf("Got an event of id %d (%x).\n",
X event_id(event),event_id(event));
X#endif WINDOWDEBUG
X break;
X }
X}
X
X/*
X * The following icon of a hand was generated by Stefano Concino at SPAR.
X */
Xstatic short hand_cursor_data[16] = {
X 0x0100, 0x0290, 0x12A8, 0x2AA8, 0x2AA8, 0x2AA8, 0x2AA8, 0x2AA8,
X 0x2E4B, 0x2015, 0x1015, 0x1815, 0x0C09, 0x0402, 0x0404, 0x0618,
X
X };
Xmpr_static(hand_cursor_pixrect,16,16,1,hand_cursor_data);
XCursor HandCursor;
X
X
XStartPan(event)
XEvent *event;
X{
X OriginalX = event_x(event);
X OriginalY = event_y(event);
X if (!HandCursor){
X HandCursor = cursor_create(CURSOR_IMAGE,
X &hand_cursor_pixrect,0);
X }
X window_set(DrawingCanvas,WIN_CURSOR,HandCursor,0);
X
X}
X
XEndPan(event)
XEvent *event;
X{
X if (OriginalX != -1 && OriginalY != -1){
X OriginalX = OriginalY = -1;
X window_set(DrawingCanvas,
X WIN_CURSOR,OriginalCursor,
X 0);
X }
X}
X
XPagePan(event)
XEvent *event;
X{
X ViewLeft -= event_x(event) - OriginalX;
X if (ViewLeft + (int)window_get(DrawingCanvas,WIN_WIDTH) >
X PAGE_PIXEL_WIDTH)
X ViewLeft = PAGE_PIXEL_WIDTH -
X (int)window_get(DrawingCanvas,WIN_WIDTH);
X if (ViewLeft < 0)
X ViewLeft = 0;
X
X ViewTop -= event_y(event) - OriginalY;
X if (ViewTop + (int)window_get(DrawingCanvas,WIN_HEIGHT) >
X PAGE_PIXEL_HEIGHT)
X ViewTop = PAGE_PIXEL_HEIGHT -
X (int)window_get(DrawingCanvas,WIN_HEIGHT);
X if (ViewTop < 0)
X ViewTop = 0;
X if ((OriginalX != event_x(event)) || (OriginalY != event_y(event))){
X RepaintCanvas(DrawingCanvas,canvas_pixwin(DrawingCanvas),0);
X OriginalX = event_x(event);
X OriginalY = event_y(event);
X SetScrollBar();
X }
X}
X
XPopUpMenu(window,event,arg)
XWindow *window;
XEvent *event;
Xcaddr_t arg;
X{
X int i;
X i = (int) menu_show(MainMenu,window,event,0);
X switch(i){
X case 1:
X PopUpPanel();
X break;
X case 2:
X Rerasterize();
X break;
X case 3:
X MousePrintDocument();
X break;
X case 4:
X MousePrintPage();
X break;
X case 5:
X if (CurrentPage > 0){
X CurrentPage = ShowPage(--CurrentPage);
X }
X break;
X case 6:
X CurrentPage = ShowPage(++CurrentPage);
X break;
X case 7:
X window_destroy(BaseFrame);
X break;
X }
X}
X
XCreatePopUpPanel()
X{
X int LineNumber = 0;
X int PanelCommandSpec(), ErasePopUpPanel(),
X SearchForward(), SearchBackward(),
X GotoPage(), MousePrintPage(), MousePrintDocument(),
X ClosePanel(), EnterFileMode(), EnterCommandMode(),
X Rerasterize();
X char *p;
X
X#ifdef TOGETHER
X CommandFrame = BaseFrame;
X#else SEPERATE
X CommandFrame = window_create(BaseFrame, FRAME, 0);
X#endif TOGETHER
X CommandPanel = window_create(CommandFrame,PANEL,0);
X
X panel_create_item(CommandPanel,PANEL_MESSAGE,
X PANEL_LABEL_STRING,"SunTroff Status and Command Panel",
X PANEL_ITEM_X,ATTR_COL(29),
X PANEL_ITEM_Y,ATTR_COL(LineNumber++),
X 0);
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,
X "Close Status Window",0,0),
X PANEL_NOTIFY_PROC,ClosePanel,
X PANEL_ITEM_X,ATTR_COL(0),
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,
X "Specify Input File",0,0),
X PANEL_NOTIFY_PROC,EnterFileMode,
X PANEL_ITEM_X, ATTR_COL(24),
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,
X "Specify Formatting Command",
X 0,0),
X PANEL_NOTIFY_PROC,EnterCommandMode,
X PANEL_ITEM_X, ATTR_COL(47),
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,
X "Rerasterize",
X 0,0),
X PANEL_NOTIFY_PROC,Rerasterize,
X PANEL_ITEM_X, ATTR_COL(76),
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X LineNumber++;
X
X InputItem =
X panel_create_item(CommandPanel,PANEL_TEXT,
X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
X PANEL_LABEL_STRING,"Enter file name here: ",
X PANEL_NOTIFY_STRING, "\033\04\03\012\015",
X PANEL_ITEM_X,ATTR_COL(0),
X PANEL_ITEM_Y,ATTR_COL(LineNumber++)+2,
X PANEL_VALUE_DISPLAY_LENGTH,60,
X 0);
X
X PanelInputItem();
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,"Search Backward",
X 0,0),
X PANEL_NOTIFY_PROC, SearchBackward,
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,"Search Forward",
X 0,0),
X PANEL_NOTIFY_PROC, SearchForward,
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X SearchItem =
X panel_create_item(CommandPanel,PANEL_TEXT,
X PANEL_LABEL_STRING, "Enter search string here: ",
X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
X PANEL_NOTIFY_STRING, "\033\04\03\012\015",
X PANEL_ITEM_Y,ATTR_COL(LineNumber)+2,
X PANEL_ITEM_X,ATTR_COL(35),
X PANEL_VALUE_DISPLAY_LENGTH,27,
X 0);
X
X LineNumber++;
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,"Goto Page",
X 0,0),
X PANEL_NOTIFY_PROC, GotoPage,
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X PANEL_ITEM_X,ATTR_COL(11),
X 0);
X
X PageItem =
X panel_create_item(CommandPanel,PANEL_TEXT,
X PANEL_LABEL_STRING, "Enter page number here: ",
X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
X PANEL_NOTIFY_STRING, "\033\04\03\012\015",
X PANEL_ITEM_Y,ATTR_COL(LineNumber)+2,
X PANEL_ITEM_X,ATTR_COL(35),
X PANEL_VALUE_DISPLAY_LENGTH,29,
X 0);
X
X LineNumber++;
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,"Print Page",
X 0,0),
X PANEL_NOTIFY_PROC, MousePrintPage,
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X PANEL_ITEM_X,ATTR_COL(2),
X 0);
X
X panel_create_item(CommandPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(CommandPanel,"Print Document",
X 0,0),
X PANEL_NOTIFY_PROC, MousePrintDocument,
X PANEL_ITEM_Y,ATTR_COL(LineNumber),
X 0);
X
X PrinterItem =
X panel_create_item(CommandPanel,PANEL_TEXT,
X PANEL_LABEL_STRING, "Enter printer name here: ",
X PANEL_NOTIFY_LEVEL, PANEL_SPECIFIED,
X PANEL_NOTIFY_STRING, "\033\04\03\012\015",
X PANEL_VALUE, getenv("PRINTER"),
X PANEL_ITEM_Y,ATTR_COL(LineNumber)+2,
X PANEL_ITEM_X,ATTR_COL(35),
X PANEL_VALUE_DISPLAY_LENGTH,28,
X 0);
X
X
X window_fit(CommandPanel);
X#ifndef TOGETHER
X window_fit(CommandFrame);
X#endif !TOGETHER
X}
X
XSetPrinter(Name)
Xchar *Name;
X{
X /* If you want the typesetter document to
X set the printer name then remove this
X ifdef. The Adobe LaserWriter support
X always puts psc out as the printer name
X and since we don't have a printer
X called psc (instead we use lw{1,2,3,4})
X we lose. With this ifdef then the
X user's PRINTER environment variable is
X always used as the default printer. */
X
X#ifdef NEVER
X panel_set(PrinterItem, PANEL_VALUE, Name,
X 0);
X#endif
X}
X
XPanelInputItem(){
X if (CommandMode){
X panel_set(InputItem,
X PANEL_LABEL_STRING,"Enter formatting command here: ",
X PANEL_VALUE,CommandString,
X 0);
X } else {
X panel_set(InputItem,
X PANEL_LABEL_STRING, "Enter file name here: ",
X PANEL_VALUE,FileName,
X 0);
X }
X
X}
X
XClosePanel()
X{
X window_set(CommandFrame,WIN_SHOW,FALSE,0);
X}
X
XEnterFileMode()
X{
X if (CommandMode){
X strcpy(CommandString, panel_get_value(InputItem));
X
X CommandMode = 0;
X PanelInputItem();
X panel_paint(CommandPanel,PANEL_CLEAR);
X }
X}
X
XEnterCommandMode()
X{
X if (!CommandMode){
X strcpy(FileName, panel_get_value(InputItem));
X
X CommandMode = 1;
X PanelInputItem();
X panel_paint(CommandPanel,PANEL_CLEAR);
X }
X}
X
XMousePrintPage()
X{
X char *Printer;
X
X Printer = panel_get_value(PrinterItem);
X if (!Printer){
X warning("No printer specified.\nUse 'Show Status' menu item to set printer name.\n");
X return;
X }
X PrintPage(CurrentPage,Printer);
X}
X
XMousePrintDocument()
X{
X char *Printer;
X
X Printer = panel_get_value(PrinterItem);
X if (!Printer){
X warning("No printer specified.\nUse 'Show Status' menu item to set printer name.\n");
X return;
X }
X PrintDocument(ActualFileName,Printer);
X
X}
X
XPopUpPanel(){
X window_set(CommandFrame,WIN_SHOW,TRUE,0);
X}
X
XErasePopUpPanel(){
X window_set(CommandFrame,WIN_SHOW,FALSE,0);
X}
X
XSearchForward(){
X int i;
X
X i = SearchFile(panel_get_value(SearchItem),CurrentPage,1);
X if (i){
X CurrentPage = i;
X ShowPage(i);
X } else {
X SetTitleBar("Displaying",CurrentPage);
X }
X}
X
XSearchBackward(){
X int i;
X
X i = SearchFile(panel_get_value(SearchItem),CurrentPage,-1);
X if (i){
X CurrentPage = i;
X ShowPage(i);
X } else {
X SetTitleBar("Displaying",CurrentPage);
X }
X}
X
XGotoPage(){
X CurrentPage = ShowPage(atoi(panel_get_value(PageItem)));
X}
X
X /*
X * Set the size of the scrollbar
X * to a fraction of the size of
X * the drawing canvas. The size of
X * the scrollbar area is given by
X * the page size, the size of the
X * actual scrollbar is given by the
X * the canvas dimensions.
X */
XSetScrollBarSize(BaseFrame,DrawingCanvas,VertScroll,HorzScroll)
XFrame BaseFrame;
XCanvas DrawingCanvas;
XScrollbar VertScroll, HorzScroll;
X{
X if (!Scrollbars)
X return;
X
X scrollbar_set(VertScroll,
X SCROLL_OBJECT_LENGTH,PAGE_PIXEL_HEIGHT,
X SCROLL_VIEW_LENGTH,window_get(DrawingCanvas,WIN_HEIGHT),
X SCROLL_VIEW_START,ViewTop,
X 0);
X scrollbar_set(HorzScroll,
X SCROLL_OBJECT_LENGTH,PAGE_PIXEL_WIDTH,
X SCROLL_VIEW_LENGTH,window_get(DrawingCanvas,WIN_WIDTH),
X SCROLL_VIEW_START,ViewLeft,
X 0);
X}
X
XSetScrollBar()
X{
X if (Scrollbars){
X scrollbar_set(VertScroll,
X SCROLL_VIEW_START,ViewTop,
X 0);
X scrollbar_set(HorzScroll,
X SCROLL_VIEW_START,ViewLeft,
X 0);
X scrollbar_paint(VertScroll);
X scrollbar_paint(HorzScroll);
X }
X}
X
XRerasterize()
X{
X static FILE *FilePointer = 0;
X static FILE *PipePointer = 0;
X static int ProcessPid = 0;
X
X if (FilePointer){
X fclose(FilePointer);
X }
X if (PipePointer){
X fclose(PipePointer);
X signal(SIGKILL, ProcessPid);
X }
X ProcessPid = 0;
X PipePointer = FilePointer = 0;
X
X if (!CommandMode){
X strcpy(FileName,panel_get_value(InputItem));
X if (!FileName || !FileName[0]){
X warning("No input file specified.\nUse the status window to enter a file name.");
X return;
X }
X
X FilePointer = fopen(FileName,"r");
X if (!FilePointer){
X warning("Can't open %s for reading input.\n",
X FileName);
X } else {
X ActualFileName = FileName;
X InitializeFile(FilePointer, FilePointer);
X }
X } else {
X char Buffer[BUFSIZ];
X static char FileName[BUFSIZ], *p;
X int i, PipeFds[2];
X
X strcpy(CommandString,panel_get_value(InputItem));
X if (!CommandString){
X warning("Rasterize called with out a command.\nUse status panel to set command.");
X return;
X }
X p = CommandString;
X while (isspace(*p))
X p++;
X if (!*p){
X warning("Rasterize called without a command.\nUse the status panel to set a command.");
X return;
X }
X
X pipe(PipeFds); /* Get two halves of pipe */
X
X ProcessPid = fork(); /* And then Fork */
X if (!ProcessPid){ /* First the Child */
X close(1);
X dup2(PipeFds[1], 1);
X close(PipeFds[0]);
X system(p);
X exit(0);
X }
X
X PipePointer = fdopen(PipeFds[0], "r");
X close(PipeFds[1]);
X
X if (*TempFileName) {
X strcpy(FileName, TempFileName);
X } else {
X strcpy(FileName,"/tmp/suntroff.XXXXXX");
X mktemp(FileName);
X strcpy(TempFileName, FileName);
X }
X
X FilePointer = fdopen(open(FileName,
X O_RDWR|O_CREAT|O_TRUNC,0644), "r+");
X
X if (!FilePointer){
X fprintf(stderr,
X "Can't open buffer file for the command:\n");
X fprintf(stderr,"\t%s\n", CommandString);
X exit(1);
X }
X ActualFileName = FileName;
X InitializeFile(PipePointer, FilePointer);
X }
X
X ShowPage(CurrentPage);
X}
X
XSetTitleBar(Status,PageNumber)
Xchar *Status;
Xint PageNumber;
X{
X extern char *DefaultTitle;
X char Buffer[BUFSIZ];
X char TempStatus[BUFSIZ];
X int FrameWidth, Width, i;
X static char PageNumberValue[20];
X
X FrameWidth = (int) window_get(BaseFrame,WIN_WIDTH)/
X (int) window_get(BaseFrame,WIN_COLUMN_WIDTH) - 1;
X
X if (PageNumber >= 0)
X sprintf(TempStatus,"%s Page %d",Status,PageNumber);
X else
X sprintf(TempStatus, "%s", Status);
X
X strncpy(Buffer,DefaultTitle,BUFSIZ);
X i = strlen(DefaultTitle);
X
X Width = strlen(TempStatus);
X
X while (i + Width < FrameWidth){
X Buffer[i++] = ' ';
X }
X if (FrameWidth - i > 0){
X strncpy(&Buffer[i],TempStatus,FrameWidth-i);
X }
X window_set(BaseFrame,FRAME_LABEL,Buffer,0);
X if (PageNumber >= 0){
X sprintf(PageNumberValue,"%d",PageNumber);
X panel_set_value(PageItem,PageNumberValue);
X }
X}
X
Xstatic char SavedTitleBar[BUFSIZ];
X
XSaveTitleBar(){
X char *p;
X
X p = window_get(BaseFrame, FRAME_LABEL, 0);
X if (p){
X strncpy(SavedTitleBar, p, BUFSIZ);
X }
X}
X
XRestoreTitleBar(){
X window_set(BaseFrame,FRAME_LABEL,SavedTitleBar,0);
X}
X
X#define MAXLINES 100
Xstatic int LineNumber = 0;
Xstatic Panel_item ItemList[MAXLINES];
X
Xfatal(String, a1, a2, a3, a4, a5, a6, a7, a8)
Xchar *String;
Xint a1, a2, a3, a4, a5, a6, a7, a8;
X{
X fprintf(stderr,"%s Fatal Error: ",DefaultTitle);
X fprintf(stderr,String,a1,a2,a3,a4,a5,a6,a7,a8);
X if (*TempFileName)
X unlink(TempFileName);
X exit(1);
X}
X
Xwarning(String,a1,a2,a3,a4,a5,a6,a7,a8)
Xchar *String;
Xint a1, a2,a3,a4,a5,a6,a7,a8;
X{
X char *p, Message[BUFSIZ], *MessagePointer;
X int c, i, ErrorDone();
X
X sprintf(Message,String,a1,a2,a3,a4,a5,a6,a7,a8);
X
X if (!ErrorFrame){
X for (i=0;i<MAXLINES;i++){
X ItemList[i] = 0;
X }
X LineNumber = 0;
X ErrorFrame = window_create(BaseFrame,FRAME,0);
X ErrorPanel = window_create(ErrorFrame,PANEL,0);
X panel_create_item(ErrorPanel,PANEL_BUTTON,
X PANEL_LABEL_IMAGE,
X panel_button_image(ErrorPanel,
X "Ok!", 0, 0),
X PANEL_ITEM_Y,1,
X PANEL_NOTIFY_PROC, ErrorDone,
X 0);
X
X }
X
X/* window_set(ErrorFrame,WIN_SHOW,FALSE,0);
X */
X MessagePointer = p = Message;
X while (*p) {
X for (;*p;p++){
X if (*p == '\n')
X break;
X }
X
X c = *p;
X *p = NULL;
X
X ItemList[LineNumber] = panel_create_item(ErrorPanel,
X PANEL_MESSAGE,
X PANEL_LABEL_STRING,
X MessagePointer,
X PANEL_ITEM_Y,
X ATTR_COL(LineNumber),
X PANEL_ITEM_X,
X ATTR_COL(7),
X 0);
X *p = c;
X if (c)
X p++;
X MessagePointer = p;
X LineNumber++;
X }
X /* Leave a blank line */
X ItemList[LineNumber] = panel_create_item(ErrorPanel,
X PANEL_MESSAGE,
X PANEL_LABEL_STRING, "",
X PANEL_ITEM_Y,
X ATTR_COL(LineNumber),
X PANEL_ITEM_X,
X ATTR_COL(7),
X 0);
X LineNumber++;
X
X window_fit(ErrorPanel);
X window_fit(ErrorFrame);
X
X ErrorsPending++;
X if (!window_get(BaseFrame, FRAME_CLOSED)){
X ErrorsPending = 0;
X window_set(ErrorFrame,WIN_SHOW,TRUE,0);
X }
X}
X
XErrorDone()
X{
X int i;
X
X window_set(ErrorFrame,WIN_SHOW,FALSE,0);
X LineNumber = 0;
X
X for (i = 0; i < MAXLINES && ItemList[i]; i++){
X if (ItemList[i]){
X panel_free(ItemList[i]);
X ItemList[i] = 0;
X }
X }
X
X}
X
X#ifdef STANDALONE
X
XInitializeFile(){
X printf("Initialize File called.\n");
X}
X
XPrintDocument(){
X printf("Print Document called.\n");
X}
X
XPrintPage(){
X printf("Print Page called.\n");
X}
X
XInitializeApplication(){
X pr_vector(PagePixRect,0,0,
X PAGE_PIXEL_WIDTH,PAGE_PIXEL_HEIGHT,PIX_SRC,1);
X pr_vector(PagePixRect,PAGE_PIXEL_WIDTH,0,
X 0,PAGE_PIXEL_HEIGHT,PIX_SRC,1);
X printf("Initialize Application Called.\n");
X}
X
XShowPage(){
X printf("Show Page called.\n");
X}
X
Xchar *DefaultTitle = "Standalone Window Code";
X
XSearchFile(){
X printf("Search file called.\n");
X}
X
X#endif STANDALONE
X#endif SUNTOOLS
END_OF_FILE
if test 23542 -ne `wc -c <'xtroff/sunwindows.c'`; then
echo shar: \"'xtroff/sunwindows.c'\" unpacked with wrong size!
fi
# end of 'xtroff/sunwindows.c'
fi
echo shar: End of archive 13 \(of 18\).
cp /dev/null ark13isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
if test ! -f ark${I}isdone ; then
MISSING="${MISSING} ${I}"
fi
done
if test "${MISSING}" = "" ; then
echo You have unpacked all 18 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
More information about the Comp.sources.x
mailing list