summaryrefslogtreecommitdiff
path: root/macros/generic/diagrams/xypic/ps/xy389dict.pro
blob: c1a2c890f05cded850e7c360b41130bbf63e9cfc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
%!PS-Adobe-3.0 Resource-procset
%%Title: xy389dict.pro
%%Version: 3.8.9
%%Creator: Xy-ps backend to Xy-pic
%%DocumentSuppliedProcSets: XYdict
%%For: nulluse of Xy-pic
%%BeginResource: procset XYdict
/XYdict where not{250 dict /XYdict exch def
 /xy{mark exch XYdict begin countdictstack /xylevel exch def
 xyopen xycolor mark xypatt xypattern stopped xyclose end
 cleartomark}def /xyg{gsave xy}def
 /xyf{currentfont exch xy grestore setfont}def
 /xycc{{xychgcol}xy}def /xyc{XYdict begin xycolstore end}def
 /xyx{/xyYpos exch def /xyXpos exch def}def
 /xyp{currentpoint xyx}def
 /xyd{setupDirection XYdirection 2 mul}def
 /xyct{currentpoint xyt 2 copy 6 2 roll}def
 /xyt{xyXpos xyYpos 2 copy translate}def /xyr{neg rotate xynt}def
 /xyrs{neg rotate 3 -1 roll sub neg 3 1 roll sub exch moveto xynt}def
 /xynt{neg exch neg exch translate}def /xys{scale xynt}def
 /xyss{scale 3 -1 roll sub neg 3 1 roll sub exch moveto xynt}def
 /xyi{0 0 transform grestore gsave itransform}def
 }if

