1*45522Skarels% @(#)psdit.pro 1.6 11/06/90 232175Sedward% lib/psdit.pro -- prolog for psdit (ditroff) files 332175Sedward% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved. 432175Sedward% last edit: shore Sat Nov 23 20:28:03 1985 532175Sedward% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $ 632175Sedward 732181Sedward% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics, 832181Sedward% 17 Feb, 87. 932181Sedward 1032175Sedward/$DITroff 140 dict def $DITroff begin 1132175Sedward/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def 1232181Sedward/xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto 13*45522Skarels /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F}def 1432175Sedward/PB{save /psv exch def currentpoint translate 1532181Sedward resolution 72 div dup neg scale 0 0 moveto}def 1632175Sedward/PE{psv restore}def 1732175Sedward/arctoobig 90 def /arctoosmall .05 def 1832175Sedward/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def 1932175Sedward/tan{dup sin exch cos div}def 2032175Sedward/point{resolution 72 div mul}def 2132175Sedward/dround {transform round exch round exch itransform}def 2232175Sedward/xT{/devname exch def}def 2332175Sedward/xr{/mh exch def /my exch def /resolution exch def}def 2432175Sedward/xp{}def 2532175Sedward/xs{docsave restore end}def 2632175Sedward/xt{}def 2732175Sedward/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not 2832175Sedward {fonts slotno fontname findfont put fontnames slotno fontname put}if}def 2932175Sedward/xH{/fontheight exch def F}def 3032175Sedward/xS{/fontslant exch def F}def 3132175Sedward/s{/fontsize exch def /fontheight fontsize def F}def 3232175Sedward/f{/fontnum exch def F}def 3332181Sedward/F{fontheight 0 le{/fontheight fontsize def}if 3432181Sedward fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore 3532181Sedward fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if 3632181Sedward makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def 3732175Sedward/X{exch currentpoint exch pop moveto show}def 3832175Sedward/N{3 1 roll moveto show}def 3932175Sedward/Y{exch currentpoint pop exch moveto show}def 4032175Sedward/S{show}def 4132175Sedward/ditpush{}def/ditpop{}def 4232175Sedward/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def 4332175Sedward/AN{4 2 roll moveto 0 exch ashow}def 4432175Sedward/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def 4532175Sedward/AS{0 exch ashow}def 4632175Sedward/MX{currentpoint exch pop moveto}def 4732175Sedward/MY{currentpoint pop exch moveto}def 4832175Sedward/MXY{moveto}def 4932175Sedward/cb{pop}def % action on unknown char -- nothing for now 5032175Sedward/n{}def/w{}def 51*45522Skarels/p{pop showpage xi}def 5232181Sedward/Dt{/Dlinewidth exch def}def 1 Dt 5332181Sedward/Ds{/Ddash exch def}def -1 Ds 5434805Sedward/i{/Dstipple exch def}def 1 i 5532181Sedward/Dsetlinewidth{2 Dlinewidth mul setlinewidth}def 5632181Sedward/Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]} 5732181Sedward {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def 5832181Sedward/Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore 5932181Sedward currentpoint newpath moveto}def 6032181Sedward/Dl{rlineto Dstroke}def 6132175Sedward/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop 6232175Sedward currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def 6332175Sedward currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def 6432181Sedward/Dc{dup arcellipse Dstroke}def 6532181Sedward/De{arcellipse Dstroke}def 6632175Sedward/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def 6732175Sedward /cradius centerv centerv mul centerh centerh mul add sqrt def 6832175Sedward /eradius endv endv mul endh endh mul add sqrt def 6932175Sedward /endang endv endh atan def 7032175Sedward /startang centerv neg centerh neg atan def 7132175Sedward /sweep startang endang sub dup 0 lt{360 add}if def 7232175Sedward sweep arctoobig gt 7332175Sedward {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def 7432175Sedward /midh midang cos midrad mul def /midv midang sin midrad mul def 7532175Sedward midh neg midv neg endh endv centerh centerv midh midv Da 7632181Sedward Da} 7732175Sedward {sweep arctoosmall ge 7832175Sedward {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def 7932181Sedward centerv neg controldelt mul centerh controldelt mul 8032181Sedward endv neg controldelt mul centerh add endh add 8132181Sedward endh controldelt mul centerv add endv add 8232181Sedward centerh endh add centerv endv add rcurveto Dstroke} 8332181Sedward {centerh endh add centerv endv add rlineto Dstroke} 8432181Sedward ifelse} 8532181Sedward ifelse}def 8632181Sedward/Dpatterns[ 8732181Sedward[%cf[widthbits] 8832181Sedward[8<0000000000000010>] 8932181Sedward[8<0411040040114000>] 9032181Sedward[8<0204081020408001>] 9132181Sedward[8<0000103810000000>] 9232181Sedward[8<6699996666999966>] 9332181Sedward[8<0000800100001008>] 9432181Sedward[8<81c36666c3810000>] 9532181Sedward[8<0f0e0c0800000000>] 9632181Sedward[8<0000000000000010>] 9732181Sedward[8<0411040040114000>] 9832181Sedward[8<0204081020408001>] 9932181Sedward[8<0000001038100000>] 10032181Sedward[8<6699996666999966>] 10132181Sedward[8<0000800100001008>] 10232181Sedward[8<81c36666c3810000>] 10332181Sedward[8<0f0e0c0800000000>] 10432181Sedward[8<0042660000246600>] 10532181Sedward[8<0000990000990000>] 10632181Sedward[8<0804020180402010>] 10732181Sedward[8<2418814242811824>] 10832181Sedward[8<6699996666999966>] 10932181Sedward[8<8000000008000000>] 11032181Sedward[8<00001c3e363e1c00>] 11132181Sedward[8<0000000000000000>] 11232181Sedward[32<00000040000000c00000004000000040000000e0000000000000000000000000>] 11332181Sedward[32<00000000000060000000900000002000000040000000f0000000000000000000>] 11432181Sedward[32<000000000000000000e0000000100000006000000010000000e0000000000000>] 11532181Sedward[32<00000000000000002000000060000000a0000000f00000002000000000000000>] 11632181Sedward[32<0000000e0000000000000000000000000000000f000000080000000e00000001>] 11732181Sedward[32<0000090000000600000000000000000000000000000007000000080000000e00>] 11832181Sedward[32<00010000000200000004000000040000000000000000000000000000000f0000>] 11932181Sedward[32<0900000006000000090000000600000000000000000000000000000006000000>]] 12032181Sedward[%ug 12132181Sedward[8<0000020000000000>] 12232181Sedward[8<0000020000002000>] 12332181Sedward[8<0004020000002000>] 12432181Sedward[8<0004020000402000>] 12532181Sedward[8<0004060000402000>] 12632181Sedward[8<0004060000406000>] 12732181Sedward[8<0006060000406000>] 12832181Sedward[8<0006060000606000>] 12932181Sedward[8<00060e0000606000>] 13032181Sedward[8<00060e000060e000>] 13132181Sedward[8<00070e000060e000>] 13232181Sedward[8<00070e000070e000>] 13332181Sedward[8<00070e020070e000>] 13432181Sedward[8<00070e020070e020>] 13532181Sedward[8<04070e020070e020>] 13632181Sedward[8<04070e024070e020>] 13732181Sedward[8<04070e064070e020>] 13832181Sedward[8<04070e064070e060>] 13932181Sedward[8<06070e064070e060>] 14032181Sedward[8<06070e066070e060>] 14132181Sedward[8<06070f066070e060>] 14232181Sedward[8<06070f066070f060>] 14332181Sedward[8<060f0f066070f060>] 14432181Sedward[8<060f0f0660f0f060>] 14532181Sedward[8<060f0f0760f0f060>] 14632181Sedward[8<060f0f0760f0f070>] 14732181Sedward[8<0e0f0f0760f0f070>] 14832181Sedward[8<0e0f0f07e0f0f070>] 14932181Sedward[8<0e0f0f0fe0f0f070>] 15032181Sedward[8<0e0f0f0fe0f0f0f0>] 15132181Sedward[8<0f0f0f0fe0f0f0f0>] 15232181Sedward[8<0f0f0f0ff0f0f0f0>] 15332181Sedward[8<1f0f0f0ff0f0f0f0>] 15432181Sedward[8<1f0f0f0ff1f0f0f0>] 15532181Sedward[8<1f0f0f8ff1f0f0f0>] 15632181Sedward[8<1f0f0f8ff1f0f0f8>] 15732181Sedward[8<9f0f0f8ff1f0f0f8>] 15832181Sedward[8<9f0f0f8ff9f0f0f8>] 15932181Sedward[8<9f0f0f9ff9f0f0f8>] 16032181Sedward[8<9f0f0f9ff9f0f0f9>] 16132181Sedward[8<9f8f0f9ff9f0f0f9>] 16232181Sedward[8<9f8f0f9ff9f8f0f9>] 16332181Sedward[8<9f8f1f9ff9f8f0f9>] 16432181Sedward[8<9f8f1f9ff9f8f1f9>] 16532181Sedward[8<bf8f1f9ff9f8f1f9>] 16632181Sedward[8<bf8f1f9ffbf8f1f9>] 16732181Sedward[8<bf8f1fdffbf8f1f9>] 16832181Sedward[8<bf8f1fdffbf8f1fd>] 16932181Sedward[8<ff8f1fdffbf8f1fd>] 17032181Sedward[8<ff8f1fdffff8f1fd>] 17132181Sedward[8<ff8f1ffffff8f1fd>] 17232181Sedward[8<ff8f1ffffff8f1ff>] 17332181Sedward[8<ff9f1ffffff8f1ff>] 17432181Sedward[8<ff9f1ffffff9f1ff>] 17532181Sedward[8<ff9f9ffffff9f1ff>] 17632181Sedward[8<ff9f9ffffff9f9ff>] 17732181Sedward[8<ffbf9ffffff9f9ff>] 17832181Sedward[8<ffbf9ffffffbf9ff>] 17932181Sedward[8<ffbfdffffffbf9ff>] 18032181Sedward[8<ffbfdffffffbfdff>] 18132181Sedward[8<ffffdffffffbfdff>] 18232181Sedward[8<ffffdffffffffdff>] 18332181Sedward[8<fffffffffffffdff>] 18432181Sedward[8<ffffffffffffffff>]] 18532181Sedward[%mg 18632181Sedward[8<8000000000000000>] 18732181Sedward[8<0822080080228000>] 18832181Sedward[8<0204081020408001>] 18932181Sedward[8<40e0400000000000>] 19032181Sedward[8<66999966>] 19132181Sedward[8<8001000010080000>] 19232181Sedward[8<81c36666c3810000>] 19332181Sedward[8<f0e0c08000000000>] 19432181Sedward[16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>] 19532181Sedward[16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>] 19632181Sedward[8<c3c300000000c3c3>] 19732181Sedward[16<0040008001000200040008001000200040008000000100020004000800100020>] 19832181Sedward[16<0040002000100008000400020001800040002000100008000400020001000080>] 19932181Sedward[16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>] 20032181Sedward[8<80>] 20132181Sedward[8<8040201000000000>] 20232181Sedward[8<84cc000048cc0000>] 20332181Sedward[8<9900009900000000>] 20432181Sedward[8<08040201804020100800020180002010>] 20532181Sedward[8<2418814242811824>] 20632181Sedward[8<66999966>] 20732181Sedward[8<8000000008000000>] 20832181Sedward[8<70f8d8f870000000>] 20932181Sedward[8<0814224180402010>] 21032181Sedward[8<aa00440a11a04400>] 21132181Sedward[8<018245aa45820100>] 21232181Sedward[8<221c224180808041>] 21332181Sedward[8<88000000>] 21432181Sedward[8<0855800080550800>] 21532181Sedward[8<2844004482440044>] 21632181Sedward[8<0810204080412214>] 21732181Sedward[8<00>]]]def 21832181Sedward/Dfill{ 21937481Sedward save 6 1 roll 22032181Sedward transform /maxy exch def /maxx exch def 22132181Sedward transform /miny exch def /minx exch def 22232181Sedward minx maxx gt{/minx maxx /maxx minx def def}if 22332181Sedward miny maxy gt{/miny maxy /maxy miny def def}if 22432181Sedward Dpatterns Dstipple 1 sub get exch 1 sub get 22532181Sedward aload pop /stip exch def /stipw exch def /stiph 128 def 22632181Sedward /imatrix[stipw 0 0 stiph 0 0]def 22732181Sedward /tmatrix[stipw 0 0 stiph 0 0]def 22832181Sedward /minx minx cvi stiph idiv stiph mul def 22932181Sedward /miny miny cvi stipw idiv stipw mul def 23037481Sedward eoclip 0 setgray 23132181Sedward miny stiph maxy{ 23232181Sedward tmatrix exch 5 exch put 23332181Sedward minx stipw maxx{ 23432181Sedward tmatrix exch 4 exch put tmatrix setmatrix 23532181Sedward stipw stiph true imatrix {stip} imagemask 23632181Sedward }for 23732181Sedward }for 23837481Sedward restore 23932181Sedward}def 24032181Sedward/Dp{Dfill Dstroke}def 24132181Sedward/DP{Dfill currentpoint newpath moveto}def 24232181Sedwardend 24332175Sedward 24432175Sedward/ditstart{$DITroff begin 24532175Sedward /nfonts 60 def % NFONTS makedev/ditroff dependent! 24632175Sedward /fonts[nfonts{0}repeat]def 24732175Sedward /fontnames[nfonts{()}repeat]def 24832175Sedward/docsave save def 24932175Sedward}def 25032175Sedward 25132175Sedward% character outcalls 25232181Sedward/oc{ 25332181Sedward /pswid exch def /cc exch def /name exch def 25432181Sedward /ditwid pswid fontsize mul resolution mul 72000 div def 25532181Sedward /ditsiz fontsize resolution mul 72 div def 25632181Sedward ocprocs name known{ocprocs name get exec}{name cb}ifelse 25732181Sedward}def 25832175Sedward/fractm [.65 0 0 .6 0 0] def 25932181Sedward/fraction{ 26032181Sedward /fden exch def /fnum exch def gsave /cf currentfont def 26132181Sedward cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto 26232181Sedward fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 26332181Sedward grestore ditwid 0 rmoveto 26432181Sedward}def 26532181Sedward/oce{grestore ditwid 0 rmoveto}def 26632181Sedward/dm{ditsiz mul}def 26732175Sedward/ocprocs 50 dict def ocprocs begin 26832175Sedward(14){(1)(4)fraction}def 26932175Sedward(12){(1)(2)fraction}def 27032175Sedward(34){(3)(4)fraction}def 27132175Sedward(13){(1)(3)fraction}def 27232175Sedward(23){(2)(3)fraction}def 27332175Sedward(18){(1)(8)fraction}def 27432175Sedward(38){(3)(8)fraction}def 27532175Sedward(58){(5)(8)fraction}def 27632175Sedward(78){(7)(8)fraction}def 27732175Sedward(sr){gsave 0 .06 dm rmoveto(\326)show oce}def 27832175Sedward(is){gsave 0 .15 dm rmoveto(\362)show oce}def 27932175Sedward(->){gsave 0 .02 dm rmoveto(\256)show oce}def 28032175Sedward(<-){gsave 0 .02 dm rmoveto(\254)show oce}def 28132175Sedward(==){gsave 0 .05 dm rmoveto(\272)show oce}def 28233999Sedward(uc){gsave currentpoint 400 .009 dm mul add translate 28333999Sedward 8 -8 scale ucseal oce}def 28432175Sedwardend 28532175Sedward 28632175Sedward% an attempt at a PostScript FONT to implement ditroff special chars 28732175Sedward% this will enable us to 28832175Sedward% cache the little buggers 28932175Sedward% generate faster, more compact PS out of psdit 29032175Sedward% confuse everyone (including myself)! 29132175Sedward50 dict dup begin 29232175Sedward/FontType 3 def 29332175Sedward/FontName /DIThacks def 29432175Sedward/FontMatrix [.001 0 0 .001 0 0] def 29532175Sedward/FontBBox [-260 -260 900 900] def% a lie but ... 29632175Sedward/Encoding 256 array def 29732175Sedward0 1 255{Encoding exch /.notdef put}for 29832175SedwardEncoding 29932175Sedward dup 8#040/space put %space 30032175Sedward dup 8#110/rc put %right ceil 30132175Sedward dup 8#111/lt put %left top curl 30232175Sedward dup 8#112/bv put %bold vert 30332175Sedward dup 8#113/lk put %left mid curl 30432175Sedward dup 8#114/lb put %left bot curl 30532175Sedward dup 8#115/rt put %right top curl 30632175Sedward dup 8#116/rk put %right mid curl 30732175Sedward dup 8#117/rb put %right bot curl 30832175Sedward dup 8#120/rf put %right floor 30932175Sedward dup 8#121/lf put %left floor 31032175Sedward dup 8#122/lc put %left ceil 31132175Sedward dup 8#140/sq put %square 31232175Sedward dup 8#141/bx put %box 31332175Sedward dup 8#142/ci put %circle 31432175Sedward dup 8#143/br put %box rule 31532175Sedward dup 8#144/rn put %root extender 31632175Sedward dup 8#145/vr put %vertical rule 31732175Sedward dup 8#146/ob put %outline bullet 31832175Sedward dup 8#147/bu put %bullet 31932175Sedward dup 8#150/ru put %rule 32032175Sedward dup 8#151/ul put %underline 32132175Sedward pop 32232175Sedward/DITfd 100 dict def 32332175Sedward/BuildChar{0 begin 32432175Sedward /cc exch def /fd exch def 32532175Sedward /charname fd /Encoding get cc get def 32632175Sedward /charwid fd /Metrics get charname get def 32732175Sedward /charproc fd /CharProcs get charname get def 32832175Sedward charwid 0 fd /FontBBox get aload pop setcachedevice 32932175Sedward 2 setlinejoin 40 setlinewidth 33032175Sedward newpath 0 0 moveto gsave charproc grestore 33132175Sedward end}def 33232175Sedward/BuildChar load 0 DITfd put 33332175Sedward/CharProcs 50 dict def 33432175SedwardCharProcs begin 33532175Sedward/space{}def 33632175Sedward/.notdef{}def 33732175Sedward/ru{500 0 rls}def 33832175Sedward/rn{0 840 moveto 500 0 rls}def 33932175Sedward/vr{0 800 moveto 0 -770 rls}def 34032175Sedward/bv{0 800 moveto 0 -1000 rls}def 34132181Sedward/br{0 840 moveto 0 -1000 rls}def 34232175Sedward/ul{0 -140 moveto 500 0 rls}def 34332175Sedward/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def 34432175Sedward/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def 34532175Sedward/sq{80 0 rmoveto currentpoint dround newpath moveto 34632175Sedward 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def 34732175Sedward/bx{80 0 rmoveto currentpoint dround newpath moveto 34832175Sedward 640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def 34932175Sedward/ci{500 360 rmoveto currentpoint newpath 333 0 360 arc 35032175Sedward 50 setlinewidth stroke}def 35132175Sedward 35232175Sedward/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def 35332175Sedward/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def 35432175Sedward/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def 35532175Sedward/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def 35632175Sedward/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub 35732175Sedward 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def 35832175Sedward/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub 35932175Sedward 0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def 36032175Sedward/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def 36132175Sedward/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def 36232175Sedward/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def 36332175Sedward/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def 36432175Sedwardend 36532175Sedward 36632175Sedward/Metrics 50 dict def Metrics begin 36732175Sedward/.notdef 0 def 36832175Sedward/space 500 def 36932175Sedward/ru 500 def 37032175Sedward/br 0 def 37132175Sedward/lt 416 def 37232175Sedward/lb 416 def 37332175Sedward/rt 416 def 37432175Sedward/rb 416 def 37532175Sedward/lk 416 def 37632175Sedward/rk 416 def 37732175Sedward/rc 416 def 37832175Sedward/lc 416 def 37932175Sedward/rf 416 def 38032175Sedward/lf 416 def 38132175Sedward/bv 416 def 38232175Sedward/ob 350 def 38332175Sedward/bu 350 def 38432175Sedward/ci 750 def 38532175Sedward/bx 750 def 38632175Sedward/sq 750 def 38732175Sedward/rn 500 def 38832175Sedward/ul 500 def 38932175Sedward/vr 0 def 39032175Sedwardend 39132175Sedward 39232175SedwardDITfd begin 39332175Sedward/s2 500 def /s4 250 def /s3 333 def 39432175Sedward/a4p{arcto pop pop pop pop}def 39532175Sedward/2cx{2 copy exch}def 39632175Sedward/rls{rlineto stroke}def 39732175Sedward/currx{currentpoint pop}def 39832175Sedward/dround{transform round exch round exch itransform} def 39932175Sedwardend 40032175Sedwardend 40132175Sedward/DIThacks exch definefont pop 402