1 //
2 //	aegis - project change supervisor
3 //	Copyright (C) 1998, 2003-2006, 2008 Peter Miller
4 //
5 //	This program is free software; you can redistribute it and/or modify
6 //	it under the terms of the GNU General Public License as published by
7 //	the Free Software Foundation; either version 3 of the License, or
8 //	(at your option) any later version.
9 //
10 //	This program is distributed in the hope that it will be useful,
11 //	but WITHOUT ANY WARRANTY; without even the implied warranty of
12 //	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 //	GNU General Public License for more details.
14 //
15 //	You should have received a copy of the GNU General Public License
16 //	along with this program. If not, see
17 //	<http://www.gnu.org/licenses/>.
18 //
19 
20 #include <libaegis/gif.h>
21 
22 static unsigned char data[128][14] =
23 {
24     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x00
25     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x01
26     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x02
27     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x03
28     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x04
29     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x05
30     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x06
31     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x07
32     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x08
33     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x09
34     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x0A
35     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x0B
36     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x0C
37     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x0D
38     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x0E
39     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x0F
40     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x10
41     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x11
42     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x12
43     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x13
44     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x14
45     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x15
46     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x16
47     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x17
48     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x18
49     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x19
50     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x1A
51     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x1B
52     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x1C
53     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x1D
54     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x1E
55     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }, // 0x1F
56 
57     // ' '
58     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
60 
61     // '!'
62     { 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
63     0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, },
64 
65     // '"'
66     { 0x00, 0x48, 0x48, 0x48, 0x48, 0x00, 0x00,
67     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
68 
69     // '#'
70     { 0x00, 0x24, 0x24, 0x24, 0x7E, 0x24, 0x48,
71     0xFC, 0x48, 0x48, 0x48, 0x00, 0x00, 0x00, },
72 
73     // '$'
74     { 0x00, 0x10, 0x38, 0x54, 0x50, 0x50, 0x38,
75     0x14, 0x14, 0x54, 0x38, 0x10, 0x00, 0x00, },
76 
77     // '%'
78     { 0x00, 0x64, 0x94, 0x98, 0x68, 0x10, 0x10,
79     0x2C, 0x32, 0x52, 0x4C, 0x00, 0x00, 0x00, },
80 
81     // '&'
82     { 0x00, 0x30, 0x48, 0x48, 0x30, 0x20, 0x52,
83     0x8C, 0x88, 0x88, 0x76, 0x00, 0x00, 0x00, },
84 
85     // '\''
86     { 0x00, 0x08, 0x08, 0x10, 0x20, 0x00, 0x00,
87     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
88 
89     // '('
90     { 0x00, 0x08, 0x10, 0x10, 0x20, 0x20, 0x20,
91     0x20, 0x20, 0x10, 0x10, 0x08, 0x00, 0x00, },
92 
93     // ')'
94     { 0x00, 0x20, 0x10, 0x10, 0x08, 0x08, 0x08,
95     0x08, 0x08, 0x10, 0x10, 0x20, 0x00, 0x00, },
96 
97     // '*'
98     { 0x00, 0x00, 0x10, 0x54, 0x38, 0x38, 0x54,
99     0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
100 
101     // '+'
102     { 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x7C,
103     0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, },
104 
105     // ','
106     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
107     0x00, 0x00, 0x18, 0x18, 0x08, 0x30, 0x00, },
108 
109     // '-'
110     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C,
111     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
112 
113     // '.'
114     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
115     0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, },
116 
117     // '/'
118     { 0x00, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10,
119     0x20, 0x20, 0x40, 0x40, 0x00, 0x00, 0x00, },
120 
121     // '0'
122     { 0x00, 0x00, 0x38, 0x44, 0x44, 0x4C, 0x54,
123     0x64, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
124 
125     // '1'
126     { 0x00, 0x00, 0x10, 0x30, 0x50, 0x10, 0x10,
127     0x10, 0x10, 0x10, 0x7C, 0x00, 0x00, 0x00, },
128 
129     // '2'
130     { 0x00, 0x00, 0x38, 0x44, 0x04, 0x04, 0x08,
131     0x10, 0x20, 0x40, 0x7C, 0x00, 0x00, 0x00, },
132 
133     // '3'
134     { 0x00, 0x00, 0x38, 0x44, 0x04, 0x04, 0x18,
135     0x04, 0x04, 0x44, 0x38, 0x00, 0x00, 0x00, },
136 
137     // '4'
138     { 0x00, 0x00, 0x04, 0x0C, 0x14, 0x24, 0x44,
139     0x44, 0x7E, 0x04, 0x04, 0x00, 0x00, 0x00, },
140 
141     // '5'
142     { 0x00, 0x00, 0x7C, 0x40, 0x40, 0x78, 0x04,
143     0x04, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
144 
145     // '6'
146     { 0x00, 0x00, 0x38, 0x44, 0x40, 0x40, 0x78,
147     0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
148 
149     // '7'
150     { 0x00, 0x00, 0x7C, 0x44, 0x04, 0x08, 0x08,
151     0x08, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, },
152 
153     // '8'
154     { 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38,
155     0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
156 
157     // '9'
158     { 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x3C,
159     0x04, 0x04, 0x44, 0x38, 0x00, 0x00, 0x00, },
160 
161     // ':'
162     { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
163     0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, },
164 
165     // ';'
166     { 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
167     0x00, 0x00, 0x18, 0x18, 0x08, 0x30, 0x00, },
168 
169     // '<'
170     { 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
171     0x40, 0x20, 0x10, 0x08, 0x04, 0x00, 0x00, },
172 
173     // '='
174     { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00,
175     0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, },
176 
177     // '>'
178     { 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04,
179     0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, },
180 
181     // '?'
182     { 0x00, 0x38, 0x44, 0x44, 0x04, 0x08, 0x10,
183     0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, },
184 
185     // '@'
186     { 0x00, 0x10, 0x28, 0x44, 0x5C, 0x54, 0x54,
187     0x5C, 0x40, 0x24, 0x18, 0x00, 0x00, 0x00, },
188 
189     // 'A'
190     { 0x00, 0x00, 0x10, 0x10, 0x28, 0x28, 0x28,
191     0x44, 0x7C, 0x44, 0x44, 0x00, 0x00, 0x00, },
192 
193     // 'B'
194     { 0x00, 0x00, 0x70, 0x48, 0x48, 0x48, 0x78,
195     0x44, 0x44, 0x44, 0x78, 0x00, 0x00, 0x00, },
196 
197     // 'C'
198     { 0x00, 0x00, 0x38, 0x44, 0x44, 0x40, 0x40,
199     0x40, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
200 
201     // 'D'
202     { 0x00, 0x00, 0x70, 0x48, 0x44, 0x44, 0x44,
203     0x44, 0x44, 0x48, 0x70, 0x00, 0x00, 0x00, },
204 
205     // 'E'
206     { 0x00, 0x00, 0x7C, 0x40, 0x40, 0x40, 0x78,
207     0x40, 0x40, 0x40, 0x7C, 0x00, 0x00, 0x00, },
208 
209     // 'F'
210     { 0x00, 0x00, 0x7C, 0x40, 0x40, 0x40, 0x78,
211     0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, },
212 
213     // 'G'
214     { 0x00, 0x00, 0x38, 0x44, 0x40, 0x40, 0x4C,
215     0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, 0x00, },
216 
217     // 'H'
218     { 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x7C,
219     0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, },
220 
221     // 'I'
222     { 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x10,
223     0x10, 0x10, 0x10, 0x7C, 0x00, 0x00, 0x00, },
224 
225     // 'J'
226     { 0x00, 0x00, 0x3C, 0x08, 0x08, 0x08, 0x08,
227     0x08, 0x48, 0x48, 0x30, 0x00, 0x00, 0x00, },
228 
229     // 'K'
230     { 0x00, 0x00, 0x44, 0x48, 0x50, 0x60, 0x50,
231     0x48, 0x48, 0x44, 0x44, 0x00, 0x00, 0x00, },
232 
233     // 'L'
234     { 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40,
235     0x40, 0x40, 0x40, 0x7C, 0x00, 0x00, 0x00, },
236 
237     // 'M'
238     { 0x00, 0x00, 0x84, 0x84, 0xCC, 0xCC, 0xB4,
239     0xB4, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, },
240 
241     // 'N'
242     { 0x00, 0x00, 0x44, 0x64, 0x64, 0x54, 0x54,
243     0x4C, 0x4C, 0x44, 0x44, 0x00, 0x00, 0x00, },
244 
245     // 'O'
246     { 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44,
247     0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
248 
249     // 'P'
250     { 0x00, 0x00, 0x78, 0x44, 0x44, 0x44, 0x78,
251     0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, },
252 
253     // 'Q'
254     { 0x00, 0x00, 0x38, 0x44, 0x44, 0x44, 0x44,
255     0x44, 0x44, 0x44, 0x38, 0x10, 0x0C, 0x00, },
256 
257     // 'R'
258     { 0x00, 0x00, 0x78, 0x44, 0x44, 0x44, 0x78,
259     0x48, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, },
260 
261     // 'S'
262     { 0x00, 0x00, 0x38, 0x44, 0x40, 0x20, 0x18,
263     0x04, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
264 
265     // 'T'
266     { 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x10,
267     0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, },
268 
269     // 'U'
270     { 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x44,
271     0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
272 
273     // 'V'
274     { 0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x28,
275     0x28, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, },
276 
277     // 'W'
278     { 0x00, 0x00, 0x82, 0x82, 0x82, 0x92, 0x54,
279     0x54, 0x54, 0x28, 0x28, 0x00, 0x00, 0x00, },
280 
281     // 'X'
282     { 0x00, 0x00, 0x44, 0x44, 0x28, 0x28, 0x10,
283     0x28, 0x28, 0x44, 0x44, 0x00, 0x00, 0x00, },
284 
285     // 'Y'
286     { 0x00, 0x00, 0x44, 0x44, 0x44, 0x28, 0x10,
287     0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, },
288 
289     // 'Z'
290     { 0x00, 0x00, 0x7C, 0x04, 0x04, 0x08, 0x10,
291     0x20, 0x40, 0x40, 0x7C, 0x00, 0x00, 0x00, },
292 
293     // '['
294     { 0x00, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20,
295     0x20, 0x20, 0x20, 0x20, 0x3C, 0x00, 0x00, },
296 
297     // '\'
298     { 0x00, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10,
299     0x08, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, },
300 
301     // ']'
302     { 0x00, 0x78, 0x08, 0x08, 0x08, 0x08, 0x08,
303     0x08, 0x08, 0x08, 0x08, 0x78, 0x00, 0x00, },
304 
305     // '^'
306     { 0x00, 0x00, 0x10, 0x38, 0x6C, 0x44, 0x00,
307     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
308 
309     // '_'
310     { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
311     0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, },
312 
313     // '`'
314     { 0x00, 0x20, 0x20, 0x10, 0x08, 0x00, 0x00,
315     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
316 
317     // 'a'
318     { 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x04,
319     0x3C, 0x44, 0x44, 0x3C, 0x00, 0x00, 0x00, },
320 
321     // 'b'
322     { 0x00, 0x00, 0x40, 0x40, 0x58, 0x64, 0x44,
323     0x44, 0x44, 0x64, 0x58, 0x00, 0x00, 0x00, },
324 
325     // 'c'
326     { 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x40,
327     0x40, 0x40, 0x44, 0x38, 0x00, 0x00, 0x00, },
328 
329     // 'd'
330     { 0x00, 0x00, 0x04, 0x04, 0x34, 0x4C, 0x44,
331     0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, 0x00, },
332 
333     // 'e'
334     { 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44,
335     0x7C, 0x40, 0x44, 0x38, 0x00, 0x00, 0x00, },
336 
337     // 'f'
338     { 0x00, 0x00, 0x0C, 0x10, 0x10, 0x7C, 0x10,
339     0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, },
340 
341     // 'g'
342     { 0x00, 0x00, 0x00, 0x00, 0x34, 0x4C, 0x44,
343     0x44, 0x44, 0x4C, 0x34, 0x04, 0x44, 0x38, },
344 
345     // 'h'
346     { 0x00, 0x00, 0x40, 0x40, 0x58, 0x64, 0x44,
347     0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, },
348 
349     // 'i'
350     { 0x00, 0x00, 0x08, 0x00, 0x38, 0x08, 0x08,
351     0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, },
352 
353     // 'j'
354     { 0x00, 0x00, 0x08, 0x00, 0x38, 0x08, 0x08,
355     0x08, 0x08, 0x08, 0x08, 0x08, 0x48, 0x30, },
356 
357     // 'k'
358     { 0x00, 0x00, 0x40, 0x40, 0x48, 0x50, 0x60,
359     0x60, 0x50, 0x48, 0x44, 0x00, 0x00, 0x00, },
360 
361     // 'l'
362     { 0x00, 0x00, 0x38, 0x08, 0x08, 0x08, 0x08,
363     0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, },
364 
365     // 'm'
366     { 0x00, 0x00, 0x00, 0x00, 0x68, 0x54, 0x54,
367     0x54, 0x54, 0x54, 0x54, 0x00, 0x00, 0x00, },
368 
369     // 'n'
370     { 0x00, 0x00, 0x00, 0x00, 0x58, 0x64, 0x44,
371     0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, },
372 
373     // 'o'
374     { 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44,
375     0x44, 0x44, 0x44, 0x38, 0x00, 0x00, 0x00, },
376 
377     // 'p'
378     { 0x00, 0x00, 0x00, 0x00, 0x58, 0x64, 0x44,
379     0x44, 0x44, 0x64, 0x58, 0x40, 0x40, 0x40, },
380 
381     // 'q'
382     { 0x00, 0x00, 0x00, 0x00, 0x34, 0x4C, 0x44,
383     0x44, 0x44, 0x4C, 0x34, 0x04, 0x04, 0x04, },
384 
385     // 'r'
386     { 0x00, 0x00, 0x00, 0x00, 0x58, 0x64, 0x40,
387     0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, },
388 
389     // 's'
390     { 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x40,
391     0x38, 0x04, 0x44, 0x38, 0x00, 0x00, 0x00, },
392 
393     // 't'
394     { 0x00, 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10,
395     0x10, 0x10, 0x10, 0x0C, 0x00, 0x00, 0x00, },
396 
397     // 'u'
398     { 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44,
399     0x44, 0x44, 0x4C, 0x34, 0x00, 0x00, 0x00, },
400 
401     // 'v'
402     { 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44,
403     0x28, 0x28, 0x10, 0x10, 0x00, 0x00, 0x00, },
404 
405     // 'w'
406     { 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x54,
407     0x54, 0x54, 0x54, 0x28, 0x00, 0x00, 0x00, },
408 
409     // 'x'
410     { 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x28,
411     0x10, 0x28, 0x44, 0x44, 0x00, 0x00, 0x00, },
412 
413     // 'y'
414     { 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x24,
415     0x24, 0x14, 0x18, 0x08, 0x08, 0x50, 0x20, },
416 
417     // 'z'
418     { 0x00, 0x00, 0x00, 0x00, 0x7C, 0x04, 0x08,
419     0x10, 0x20, 0x40, 0x7C, 0x00, 0x00, 0x00, },
420 
421     // '{'
422     { 0x0C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x60,
423     0x10, 0x10, 0x10, 0x10, 0x10, 0x0C, 0x00, },
424 
425     // '|'
426     { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
427     0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, },
428 
429     // '}'
430     { 0x60, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0C,
431     0x10, 0x10, 0x10, 0x10, 0x10, 0x60, 0x00, },
432 
433     // '~'
434     { 0x00, 0x00, 0x24, 0x54, 0x48, 0x00, 0x00,
435     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, },
436 };
437 
438 
439 static int
glyph(gif_ty * gp,int x,int y,int c,int clr)440 glyph(gif_ty *gp, int x, int y, int c, int clr)
441 {
442     int             x2, y2;
443     int             bit;
444     unsigned char   *dp;
445 
446     dp = data[c & 0x7F];
447     for (y2 = -10; y2 < 4; ++y2, ++dp)
448     {
449 	for (x2 = 0, bit = 0x80; x2 < 7; ++x2, bit >>= 1)
450 	{
451     	    if (*dp & bit)
452        		gif_pixel_set(gp, x + x2, y + y2, clr);
453 	}
454     }
455     return (x + 7);
456 }
457 
458 
459 void
gif_text(gif_ty * gp,int x,int y,const char * s,int clr)460 gif_text(gif_ty *gp, int x, int y, const char *s, int clr)
461 {
462     while (*s)
463        	x = glyph(gp, x, y, *s++, clr);
464 }
465