1#include "lion-render.h"
2
3#include <stdlib.h>
4#include <stdio.h>
5
6#define ELEMENTS(x) (sizeof(x)/sizeof((x)[0]))
7
8static void init(struct lion *l, int i, VGint hexColor, const VGfloat *coords, int elems)
9{
10   static VGubyte cmds[128];
11   VGfloat color[4];
12   VGint j;
13
14   color[0] = ((hexColor >> 16) & 0xff) / 255.f;
15   color[1] = ((hexColor >> 8) & 0xff) / 255.f;
16   color[2] = ((hexColor >> 0) & 0xff) / 255.f;
17   color[3] = 1.0;
18
19   l->paths[i] = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f,
20                              0, 0, (unsigned int)VG_PATH_CAPABILITY_ALL);
21   l->fills[i] = vgCreatePaint();
22   vgSetParameterfv(l->fills[i], VG_PAINT_COLOR, 4, color);
23
24   cmds[0] = VG_MOVE_TO_ABS;
25   for (j = 1; j < elems; ++j) {
26      cmds[j] = VG_LINE_TO_ABS;
27   }
28
29   vgAppendPathData(l->paths[i], elems, cmds, coords);
30}
31
32static void poly0(struct lion *l)
33{
34   VGfloat color = 0xf2cc99;
35   static const VGfloat coords[] = {69,18, 82,8, 99,3, 118,5, 135,12, 149,21, 156,13, 165,9, 177,13, 183,28,
36                                    180,50, 164,91, 155,107, 154,114, 151,121, 141,127, 139,136, 155,206, 157,251, 126,342,
37                                    133,357, 128,376, 83,376, 75,368, 67,350, 61,350, 53,369, 4,369, 2,361, 5,354,
38                                    12,342, 16,321, 4,257, 4,244, 7,218, 9,179, 26,127, 43,93, 32,77, 30,70,
39                                    24,67, 16,49, 17,35, 18,23, 30,12, 40,7, 53,7, 62,12
40   };
41
42   init(l, 0, color, coords, ELEMENTS(coords)/2);
43}
44
45static void poly1(struct lion *l)
46{
47   VGfloat color = 0xe5b27f;
48   static const VGfloat coords[] = {142,79, 136,74, 138,82, 133,78, 133,84, 127,78, 128,85,
49                                    124,80, 125,87, 119,82, 119,90, 125,99, 125,96, 128,100, 128,94,
50                                    131,98, 132,93, 135,97, 136,93, 138,97, 139,94, 141,98, 143,94,
51                                    144,85
52   };
53
54   init(l, 1, color, coords, ELEMENTS(coords)/2);
55}
56
57static void poly2(struct lion *l)
58{
59   VGfloat color = 0xeb8080;
60   static const VGfloat coords[] = {127,101, 132,100, 137,99, 144,101, 143,105, 135,110
61   };
62
63   init(l, 2, color, coords, ELEMENTS(coords)/2);
64}
65
66static void poly3(struct lion *l)
67{
68   VGfloat color = 0xf2cc99;
69   static const VGfloat coords[] = {178,229, 157,248, 139,296, 126,349, 137,356,
70                                    158,357, 183,342, 212,332, 235,288, 235,261,
71                                    228,252, 212,250, 188,251
72   };
73
74   init(l, 3, color, coords, ELEMENTS(coords)/2);
75}
76
77static void poly4(struct lion *l)
78{
79   VGfloat color = 0x9c826b;
80   static const VGfloat coords[] = {56,229, 48,241, 48,250, 57,281, 63,325, 71,338,
81                                    81,315, 76,321, 79,311, 83,301, 75,308, 80,298,
82                                    73,303, 76,296, 71,298, 74,292, 69,293, 74,284,
83                                    78,278, 71,278, 74,274, 68,273, 70,268, 66,267,
84                                    68,261, 60,266, 62,259, 65,253, 57,258, 59,251,
85                                    55,254, 55,248, 60,237, 54,240, 58,234, 54,236
86   };
87
88   init(l, 4, color, coords, ELEMENTS(coords)/2);
89}
90
91static void poly5(struct lion *l)
92{
93   VGfloat color = 0x9c826b;
94   static const VGfloat coords[] = {74,363, 79,368, 81,368, 85,362, 89,363, 92,370, 96,373,
95                                    101,372, 108,361, 110,371, 113,373, 116,371, 120,358, 122,363,
96                                    123,371, 126,371, 129,367, 132,357, 135,361, 130,376, 127,377,
97                                    94,378, 84,376, 76,371
98   };
99
100   init(l, 5, color, coords, ELEMENTS(coords)/2);
101}
102
103static void poly6(struct lion *l)
104{
105   VGfloat color = 0x9c826b;
106   static const VGfloat coords[] = {212,250, 219,251, 228,258, 236,270, 235,287, 225,304,
107                                    205,332, 177,343, 171,352, 158,357, 166,352, 168,346,
108                                    168,339, 165,333, 155,327, 155,323, 161,320, 165,316,
109                                    169,316, 167,312, 171,313, 168,308, 173,309, 170,306,
110                                    177,306, 175,308, 177,311, 174,311, 176,316, 171,315,
111                                    174,319, 168,320, 168,323, 175,327, 179,332, 183,326,
112                                    184,332, 189,323, 190,328, 194,320, 194,325, 199,316,
113                                    201,320, 204,313, 206,316, 208,310, 211,305, 219,298,
114                                    226,288, 229,279, 228,266, 224,259, 217,253
115   };
116
117   init(l, 6, color, coords, ELEMENTS(coords)/2);
118}
119
120static void poly7(struct lion *l)
121{
122   VGfloat color = 0x9c826b;
123   static const VGfloat coords[] = {151,205, 151,238, 149,252, 141,268, 128,282, 121,301,
124                                    130,300, 126,313, 118,324, 116,337, 120,346, 133,352,
125                                    133,340, 137,333, 145,329, 156,327, 153,319, 153,291,
126                                    157,271, 170,259, 178,277, 193,250, 174,216
127   };
128
129   init(l, 7, color, coords, ELEMENTS(coords)/2);
130}
131
132static void poly8(struct lion *l)
133{
134   VGfloat color = 0x9c826b;
135   static const VGfloat coords[] = {78,127, 90,142, 95,155, 108,164, 125,167, 139,175,
136                                    150,206, 152,191, 141,140, 121,148, 100,136
137   };
138
139   init(l, 8, color, coords, ELEMENTS(coords)/2);
140}
141
142static void poly9(struct lion *l)
143{
144   VGfloat color = 0x9c826b;
145   static const VGfloat coords[] = {21,58, 35,63, 38,68, 32,69, 42,74, 40,79, 47,80, 54,83,
146                                    45,94, 34,81, 32,73, 24,66
147   };
148
149   init(l, 9, color, coords, ELEMENTS(coords)/2);
150}
151
152static void poly10(struct lion *l)
153{
154   VGfloat color = 0x9c826b;
155   static const VGfloat coords[] = {71,34, 67,34, 66,27, 59,24, 54,17, 48,17, 39,22,
156                                    30,26, 28,31, 31,39, 38,46, 29,45, 36,54, 41,61,
157                                    41,70, 50,69, 54,71, 55,58, 67,52, 76,43, 76,39,
158                                    68,44
159   };
160
161   init(l, 10, color, coords, ELEMENTS(coords)/2);
162}
163
164static void poly11(struct lion *l)
165{
166   VGfloat color = 0x9c826b;
167   static const VGfloat coords[] = {139,74, 141,83, 143,89, 144,104, 148,104, 155,106,
168                                    154,86, 157,77, 155,72, 150,77, 144,77
169   };
170
171   init(l, 11, color, coords, ELEMENTS(coords)/2);
172}
173
174static void poly12(struct lion *l)
175{
176   VGfloat color = 0x9c826b;
177   static const VGfloat coords[] = {105,44, 102,53, 108,58, 111,62, 112,55
178   };
179
180   init(l, 12, color, coords, ELEMENTS(coords)/2);
181}
182
183static void poly13(struct lion *l)
184{
185   VGfloat color = 0x9c826b;
186   static const VGfloat coords[] = {141,48, 141,54, 144,58, 139,62, 137,66, 136,59, 137,52
187   };
188
189   init(l, 13, color, coords, ELEMENTS(coords)/2);
190}
191
192static void poly14(struct lion *l)
193{
194   VGfloat color = 0x9c826b;
195   static const VGfloat coords[] = {98,135, 104,130, 105,134, 108,132, 108,135, 112,134,
196                                    113,137, 116,136, 116,139, 119,139, 124,141, 128,140,
197                                    133,138, 140,133, 139,140, 126,146, 104,144
198   };
199
200   init(l, 14, color, coords, ELEMENTS(coords)/2);
201}
202
203static void poly15(struct lion *l)
204{
205   VGfloat color = 0x9c826b;
206   static const VGfloat coords[] = {97,116, 103,119, 103,116, 111,118, 116,117, 122,114,
207                                    127,107, 135,111, 142,107, 141,114, 145,118, 149,121,
208                                    145,125, 140,124, 127,121, 113,125, 100,124
209   };
210
211   init(l, 15, color, coords, ELEMENTS(coords)/2);
212}
213
214static void poly16(struct lion *l)
215{
216   VGfloat color = 0x9c826b;
217   static const VGfloat coords[] = {147,33, 152,35, 157,34, 153,31, 160,31, 156,28, 161,28,
218                                    159,24, 163,25, 163,21, 165,22, 170,23, 167,17, 172,21,
219                                    174,18, 175,23, 176,22, 177,28, 177,33, 174,37, 176,39,
220                                    174,44, 171,49, 168,53, 164,57, 159,68, 156,70, 154,60,
221                                    150,51, 146,43, 144,35
222   };
223
224   init(l, 16, color, coords, ELEMENTS(coords)/2);
225}
226
227static void poly17(struct lion *l)
228{
229   VGfloat color = 0x9c826b;
230   static const VGfloat coords[] = {85,72, 89,74, 93,75, 100,76, 105,75, 102,79, 94,79, 88,76
231   };
232
233   init(l, 17, color, coords, ELEMENTS(coords)/2);
234}
235
236static void poly18(struct lion *l)
237{
238   VGfloat color = 0x9c826b;
239   static const VGfloat coords[] = {86,214, 79,221, 76,232, 82,225, 78,239, 82,234, 78,245,
240                                    81,243, 79,255, 84,250, 84,267, 87,254, 90,271, 90,257,
241                                    95,271, 93,256, 95,249, 92,252, 93,243, 89,253, 89,241,
242                                    86,250, 87,236, 83,245, 87,231, 82,231, 90,219, 84,221
243   };
244
245   init(l, 18, color, coords, ELEMENTS(coords)/2);
246}
247
248static void poly19(struct lion *l)
249{
250   VGfloat color = 0xffcc7f;
251   static const VGfloat coords[] = {93,68, 96,72, 100,73, 106,72, 108,66, 105,63, 100,62
252   };
253
254   init(l, 19, color, coords, ELEMENTS(coords)/2);
255}
256
257static void poly20(struct lion *l)
258{
259   VGfloat color = 0xffcc7f;
260   static const VGfloat coords[] = {144,64, 142,68, 142,73, 146,74, 150,73, 154,64, 149,62
261   };
262
263   init(l, 20, color, coords, ELEMENTS(coords)/2);
264}
265
266static void poly21(struct lion *l)
267{
268   VGfloat color = 0x9c826b;
269   static const VGfloat coords[] = {57,91, 42,111, 52,105, 41,117, 53,112, 46,120, 53,116,
270                                    50,124, 57,119, 55,127, 61,122, 60,130, 67,126, 66,134,
271                                    71,129, 72,136, 77,130, 76,137, 80,133, 82,138, 86,135,
272                                    96,135, 94,129, 86,124, 83,117, 77,123, 79,117, 73,120,
273                                    75,112, 68,116, 71,111, 65,114, 69,107, 63,110, 68,102,
274                                    61,107, 66,98, 61,103, 63,97, 57,99
275   };
276
277   init(l, 21, color, coords, ELEMENTS(coords)/2);
278}
279
280static void poly22(struct lion *l)
281{
282   VGfloat color = 0x9c826b;
283   static const VGfloat coords[] = {83,79, 76,79, 67,82, 75,83, 65,88, 76,87, 65,92, 76,91,
284                                    68,96, 77,95, 70,99, 80,98, 72,104, 80,102, 76,108, 85,103,
285                                    92,101, 87,98, 93,96, 86,94, 91,93, 85,91, 93,89, 99,89, 105,93,
286                                    107,85, 102,82, 92,80
287   };
288
289   init(l, 22, color, coords, ELEMENTS(coords)/2);
290}
291
292static void poly23(struct lion *l)
293{
294   VGfloat color = 0x9c826b;
295   static const VGfloat coords[] = {109,77, 111,83, 109,89, 113,94, 117,90, 117,81, 114,78
296   };
297
298   init(l, 23, color, coords, ELEMENTS(coords)/2);
299}
300
301static void poly24(struct lion *l)
302{
303   VGfloat color = 0x9c826b;
304   static const VGfloat coords[] = {122,128, 127,126, 134,127, 136,129, 134,130, 130,128, 124,129
305   };
306
307   init(l, 24, color, coords, ELEMENTS(coords)/2);
308}
309
310static void poly25(struct lion *l)
311{
312   VGfloat color = 0x9c826b;
313   static const VGfloat coords[] = {78,27, 82,32, 80,33, 82,36, 78,37, 82,40, 78,42, 81,46, 76,47,
314                                    78,49, 74,50, 82,52, 87,50, 83,48, 91,46, 86,45, 91,42, 88,40,
315                                    92,37, 86,34, 90,31, 86,29, 89,26
316   };
317
318   init(l, 25, color, coords, ELEMENTS(coords)/2);
319}
320
321static void poly26(struct lion *l)
322{
323   VGfloat color = 0x9c826b;
324   static const VGfloat coords[] = {82,17, 92,20, 79,21, 90,25, 81,25, 94,28, 93,26, 101,30,
325                                    101,26, 107,33, 108,28, 111,40, 113,34, 115,45, 117,39,
326                                    119,54, 121,46, 124,58, 126,47, 129,59, 130,49, 134,58,
327                                    133,44, 137,48, 133,37, 137,40, 133,32, 126,20, 135,26,
328                                    132,19, 138,23, 135,17, 142,18, 132,11, 116,6, 94,6, 78,11,
329                                    92,12, 80,14, 90,16
330   };
331
332   init(l, 26, color, coords, ELEMENTS(coords)/2);
333}
334
335static void poly27(struct lion *l)
336{
337   VGfloat color = 0x9c826b;
338   static const VGfloat coords[] = {142,234, 132,227, 124,223, 115,220, 110,225, 118,224, 127,229,
339                                    135,236, 122,234, 115,237, 113,242, 121,238, 139,243, 121,245,
340                                    111,254, 95,254, 102,244, 104,235, 110,229, 100,231, 104,224,
341                                    113,216, 122,215, 132,217, 141,224, 145,230, 149,240
342   };
343
344   init(l, 27, color, coords, ELEMENTS(coords)/2);
345}
346
347static void poly28(struct lion *l)
348{
349   VGfloat color = 0x9c826b;
350   static const VGfloat coords[] = {115,252, 125,248, 137,249, 143,258, 134,255, 125,254
351   };
352
353   init(l, 28, color, coords, ELEMENTS(coords)/2);
354}
355
356static void poly29(struct lion *l)
357{
358   VGfloat color = 0x9c826b;
359   static const VGfloat coords[] = {114,212, 130,213, 140,219, 147,225, 144,214, 137,209, 128,207
360   };
361
362   init(l, 29, color, coords, ELEMENTS(coords)/2);
363}
364
365static void poly30(struct lion *l)
366{
367   VGfloat color = 0x9c826b;
368   static const VGfloat coords[] = {102,263, 108,258, 117,257, 131,258, 116,260, 109,265
369   };
370
371   init(l, 30, color, coords, ELEMENTS(coords)/2);
372}
373
374static void poly31(struct lion *l)
375{
376   VGfloat color = 0x9c826b;
377   static const VGfloat coords[] = {51,241, 35,224, 40,238, 23,224, 31,242, 19,239, 28,247, 17,246,
378                                    25,250, 37,254, 39,263, 44,271, 47,294, 48,317, 51,328, 60,351,
379                                    60,323, 53,262, 47,246
380   };
381
382   init(l, 31, color, coords, ELEMENTS(coords)/2);
383}
384
385static void poly32(struct lion *l)
386{
387   VGfloat color = 0x9c826b;
388   static const VGfloat coords[] = {2,364, 9,367, 14,366, 18,355, 20,364, 26,366, 31,357, 35,364,
389                                    39,364, 42,357, 47,363, 53,360, 59,357, 54,369, 7,373
390   };
391
392   init(l, 32, color, coords, ELEMENTS(coords)/2);
393}
394
395static void poly33(struct lion *l)
396{
397   VGfloat color = 0x9c826b;
398   static const VGfloat coords[] = {7,349, 19,345, 25,339, 18,341, 23,333, 28,326, 23,326, 27,320,
399                                    23,316, 25,311, 20,298, 15,277, 12,264, 9,249, 10,223, 3,248,
400                                    5,261, 15,307, 17,326, 11,343
401   };
402
403   init(l, 33, color, coords, ELEMENTS(coords)/2);
404}
405
406static void poly34(struct lion *l)
407{
408   VGfloat color = 0x9c826b;
409   static const VGfloat coords[] = {11,226, 15,231, 25,236, 18,227
410   };
411
412   init(l, 34, color, coords, ELEMENTS(coords)/2);
413}
414
415static void poly35(struct lion *l)
416{
417   VGfloat color = 0x9c826b;
418   static const VGfloat coords[] = {13,214, 19,217, 32,227, 23,214, 16,208, 15,190, 24,148,
419                                    31,121, 24,137, 14,170, 8,189
420   };
421
422   init(l, 35, color, coords, ELEMENTS(coords)/2);
423}
424
425static void poly36(struct lion *l)
426{
427   VGfloat color = 0x9c826b;
428   static const VGfloat coords[] = {202,254, 195,258, 199,260, 193,263, 197,263, 190,268,
429                                    196,268, 191,273, 188,282, 200,272, 194,272, 201,266,
430                                    197,265, 204,262, 200,258, 204,256
431   };
432
433   init(l, 36, color, coords, ELEMENTS(coords)/2);
434}
435
436static void poly37(struct lion *l)
437{
438   VGfloat color = 0x845433;
439   static const VGfloat coords[] = {151,213, 165,212, 179,225, 189,246, 187,262, 179,275,
440                                    176,263, 177,247, 171,233, 163,230, 165,251, 157,264,
441                                    146,298, 145,321, 133,326, 143,285, 154,260, 153,240
442   };
443
444   init(l, 37, color, coords, ELEMENTS(coords)/2);
445}
446
447static void poly38(struct lion *l)
448{
449   VGfloat color = 0x845433;
450   static const VGfloat coords[] = {91,132, 95,145, 97,154, 104,148, 107,155, 109,150, 111,158,
451                                    115,152, 118,159, 120,153, 125,161, 126,155, 133,164, 132,154,
452                                    137,163, 137,152, 142,163, 147,186, 152,192, 148,167, 141,143,
453                                    124,145, 105,143
454   };
455
456   init(l, 38, color, coords, ELEMENTS(coords)/2);
457}
458
459static void poly39(struct lion *l)
460{
461   VGfloat color = 0x9c826b;
462   static const VGfloat coords[] = {31,57, 23,52, 26,51, 20,44, 23,42, 21,36, 22,29, 25,23,
463                                    24,32, 30,43, 26,41, 30,50, 26,48
464   };
465
466   init(l, 39, color, coords, ELEMENTS(coords)/2);
467}
468
469static void poly40(struct lion *l)
470{
471   VGfloat color = 0x9c826b;
472   static const VGfloat coords[] = {147,21, 149,28, 155,21, 161,16, 167,14, 175,15, 173,11, 161,9
473   };
474
475   init(l, 40, color, coords, ELEMENTS(coords)/2);
476}
477
478static void poly41(struct lion *l)
479{
480   VGfloat color = 0x9c826b;
481   static const VGfloat coords[] = {181,39, 175,51, 169,57, 171,65, 165,68, 165,75, 160,76,
482                                    162,91, 171,71, 180,51
483   };
484
485   init(l, 41, color, coords, ELEMENTS(coords)/2);
486}
487
488static void poly42(struct lion *l)
489{
490   VGfloat color = 0x9c826b;
491   static const VGfloat coords[] = {132,346, 139,348, 141,346, 142,341, 147,342, 143,355, 133,350
492   };
493
494   init(l, 42, color, coords, ELEMENTS(coords)/2);
495}
496
497static void poly43(struct lion *l)
498{
499   VGfloat color = 0x9c826b;
500   static const VGfloat coords[] = {146,355, 151,352, 155,348, 157,343, 160,349, 151,356, 147,357
501   };
502
503   init(l, 43, color, coords, ELEMENTS(coords)/2);
504}
505
506static void poly44(struct lion *l)
507{
508   VGfloat color = 0x9c826b;
509   static const VGfloat coords[] = {99,266, 100,281, 94,305, 86,322, 78,332, 72,346, 73,331, 91,291
510   };
511
512   init(l, 44, color, coords, ELEMENTS(coords)/2);
513}
514
515static void poly45(struct lion *l)
516{
517   VGfloat color = 0x9c826b;
518   static const VGfloat coords[] = {20,347, 32,342, 45,340, 54,345, 45,350, 42,353, 38,350,
519                                    31,353, 29,356, 23,350, 19,353, 15,349
520   };
521
522   init(l, 45, color, coords, ELEMENTS(coords)/2);
523}
524
525static void poly46(struct lion *l)
526{
527   VGfloat color = 0x9c826b;
528   static const VGfloat coords[] = {78,344, 86,344, 92,349, 88,358, 84,352
529   };
530
531   init(l, 46, color, coords, ELEMENTS(coords)/2);
532}
533
534static void poly47(struct lion *l)
535{
536   VGfloat color = 0x9c826b;
537   static const VGfloat coords[] = {93,347, 104,344, 117,345, 124,354, 121,357, 116,351,
538                                    112,351, 108,355, 102,351
539   };
540
541   init(l, 47, color, coords, ELEMENTS(coords)/2);
542}
543
544static void poly48(struct lion *l)
545{
546   VGfloat color = 0x000000;
547   static const VGfloat coords[] = {105,12, 111,18, 113,24, 113,29, 119,34, 116,23, 112,16
548   };
549
550   init(l, 48, color, coords, ELEMENTS(coords)/2);
551}
552
553static void poly49(struct lion *l)
554{
555   VGfloat color = 0x000000;
556   static const VGfloat coords[] = {122,27, 125,34, 127,43, 128,34, 125,29
557   };
558
559   init(l, 49, color, coords, ELEMENTS(coords)/2);
560}
561
562static void poly50(struct lion *l)
563{
564   VGfloat color = 0x000000;
565   static const VGfloat coords[] = {115,13, 122,19, 122,15, 113,10
566   };
567
568   init(l, 50, color, coords, ELEMENTS(coords)/2);
569}
570
571static void poly51(struct lion *l)
572{
573   VGfloat color = 0xffe5b2;
574   static const VGfloat coords[] = {116,172, 107,182, 98,193, 98,183, 90,199, 89,189, 84,207,
575                                    88,206, 87,215, 95,206, 93,219, 91,230, 98,216, 97,226,
576                                    104,214, 112,209, 104,208, 113,202, 126,200, 139,207, 132,198,
577                                    142,203, 134,192, 142,195, 134,187, 140,185, 130,181, 136,177,
578                                    126,177, 125,171, 116,180
579   };
580
581   init(l, 51, color, coords, ELEMENTS(coords)/2);
582}
583
584static void poly52(struct lion *l)
585{
586   VGfloat color = 0xffe5b2;
587   static const VGfloat coords[] = {74,220, 67,230, 67,221, 59,235, 63,233, 60,248, 70,232, 65,249,
588                                    71,243, 67,256, 73,250, 69,262, 73,259, 71,267, 76,262, 72,271,
589                                    78,270, 76,275, 82,274, 78,290, 86,279, 86,289, 92,274, 88,275,
590                                    87,264, 82,270, 82,258, 77,257, 78,247, 73,246, 77,233, 72,236
591   };
592
593   init(l, 52, color, coords, ELEMENTS(coords)/2);
594}
595
596static void poly53(struct lion *l)
597{
598   VGfloat color = 0xffe5b2;
599   static const VGfloat coords[] = {133,230, 147,242, 148,250, 145,254, 138,247, 129,246, 142,245,
600                                    138,241, 128,237, 137,238
601   };
602
603   init(l, 53, color, coords, ELEMENTS(coords)/2);
604}
605
606static void poly54(struct lion *l)
607{
608   VGfloat color = 0xffe5b2;
609   static const VGfloat coords[] = {133,261, 125,261, 116,263, 111,267, 125,265
610   };
611
612   init(l, 54, color, coords, ELEMENTS(coords)/2);
613}
614
615static void poly55(struct lion *l)
616{
617   VGfloat color = 0xffe5b2;
618   static const VGfloat coords[] = {121,271, 109,273, 103,279, 99,305, 92,316, 85,327, 83,335,
619                                    89,340, 97,341, 94,336, 101,336, 96,331, 103,330, 97,327, 108,325,
620                                    99,322, 109,321, 100,318, 110,317, 105,314, 110,312, 107,310, 113,308,
621                                    105,306, 114,303, 105,301, 115,298, 107,295, 115,294, 108,293, 117,291,
622                                    109,289, 117,286, 109,286, 118,283, 112,281, 118,279, 114,278,
623                                    119,276, 115,274
624   };
625
626   init(l, 55, color, coords, ELEMENTS(coords)/2);
627}
628
629static void poly56(struct lion *l)
630{
631   VGfloat color = 0xffe5b2;
632   static const VGfloat coords[] = {79,364, 74,359, 74,353, 76,347, 80,351, 83,356, 82,360
633   };
634
635   init(l, 56, color, coords, ELEMENTS(coords)/2);
636}
637
638static void poly57(struct lion *l)
639{
640   VGfloat color = 0xffe5b2;
641   static const VGfloat coords[] = {91,363, 93,356, 97,353, 103,355, 105,360, 103,366, 99,371, 94,368
642   };
643
644   init(l, 57, color, coords, ELEMENTS(coords)/2);
645}
646
647static void poly58(struct lion *l)
648{
649   VGfloat color = 0xffe5b2;
650   static const VGfloat coords[] = {110,355, 114,353, 118,357, 117,363, 113,369, 111,362
651   };
652
653   init(l, 58, color, coords, ELEMENTS(coords)/2);
654}
655
656static void poly59(struct lion *l)
657{
658   VGfloat color = 0xffe5b2;
659   static const VGfloat coords[] = {126,354, 123,358, 124,367, 126,369, 129,361, 129,357
660   };
661
662   init(l, 59, color, coords, ELEMENTS(coords)/2);
663}
664
665static void poly60(struct lion *l)
666{
667   VGfloat color = 0xffe5b2;
668   static const VGfloat coords[] = {30,154, 24,166, 20,182, 23,194, 29,208, 37,218, 41,210, 41,223,
669                                    46,214, 46,227, 52,216, 52,227, 61,216, 59,225, 68,213, 73,219,
670                                    70,207, 77,212, 69,200, 77,202, 70,194, 78,197, 68,187, 76,182,
671                                    64,182, 58,175, 58,185, 53,177, 50,186, 46,171, 44,182, 39,167,
672                                    36,172, 36,162, 30,166
673   };
674
675   init(l, 60, color, coords, ELEMENTS(coords)/2);
676}
677
678static void poly61(struct lion *l)
679{
680   VGfloat color = 0xffe5b2;
681   static const VGfloat coords[] = {44,130, 41,137, 45,136, 43,150, 48,142, 48,157, 53,150,
682                                    52,164, 60,156, 61,169, 64,165, 66,175, 70,167, 74,176,
683                                    77,168, 80,183, 85,172, 90,182, 93,174, 98,181, 99,173,
684                                    104,175, 105,169, 114,168, 102,163, 95,157, 94,166, 90,154,
685                                    87,162, 82,149, 75,159, 72,148, 68,155, 67,143, 62,148, 62,138,
686                                    58,145, 56,133, 52,142, 52,128, 49,134, 47,125
687   };
688
689   init(l, 61, color, coords, ELEMENTS(coords)/2);
690}
691
692static void poly62(struct lion *l)
693{
694   VGfloat color = 0xffe5b2;
695   static const VGfloat coords[] = {13,216, 19,219, 36,231, 22,223, 16,222, 22,227, 12,224, 13,220, 16,220
696   };
697
698   init(l, 62, color, coords, ELEMENTS(coords)/2);
699}
700
701static void poly63(struct lion *l)
702{
703   VGfloat color = 0xffe5b2;
704   static const VGfloat coords[] = {10,231, 14,236, 25,239, 27,237, 19,234
705   };
706
707   init(l, 63, color, coords, ELEMENTS(coords)/2);
708}
709
710static void poly64(struct lion *l)
711{
712   VGfloat color = 0xffe5b2;
713   static const VGfloat coords[] = {9,245, 14,242, 25,245, 13,245
714   };
715
716   init(l, 64, color, coords, ELEMENTS(coords)/2);
717}
718
719static void poly65(struct lion *l)
720{
721   VGfloat color = 0xffe5b2;
722   static const VGfloat coords[] = {33,255, 26,253, 18,254, 25,256, 18,258, 27,260, 18,263,
723                                    27,265, 19,267, 29,270, 21,272, 29,276, 21,278, 30,281,
724                                    22,283, 31,287, 24,288, 32,292, 23,293, 34,298, 26,299,
725                                    37,303, 32,305, 39,309, 33,309, 39,314, 34,314, 40,318,
726                                    34,317, 40,321, 34,321, 41,326, 33,326, 40,330, 33,332,
727                                    39,333, 33,337, 42,337, 54,341, 49,337, 52,335, 47,330,
728                                    50,330, 45,325, 49,325, 45,321, 48,321, 45,316, 46,306,
729                                    45,286, 43,274, 36,261
730   };
731
732   init(l, 65, color, coords, ELEMENTS(coords)/2);
733}
734
735static void poly66(struct lion *l)
736{
737   VGfloat color = 0xffe5b2;
738   static const VGfloat coords[] = {7,358, 9,351, 14,351, 17,359, 11,364
739   };
740
741   init(l, 66, color, coords, ELEMENTS(coords)/2);
742}
743
744static void poly67(struct lion *l)
745{
746   VGfloat color = 0xffe5b2;
747   static const VGfloat coords[] = {44,354, 49,351, 52,355, 49,361
748   };
749
750   init(l, 67, color, coords, ELEMENTS(coords)/2);
751}
752
753static void poly68(struct lion *l)
754{
755   VGfloat color = 0xffe5b2;
756   static const VGfloat coords[] = {32,357, 37,353, 40,358, 36,361
757   };
758
759   init(l, 68, color, coords, ELEMENTS(coords)/2);
760}
761
762static void poly69(struct lion *l)
763{
764   VGfloat color = 0xffe5b2;
765   static const VGfloat coords[] = {139,334, 145,330, 154,330, 158,334, 154,341, 152,348,
766                                    145,350, 149,340, 147,336, 141,339, 139,345, 136,342,
767                                    136,339
768   };
769
770   init(l, 69, color, coords, ELEMENTS(coords)/2);
771}
772
773static void poly70(struct lion *l)
774{
775   VGfloat color = 0xffe5b2;
776   static const VGfloat coords[] = {208,259, 215,259, 212,255, 220,259, 224,263, 225,274, 224,283,
777                                    220,292, 208,300, 206,308, 203,304, 199,315, 197,309, 195,318,
778                                    193,313, 190,322, 190,316, 185,325, 182,318, 180,325, 172,321,
779                                    178,320, 176,313, 186,312, 180,307, 188,307, 184,303, 191,302,
780                                    186,299, 195,294, 187,290, 197,288, 192,286, 201,283, 194,280,
781                                    203,277, 198,275, 207,271, 200,269, 209,265, 204,265, 212,262
782   };
783
784   init(l, 70, color, coords, ELEMENTS(coords)/2);
785}
786
787static void poly71(struct lion *l)
788{
789   VGfloat color = 0xffe5b2;
790   static const VGfloat coords[] = {106,126, 106,131, 109,132, 111,134, 115,132, 115,135, 119,133, 118,137,
791                                    123,137, 128,137, 133,134, 136,130, 136,127, 132,124, 118,128, 112,128,
792                                    106,126, 106,126, 106,126
793   };
794
795   init(l, 71, color, coords, ELEMENTS(coords)/2);
796}
797
798static void poly72(struct lion *l)
799{
800   VGfloat color = 0xffe5b2;
801   static const VGfloat coords[] = {107,114, 101,110, 98,102, 105,97, 111,98, 119,102, 121,108, 118,112, 113,115
802   };
803
804   init(l, 72, color, coords, ELEMENTS(coords)/2);
805}
806
807static void poly73(struct lion *l)
808{
809   VGfloat color = 0xffe5b2;
810   static const VGfloat coords[] = {148,106, 145,110, 146,116, 150,118, 152,111, 151,107
811   };
812
813   init(l, 73, color, coords, ELEMENTS(coords)/2);
814}
815
816static void poly74(struct lion *l)
817{
818   VGfloat color = 0xffe5b2;
819   static const VGfloat coords[] = {80,55, 70,52, 75,58, 63,57, 72,61, 57,61, 67,66, 57,67, 62,69, 54,71,
820                                    61,73, 54,77, 63,78, 53,85, 60,84, 56,90, 69,84, 63,82, 75,76, 70,75,
821                                    77,72, 72,71, 78,69, 72,66, 81,67, 78,64, 82,63, 80,60, 86,62
822   };
823
824   init(l, 74, color, coords, ELEMENTS(coords)/2);
825}
826
827static void poly75(struct lion *l)
828{
829   VGfloat color = 0xffe5b2;
830   static const VGfloat coords[] = {87,56, 91,52, 96,50, 102,56, 98,56, 92,60
831   };
832
833   init(l, 75, color, coords, ELEMENTS(coords)/2);
834}
835
836static void poly76(struct lion *l)
837{
838   VGfloat color = 0xffe5b2;
839   static const VGfloat coords[] = {85,68, 89,73, 98,76, 106,74, 96,73, 91,70
840   };
841
842   init(l, 76, color, coords, ELEMENTS(coords)/2);
843}
844
845static void poly77(struct lion *l)
846{
847   VGfloat color = 0xffe5b2;
848   static const VGfloat coords[] = {115,57, 114,64, 111,64, 115,75, 122,81, 122,74, 126,79,
849                                    126,74, 131,78, 130,72, 133,77, 131,68, 126,61, 119,57
850   };
851
852   init(l, 77, color, coords, ELEMENTS(coords)/2);
853}
854
855static void poly78(struct lion *l)
856{
857   VGfloat color = 0xffe5b2;
858   static const VGfloat coords[] = {145,48, 143,53, 147,59, 151,59, 150,55
859   };
860
861   init(l, 78, color, coords, ELEMENTS(coords)/2);
862}
863
864static void poly79(struct lion *l)
865{
866   VGfloat color = 0xffe5b2;
867   static const VGfloat coords[] = {26,22, 34,15, 43,10, 52,10, 59,16, 47,15, 32,22
868   };
869
870   init(l, 79, color, coords, ELEMENTS(coords)/2);
871}
872
873static void poly80(struct lion *l)
874{
875   VGfloat color = 0xffe5b2;
876   static const VGfloat coords[] = {160,19, 152,26, 149,34, 154,33, 152,30, 157,30, 155,26, 158,27,
877                                    157,23, 161,23
878   };
879
880   init(l, 80, color, coords, ELEMENTS(coords)/2);
881}
882
883static void poly81(struct lion *l)
884{
885   VGfloat color = 0x000000;
886   static const VGfloat coords[] = {98,117, 105,122, 109,122, 105,117, 113,120, 121,120, 130,112, 128,108,
887                                    123,103, 123,99, 128,101, 132,106, 135,109, 142,105, 142,101, 145,101,
888                                    145,91, 148,101, 145,105, 136,112, 135,116, 143,124, 148,120, 150,122,
889                                    142,128, 133,122, 121,125, 112,126, 103,125, 100,129, 96,124
890   };
891
892   init(l, 81, color, coords, ELEMENTS(coords)/2);
893}
894
895static void poly82(struct lion *l)
896{
897   VGfloat color = 0x000000;
898   static const VGfloat coords[] = {146,118, 152,118, 152,115, 149,115
899   };
900
901   init(l, 82, color, coords, ELEMENTS(coords)/2);
902}
903
904static void poly83(struct lion *l)
905{
906   VGfloat color = 0x000000;
907   static const VGfloat coords[] = {148,112, 154,111, 154,109, 149,109
908   };
909
910   init(l, 83, color, coords, ELEMENTS(coords)/2);
911}
912
913static void poly84(struct lion *l)
914{
915   VGfloat color = 0x000000;
916   static const VGfloat coords[] = {106,112, 108,115, 114,116, 118,114
917   };
918
919   init(l, 84, color, coords, ELEMENTS(coords)/2);
920}
921
922static void poly85(struct lion *l)
923{
924   VGfloat color = 0x000000;
925   static const VGfloat coords[] = {108,108, 111,110, 116,110, 119,108
926   };
927
928   init(l, 85, color, coords, ELEMENTS(coords)/2);
929}
930
931static void poly86(struct lion *l)
932{
933   VGfloat color = 0x000000;
934   static const VGfloat coords[] = {106,104, 109,105, 117,106, 115,104
935   };
936
937   init(l, 86, color, coords, ELEMENTS(coords)/2);
938}
939
940static void poly87(struct lion *l)
941{
942   VGfloat color = 0x000000;
943   static const VGfloat coords[] = {50,25, 41,26, 34,33, 39,43, 49,58, 36,51, 47,68, 55,69, 54,59,
944                                    61,57, 74,46, 60,52, 67,42, 57,48, 61,40, 54,45, 60,36, 59,29,
945                                    48,38, 52,30, 47,32
946   };
947
948   init(l, 87, color, coords, ELEMENTS(coords)/2);
949}
950
951static void poly88(struct lion *l)
952{
953   VGfloat color = 0x000000;
954   static const VGfloat coords[] = {147,34, 152,41, 155,49, 161,53, 157,47, 164,47, 158,43, 168,44,
955                                    159,40, 164,37, 169,37, 164,33, 169,34, 165,28, 170,30, 170,25,
956                                    173,29, 175,27, 176,32, 173,36, 175,39, 172,42, 172,46, 168,49,
957                                    170,55, 162,57, 158,63, 155,58, 153,50, 149,46
958   };
959
960   init(l, 88, color, coords, ELEMENTS(coords)/2);
961}
962
963static void poly89(struct lion *l)
964{
965   VGfloat color = 0x000000;
966   static const VGfloat coords[] = {155,71, 159,80, 157,93, 157,102, 155,108, 150,101, 149,93,
967                                    154,101, 152,91, 151,83, 155,79
968   };
969
970   init(l, 89, color, coords, ELEMENTS(coords)/2);
971}
972
973static void poly90(struct lion *l)
974{
975   VGfloat color = 0x000000;
976   static const VGfloat coords[] = {112,78, 115,81, 114,91, 112,87, 113,82
977   };
978
979   init(l, 90, color, coords, ELEMENTS(coords)/2);
980}
981
982static void poly91(struct lion *l)
983{
984   VGfloat color = 0x000000;
985   static const VGfloat coords[] = {78,28, 64,17, 58,11, 47,9, 36,10, 28,16, 21,26, 18,41,
986                                    20,51, 23,61, 33,65, 28,68, 37,74, 36,81, 43,87, 48,90,
987                                    43,100, 40,98, 39,90, 31,80, 30,72, 22,71, 17,61, 14,46,
988                                    16,28, 23,17, 33,9, 45,6, 54,6, 65,12
989   };
990
991   init(l, 91, color, coords, ELEMENTS(coords)/2);
992}
993
994static void poly92(struct lion *l)
995{
996   VGfloat color = 0x000000;
997   static const VGfloat coords[] = {67,18, 76,9, 87,5, 101,2, 118,3, 135,8, 149,20, 149,26,
998                                    144,19, 132,12, 121,9, 105,7, 89,8, 76,14, 70,20
999   };
1000
1001   init(l, 92, color, coords, ELEMENTS(coords)/2);
1002}
1003
1004static void poly93(struct lion *l)
1005{
1006   VGfloat color = 0x000000;
1007   static const VGfloat coords[] = {56,98, 48,106, 56,103, 47,112, 56,110, 52,115, 57,113, 52,121, 62,115,
1008                                    58,123, 65,119, 63,125, 69,121, 68,127, 74,125, 74,129, 79,128, 83,132,
1009                                    94,135, 93,129, 85,127, 81,122, 76,126, 75,121, 71,124, 71,117, 66,121,
1010                                    66,117, 62,117, 64,112, 60,113, 60,110, 57,111, 61,105, 57,107, 60,101,
1011                                    55,102
1012   };
1013
1014   init(l, 93, color, coords, ELEMENTS(coords)/2);
1015}
1016
1017static void poly94(struct lion *l)
1018{
1019   VGfloat color = 0x000000;
1020   static const VGfloat coords[] = {101,132, 103,138, 106,134, 106,139, 112,136, 111,142, 115,139,
1021                                    114,143, 119,142, 125,145, 131,142, 135,138, 140,134, 140,129,
1022                                    143,135, 145,149, 150,171, 149,184, 145,165, 141,150, 136,147,
1023                                    132,151, 131,149, 126,152, 125,150, 121,152, 117,148, 111,152,
1024                                    110,148, 105,149, 104,145, 98,150, 96,138, 94,132, 94,130, 98,132
1025   };
1026
1027   init(l, 94, color, coords, ELEMENTS(coords)/2);
1028}
1029
1030static void poly95(struct lion *l)
1031{
1032   VGfloat color = 0x000000;
1033   static const VGfloat coords[] = {41,94, 32,110, 23,132, 12,163, 6,190, 7,217, 5,236,
1034                                    3,247, 9,230, 12,211, 12,185, 18,160, 26,134, 35,110,
1035                                    43,99
1036   };
1037
1038   init(l, 95, color, coords, ELEMENTS(coords)/2);
1039}
1040
1041static void poly96(struct lion *l)
1042{
1043   VGfloat color = 0x000000;
1044   static const VGfloat coords[] = {32,246, 41,250, 50,257, 52,267, 53,295, 53,323, 59,350,
1045                                    54,363, 51,365, 44,366, 42,360, 40,372, 54,372, 59,366,
1046                                    62,353, 71,352, 75,335, 73,330, 66,318, 68,302, 64,294,
1047                                    67,288, 63,286, 63,279, 59,275, 58,267, 56,262, 50,247,
1048                                    42,235, 44,246, 32,236, 35,244
1049   };
1050
1051   init(l, 96, color, coords, ELEMENTS(coords)/2);
1052}
1053
1054static void poly97(struct lion *l)
1055{
1056   VGfloat color = 0x000000;
1057   static const VGfloat coords[] = {134,324, 146,320, 159,322, 173,327, 179,337, 179,349,
1058                                    172,355, 158,357, 170,350, 174,343, 170,333, 163,328, 152,326,
1059                                    134,329
1060   };
1061
1062   init(l, 97, color, coords, ELEMENTS(coords)/2);
1063}
1064
1065static void poly98(struct lion *l)
1066{
1067   VGfloat color = 0x000000;
1068   static const VGfloat coords[] = {173,339, 183,334, 184,338, 191,329, 194,332, 199,323, 202,325,
1069                                    206,318, 209,320, 213,309, 221,303, 228,296, 232,289, 234,279,
1070                                    233,269, 230,262, 225,256, 219,253, 208,252, 198,252, 210,249,
1071                                    223,250, 232,257, 237,265, 238,277, 238,291, 232,305, 221,323,
1072                                    218,335, 212,342, 200,349, 178,348
1073   };
1074
1075   init(l, 98, color, coords, ELEMENTS(coords)/2);
1076}
1077
1078static void poly99(struct lion *l)
1079{
1080   VGfloat color = 0x000000;
1081   static const VGfloat coords[] = {165,296, 158,301, 156,310, 156,323, 162,324, 159,318,
1082                                    162,308, 162,304
1083   };
1084
1085   init(l, 99, color, coords, ELEMENTS(coords)/2);
1086}
1087
1088static void poly100(struct lion *l)
1089{
1090   VGfloat color = 0x000000;
1091   static const VGfloat coords[] = {99,252, 105,244, 107,234, 115,228, 121,228, 131,235,
1092                                    122,233, 113,235, 109,246, 121,239, 133,243, 121,243,
1093                                    110,251
1094   };
1095
1096   init(l, 100, color, coords, ELEMENTS(coords)/2);
1097}
1098
1099static void poly101(struct lion *l)
1100{
1101   VGfloat color = 0x000000;
1102   static const VGfloat coords[] = {117,252, 124,247, 134,249, 136,253, 126,252
1103   };
1104
1105   init(l, 101, color, coords, ELEMENTS(coords)/2);
1106}
1107
1108static void poly102(struct lion *l)
1109{
1110   VGfloat color = 0x000000;
1111   static const VGfloat coords[] = {117,218, 132,224, 144,233, 140,225, 132,219, 117,218,
1112                                    117,218, 117,218
1113   };
1114
1115   init(l, 102, color, coords, ELEMENTS(coords)/2);
1116}
1117
1118static void poly103(struct lion *l)
1119{
1120   VGfloat color = 0x000000;
1121   static const VGfloat coords[] = {122,212, 134,214, 143,221, 141,213, 132,210
1122   };
1123
1124   init(l, 103, color, coords, ELEMENTS(coords)/2);
1125}
1126
1127static void poly104(struct lion *l)
1128{
1129   VGfloat color = 0x000000;
1130   static const VGfloat coords[] = {69,352, 70,363, 76,373, 86,378, 97,379, 108,379, 120,377,
1131                                    128,378, 132,373, 135,361, 133,358, 132,366, 127,375, 121,374,
1132                                    121,362, 119,367, 117,374, 110,376, 110,362, 107,357, 106,371,
1133                                    104,375, 97,376, 90,375, 90,368, 86,362, 83,364, 86,369, 85,373,
1134                                    78,370, 73,362, 71,351
1135   };
1136
1137   init(l, 104, color, coords, ELEMENTS(coords)/2);
1138}
1139
1140static void poly105(struct lion *l)
1141{
1142   VGfloat color = 0x000000;
1143   static const VGfloat coords[] = {100,360, 96,363, 99,369, 102,364
1144   };
1145
1146   init(l, 105, color, coords, ELEMENTS(coords)/2);
1147}
1148
1149static void poly106(struct lion *l)
1150{
1151   VGfloat color = 0x000000;
1152   static const VGfloat coords[] = {115,360, 112,363, 114,369, 117,364
1153   };
1154
1155   init(l, 106, color, coords, ELEMENTS(coords)/2);
1156}
1157
1158static void poly107(struct lion *l)
1159{
1160   VGfloat color = 0x000000;
1161   static const VGfloat coords[] = {127,362, 125,364, 126,369, 128,365
1162   };
1163
1164   init(l, 107, color, coords, ELEMENTS(coords)/2);
1165}
1166
1167static void poly108(struct lion *l)
1168{
1169   VGfloat color = 0x000000;
1170   static const VGfloat coords[] = {5,255, 7,276, 11,304, 15,320, 13,334, 6,348, 2,353, 0,363,
1171                                    5,372, 12,374, 25,372, 38,372, 44,369, 42,367, 36,368, 31,369,
1172                                    30,360, 27,368, 20,370, 16,361, 15,368, 10,369, 3,366, 3,359, 6,352,
1173                                    11,348, 17,331, 19,316, 12,291, 9,274
1174   };
1175
1176   init(l, 108, color, coords, ELEMENTS(coords)/2);
1177}
1178
1179static void poly109(struct lion *l)
1180{
1181   VGfloat color = 0x000000;
1182   static const VGfloat coords[] = {10,358, 7,362, 10,366, 11,362
1183   };
1184
1185   init(l, 109, color, coords, ELEMENTS(coords)/2);
1186}
1187
1188static void poly110(struct lion *l)
1189{
1190   VGfloat color = 0x000000;
1191   static const VGfloat coords[] = {25,357, 22,360, 24,366, 27,360
1192   };
1193
1194   init(l, 110, color, coords, ELEMENTS(coords)/2);
1195}
1196
1197static void poly111(struct lion *l)
1198{
1199   VGfloat color = 0x000000;
1200   static const VGfloat coords[] = {37,357, 34,361, 36,365, 38,361
1201   };
1202
1203   init(l, 111, color, coords, ELEMENTS(coords)/2);
1204}
1205
1206static void poly112(struct lion *l)
1207{
1208   VGfloat color = 0x000000;
1209   static const VGfloat coords[] = {49,356, 46,359, 47,364, 50,360
1210   };
1211
1212   init(l, 112, color, coords, ELEMENTS(coords)/2);
1213}
1214
1215static void poly113(struct lion *l)
1216{
1217   VGfloat color = 0x000000;
1218   static const VGfloat coords[] = {130,101, 132,102, 135,101, 139,102, 143,103,
1219                                    142,101, 137,100, 133,100
1220   };
1221
1222   init(l, 113, color, coords, ELEMENTS(coords)/2);
1223}
1224
1225static void poly114(struct lion *l)
1226{
1227   VGfloat color = 0x000000;
1228   static const VGfloat coords[] = {106,48, 105,52, 108,56, 109,52
1229   };
1230
1231   init(l, 114, color, coords, ELEMENTS(coords)/2);
1232}
1233
1234static void poly115(struct lion *l)
1235{
1236   VGfloat color = 0x000000;
1237   static const VGfloat coords[] = {139,52, 139,56, 140,60, 142,58, 141,56
1238   };
1239
1240   init(l, 115, color, coords, ELEMENTS(coords)/2);
1241}
1242
1243static void poly116(struct lion *l)
1244{
1245   VGfloat color = 0x000000;
1246   static const VGfloat coords[] = {25,349, 29,351, 30,355, 33,350, 37,348, 42,351, 45,347,
1247                                    49,345, 44,343, 36,345
1248   };
1249
1250   init(l, 116, color, coords, ELEMENTS(coords)/2);
1251}
1252
1253static void poly117(struct lion *l)
1254{
1255   VGfloat color = 0x000000;
1256   static const VGfloat coords[] = {98,347, 105,351, 107,354, 109,349, 115,349, 120,353, 118,349,
1257                                    113,346, 104,346
1258   };
1259
1260   init(l, 117, color, coords, ELEMENTS(coords)/2);
1261}
1262
1263static void poly118(struct lion *l)
1264{
1265   VGfloat color = 0x000000;
1266   static const VGfloat coords[] = {83,348, 87,352, 87,357, 89,351, 87,348
1267   };
1268
1269   init(l, 118, color, coords, ELEMENTS(coords)/2);
1270}
1271
1272static void poly119(struct lion *l)
1273{
1274   VGfloat color = 0x000000;
1275   static const VGfloat coords[] = {155,107, 163,107, 170,107, 186,108, 175,109, 155,109
1276   };
1277
1278   init(l, 119, color, coords, ELEMENTS(coords)/2);
1279}
1280
1281static void poly120(struct lion *l)
1282{
1283   VGfloat color = 0x000000;
1284   static const VGfloat coords[] = {153,114, 162,113, 175,112, 192,114, 173,114, 154,115
1285   };
1286
1287   init(l, 120, color, coords, ELEMENTS(coords)/2);
1288}
1289
1290static void poly121(struct lion *l)
1291{
1292   VGfloat color = 0x000000;
1293   static const VGfloat coords[] = {152,118, 164,120, 180,123, 197,129, 169,123, 151,120
1294   };
1295
1296   init(l, 121, color, coords, ELEMENTS(coords)/2);
1297}
1298
1299static void poly122(struct lion *l)
1300{
1301   VGfloat color = 0x000000;
1302   static const VGfloat coords[] = {68,109, 87,106, 107,106, 106,108, 88,108
1303   };
1304
1305   init(l, 122, color, coords, ELEMENTS(coords)/2);
1306}
1307
1308static void poly123(struct lion *l)
1309{
1310   VGfloat color = 0x000000;
1311   static const VGfloat coords[] = {105,111, 95,112, 79,114, 71,116, 85,115, 102,113
1312   };
1313
1314   init(l, 123, color, coords, ELEMENTS(coords)/2);
1315}
1316
1317static void poly124(struct lion *l)
1318{
1319   VGfloat color = 0x000000;
1320   static const VGfloat coords[] = {108,101, 98,99, 87,99, 78,99, 93,100, 105,102
1321   };
1322
1323   init(l, 124, color, coords, ELEMENTS(coords)/2);
1324}
1325
1326static void poly125(struct lion *l)
1327{
1328   VGfloat color = 0x000000;
1329   static const VGfloat coords[] = {85,63, 91,63, 97,60, 104,60, 108,62, 111,69, 112,75,
1330                                    110,74, 108,71, 103,73, 106,69, 105,65, 103,64, 103,67,
1331                                    102,70, 99,70, 97,66, 94,67, 97,72, 88,67, 84,66
1332   };
1333
1334   init(l, 125, color, coords, ELEMENTS(coords)/2);
1335}
1336
1337static void poly126(struct lion *l)
1338{
1339   VGfloat color = 0x000000;
1340   static const VGfloat coords[] = {140,74, 141,66, 144,61, 150,61, 156,62, 153,70, 150,73,
1341                                    152,65, 150,65, 151,68, 149,71, 146,71, 144,66, 143,70,
1342                                    143,74
1343   };
1344
1345   init(l, 126, color, coords, ELEMENTS(coords)/2);
1346}
1347
1348static void poly127(struct lion *l)
1349{
1350   VGfloat color = 0x000000;
1351   static const VGfloat coords[] = {146,20, 156,11, 163,9, 172,9, 178,14, 182,18, 184,32, 182,42,
1352                                    182,52, 177,58, 176,67, 171,76, 165,90, 157,105, 160,92, 164,85,
1353                                    168,78, 167,73, 173,66, 172,62, 175,59, 174,55, 177,53, 180,46,
1354                                    181,29, 179,21, 173,13, 166,11, 159,13, 153,18, 148,23
1355   };
1356
1357   init(l, 127, color, coords, ELEMENTS(coords)/2);
1358}
1359
1360static void poly128(struct lion *l)
1361{
1362   VGfloat color = 0x000000;
1363   static const VGfloat coords[] = {150,187, 148,211, 150,233, 153,247, 148,267, 135,283, 125,299,
1364                                    136,292, 131,313, 122,328, 122,345, 129,352, 133,359, 133,367,
1365                                    137,359, 148,356, 140,350, 131,347, 129,340, 132,332, 140,328,
1366                                    137,322, 140,304, 154,265, 157,244, 155,223, 161,220, 175,229,
1367                                    186,247, 185,260, 176,275, 178,287, 185,277, 188,261, 196,253,
1368                                    189,236, 174,213
1369   };
1370
1371   init(l, 128, color, coords, ELEMENTS(coords)/2);
1372}
1373
1374static void poly129(struct lion *l)
1375{
1376   VGfloat color = 0x000000;
1377   static const VGfloat coords[] = {147,338, 142,341, 143,345, 141,354, 147,343
1378   };
1379
1380   init(l, 129, color, coords, ELEMENTS(coords)/2);
1381}
1382
1383static void poly130(struct lion *l)
1384{
1385   VGfloat color = 0x000000;
1386   static const VGfloat coords[] = {157,342, 156,349, 150,356, 157,353, 163,346, 162,342
1387   };
1388
1389   init(l, 130, color, coords, ELEMENTS(coords)/2);
1390}
1391
1392static void poly131(struct lion *l)
1393{
1394   VGfloat color = 0x000000;
1395   static const VGfloat coords[] = {99,265, 96,284, 92,299, 73,339, 73,333, 87,300
1396   };
1397
1398   init(l, 131, color, coords, ELEMENTS(coords)/2);
1399}
1400
1401
1402struct lion * lion_create(void)
1403{
1404   struct lion *l = calloc(1, sizeof(struct lion));
1405
1406   poly0(l);
1407   poly1(l);
1408   poly2(l);
1409   poly3(l);
1410   poly4(l);
1411   poly5(l);
1412   poly6(l);
1413   poly7(l);
1414   poly8(l);
1415   poly9(l);
1416
1417   poly10(l);
1418   poly11(l);
1419   poly12(l);
1420   poly13(l);
1421   poly14(l);
1422   poly15(l);
1423   poly16(l);
1424   poly17(l);
1425   poly18(l);
1426   poly19(l);
1427
1428   poly20(l);
1429   poly21(l);
1430   poly22(l);
1431   poly23(l);
1432   poly24(l);
1433   poly25(l);
1434   poly26(l);
1435   poly27(l);
1436   poly28(l);
1437   poly29(l);
1438
1439   poly30(l);
1440   poly31(l);
1441   poly32(l);
1442   poly33(l);
1443   poly34(l);
1444   poly35(l);
1445   poly36(l);
1446   poly37(l);
1447   poly38(l);
1448   poly39(l);
1449
1450   poly40(l);
1451   poly41(l);
1452   poly42(l);
1453   poly43(l);
1454   poly44(l);
1455   poly45(l);
1456   poly46(l);
1457   poly47(l);
1458   poly48(l);
1459   poly49(l);
1460
1461   poly50(l);
1462   poly51(l);
1463   poly52(l);
1464   poly53(l);
1465   poly54(l);
1466   poly55(l);
1467   poly56(l);
1468   poly57(l);
1469   poly58(l);
1470   poly59(l);
1471
1472   poly60(l);
1473   poly61(l);
1474   poly62(l);
1475   poly63(l);
1476   poly64(l);
1477   poly65(l);
1478   poly66(l);
1479   poly67(l);
1480   poly68(l);
1481   poly69(l);
1482
1483   poly70(l);
1484   poly71(l);
1485   poly72(l);
1486   poly73(l);
1487   poly74(l);
1488   poly75(l);
1489   poly76(l);
1490   poly77(l);
1491   poly78(l);
1492   poly79(l);
1493
1494   poly80(l);
1495   poly81(l);
1496   poly82(l);
1497   poly83(l);
1498   poly84(l);
1499   poly85(l);
1500   poly86(l);
1501   poly87(l);
1502   poly88(l);
1503   poly89(l);
1504
1505   poly90(l);
1506   poly91(l);
1507   poly92(l);
1508   poly93(l);
1509   poly94(l);
1510   poly95(l);
1511   poly96(l);
1512   poly97(l);
1513   poly98(l);
1514   poly99(l);
1515
1516   poly100(l);
1517   poly101(l);
1518   poly102(l);
1519   poly103(l);
1520   poly104(l);
1521   poly105(l);
1522   poly106(l);
1523   poly107(l);
1524   poly108(l);
1525   poly109(l);
1526
1527   poly110(l);
1528   poly111(l);
1529   poly112(l);
1530   poly113(l);
1531   poly114(l);
1532   poly115(l);
1533   poly116(l);
1534   poly117(l);
1535   poly118(l);
1536   poly119(l);
1537
1538   poly120(l);
1539   poly121(l);
1540   poly122(l);
1541   poly123(l);
1542   poly124(l);
1543   poly125(l);
1544   poly126(l);
1545   poly127(l);
1546   poly128(l);
1547   poly129(l);
1548
1549   poly130(l);
1550   poly131(l);
1551
1552   return l;
1553}
1554
1555void lion_render(struct lion *l)
1556{
1557   VGint i;
1558
1559   for (i = 0; i < LION_SIZE; ++i) {
1560      vgSetPaint(l->fills[i], VG_FILL_PATH);
1561      vgDrawPath(l->paths[i], VG_FILL_PATH);
1562   }
1563}
1564
1565void lion_destroy(struct lion *l)
1566{
1567   VGint i;
1568   for (i = 0; i < LION_SIZE; ++i) {
1569      vgDestroyPaint(l->fills[i]);
1570      vgDestroyPath(l->paths[i]);
1571   }
1572   free(l);
1573}
1574