Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_fixcpp/sys/lib/postscript/prologues/baseline.ps – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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