/XYdict where pop begin XYdict begin
 /xyopen{currentdict /XYddict known{XYddict null eq{}
 {XYddict begin xyopen}ifelse}if}def
 /xyclose{countdictstack -1 xylevel 1 add{pop end}for}def
 /xychgcol{/xycolor exch def}def /xysetcol{xypush xychgcol}def

 /xypush{16 dict /XYddict exch def XYddict begin}def
 /undef where
 {pop /xypop{countdictstack xylevel eq{}{end}ifelse
 currentdict /XYddict undef}def}
 {/xypop{countdictstack xylevel eq{}{end}ifelse
 /XYddict null def}def}ifelse
 /pu /xypush load def /pp /xypop load def
 /xypspt{72 72.27 div dup scale}bind def /pscorrect{.85 mul}bind def
 /gstartxy{gsave xypspt xywidth xycap xyjoin xymiter newpath 0 0 moveto}def
 /xypath{gstartxy rmoveto counttomark 2 idiv -1 1{pop lineto}for}def
 /xystroke{stroke grestore}bind def
 /xyfill{closepath fill grestore}bind def
 /xystfil{closepath gsave fill grestore 0 setgray
 0 setlinewidth xystroke}bind def
 /xyeofill{closepath eofill grestore}bind def

 /xypolyline{xypath xystroke}def /xypolyfill{xypath xyfill}def
 /xydotsep{/@ currentlinewidth 2 mul def}def
 /xypolydot{xypath xydotsep [xydt @] 0 setdash xystroke}def
 /xypolydash{xypath xydotsep [@ @] 0 setdash xystroke}def
 /xypolyeofill{xypath xyeofill}def /pe /xypolyeofill load def
 /pl /xypolyline load def /pf /xypolyfill load def
 /pt /xypolydot load def /pd /xypolydash load def 
 /arc4pop{arcto 4{pop}repeat}bind def
 /xyoval{gstartxy oval closepath xystroke}def
 /xycircle{gstartxy circle xystroke}def
 /circle{dup 0 moveto 0 0 3 -1 roll 0 360 arc}def
 /oval{newpath 2 copy exch 5 index add 2 div exch 3 copy 10 3 roll
 moveto 1 index dup 5 1 roll 3 index 7 index arc4pop
 dup dup 4 1 roll 4 index exch 6 index arc4pop
 1 index dup 8 1 roll 4 index 4 index arc4pop
 arc4pop closepath}def
 /xyellipse{gstartxy counttomark 1 gt{squarify pop pop 1}if
 circle xystroke}def
 /ov /xyoval load def /ox /xyellipse load def 
 /dotit{dup currentlinewidth 6 mul div round div
 /@ exch def [xydt @] 0 setdash}def
 /elldash{dup 4 -1 roll 10 exch div dashit}def
 /ovdash{dup 10 dashit}def
 /dashit{div round 2 mul div /@ exch def [@ @] 0 setdash}def
 /dotcirc{gstartxy cirlen dotit circle xystroke}def
 /dashcirc{gstartxy cirlen dashit circle xystroke}def
 /dotoval{gstartxy 5 copy ovlen dotit oval xystroke}def
 /dashoval{gstartxy 5 copy ovlen ovdash oval xystroke}def
 /cirlen{dup 6.283185 mul}bind def
 /ovlen{3 -1 roll sub 3 1 roll sub add exch 1.716815 mul sub}def
 /dotellipse{gstartxy counttomark 1 gt{squarify pop pop 1}if
 cirlen dotit circle closepath xystroke}def
 /dashellipse{gstartxy counttomark 1 gt{squarify add 2 div 1}
 {1 exch 1 exch}ifelse cirlen elldash circle xystroke}def
 /ot /dotellipse load def /od /dashellipse load def
 /vt /dotoval load def /vd /dashoval load def 
 /filloval{gstartxy oval xyfill}def
 /stfiloval{gstartxy oval xystfil}def
 /fillcircle{gstartxy circle xyfill}def
 /stfilcircle{gstartxy circle xystfil}def
 /fillellipse{gstartxy squarify pop pop 1 circle xyfill}def
 /stfilellipse{gstartxy squarify pop pop 1 circle xystfil}def
 /squarify{4 copy sub 2 div 3 1 roll sub 2 div translate
 add 2 div 3 1 roll add 2 div 2 copy scale
 2 copy add 2 div currentlinewidth exch div setlinewidth
 newpath}def
 /fe /fillellipse load def /sfe /stfilellipse load def
 /fo /filloval load def /sfo /stfiloval load def
 /fc /fillcircle load def /sfc /stfilcircle load def 
 /xywidth{.4 pscorrect setlinewidth}bind def
 /xydash{[] 0 setdash}bind def /xycap{1 setlinecap}bind def
 /xyjoin{1 setlinejoin}bind def /xymiter{10 setmiterlimit}bind def

 /cc{dup exec xychgcol}def
 /lw{dup setlinewidth /@l exch def
 /xywidth{@l setlinewidth}bind def}def
 /lc{dup setlinecap /@c exch def
 /xycap{@c setlinecap}bind def}def
 /lj{dup setlinejoin /@j exch def
 /xyjoin{@j setlinejoin}bind def}def
 /ml{dup setmitrelimit /@m exch def
 /xymiter{@m setmitrelimit}bind def}def

 /setupDirection{dup -2048 lt{3072 add neg 1024 exch}
 {dup 0 lt{1024 add neg -1024}{dup 2048 lt{1024 sub -1024 exch}
 {3072 sub 1024}ifelse}ifelse}ifelse atan
 dup 180 gt{360 sub}if dup /XYdirection exch def rotate}def
 
 userdict begin
 /gray{setgray}bind def /gray@{setgray}bind def
 /rgb{setrgbcolor}bind def /rgb@{setrgbcolor}bind def
 /hsb{sethsbcolor}bind def /hsb@{sethsbcolor}bind def
 /setcmykcolor where{pop}{/setcmykcolor{dup 3 1 roll dup 5 1 roll
 exch sub 1 add 5 1 roll exch sub 1 add 4 1 roll
 exch sub 1 add 3 1 roll setrgbcolor}bind def}ifelse
 /cmyk{setcmykcolor}bind def /cmyk@{setcmykcolor}bind def
 /sethalftone where{/sethalftone load /tone exch def}if
 /xycolarray 3 array def /xycolstore{currentrgbcolor 2 -1 0
 {exch xycolarray 3 1 roll put}for}def xycolstore
 /xycolor{0 1 2{xycolarray exch get}for setrgbcolor}def
 /xypatt{}def /xypattern{cleartomark}bind def
 end
end end
/XYdict where pop begin XYdict begin
/:patt
{XYddict begin
14 dict begin
/BGnd exch def
/FGnd exch def
/PaintData exch def
/PatternType 1 def
/PaintType 1 def
/BBox[0 0 1 1]def
/TilingType 1 def
/XStep 1 def
/YStep 1 def
/PatternMtx[24 0 0 24 0 0]def
/PaintProc BGnd null ne
 {{begin BGnd aload pop setrgbcolor 0 0 1 1 rF
 FGnd aload pop setrgbcolor
 24 24 true PatternMtx PaintData imagemask end}}
 {{begin FGnd aload pop setrgbcolor
 24 24 true PatternMtx PaintData imagemask end}}
 ifelse def
 currentdict PatternMtx end
 gsave patangle xyland{180 add}if
 rotate macfreq patfreq div dup neg exch scale matrix currentmatrix
 grestore gsave setmatrix /DeviceRGB setcolorspace makepattern grestore
 end}def
