argv@island.uu.net (Dan Heller) (07/19/89)
Submitted-by: Mark Moraes <moraes@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@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@decwrl.dec.com X * malcolm@ecn.purdue.edu X * malcolm@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@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@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