1 |
%!PS-Adobe-2.0 EPSF-2.0 |
2 |
%%Title: ClassName |
3 |
%%Creator: Doxygen |
4 |
%%CreationDate: Time |
5 |
%%For: |
6 |
%Magnification: 1.00 |
7 |
%%Orientation: Portrait |
8 |
%%BoundingBox: 0 0 500 645.161 |
9 |
%%Pages: 0 |
10 |
%%BeginSetup |
11 |
%%EndSetup |
12 |
%%EndComments |
13 |
|
14 |
% ----- variables ----- |
15 |
|
16 |
/boxwidth 0 def |
17 |
/boxheight 40 def |
18 |
/fontheight 24 def |
19 |
/marginwidth 10 def |
20 |
/distx 20 def |
21 |
/disty 40 def |
22 |
/boundaspect 0.775 def % aspect ratio of the BoundingBox (width/height) |
23 |
/boundx 500 def |
24 |
/boundy boundx boundaspect div def |
25 |
/xspacing 0 def |
26 |
/yspacing 0 def |
27 |
/rows 4 def |
28 |
/cols 1 def |
29 |
/scalefactor 0 def |
30 |
/boxfont /Times-Roman findfont fontheight scalefont def |
31 |
|
32 |
% ----- procedures ----- |
33 |
|
34 |
/dotted { [1 4] 0 setdash } def |
35 |
/dashed { [5] 0 setdash } def |
36 |
/solid { [] 0 setdash } def |
37 |
|
38 |
/max % result = MAX(arg1,arg2) |
39 |
{ |
40 |
/a exch def |
41 |
/b exch def |
42 |
a b gt {a} {b} ifelse |
43 |
} def |
44 |
|
45 |
/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) |
46 |
{ |
47 |
0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max |
48 |
} def |
49 |
|
50 |
/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) |
51 |
{ |
52 |
/str exch def |
53 |
/boxwidth boxwidth str stringwidth pop max def |
54 |
} def |
55 |
|
56 |
/box % draws a box with text `arg1' at grid pos (arg2,arg3) |
57 |
{ gsave |
58 |
2 setlinewidth |
59 |
newpath |
60 |
exch xspacing mul xoffset add |
61 |
exch yspacing mul |
62 |
moveto |
63 |
boxwidth 0 rlineto |
64 |
0 boxheight rlineto |
65 |
boxwidth neg 0 rlineto |
66 |
0 boxheight neg rlineto |
67 |
closepath |
68 |
dup stringwidth pop neg boxwidth add 2 div |
69 |
boxheight fontheight 2 div sub 2 div |
70 |
rmoveto show stroke |
71 |
grestore |
72 |
} def |
73 |
|
74 |
/mark |
75 |
{ newpath |
76 |
exch xspacing mul xoffset add boxwidth add |
77 |
exch yspacing mul |
78 |
moveto |
79 |
0 boxheight 4 div rlineto |
80 |
boxheight neg 4 div boxheight neg 4 div rlineto |
81 |
closepath |
82 |
eofill |
83 |
stroke |
84 |
} def |
85 |
|
86 |
/arrow |
87 |
{ newpath |
88 |
moveto |
89 |
3 -8 rlineto |
90 |
-6 0 rlineto |
91 |
3 8 rlineto |
92 |
closepath |
93 |
eofill |
94 |
stroke |
95 |
} def |
96 |
|
97 |
/out % draws an output connector for the block at (arg1,arg2) |
98 |
{ |
99 |
newpath |
100 |
exch xspacing mul xoffset add boxwidth 2 div add |
101 |
exch yspacing mul boxheight add |
102 |
/y exch def |
103 |
/x exch def |
104 |
x y moveto |
105 |
0 disty 2 div rlineto |
106 |
stroke |
107 |
1 eq { x y disty 2 div add arrow } if |
108 |
} def |
109 |
|
110 |
/in % draws an input connector for the block at (arg1,arg2) |
111 |
{ |
112 |
newpath |
113 |
exch xspacing mul xoffset add boxwidth 2 div add |
114 |
exch yspacing mul disty 2 div sub |
115 |
/y exch def |
116 |
/x exch def |
117 |
x y moveto |
118 |
0 disty 2 div rlineto |
119 |
stroke |
120 |
1 eq { x y disty 2 div add arrow } if |
121 |
} def |
122 |
|
123 |
/hedge |
124 |
{ |
125 |
exch xspacing mul xoffset add boxwidth 2 div add |
126 |
exch yspacing mul boxheight 2 div sub |
127 |
/y exch def |
128 |
/x exch def |
129 |
newpath |
130 |
x y moveto |
131 |
boxwidth 2 div distx add 0 rlineto |
132 |
stroke |
133 |
1 eq |
134 |
{ newpath x boxwidth 2 div distx add add y moveto |
135 |
-8 3 rlineto |
136 |
0 -6 rlineto |
137 |
8 3 rlineto |
138 |
closepath |
139 |
eofill |
140 |
stroke |
141 |
} if |
142 |
} def |
143 |
|
144 |
/vedge |
145 |
{ |
146 |
/ye exch def |
147 |
/ys exch def |
148 |
/xs exch def |
149 |
newpath |
150 |
xs xspacing mul xoffset add boxwidth 2 div add dup |
151 |
ys yspacing mul boxheight 2 div sub |
152 |
moveto |
153 |
ye yspacing mul boxheight 2 div sub |
154 |
lineto |
155 |
stroke |
156 |
} def |
157 |
|
158 |
/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' |
159 |
{ |
160 |
/ys exch def |
161 |
/xe exch def |
162 |
/xs exch def |
163 |
newpath |
164 |
xs xspacing mul xoffset add boxwidth 2 div add |
165 |
ys yspacing mul disty 2 div sub |
166 |
moveto |
167 |
xspacing xe xs sub mul 0 |
168 |
rlineto |
169 |
stroke |
170 |
} def |
171 |
|
172 |
% ----- main ------ |
173 |
|
174 |
boxfont setfont |
175 |
1 boundaspect scale |
176 |
(SmartCollection) cw |
177 |
(PamCutCollection) cw |
178 |
(PamCut) cw |
179 |
(VerboseCollection) cw |
180 |
/boxwidth boxwidth marginwidth 2 mul add def |
181 |
/xspacing boxwidth distx add def |
182 |
/yspacing boxheight disty add def |
183 |
/scalefactor |
184 |
boxwidth cols mul distx cols 1 sub mul add |
185 |
boxheight rows mul disty rows 1 sub mul add boundaspect mul |
186 |
max def |
187 |
boundx scalefactor div boundy scalefactor div scale |
188 |
|
189 |
% ----- classes ----- |
190 |
|
191 |
(SmartCollection) 0 1 box |
192 |
(PamCutCollection) 0 2 box |
193 |
(PamCut) 0 3 box |
194 |
(VerboseCollection) 0 0 box |
195 |
|
196 |
% ----- relations ----- |
197 |
|
198 |
solid |
199 |
0 0 1 out |
200 |
solid |
201 |
1 0 2 in |
202 |
solid |
203 |
0 0 2 out |
204 |
solid |
205 |
1 0 3 in |
206 |
solid |
207 |
1 0 0.25 out |
208 |
solid |
209 |
0 0 0.75 in |