Blame


1 13f7391e 2004-05-15 devnull %
2 13f7391e 2004-05-15 devnull % Stuff used to draw or set text along a baseline specified by parametric equations
3 13f7391e 2004-05-15 devnull % for x and y.
4 13f7391e 2004-05-15 devnull %
5 13f7391e 2004-05-15 devnull
6 13f7391e 2004-05-15 devnull /left -1 def
7 13f7391e 2004-05-15 devnull /center 0 def
8 13f7391e 2004-05-15 devnull /right 1 def
9 13f7391e 2004-05-15 devnull
10 13f7391e 2004-05-15 devnull /baselinedict 50 dict def
11 13f7391e 2004-05-15 devnull
12 13f7391e 2004-05-15 devnull /newbaseline {
13 13f7391e 2004-05-15 devnull baselinedict begin
14 13f7391e 2004-05-15 devnull /g' exch bind def
15 13f7391e 2004-05-15 devnull /f' exch bind def
16 13f7391e 2004-05-15 devnull /g exch bind def
17 13f7391e 2004-05-15 devnull /f exch bind def
18 13f7391e 2004-05-15 devnull
19 13f7391e 2004-05-15 devnull counttomark 2 eq {/hoffset exch def} if
20 13f7391e 2004-05-15 devnull /res exch def
21 13f7391e 2004-05-15 devnull
22 13f7391e 2004-05-15 devnull /t 0 def
23 13f7391e 2004-05-15 devnull /s 0 def
24 13f7391e 2004-05-15 devnull /voffset false def
25 13f7391e 2004-05-15 devnull cleartomark
26 13f7391e 2004-05-15 devnull end
27 13f7391e 2004-05-15 devnull } bind def
28 13f7391e 2004-05-15 devnull
29 13f7391e 2004-05-15 devnull /drawfunnytext {
30 13f7391e 2004-05-15 devnull baselinedict begin
31 13f7391e 2004-05-15 devnull /t exch def
32 13f7391e 2004-05-15 devnull /mode exch def
33 13f7391e 2004-05-15 devnull /str exch def
34 13f7391e 2004-05-15 devnull
35 13f7391e 2004-05-15 devnull mode left eq {
36 13f7391e 2004-05-15 devnull /leftstring emptystring def
37 13f7391e 2004-05-15 devnull /rightstring str def
38 13f7391e 2004-05-15 devnull } if
39 13f7391e 2004-05-15 devnull
40 13f7391e 2004-05-15 devnull mode right eq {
41 13f7391e 2004-05-15 devnull /leftstring str reversestring def
42 13f7391e 2004-05-15 devnull /rightstring emptystring def
43 13f7391e 2004-05-15 devnull } if
44 13f7391e 2004-05-15 devnull
45 13f7391e 2004-05-15 devnull mode center eq {
46 13f7391e 2004-05-15 devnull str splitstring
47 13f7391e 2004-05-15 devnull /rightstring exch def
48 13f7391e 2004-05-15 devnull /leftstring exch reversestring def
49 13f7391e 2004-05-15 devnull } if
50 13f7391e 2004-05-15 devnull
51 13f7391e 2004-05-15 devnull gsave currentpoint translate leftstring left t baselineshow grestore
52 13f7391e 2004-05-15 devnull gsave currentpoint translate rightstring right t baselineshow grestore
53 13f7391e 2004-05-15 devnull
54 13f7391e 2004-05-15 devnull /t 0 def
55 13f7391e 2004-05-15 devnull /s 0 def
56 13f7391e 2004-05-15 devnull /voffset false def
57 13f7391e 2004-05-15 devnull cleartomark
58 13f7391e 2004-05-15 devnull end
59 13f7391e 2004-05-15 devnull } bind def
60 13f7391e 2004-05-15 devnull
61 13f7391e 2004-05-15 devnull /setfunnytext {
62 13f7391e 2004-05-15 devnull baselinedict begin
63 13f7391e 2004-05-15 devnull /vpos exch def
64 13f7391e 2004-05-15 devnull /hpos exch def
65 13f7391e 2004-05-15 devnull /str exch def
66 13f7391e 2004-05-15 devnull
67 13f7391e 2004-05-15 devnull voffset vpos ne {
68 13f7391e 2004-05-15 devnull /voffset vpos def
69 13f7391e 2004-05-15 devnull /t 0 def
70 13f7391e 2004-05-15 devnull /s hoffset def
71 13f7391e 2004-05-15 devnull } if
72 13f7391e 2004-05-15 devnull
73 13f7391e 2004-05-15 devnull gsave
74 13f7391e 2004-05-15 devnull hoffset voffset translate
75 13f7391e 2004-05-15 devnull 0 0 moveto
76 13f7391e 2004-05-15 devnull /ds hpos s sub def
77 13f7391e 2004-05-15 devnull /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
78 13f7391e 2004-05-15 devnull /s s ds add def
79 13f7391e 2004-05-15 devnull /t t dt add def
80 13f7391e 2004-05-15 devnull str right t baselineshow
81 13f7391e 2004-05-15 devnull grestore
82 13f7391e 2004-05-15 devnull end
83 13f7391e 2004-05-15 devnull } bind def
84 13f7391e 2004-05-15 devnull
85 13f7391e 2004-05-15 devnull baselinedict begin
86 13f7391e 2004-05-15 devnull
87 13f7391e 2004-05-15 devnull /f {} bind def
88 13f7391e 2004-05-15 devnull /g {pop 0} bind def
89 13f7391e 2004-05-15 devnull /f' {pop 1} bind def
90 13f7391e 2004-05-15 devnull /g' {pop 0} bind def
91 13f7391e 2004-05-15 devnull
92 13f7391e 2004-05-15 devnull /s 0 def
93 13f7391e 2004-05-15 devnull /t 0 def
94 13f7391e 2004-05-15 devnull /res 72 def
95 13f7391e 2004-05-15 devnull
96 13f7391e 2004-05-15 devnull /onecharstring ( ) def
97 13f7391e 2004-05-15 devnull /emptystring () def
98 13f7391e 2004-05-15 devnull
99 13f7391e 2004-05-15 devnull /baselineshow {
100 13f7391e 2004-05-15 devnull /t exch def
101 13f7391e 2004-05-15 devnull /mode exch def
102 13f7391e 2004-05-15 devnull /str exch def
103 13f7391e 2004-05-15 devnull
104 13f7391e 2004-05-15 devnull gsave
105 13f7391e 2004-05-15 devnull t f res mul t g res mul translate
106 13f7391e 2004-05-15 devnull 0 0 moveto
107 13f7391e 2004-05-15 devnull t g' t f' atan rotate
108 13f7391e 2004-05-15 devnull {
109 13f7391e 2004-05-15 devnull mode right eq {pop} if
110 13f7391e 2004-05-15 devnull grestore gsave
111 13f7391e 2004-05-15 devnull onecharstring 0 3 -1 roll put onecharstring stringwidth pop
112 13f7391e 2004-05-15 devnull /ds exch mode mul def
113 13f7391e 2004-05-15 devnull /dt ds t f' dup mul t g' dup mul add sqrt res mul div def
114 13f7391e 2004-05-15 devnull /t t dt add def
115 13f7391e 2004-05-15 devnull /s s ds add def
116 13f7391e 2004-05-15 devnull t f res mul t g res mul translate
117 13f7391e 2004-05-15 devnull 0 0 moveto
118 13f7391e 2004-05-15 devnull t g' t f' atan rotate
119 13f7391e 2004-05-15 devnull mode left eq {pop} if
120 13f7391e 2004-05-15 devnull } str kshow
121 13f7391e 2004-05-15 devnull grestore
122 13f7391e 2004-05-15 devnull } bind def
123 13f7391e 2004-05-15 devnull
124 13f7391e 2004-05-15 devnull /reversestring {
125 13f7391e 2004-05-15 devnull /str1 exch def
126 13f7391e 2004-05-15 devnull
127 13f7391e 2004-05-15 devnull /str2 str1 length string def
128 13f7391e 2004-05-15 devnull /i 0 def
129 13f7391e 2004-05-15 devnull /n str1 length 1 sub def
130 13f7391e 2004-05-15 devnull
131 13f7391e 2004-05-15 devnull {
132 13f7391e 2004-05-15 devnull str1 n get str2 exch i exch put
133 13f7391e 2004-05-15 devnull /i i 1 add def
134 13f7391e 2004-05-15 devnull /n n 1 sub def
135 13f7391e 2004-05-15 devnull n 0 lt {exit} if
136 13f7391e 2004-05-15 devnull } loop
137 13f7391e 2004-05-15 devnull str2
138 13f7391e 2004-05-15 devnull } bind def
139 13f7391e 2004-05-15 devnull
140 13f7391e 2004-05-15 devnull /splitstring {
141 13f7391e 2004-05-15 devnull /str1 exch def
142 13f7391e 2004-05-15 devnull
143 13f7391e 2004-05-15 devnull /len str1 stringwidth pop def
144 13f7391e 2004-05-15 devnull /s 0 def
145 13f7391e 2004-05-15 devnull /n 0 def
146 13f7391e 2004-05-15 devnull str1 length {
147 13f7391e 2004-05-15 devnull str1 n get onecharstring exch 0 exch put
148 13f7391e 2004-05-15 devnull /s onecharstring stringwidth pop s add def
149 13f7391e 2004-05-15 devnull s len 2 div ge {exit} if
150 13f7391e 2004-05-15 devnull /n n 1 add def
151 13f7391e 2004-05-15 devnull } repeat
152 13f7391e 2004-05-15 devnull str1 0 n 1 add getinterval
153 13f7391e 2004-05-15 devnull str1 n str1 length n sub getinterval
154 13f7391e 2004-05-15 devnull } bind def
155 13f7391e 2004-05-15 devnull
156 13f7391e 2004-05-15 devnull end