/rF{gsave
 newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto
 fill grestore}bind def 
 /setpatscreen{/pattstring exch store patfreq
 patangle xyport not{90 add}if
 {1 add 4 mul cvi pattstring exch get exch 1 add 4 mul cvi 7 sub
 bitshift 1 and}setscreen}bind def
 /setcolpattern{setpatscreen 64 div 1 exch sub currentrgbcolor
 1 1 3{pop 1 exch sub 3 index mul 1 exch sub 3 1 roll}for
 setrgbcolor pop}def
 /setgraypattern{setpatscreen 64 div setgray}def
 /macfreq 9.375 def /patangle 0 def /patfreq 12.5 def
/checkland{ /normland where{pop normland not}{false}ifelse
 /xyland exch def
 /por where{pop por}{/isls where{pop isls not /xyland true def}
 {/land where{pop land not}{true}
 ifelse}ifelse}ifelse /xyport exch def}def 
 /setpatfreq{/patfreq exch def}def
 /setpatangle{/patangle exch def}def
 /setbackcolor{/backcolor exch def}def
 /setforecolor{/forecolor exch def}def
 [1 1 1] setbackcolor xycolarray setforecolor
 /bg /setbackcolor load def /fg /setforecolor load def
 /pa /setpatangle load def /pq /setpatfreq load def 
 /xypattern{checkland counttomark dup 0 eq{pop}
 {dup 1 eq{pop setpatscreen}
 {dup 2 eq{pop setcolpattern}
 {dup 3 eq{pop
 /setcolorspace where {
 /.setcolorspace where{pop pop pop setcolpattern}
 {/.buildpattern where {pop
 forecolor backcolor :patt setpattern
 }{pop pop setcolpattern}ifelse}ifelse}
 {pop setcolpattern}ifelse}
 {5 eq{/setcolorspace where{
 /.setcolorspace where{pop pop pop pop pop setcolpattern}
 {/.buildpattern where {pop
 :patt setpattern
 }{pop pop pop pop setcolpattern}ifelse}ifelse}
 {pop pop pop setcolpattern}ifelse
 }{}ifelse}ifelse}ifelse}ifelse}ifelse cleartomark }def
 /xysetpattern{/xypatt exch def}def
 /sp /xysetpattern load def 
end end
/XYdict where pop begin XYdict begin
 /xysize 10 def /T true def /F false def
 /dimendiv{65536 div}bind def
 /xysegl 327680  dimendiv def
 /xyopp{1 -1 scale}bind def
 /xynormwidth{26213  dimendiv pscorrect}bind def
 /xywidth{xynormwidth setlinewidth}bind def

 /xyfont{4096 add 64 div round 64 mul 4096 sub}def /xydt 0.01 def
 /xysdfont{4096 add 32 div round 32 mul 4096 sub}def
 /xydots{xywidth 1 setlinecap [xydt 2] 0 setdash}bind def
 /f /xyfont load def /fs /xysdfont load def
 /xyCheckDir{dup 8 div 3 mul 3 -1 roll sub neg exch div 360 mul
 dup dup XYdirection sub 180 div round 180 mul XYdirection add
 dup 3 -1 roll sub abs 10 gt not{exch}if pop}def

 /xyrulth{26213  dimendiv pscorrect setlinewidth
 0 setlinecap}bind def

 /gsavexy{gsave xypspt XYdirection rotate xywidth newpath 0 0 moveto}def
 /gchksavexy{gsave xypspt setupDirection xywidth newpath 0 0 moveto}def

 /xyswap{XYdirection 180 add /XYdirection exch def}def
 /xyline{gstartxy setupDirection rlineto xystroke}def

 /dash{exch gchksavexy xysegl XYdirection dup
 -90 lt{pop neg}{90 gt{neg}if}ifelse exch{neg}if
 0 rlineto xystroke}def
 /stopper{gstartxy setupDirection 0 xysegl 2 div rmoveto
 0 xysegl neg rlineto xystroke }def
 /d /dash load def /st /stopper load def
 /solid{gstartxy xydash neg exch neg exch rlineto xystroke}def
 /dashed{gstartxy 2 copy dup mul exch dup mul add sqrt dup
 xysegl add xysegl 2 mul div round 2 mul 1 sub div [ exch dup ] 0 setdash
 neg exch neg exch rlineto xystroke}def
 /l /solid load def /dd /dashed load def
 /dot{gstartxy 2 setlinecap [xydt 2] 0 setdash
 1 0 rlineto xystroke}def
 /dotted{gstartxy 2 copy dup mul exch dup mul add sqrt dup
 2 div round 1 add div 2 setlinecap [xydt 3 -1 roll] 0 setdash
 neg exch neg exch rlineto 0 0 rlineto xystroke}def
 /p /dot load def /dt /dotted load def
 /cubic{gstartxy docubic} def
 /docubic{chkvalid
 {chkcubedge 8 -2 roll moveto curveto xystroke pop}
 {cleartomark grestore}ifelse}def
 /chkcubedge{2 copy 1.0 eq{0.0 eq{pop pop}{cubicedge}ifelse}
 {pop cubicedge}ifelse}def
 /bz /cubic load def
 /dotcubic{gstartxy 1 setlinecap [xydt 2] 0 setdash docubic}def
 /dashcubic{gstartxy [5 5] 0 setdash docubic}def
 /bt /dotcubic load def /bd /dashcubic load def
 /squine{gstartxy dosquine}def
 /dosquine{chkvalid
 {chksquedge 2 copy moveto xysq2cub curveto xystroke pop}
 {cleartomark grestore}ifelse}def
 /q /squine load def
 /chkvalid{2 copy lt{dup 1 gt{false}{true}ifelse}{false}ifelse}def

 /chksquedge{2 copy 1.0 eq{0.0 eq{pop pop}{squineedge}ifelse}
 {pop squineedge}ifelse}def
 /xysq2cub{xysq2cubit 6 1 roll xysq2cubit 6 1 roll 3 index 3 index
 xysq2cubit 6 1 roll xysq2cubit 6 1 roll pop pop}def
 /xysq2cubit{2 index 2 mul add 3 div}def

 /dotsquine{gstartxy 1 setlinecap [xydt 2] 0 setdash dosquine}def
 /dashsquine{gstartxy [5 5] 0 setdash dosquine}def
 /qt /dotsquine load def /qd /dashsquine load def
