home *** CD-ROM | disk | FTP | other *** search
- %ident "@(#)////usr/lib/lp/postscript/baseline.ps.sl 1.1 4.0 12/08/90 39159 AT&T-USL"
- %
- % Stuff used to draw or set text along a baseline specified by parametric equations
- % for x and y.
- %
-
- /left -1 def
- /center 0 def
- /right 1 def
-
- /baselinedict 50 dict def
-
- /newbaseline {
- baselinedict begin
- /g' exch bind def
- /f' exch bind def
- /g exch bind def
- /f exch bind def
-
- counttomark 2 eq {/hoffset exch def} if
- /res exch def
-
- /t 0 def
- /s 0 def
- /voffset false def
- cleartomark
- end
- } bind def
-
- /drawfunnytext {
- baselinedict begin
- /t exch def
- /mode exch def
- /str exch def
-
- mode left eq {
- /leftstring emptystring def
- /rightstring str def
- } if
-
- mode right eq {
- /leftstring str reversestring def
- /rightstring emptystring def
- } if
-
- mode center eq {
- str splitstring
- /rightstring exch def
- /leftstring exch reversestring def
- } if
-
- gsave currentpoint translate leftstring left t baselineshow grestore
- gsave currentpoint translate rightstring right t baselineshow grestore
-
- /t 0 def
- /s 0 def
- /voffset false def
- cleartomark
- end
- } bind def
-
- /setfunnytext {
- baselinedict begin
- /vpos exch def
- /hpos exch def
- /str exch def
-
- voffset vpos ne {
- /voffset vpos def
- /t 0 def
- /s hoffset def
- } if
-
- gsave
- hoffset voffset translate
- 0 0 moveto
- /ds hpos s sub def
- /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
- /s s ds add def
- /t t dt add def
- str right t baselineshow
- grestore
- end
- } bind def
-
- baselinedict begin
-
- /f {} bind def
- /g {pop 0} bind def
- /f' {pop 1} bind def
- /g' {pop 0} bind def
-
- /s 0 def
- /t 0 def
- /res 72 def
-
- /onecharstring ( ) def
- /emptystring () def
-
- /baselineshow {
- /t exch def
- /mode exch def
- /str exch def
-
- gsave
- t f res mul t g res mul translate
- 0 0 moveto
- t g' t f' atan rotate
- {
- mode right eq {pop} if
- grestore gsave
- onecharstring 0 3 -1 roll put onecharstring stringwidth pop
- /ds exch mode mul def
- /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
- /t t dt add def
- /s s ds add def
- t f res mul t g res mul translate
- 0 0 moveto
- t g' t f' atan rotate
- mode left eq {pop} if
- } str kshow
- grestore
- } bind def
-
- /reversestring {
- /str1 exch def
-
- /str2 str1 length string def
- /i 0 def
- /n str1 length 1 sub def
-
- {
- str1 n get str2 exch i exch put
- /i i 1 add def
- /n n 1 sub def
- n 0 lt {exit} if
- } loop
- str2
- } bind def
-
- /splitstring {
- /str1 exch def
-
- /len str1 stringwidth pop def
- /s 0 def
- /n 0 def
- str1 length {
- str1 n get onecharstring exch 0 exch put
- /s onecharstring stringwidth pop s add def
- s len 2 div ge {exit} if
- /n n 1 add def
- } repeat
- str1 0 n 1 add getinterval
- str1 n str1 length n sub getinterval
- } bind def
-
- end
-