ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/genlinedraw
Revision: 1.1
Committed: Tue Mar 16 05:51:36 2004 UTC (20 years, 2 months ago) by pcg
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 pcg 1.1 #!/usr/bin/perl
2    
3     open TABLE, ">", "table/linedraw.h";
4     select TABLE;
5    
6     my $ch = 0x2500;
7    
8     # coordinate system:
9     #
10     # 0..8 (equally spaced) 9,11 mid-1,mid+1, makes 4 bit
11     # one point = 8 bit, two points = 16 bit
12    
13     # 8 bit opcode 0 line, 1 rect, 2 arc
14     # 8 bit opcode arg
15    
16     # OOOOOOOO AAAABBBB X1X1Y1Y1 X2X2Y2Y2
17    
18     my $offs = 0;
19     my @offs;
20    
21     sub emit {
22     my ($code, $x1, $y1, $x2, $y2, $a, $b) = @_;
23     $offs++;
24     printf " 0x%08lx,", ($code << 24)
25     | ($x1 << 12)
26     | ($y1 << 8)
27     | ($x2 << 4)
28     | ($y2 << 0)
29     | ($a << 20)
30     | ($b << 16);
31     }
32    
33     print "static uint32_t linedraw_command[] = {\n";
34    
35     while (<DATA>) {
36     next if /^\//;
37     next unless /\S/;
38    
39     push @offs, $offs;
40    
41     my ($v, $V, $h, $H, $s);
42    
43     for (;;) {
44     /\G-/gc and last;
45     /\G$/gc and last;
46    
47     /\G([123])/gc and $w = $1;
48    
49     /\Gh/gc and $h = $w;
50     /\GH/gc and $H = $w;
51     /\Gv/gc and $v = $w;
52     /\GV/gc and $V = $w;
53    
54     /\G\//gc and emit 0, 0, 8, 8, 0;
55     /\G\\/gc and emit 0, 0, 0, 8, 8;
56    
57     /\GA/gc and emit 2, 8, 8, 0, 0, 2, 2;
58     /\GB/gc and emit 2, 0, 8, 0, 0, 1, 2;
59     /\GC/gc and emit 2, 0, 0, 0, 0, 1, 0;
60     /\GD/gc and emit 2, 8, 0, 0, 0, 0, 0;
61    
62     /\Gi/gc and emit 1, 0, 0, 4, 4;
63     /\Gj/gc and emit 1, 4, 0, 8, 4;
64     /\Gk/gc and emit 1, 0, 4, 4, 8;
65     /\Gl/gc and emit 1, 4, 4, 8, 8;
66    
67     /\Gs(\d)/gc and $s = $1;
68    
69     /\Gr(\d+),(\d+),(\d+),(\d+)/gc and emit 1, $1, $2, $3, $4, $s;
70    
71     /\G\s/gc;
72     }
73    
74     if ($h) {
75     emit 0, 0, 9,10, 9 if $h > 1;
76     emit 0, 0, 10,10, 10 if $h & 1;
77     emit 0, 0, 11,10, 11 if $h > 1;
78     }
79    
80     if ($H) {
81     emit 0,10, 9, 8, 9 if $H > 1;
82     emit 0,10, 10, 8, 10 if $H & 1;
83     emit 0,10, 11, 8, 11 if $H > 1;
84     }
85    
86     if ($v) {
87     emit 0, 9, 0, 9, 10 if $v > 1;
88     emit 0,10, 0,10, 10 if $v & 1;
89     emit 0,11, 0,11, 10 if $v > 1;
90     }
91    
92     if ($V) {
93     emit 0, 9, 10, 9, 8 if $V > 1;
94     emit 0,10, 10,10, 8 if $V & 1;
95     emit 0,11, 10,11, 8 if $V > 1;
96     }
97    
98     $offs[-1] = ($offs[-1] << 4) | ($offs - $offs[-1]);
99    
100     printf " // %04x\n", $ch;
101     $ch++;
102     }
103    
104     print <<EOF;
105     };
106    
107     static uint16_t linedraw_offs[] = {
108     EOF
109    
110     for (@offs) {
111     printf " 0x%04x,", $_;
112     print "\n" if ++$cnt % 5 == 0;
113     }
114    
115     print <<EOF;
116     };
117    
118     EOF
119    
120     __END__
121     // 2500
122    
123     1hH
124     3hH
125     1vV
126     3vV
127    
128     r0,10,1,10 r3,10,5,10 r7,10,8,10
129     r0,9,1,11 r3,9,5,11 r7,9,8,11
130     r10,0,10,1 r10,3,10,5 r10,7,10,8
131     r9,0,11,1 r9,3,11,5 r9,7,11,8
132    
133     r0,10,1,10 r2,10,3,10 r4,10,5,10 r6,10,7,10
134     r0,9,1,11 r2,9,3,11 r4,9,5,11 r6,9,7,11
135     r10,0,10,1 r10,2,10,3 r10,4,10,5 r10,6,10,7
136     r9,0,11,1 r9,2,11,3 r9,4,11,5 r9,6,11,7
137    
138     1HV
139     3H1V
140     1H3V
141     3HV
142    
143    
144     // 2510
145    
146     1hV
147     3h1V
148     1h3V
149     3hV
150    
151     1Hv
152     3H1v
153     1H3v
154     3Hv
155    
156     1hv
157     3h1v
158     1h3v
159     3hv
160    
161     1HvV
162     3H1vV
163     1HV3v
164     1Hv3V
165    
166    
167     // 2530
168    
169     1H3vV
170     3Hv1V
171     3HV1v
172     3HvV
173    
174     1hvV
175     3h1vV
176     1hV3v
177     1hv3V
178    
179     1h3vV
180     3hv1V
181     1v3hV
182     3hvV
183    
184     1hHV
185     3h1HV
186     3H1hV
187     3hH1V
188    
189    
190     // 2530
191    
192     1hH3V
193     3hV1H
194     1h3HV
195     3hHV
196    
197     1hHv
198     1vH3h
199     1hv3H
200     1v3hH
201    
202     1hH3v
203     1H3hv
204     1h3Hv
205     3hHv
206    
207     1hHvV
208     1vVH3h
209     1hvV3H
210     1vV3hH
211    
212    
213     // 2540
214    
215     1hHV3v
216     1hHv3V
217     1hH3vV
218     1HV3hv
219    
220     1hV3Hv
221     1Hv3hV
222     1hv3HV
223     1V3hHv
224    
225     1v3hHV
226     1H3hvV
227     1h3HvV
228     3hHvV
229    
230     -
231     -
232     -
233     -
234    
235    
236     // 2550
237    
238     2hH
239     2vV
240     1V2H
241     2V1H
242    
243     2VH
244     2h1V
245     1h2V
246     2hV
247    
248     1v2H
249     2v1H
250     2vH
251     2h1v
252    
253     1h2v
254     2hv
255     1vV2H
256     2vV1H
257    
258    
259     // 2560
260    
261     2vVH
262     2h1vV
263     1h2vV
264     2hvV
265    
266     2hH1V
267     2V1hH
268     2hHV
269     1v2hH
270    
271     2v1hH
272     2vhH
273     1vV2hH
274     1hH2vV
275    
276     2hHvV
277     A
278     B
279     C
280    
281    
282     // 2570
283    
284     D
285     1/
286     1\
287     1/\
288    
289     1h
290     1v
291     1H
292     1V
293    
294     3h
295     3v
296     3H
297     3V
298    
299     1h3H
300     1v3V
301     1H3h
302     1V3v
303    
304    
305     // 2580
306    
307     r0,0,8,4
308     r0,7,8,8
309     r0,6,8,8
310     r0,5,8,8
311    
312     r0,4,8,8
313     r0,3,8,8
314     r0,2,8,8
315     r0,1,8,8
316    
317     r0,0,8,8
318     r0,0,7,8
319     r0,0,6,8
320     r0,0,5,8
321    
322     r0,0,4,8
323     r0,0,3,8
324     r0,0,2,8
325     r0,0,1,8
326    
327    
328     // 2590
329    
330     r4,0,8,8
331     s3r0,0,8,8
332     s2r0,0,8,8
333     s1r0,0,8,8
334    
335     r0,0,8,1
336     r7,0,8,8
337     k
338     l
339    
340     i
341     ikl
342     il
343     ijk
344    
345     ijl
346     j
347     jk
348     jkl
349    
350