/xy4mul{8 copy
 5 -1 roll mul 5 1 roll 6 -1 roll mul 6 1 roll
 3 -1 roll mul exch 4 -1 roll mul 3 1 roll
 add 3 1 roll add exch 10 2 roll
 7 -1 roll mul 7 1 roll 4 -1 roll mul 5 1 roll
 4 -1 roll mul 4 1 roll mul add 3 1 roll add
 exch 3 -1 roll }def

 /xy44mul{4 copy 16 4 roll exch 3 1 roll 4 copy 12 4 roll
 xy4mul 12 4 roll xy4mul 12 -4 roll 4 copy 16 4 roll
 8 4 roll xy4mul 12 4 roll xy4mul}def

 /cubicedge{10 2 roll exch 8 1 roll 3 -1 roll dup dup 9 2 roll
 5 -1 roll dup dup 9 1 roll 8 3 roll
 4 1 roll dup dup 5 3 roll dup dup 5 1 roll 3 -1 roll
 18 -2 roll 2 copy 1 sub neg 4 1 roll 1 sub neg exch 4 1 roll
 xy444mul
 pop pop pop 13 1 roll pop pop pop 9 1 roll 10 1 roll
 pop 8 1 roll 7 1 roll 8 1 roll pop 5 1 roll 3 1 roll}def

 /xy444mul{4 copy 24 4 roll 12 -4 roll 16 4 roll 4 copy 16 4 roll
 xy44mul 20 8 roll xy44mul
 12 -4 roll 4 -1 roll 7 1 roll exch 4 1 roll exch 6 -1 roll exch
 4 2 roll 16 8 roll 8 4 roll
 4 -1 roll 7 1 roll exch 4 1 roll exch 6 -1 roll exch 4 2 roll
 8 4 roll 16 4 roll 8 4 roll 20 -4 roll exch 3 1 roll
 4 copy 20 4 roll 4 copy 16 4 roll 4 copy 12 4 roll
 xy4mul 28 4 roll xy4mul 20 4 roll xy4mul 12 4 roll xy4mul}def

 /squineedge{8 2 roll
 exch 5 1 roll 3 -1 roll dup 6 2 roll 1 index exch
 10 -2 roll 2 copy 1 sub neg 4 1 roll 1 sub neg exch 4 1 roll
 xy44mul 4 1 roll pop 5 1 roll 6 1 roll 3 -1 roll pop}def

 /xyshort{2 copy abs exch abs add xysegl .5 mul lt
 {pop pop grestore}{rlineto xystroke}ifelse}def

 /tipwidth{xywidth xynormwidth dup currentlinewidth exch div
 sqrt dup dup scale mul setlinewidth 1 setlinecap}def

 /halftip{tipwidth xysize 10 div 0 0 moveto
 -.25 0 3 -1 roll -2.5 mul 0 xysize 2 div neg
 dup .62 mul 2 div neg curveto}bind def

