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