/atip{gchksavexy halftip xystroke}def
 /btip{gchksavexy xyopp halftip xystroke}def
 /tip{gchksavexy gsave halftip stroke grestore
 xyopp halftip xystroke}def
 /t /tip load def /a /atip load def /b /btip load def
/cmatip{gchksavexy halfcmtip xystroke}def
 /cmbtip{gchksavexy xyopp halfcmtip xystroke}def
 /cmtip{gchksavexy gsave halfcmtip stroke grestore
 xyopp halfcmtip xystroke}def
 /halfcmtip{tipwidth 0 0 moveto
 -.1333 0 .25 neg dup .125 3 -1 roll .25 curveto}bind def
 /ct /cmtip load def /ca /cmatip load def /cb /cmbtip load def
 /xyfscale{/xyfsize exch def}def /xyfsize{10}def
 /eu{-0.0551 0.0643 -0.0976 0.1386 -0.125 0.2188}def
 /cm{-0.105 0.0437 -0.1804 0.1380 -0.2 0.25}def
 /XY{-0.1753 0.0181 -0.3452 0.0708 -0.5 0.155}def
 /tipstart{3 -1 roll gchksavexy exch xyfscale tipwidth dup XYdict exch
 known{dup /xy eq{pop /XY}if}{pop /XY}ifelse XYdict exch get}def
 /tipend{halfxytip xystroke}def
 /halfxytip{1 1 6{pop xyfsize mul 6 1 roll}for 0 0 moveto curveto}def
 /A{tipstart D}def /B{tipstart C}def /C{xyopp D}def /D{exec tipend}def
 /AB{tipstart dup gsave exec halfxytip stroke grestore C}def

 /Tip{exch gchksavexy /xyfsize{10}def tipwidth gsave
 dup XYdict exch known{dup /xy eq{pop /XT}if}{pop /XT}ifelse
 XYdict exch get dup
 halfTip stroke grestore xyopp halfTip xystroke}def
 /XT{360 32 div neg}def /Xt{-1 .31 mul 1 atan}def
 /ET{360 64 div 5 mul neg}def /Et{-1 .31 mul 1 atan}def
 /halfTip{exec rotate XY halfxytip}def /halfTtip{halfTip}def
 /Ttip{exch gchksavexy /xyfsize{10}def tipwidth gsave
 dup XYdict exch known{dup /xy eq{pop /Xt}if}{pop /Xt}ifelse
 XYdict exch get dup
 halfTtip stroke grestore xyopp halfTtip xystroke}def
 /tt /Tip load def /tT /Ttip load def
/halfturn{xysegl 2 div dup dup neg exch rmoveto
 0 exch dup exch -180 -90 arc}bind def
 /aturn{gchksavexy halfturn xystroke}def
 /bturn{gchksavexy xyopp halfturn xystroke}def
 /ta /aturn load def /tb /bturn load def
 /xysqll 231705  dimendiv def
 /squigl{gchksavexy xysqll dup neg 0 rmoveto
 2 div dup dup neg dup 3 -1 roll
 2 sqrt mul dup 5 1 roll
 135 45 arcn dup 3 -1 roll -135 -45 arc
 xystroke}def
 /g /squigl load def
/fullhook{0 xysegl 2 div dup -90 90 arcn}bind def
 /halfhook{xysegl 2 div dup 0 exch 180 90 arcn}bind def

/ahook{gchksavexy fullhook xystroke}def
 /bhook{gchksavexy xyopp fullhook xystroke}def
 /hook{gchksavexy gsave halfhook stroke grestore
 xyopp halfhook xystroke}def
 /h /hook load def /ha /ahook load def /hb /bhook load def
 /xyqcirc{dup dup neg exch translate newpath
 dup neg 0 exch moveto 0 0 3 -1 roll -90 0 arc}bind def

 /circ{gstartxy
 3 copy pop 2 copy cos mul 3 1 roll sin mul
 rmoveto 0 0 5 2 roll arc xystroke}bind def
 /o /circ load def
 /circhar{gsave dup 3 gt{7 sub neg}if dup
 3 eq{pop dup 2 sqrt -2 div mul}{dup 1 eq{pop dup 2 sqrt 2 div mul}
 {0 eq{dup}{0}ifelse}ifelse}ifelse
 0 translate 3 1 roll circ grestore}bind def
 /c /circhar load def
end end
%%EndResource