1//----------------------------------------------------------------------------
2// Anti-Grain Geometry - Version 2.4
3// Copyright (C) 2002-2005 Maxim Shemanarev (http://www.antigrain.com)
4//
5// Permission to copy, use, modify, sell and distribute this software
6// is granted provided this copyright notice appears in all copies.
7// This software is provided "as is" without express or implied
8// warranty, and with no claim as to its suitability for any purpose.
9//
10//----------------------------------------------------------------------------
11// Contact: mcseem@antigrain.com
12//          mcseemagg@yahoo.com
13//          http://www.antigrain.com
14//----------------------------------------------------------------------------
15//
16// Class gsv_text
17//
18//----------------------------------------------------------------------------
19#include <string.h>
20#include <stdio.h>
21#include "agg_gsv_text.h"
22
23
24namespace agg
25{
26    int8u gsv_default_font[] =
27    {
28        0x40,0x00,0x6c,0x0f,0x15,0x00,0x0e,0x00,0xf9,0xff,
29        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
30        0x0d,0x0a,0x0d,0x0a,0x46,0x6f,0x6e,0x74,0x20,0x28,
31        0x63,0x29,0x20,0x4d,0x69,0x63,0x72,0x6f,0x50,0x72,
32        0x6f,0x66,0x20,0x32,0x37,0x20,0x53,0x65,0x70,0x74,
33        0x65,0x6d,0x62,0x2e,0x31,0x39,0x38,0x39,0x00,0x0d,
34        0x0a,0x0d,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
35        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
36        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
37        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
38        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
39        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
40        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
41        0x02,0x00,0x12,0x00,0x34,0x00,0x46,0x00,0x94,0x00,
42        0xd0,0x00,0x2e,0x01,0x3e,0x01,0x64,0x01,0x8a,0x01,
43        0x98,0x01,0xa2,0x01,0xb4,0x01,0xba,0x01,0xc6,0x01,
44        0xcc,0x01,0xf0,0x01,0xfa,0x01,0x18,0x02,0x38,0x02,
45        0x44,0x02,0x68,0x02,0x98,0x02,0xa2,0x02,0xde,0x02,
46        0x0e,0x03,0x24,0x03,0x40,0x03,0x48,0x03,0x52,0x03,
47        0x5a,0x03,0x82,0x03,0xec,0x03,0xfa,0x03,0x26,0x04,
48        0x4c,0x04,0x6a,0x04,0x7c,0x04,0x8a,0x04,0xb6,0x04,
49        0xc4,0x04,0xca,0x04,0xe0,0x04,0xee,0x04,0xf8,0x04,
50        0x0a,0x05,0x18,0x05,0x44,0x05,0x5e,0x05,0x8e,0x05,
51        0xac,0x05,0xd6,0x05,0xe0,0x05,0xf6,0x05,0x00,0x06,
52        0x12,0x06,0x1c,0x06,0x28,0x06,0x36,0x06,0x48,0x06,
53        0x4e,0x06,0x60,0x06,0x6e,0x06,0x74,0x06,0x84,0x06,
54        0xa6,0x06,0xc8,0x06,0xe6,0x06,0x08,0x07,0x2c,0x07,
55        0x3c,0x07,0x68,0x07,0x7c,0x07,0x8c,0x07,0xa2,0x07,
56        0xb0,0x07,0xb6,0x07,0xd8,0x07,0xec,0x07,0x10,0x08,
57        0x32,0x08,0x54,0x08,0x64,0x08,0x88,0x08,0x98,0x08,
58        0xac,0x08,0xb6,0x08,0xc8,0x08,0xd2,0x08,0xe4,0x08,
59        0xf2,0x08,0x3e,0x09,0x48,0x09,0x94,0x09,0xc2,0x09,
60        0xc4,0x09,0xd0,0x09,0xe2,0x09,0x04,0x0a,0x0e,0x0a,
61        0x26,0x0a,0x34,0x0a,0x4a,0x0a,0x66,0x0a,0x70,0x0a,
62        0x7e,0x0a,0x8e,0x0a,0x9a,0x0a,0xa6,0x0a,0xb4,0x0a,
63        0xd8,0x0a,0xe2,0x0a,0xf6,0x0a,0x18,0x0b,0x22,0x0b,
64        0x32,0x0b,0x56,0x0b,0x60,0x0b,0x6e,0x0b,0x7c,0x0b,
65        0x8a,0x0b,0x9c,0x0b,0x9e,0x0b,0xb2,0x0b,0xc2,0x0b,
66        0xd8,0x0b,0xf4,0x0b,0x08,0x0c,0x30,0x0c,0x56,0x0c,
67        0x72,0x0c,0x90,0x0c,0xb2,0x0c,0xce,0x0c,0xe2,0x0c,
68        0xfe,0x0c,0x10,0x0d,0x26,0x0d,0x36,0x0d,0x42,0x0d,
69        0x4e,0x0d,0x5c,0x0d,0x78,0x0d,0x8c,0x0d,0x8e,0x0d,
70        0x90,0x0d,0x92,0x0d,0x94,0x0d,0x96,0x0d,0x98,0x0d,
71        0x9a,0x0d,0x9c,0x0d,0x9e,0x0d,0xa0,0x0d,0xa2,0x0d,
72        0xa4,0x0d,0xa6,0x0d,0xa8,0x0d,0xaa,0x0d,0xac,0x0d,
73        0xae,0x0d,0xb0,0x0d,0xb2,0x0d,0xb4,0x0d,0xb6,0x0d,
74        0xb8,0x0d,0xba,0x0d,0xbc,0x0d,0xbe,0x0d,0xc0,0x0d,
75        0xc2,0x0d,0xc4,0x0d,0xc6,0x0d,0xc8,0x0d,0xca,0x0d,
76        0xcc,0x0d,0xce,0x0d,0xd0,0x0d,0xd2,0x0d,0xd4,0x0d,
77        0xd6,0x0d,0xd8,0x0d,0xda,0x0d,0xdc,0x0d,0xde,0x0d,
78        0xe0,0x0d,0xe2,0x0d,0xe4,0x0d,0xe6,0x0d,0xe8,0x0d,
79        0xea,0x0d,0xec,0x0d,0x0c,0x0e,0x26,0x0e,0x48,0x0e,
80        0x64,0x0e,0x88,0x0e,0x92,0x0e,0xa6,0x0e,0xb4,0x0e,
81        0xd0,0x0e,0xee,0x0e,0x02,0x0f,0x16,0x0f,0x26,0x0f,
82        0x3c,0x0f,0x58,0x0f,0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,
83        0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,
84        0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,
85        0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,0x6c,0x0f,0x10,0x80,
86        0x05,0x95,0x00,0x72,0x00,0xfb,0xff,0x7f,0x01,0x7f,
87        0x01,0x01,0xff,0x01,0x05,0xfe,0x05,0x95,0xff,0x7f,
88        0x00,0x7a,0x01,0x86,0xff,0x7a,0x01,0x87,0x01,0x7f,
89        0xfe,0x7a,0x0a,0x87,0xff,0x7f,0x00,0x7a,0x01,0x86,
90        0xff,0x7a,0x01,0x87,0x01,0x7f,0xfe,0x7a,0x05,0xf2,
91        0x0b,0x95,0xf9,0x64,0x0d,0x9c,0xf9,0x64,0xfa,0x91,
92        0x0e,0x00,0xf1,0xfa,0x0e,0x00,0x04,0xfc,0x08,0x99,
93        0x00,0x63,0x04,0x9d,0x00,0x63,0x04,0x96,0xff,0x7f,
94        0x01,0x7f,0x01,0x01,0x00,0x01,0xfe,0x02,0xfd,0x01,
95        0xfc,0x00,0xfd,0x7f,0xfe,0x7e,0x00,0x7e,0x01,0x7e,
96        0x01,0x7f,0x02,0x7f,0x06,0x7e,0x02,0x7f,0x02,0x7e,
97        0xf2,0x89,0x02,0x7e,0x02,0x7f,0x06,0x7e,0x02,0x7f,
98        0x01,0x7f,0x01,0x7e,0x00,0x7c,0xfe,0x7e,0xfd,0x7f,
99        0xfc,0x00,0xfd,0x01,0xfe,0x02,0x00,0x01,0x01,0x01,
100        0x01,0x7f,0xff,0x7f,0x10,0xfd,0x15,0x95,0xee,0x6b,
101        0x05,0x95,0x02,0x7e,0x00,0x7e,0xff,0x7e,0xfe,0x7f,
102        0xfe,0x00,0xfe,0x02,0x00,0x02,0x01,0x02,0x02,0x01,
103        0x02,0x00,0x02,0x7f,0x03,0x7f,0x03,0x00,0x03,0x01,
104        0x02,0x01,0xfc,0xf2,0xfe,0x7f,0xff,0x7e,0x00,0x7e,
105        0x02,0x7e,0x02,0x00,0x02,0x01,0x01,0x02,0x00,0x02,
106        0xfe,0x02,0xfe,0x00,0x07,0xf9,0x15,0x8d,0xff,0x7f,
107        0x01,0x7f,0x01,0x01,0x00,0x01,0xff,0x01,0xff,0x00,
108        0xff,0x7f,0xff,0x7e,0xfe,0x7b,0xfe,0x7d,0xfe,0x7e,
109        0xfe,0x7f,0xfd,0x00,0xfd,0x01,0xff,0x02,0x00,0x03,
110        0x01,0x02,0x06,0x04,0x02,0x02,0x01,0x02,0x00,0x02,
111        0xff,0x02,0xfe,0x01,0xfe,0x7f,0xff,0x7e,0x00,0x7e,
112        0x01,0x7d,0x02,0x7d,0x05,0x79,0x02,0x7e,0x03,0x7f,
113        0x01,0x00,0x01,0x01,0x00,0x01,0xf1,0xfe,0xfe,0x01,
114        0xff,0x02,0x00,0x03,0x01,0x02,0x02,0x02,0x00,0x86,
115        0x01,0x7e,0x08,0x75,0x02,0x7e,0x02,0x7f,0x05,0x80,
116        0x05,0x93,0xff,0x01,0x01,0x01,0x01,0x7f,0x00,0x7e,
117        0xff,0x7e,0xff,0x7f,0x06,0xf1,0x0b,0x99,0xfe,0x7e,
118        0xfe,0x7d,0xfe,0x7c,0xff,0x7b,0x00,0x7c,0x01,0x7b,
119        0x02,0x7c,0x02,0x7d,0x02,0x7e,0xfe,0x9e,0xfe,0x7c,
120        0xff,0x7d,0xff,0x7b,0x00,0x7c,0x01,0x7b,0x01,0x7d,
121        0x02,0x7c,0x05,0x85,0x03,0x99,0x02,0x7e,0x02,0x7d,
122        0x02,0x7c,0x01,0x7b,0x00,0x7c,0xff,0x7b,0xfe,0x7c,
123        0xfe,0x7d,0xfe,0x7e,0x02,0x9e,0x02,0x7c,0x01,0x7d,
124        0x01,0x7b,0x00,0x7c,0xff,0x7b,0xff,0x7d,0xfe,0x7c,
125        0x09,0x85,0x08,0x95,0x00,0x74,0xfb,0x89,0x0a,0x7a,
126        0x00,0x86,0xf6,0x7a,0x0d,0xf4,0x0d,0x92,0x00,0x6e,
127        0xf7,0x89,0x12,0x00,0x04,0xf7,0x06,0x81,0xff,0x7f,
128        0xff,0x01,0x01,0x01,0x01,0x7f,0x00,0x7e,0xff,0x7e,
129        0xff,0x7f,0x06,0x84,0x04,0x89,0x12,0x00,0x04,0xf7,
130        0x05,0x82,0xff,0x7f,0x01,0x7f,0x01,0x01,0xff,0x01,
131        0x05,0xfe,0x00,0xfd,0x0e,0x18,0x00,0xeb,0x09,0x95,
132        0xfd,0x7f,0xfe,0x7d,0xff,0x7b,0x00,0x7d,0x01,0x7b,
133        0x02,0x7d,0x03,0x7f,0x02,0x00,0x03,0x01,0x02,0x03,
134        0x01,0x05,0x00,0x03,0xff,0x05,0xfe,0x03,0xfd,0x01,
135        0xfe,0x00,0x0b,0xeb,0x06,0x91,0x02,0x01,0x03,0x03,
136        0x00,0x6b,0x09,0x80,0x04,0x90,0x00,0x01,0x01,0x02,
137        0x01,0x01,0x02,0x01,0x04,0x00,0x02,0x7f,0x01,0x7f,
138        0x01,0x7e,0x00,0x7e,0xff,0x7e,0xfe,0x7d,0xf6,0x76,
139        0x0e,0x00,0x03,0x80,0x05,0x95,0x0b,0x00,0xfa,0x78,
140        0x03,0x00,0x02,0x7f,0x01,0x7f,0x01,0x7d,0x00,0x7e,
141        0xff,0x7d,0xfe,0x7e,0xfd,0x7f,0xfd,0x00,0xfd,0x01,
142        0xff,0x01,0xff,0x02,0x11,0xfc,0x0d,0x95,0xf6,0x72,
143        0x0f,0x00,0xfb,0x8e,0x00,0x6b,0x07,0x80,0x0f,0x95,
144        0xf6,0x00,0xff,0x77,0x01,0x01,0x03,0x01,0x03,0x00,
145        0x03,0x7f,0x02,0x7e,0x01,0x7d,0x00,0x7e,0xff,0x7d,
146        0xfe,0x7e,0xfd,0x7f,0xfd,0x00,0xfd,0x01,0xff,0x01,
147        0xff,0x02,0x11,0xfc,0x10,0x92,0xff,0x02,0xfd,0x01,
148        0xfe,0x00,0xfd,0x7f,0xfe,0x7d,0xff,0x7b,0x00,0x7b,
149        0x01,0x7c,0x02,0x7e,0x03,0x7f,0x01,0x00,0x03,0x01,
150        0x02,0x02,0x01,0x03,0x00,0x01,0xff,0x03,0xfe,0x02,
151        0xfd,0x01,0xff,0x00,0xfd,0x7f,0xfe,0x7e,0xff,0x7d,
152        0x10,0xf9,0x11,0x95,0xf6,0x6b,0xfc,0x95,0x0e,0x00,
153        0x03,0xeb,0x08,0x95,0xfd,0x7f,0xff,0x7e,0x00,0x7e,
154        0x01,0x7e,0x02,0x7f,0x04,0x7f,0x03,0x7f,0x02,0x7e,
155        0x01,0x7e,0x00,0x7d,0xff,0x7e,0xff,0x7f,0xfd,0x7f,
156        0xfc,0x00,0xfd,0x01,0xff,0x01,0xff,0x02,0x00,0x03,
157        0x01,0x02,0x02,0x02,0x03,0x01,0x04,0x01,0x02,0x01,
158        0x01,0x02,0x00,0x02,0xff,0x02,0xfd,0x01,0xfc,0x00,
159        0x0c,0xeb,0x10,0x8e,0xff,0x7d,0xfe,0x7e,0xfd,0x7f,
160        0xff,0x00,0xfd,0x01,0xfe,0x02,0xff,0x03,0x00,0x01,
161        0x01,0x03,0x02,0x02,0x03,0x01,0x01,0x00,0x03,0x7f,
162        0x02,0x7e,0x01,0x7c,0x00,0x7b,0xff,0x7b,0xfe,0x7d,
163        0xfd,0x7f,0xfe,0x00,0xfd,0x01,0xff,0x02,0x10,0xfd,
164        0x05,0x8e,0xff,0x7f,0x01,0x7f,0x01,0x01,0xff,0x01,
165        0x00,0xf4,0xff,0x7f,0x01,0x7f,0x01,0x01,0xff,0x01,
166        0x05,0xfe,0x05,0x8e,0xff,0x7f,0x01,0x7f,0x01,0x01,
167        0xff,0x01,0x01,0xf3,0xff,0x7f,0xff,0x01,0x01,0x01,
168        0x01,0x7f,0x00,0x7e,0xff,0x7e,0xff,0x7f,0x06,0x84,
169        0x14,0x92,0xf0,0x77,0x10,0x77,0x04,0x80,0x04,0x8c,
170        0x12,0x00,0xee,0xfa,0x12,0x00,0x04,0xfa,0x04,0x92,
171        0x10,0x77,0xf0,0x77,0x14,0x80,0x03,0x90,0x00,0x01,
172        0x01,0x02,0x01,0x01,0x02,0x01,0x04,0x00,0x02,0x7f,
173        0x01,0x7f,0x01,0x7e,0x00,0x7e,0xff,0x7e,0xff,0x7f,
174        0xfc,0x7e,0x00,0x7d,0x00,0xfb,0xff,0x7f,0x01,0x7f,
175        0x01,0x01,0xff,0x01,0x09,0xfe,0x12,0x8d,0xff,0x02,
176        0xfe,0x01,0xfd,0x00,0xfe,0x7f,0xff,0x7f,0xff,0x7d,
177        0x00,0x7d,0x01,0x7e,0x02,0x7f,0x03,0x00,0x02,0x01,
178        0x01,0x02,0xfb,0x88,0xfe,0x7e,0xff,0x7d,0x00,0x7d,
179        0x01,0x7e,0x01,0x7f,0x07,0x8b,0xff,0x78,0x00,0x7e,
180        0x02,0x7f,0x02,0x00,0x02,0x02,0x01,0x03,0x00,0x02,
181        0xff,0x03,0xff,0x02,0xfe,0x02,0xfe,0x01,0xfd,0x01,
182        0xfd,0x00,0xfd,0x7f,0xfe,0x7f,0xfe,0x7e,0xff,0x7e,
183        0xff,0x7d,0x00,0x7d,0x01,0x7d,0x01,0x7e,0x02,0x7e,
184        0x02,0x7f,0x03,0x7f,0x03,0x00,0x03,0x01,0x02,0x01,
185        0x01,0x01,0xfe,0x8d,0xff,0x78,0x00,0x7e,0x01,0x7f,
186        0x08,0xfb,0x09,0x95,0xf8,0x6b,0x08,0x95,0x08,0x6b,
187        0xf3,0x87,0x0a,0x00,0x04,0xf9,0x04,0x95,0x00,0x6b,
188        0x00,0x95,0x09,0x00,0x03,0x7f,0x01,0x7f,0x01,0x7e,
189        0x00,0x7e,0xff,0x7e,0xff,0x7f,0xfd,0x7f,0xf7,0x80,
190        0x09,0x00,0x03,0x7f,0x01,0x7f,0x01,0x7e,0x00,0x7d,
191        0xff,0x7e,0xff,0x7f,0xfd,0x7f,0xf7,0x00,0x11,0x80,
192        0x12,0x90,0xff,0x02,0xfe,0x02,0xfe,0x01,0xfc,0x00,
193        0xfe,0x7f,0xfe,0x7e,0xff,0x7e,0xff,0x7d,0x00,0x7b,
194        0x01,0x7d,0x01,0x7e,0x02,0x7e,0x02,0x7f,0x04,0x00,
195        0x02,0x01,0x02,0x02,0x01,0x02,0x03,0xfb,0x04,0x95,
196        0x00,0x6b,0x00,0x95,0x07,0x00,0x03,0x7f,0x02,0x7e,
197        0x01,0x7e,0x01,0x7d,0x00,0x7b,0xff,0x7d,0xff,0x7e,
198        0xfe,0x7e,0xfd,0x7f,0xf9,0x00,0x11,0x80,0x04,0x95,
199        0x00,0x6b,0x00,0x95,0x0d,0x00,0xf3,0xf6,0x08,0x00,
200        0xf8,0xf5,0x0d,0x00,0x02,0x80,0x04,0x95,0x00,0x6b,
201        0x00,0x95,0x0d,0x00,0xf3,0xf6,0x08,0x00,0x06,0xf5,
202        0x12,0x90,0xff,0x02,0xfe,0x02,0xfe,0x01,0xfc,0x00,
203        0xfe,0x7f,0xfe,0x7e,0xff,0x7e,0xff,0x7d,0x00,0x7b,
204        0x01,0x7d,0x01,0x7e,0x02,0x7e,0x02,0x7f,0x04,0x00,
205        0x02,0x01,0x02,0x02,0x01,0x02,0x00,0x03,0xfb,0x80,
206        0x05,0x00,0x03,0xf8,0x04,0x95,0x00,0x6b,0x0e,0x95,
207        0x00,0x6b,0xf2,0x8b,0x0e,0x00,0x04,0xf5,0x04,0x95,
208        0x00,0x6b,0x04,0x80,0x0c,0x95,0x00,0x70,0xff,0x7d,
209        0xff,0x7f,0xfe,0x7f,0xfe,0x00,0xfe,0x01,0xff,0x01,
210        0xff,0x03,0x00,0x02,0x0e,0xf9,0x04,0x95,0x00,0x6b,
211        0x0e,0x95,0xf2,0x72,0x05,0x85,0x09,0x74,0x03,0x80,
212        0x04,0x95,0x00,0x6b,0x00,0x80,0x0c,0x00,0x01,0x80,
213        0x04,0x95,0x00,0x6b,0x00,0x95,0x08,0x6b,0x08,0x95,
214        0xf8,0x6b,0x08,0x95,0x00,0x6b,0x04,0x80,0x04,0x95,
215        0x00,0x6b,0x00,0x95,0x0e,0x6b,0x00,0x95,0x00,0x6b,
216        0x04,0x80,0x09,0x95,0xfe,0x7f,0xfe,0x7e,0xff,0x7e,
217        0xff,0x7d,0x00,0x7b,0x01,0x7d,0x01,0x7e,0x02,0x7e,
218        0x02,0x7f,0x04,0x00,0x02,0x01,0x02,0x02,0x01,0x02,
219        0x01,0x03,0x00,0x05,0xff,0x03,0xff,0x02,0xfe,0x02,
220        0xfe,0x01,0xfc,0x00,0x0d,0xeb,0x04,0x95,0x00,0x6b,
221        0x00,0x95,0x09,0x00,0x03,0x7f,0x01,0x7f,0x01,0x7e,
222        0x00,0x7d,0xff,0x7e,0xff,0x7f,0xfd,0x7f,0xf7,0x00,
223        0x11,0xf6,0x09,0x95,0xfe,0x7f,0xfe,0x7e,0xff,0x7e,
224        0xff,0x7d,0x00,0x7b,0x01,0x7d,0x01,0x7e,0x02,0x7e,
225        0x02,0x7f,0x04,0x00,0x02,0x01,0x02,0x02,0x01,0x02,
226        0x01,0x03,0x00,0x05,0xff,0x03,0xff,0x02,0xfe,0x02,
227        0xfe,0x01,0xfc,0x00,0x03,0xef,0x06,0x7a,0x04,0x82,
228        0x04,0x95,0x00,0x6b,0x00,0x95,0x09,0x00,0x03,0x7f,
229        0x01,0x7f,0x01,0x7e,0x00,0x7e,0xff,0x7e,0xff,0x7f,
230        0xfd,0x7f,0xf7,0x00,0x07,0x80,0x07,0x75,0x03,0x80,
231        0x11,0x92,0xfe,0x02,0xfd,0x01,0xfc,0x00,0xfd,0x7f,
232        0xfe,0x7e,0x00,0x7e,0x01,0x7e,0x01,0x7f,0x02,0x7f,
233        0x06,0x7e,0x02,0x7f,0x01,0x7f,0x01,0x7e,0x00,0x7d,
234        0xfe,0x7e,0xfd,0x7f,0xfc,0x00,0xfd,0x01,0xfe,0x02,
235        0x11,0xfd,0x08,0x95,0x00,0x6b,0xf9,0x95,0x0e,0x00,
236        0x01,0xeb,0x04,0x95,0x00,0x71,0x01,0x7d,0x02,0x7e,
237        0x03,0x7f,0x02,0x00,0x03,0x01,0x02,0x02,0x01,0x03,
238        0x00,0x0f,0x04,0xeb,0x01,0x95,0x08,0x6b,0x08,0x95,
239        0xf8,0x6b,0x09,0x80,0x02,0x95,0x05,0x6b,0x05,0x95,
240        0xfb,0x6b,0x05,0x95,0x05,0x6b,0x05,0x95,0xfb,0x6b,
241        0x07,0x80,0x03,0x95,0x0e,0x6b,0x00,0x95,0xf2,0x6b,
242        0x11,0x80,0x01,0x95,0x08,0x76,0x00,0x75,0x08,0x95,
243        0xf8,0x76,0x09,0xf5,0x11,0x95,0xf2,0x6b,0x00,0x95,
244        0x0e,0x00,0xf2,0xeb,0x0e,0x00,0x03,0x80,0x03,0x93,
245        0x00,0x6c,0x01,0x94,0x00,0x6c,0xff,0x94,0x05,0x00,
246        0xfb,0xec,0x05,0x00,0x02,0x81,0x00,0x95,0x0e,0x68,
247        0x00,0x83,0x06,0x93,0x00,0x6c,0x01,0x94,0x00,0x6c,
248        0xfb,0x94,0x05,0x00,0xfb,0xec,0x05,0x00,0x03,0x81,
249        0x03,0x87,0x08,0x05,0x08,0x7b,0xf0,0x80,0x08,0x04,
250        0x08,0x7c,0x03,0xf9,0x01,0x80,0x10,0x00,0x01,0x80,
251        0x06,0x95,0xff,0x7f,0xff,0x7e,0x00,0x7e,0x01,0x7f,
252        0x01,0x01,0xff,0x01,0x05,0xef,0x0f,0x8e,0x00,0x72,
253        0x00,0x8b,0xfe,0x02,0xfe,0x01,0xfd,0x00,0xfe,0x7f,
254        0xfe,0x7e,0xff,0x7d,0x00,0x7e,0x01,0x7d,0x02,0x7e,
255        0x02,0x7f,0x03,0x00,0x02,0x01,0x02,0x02,0x04,0xfd,
256        0x04,0x95,0x00,0x6b,0x00,0x8b,0x02,0x02,0x02,0x01,
257        0x03,0x00,0x02,0x7f,0x02,0x7e,0x01,0x7d,0x00,0x7e,
258        0xff,0x7d,0xfe,0x7e,0xfe,0x7f,0xfd,0x00,0xfe,0x01,
259        0xfe,0x02,0x0f,0xfd,0x0f,0x8b,0xfe,0x02,0xfe,0x01,
260        0xfd,0x00,0xfe,0x7f,0xfe,0x7e,0xff,0x7d,0x00,0x7e,
261        0x01,0x7d,0x02,0x7e,0x02,0x7f,0x03,0x00,0x02,0x01,
262        0x02,0x02,0x03,0xfd,0x0f,0x95,0x00,0x6b,0x00,0x8b,
263        0xfe,0x02,0xfe,0x01,0xfd,0x00,0xfe,0x7f,0xfe,0x7e,
264        0xff,0x7d,0x00,0x7e,0x01,0x7d,0x02,0x7e,0x02,0x7f,
265        0x03,0x00,0x02,0x01,0x02,0x02,0x04,0xfd,0x03,0x88,
266        0x0c,0x00,0x00,0x02,0xff,0x02,0xff,0x01,0xfe,0x01,
267        0xfd,0x00,0xfe,0x7f,0xfe,0x7e,0xff,0x7d,0x00,0x7e,
268        0x01,0x7d,0x02,0x7e,0x02,0x7f,0x03,0x00,0x02,0x01,
269        0x02,0x02,0x03,0xfd,0x0a,0x95,0xfe,0x00,0xfe,0x7f,
270        0xff,0x7d,0x00,0x6f,0xfd,0x8e,0x07,0x00,0x03,0xf2,
271        0x0f,0x8e,0x00,0x70,0xff,0x7d,0xff,0x7f,0xfe,0x7f,
272        0xfd,0x00,0xfe,0x01,0x09,0x91,0xfe,0x02,0xfe,0x01,
273        0xfd,0x00,0xfe,0x7f,0xfe,0x7e,0xff,0x7d,0x00,0x7e,
274        0x01,0x7d,0x02,0x7e,0x02,0x7f,0x03,0x00,0x02,0x01,
275        0x02,0x02,0x04,0xfd,0x04,0x95,0x00,0x6b,0x00,0x8a,
276        0x03,0x03,0x02,0x01,0x03,0x00,0x02,0x7f,0x01,0x7d,
277        0x00,0x76,0x04,0x80,0x03,0x95,0x01,0x7f,0x01,0x01,
278        0xff,0x01,0xff,0x7f,0x01,0xf9,0x00,0x72,0x04,0x80,
279        0x05,0x95,0x01,0x7f,0x01,0x01,0xff,0x01,0xff,0x7f,
280        0x01,0xf9,0x00,0x6f,0xff,0x7d,0xfe,0x7f,0xfe,0x00,
281        0x09,0x87,0x04,0x95,0x00,0x6b,0x0a,0x8e,0xf6,0x76,
282        0x04,0x84,0x07,0x78,0x02,0x80,0x04,0x95,0x00,0x6b,
283        0x04,0x80,0x04,0x8e,0x00,0x72,0x00,0x8a,0x03,0x03,
284        0x02,0x01,0x03,0x00,0x02,0x7f,0x01,0x7d,0x00,0x76,
285        0x00,0x8a,0x03,0x03,0x02,0x01,0x03,0x00,0x02,0x7f,
286        0x01,0x7d,0x00,0x76,0x04,0x80,0x04,0x8e,0x00,0x72,
287        0x00,0x8a,0x03,0x03,0x02,0x01,0x03,0x00,0x02,0x7f,
288        0x01,0x7d,0x00,0x76,0x04,0x80,0x08,0x8e,0xfe,0x7f,
289        0xfe,0x7e,0xff,0x7d,0x00,0x7e,0x01,0x7d,0x02,0x7e,
290        0x02,0x7f,0x03,0x00,0x02,0x01,0x02,0x02,0x01,0x03,
291        0x00,0x02,0xff,0x03,0xfe,0x02,0xfe,0x01,0xfd,0x00,
292        0x0b,0xf2,0x04,0x8e,0x00,0x6b,0x00,0x92,0x02,0x02,
293        0x02,0x01,0x03,0x00,0x02,0x7f,0x02,0x7e,0x01,0x7d,
294        0x00,0x7e,0xff,0x7d,0xfe,0x7e,0xfe,0x7f,0xfd,0x00,
295        0xfe,0x01,0xfe,0x02,0x0f,0xfd,0x0f,0x8e,0x00,0x6b,
296        0x00,0x92,0xfe,0x02,0xfe,0x01,0xfd,0x00,0xfe,0x7f,
297        0xfe,0x7e,0xff,0x7d,0x00,0x7e,0x01,0x7d,0x02,0x7e,
298        0x02,0x7f,0x03,0x00,0x02,0x01,0x02,0x02,0x04,0xfd,
299        0x04,0x8e,0x00,0x72,0x00,0x88,0x01,0x03,0x02,0x02,
300        0x02,0x01,0x03,0x00,0x01,0xf2,0x0e,0x8b,0xff,0x02,
301        0xfd,0x01,0xfd,0x00,0xfd,0x7f,0xff,0x7e,0x01,0x7e,
302        0x02,0x7f,0x05,0x7f,0x02,0x7f,0x01,0x7e,0x00,0x7f,
303        0xff,0x7e,0xfd,0x7f,0xfd,0x00,0xfd,0x01,0xff,0x02,
304        0x0e,0xfd,0x05,0x95,0x00,0x6f,0x01,0x7d,0x02,0x7f,
305        0x02,0x00,0xf8,0x8e,0x07,0x00,0x03,0xf2,0x04,0x8e,
306        0x00,0x76,0x01,0x7d,0x02,0x7f,0x03,0x00,0x02,0x01,
307        0x03,0x03,0x00,0x8a,0x00,0x72,0x04,0x80,0x02,0x8e,
308        0x06,0x72,0x06,0x8e,0xfa,0x72,0x08,0x80,0x03,0x8e,
309        0x04,0x72,0x04,0x8e,0xfc,0x72,0x04,0x8e,0x04,0x72,
310        0x04,0x8e,0xfc,0x72,0x07,0x80,0x03,0x8e,0x0b,0x72,
311        0x00,0x8e,0xf5,0x72,0x0e,0x80,0x02,0x8e,0x06,0x72,
312        0x06,0x8e,0xfa,0x72,0xfe,0x7c,0xfe,0x7e,0xfe,0x7f,
313        0xff,0x00,0x0f,0x87,0x0e,0x8e,0xf5,0x72,0x00,0x8e,
314        0x0b,0x00,0xf5,0xf2,0x0b,0x00,0x03,0x80,0x09,0x99,
315        0xfe,0x7f,0xff,0x7f,0xff,0x7e,0x00,0x7e,0x01,0x7e,
316        0x01,0x7f,0x01,0x7e,0x00,0x7e,0xfe,0x7e,0x01,0x8e,
317        0xff,0x7e,0x00,0x7e,0x01,0x7e,0x01,0x7f,0x01,0x7e,
318        0x00,0x7e,0xff,0x7e,0xfc,0x7e,0x04,0x7e,0x01,0x7e,
319        0x00,0x7e,0xff,0x7e,0xff,0x7f,0xff,0x7e,0x00,0x7e,
320        0x01,0x7e,0xff,0x8e,0x02,0x7e,0x00,0x7e,0xff,0x7e,
321        0xff,0x7f,0xff,0x7e,0x00,0x7e,0x01,0x7e,0x01,0x7f,
322        0x02,0x7f,0x05,0x87,0x04,0x95,0x00,0x77,0x00,0xfd,
323        0x00,0x77,0x04,0x80,0x05,0x99,0x02,0x7f,0x01,0x7f,
324        0x01,0x7e,0x00,0x7e,0xff,0x7e,0xff,0x7f,0xff,0x7e,
325        0x00,0x7e,0x02,0x7e,0xff,0x8e,0x01,0x7e,0x00,0x7e,
326        0xff,0x7e,0xff,0x7f,0xff,0x7e,0x00,0x7e,0x01,0x7e,
327        0x04,0x7e,0xfc,0x7e,0xff,0x7e,0x00,0x7e,0x01,0x7e,
328        0x01,0x7f,0x01,0x7e,0x00,0x7e,0xff,0x7e,0x01,0x8e,
329        0xfe,0x7e,0x00,0x7e,0x01,0x7e,0x01,0x7f,0x01,0x7e,
330        0x00,0x7e,0xff,0x7e,0xff,0x7f,0xfe,0x7f,0x09,0x87,
331        0x03,0x86,0x00,0x02,0x01,0x03,0x02,0x01,0x02,0x00,
332        0x02,0x7f,0x04,0x7d,0x02,0x7f,0x02,0x00,0x02,0x01,
333        0x01,0x02,0xee,0xfe,0x01,0x02,0x02,0x01,0x02,0x00,
334        0x02,0x7f,0x04,0x7d,0x02,0x7f,0x02,0x00,0x02,0x01,
335        0x01,0x03,0x00,0x02,0x03,0xf4,0x10,0x80,0x03,0x80,
336        0x07,0x15,0x08,0x6b,0xfe,0x85,0xf5,0x00,0x10,0xfb,
337        0x0d,0x95,0xf6,0x00,0x00,0x6b,0x0a,0x00,0x02,0x02,
338        0x00,0x08,0xfe,0x02,0xf6,0x00,0x0e,0xf4,0x03,0x80,
339        0x00,0x15,0x0a,0x00,0x02,0x7e,0x00,0x7e,0x00,0x7d,
340        0x00,0x7e,0xfe,0x7f,0xf6,0x00,0x0a,0x80,0x02,0x7e,
341        0x01,0x7e,0x00,0x7d,0xff,0x7d,0xfe,0x7f,0xf6,0x00,
342        0x10,0x80,0x03,0x80,0x00,0x15,0x0c,0x00,0xff,0x7e,
343        0x03,0xed,0x03,0xfd,0x00,0x03,0x02,0x00,0x00,0x12,
344        0x02,0x03,0x0a,0x00,0x00,0x6b,0x02,0x00,0x00,0x7d,
345        0xfe,0x83,0xf4,0x00,0x11,0x80,0x0f,0x80,0xf4,0x00,
346        0x00,0x15,0x0c,0x00,0xff,0xf6,0xf5,0x00,0x0f,0xf5,
347        0x04,0x95,0x07,0x76,0x00,0x0a,0x07,0x80,0xf9,0x76,
348        0x00,0x75,0xf8,0x80,0x07,0x0c,0x09,0xf4,0xf9,0x0c,
349        0x09,0xf4,0x03,0x92,0x02,0x03,0x07,0x00,0x03,0x7d,
350        0x00,0x7b,0xfc,0x7e,0x04,0x7d,0x00,0x7a,0xfd,0x7e,
351        0xf9,0x00,0xfe,0x02,0x06,0x89,0x02,0x00,0x06,0xf5,
352        0x03,0x95,0x00,0x6b,0x0c,0x15,0x00,0x6b,0x02,0x80,
353        0x03,0x95,0x00,0x6b,0x0c,0x15,0x00,0x6b,0xf8,0x96,
354        0x03,0x00,0x07,0xea,0x03,0x80,0x00,0x15,0x0c,0x80,
355        0xf7,0x76,0xfd,0x00,0x03,0x80,0x0a,0x75,0x03,0x80,
356        0x03,0x80,0x07,0x13,0x02,0x02,0x03,0x00,0x00,0x6b,
357        0x02,0x80,0x03,0x80,0x00,0x15,0x09,0x6b,0x09,0x15,
358        0x00,0x6b,0x03,0x80,0x03,0x80,0x00,0x15,0x00,0xf6,
359        0x0d,0x00,0x00,0x8a,0x00,0x6b,0x03,0x80,0x07,0x80,
360        0xfd,0x00,0xff,0x03,0x00,0x04,0x00,0x07,0x00,0x04,
361        0x01,0x02,0x03,0x01,0x06,0x00,0x03,0x7f,0x01,0x7e,
362        0x01,0x7c,0x00,0x79,0xff,0x7c,0xff,0x7d,0xfd,0x00,
363        0xfa,0x00,0x0e,0x80,0x03,0x80,0x00,0x15,0x0c,0x00,
364        0x00,0x6b,0x02,0x80,0x03,0x80,0x00,0x15,0x0a,0x00,
365        0x02,0x7f,0x01,0x7d,0x00,0x7b,0xff,0x7e,0xfe,0x7f,
366        0xf6,0x00,0x10,0xf7,0x11,0x8f,0xff,0x03,0xff,0x02,
367        0xfe,0x01,0xfa,0x00,0xfd,0x7f,0xff,0x7e,0x00,0x7c,
368        0x00,0x79,0x00,0x7b,0x01,0x7e,0x03,0x00,0x06,0x00,
369        0x02,0x00,0x01,0x03,0x01,0x02,0x03,0xfb,0x03,0x95,
370        0x0c,0x00,0xfa,0x80,0x00,0x6b,0x09,0x80,0x03,0x95,
371        0x00,0x77,0x06,0x7a,0x06,0x06,0x00,0x09,0xfa,0xf1,
372        0xfa,0x7a,0x0e,0x80,0x03,0x87,0x00,0x0b,0x02,0x02,
373        0x03,0x00,0x02,0x7e,0x01,0x02,0x04,0x00,0x02,0x7e,
374        0x00,0x75,0xfe,0x7e,0xfc,0x00,0xff,0x01,0xfe,0x7f,
375        0xfd,0x00,0xfe,0x02,0x07,0x8e,0x00,0x6b,0x09,0x80,
376        0x03,0x80,0x0e,0x15,0xf2,0x80,0x0e,0x6b,0x03,0x80,
377        0x03,0x95,0x00,0x6b,0x0e,0x00,0x00,0x7d,0xfe,0x98,
378        0x00,0x6b,0x05,0x80,0x03,0x95,0x00,0x75,0x02,0x7d,
379        0x0a,0x00,0x00,0x8e,0x00,0x6b,0x02,0x80,0x03,0x95,
380        0x00,0x6b,0x10,0x00,0x00,0x15,0xf8,0x80,0x00,0x6b,
381        0x0a,0x80,0x03,0x95,0x00,0x6b,0x10,0x00,0x00,0x15,
382        0xf8,0x80,0x00,0x6b,0x0a,0x00,0x00,0x7d,0x02,0x83,
383        0x10,0x80,0x03,0x95,0x00,0x6b,0x09,0x00,0x03,0x02,
384        0x00,0x08,0xfd,0x02,0xf7,0x00,0x0e,0x89,0x00,0x6b,
385        0x03,0x80,0x03,0x95,0x00,0x6b,0x09,0x00,0x03,0x02,
386        0x00,0x08,0xfd,0x02,0xf7,0x00,0x0e,0xf4,0x03,0x92,
387        0x02,0x03,0x07,0x00,0x03,0x7d,0x00,0x70,0xfd,0x7e,
388        0xf9,0x00,0xfe,0x02,0x03,0x89,0x09,0x00,0x02,0xf5,
389        0x03,0x80,0x00,0x15,0x00,0xf5,0x07,0x00,0x00,0x08,
390        0x02,0x03,0x06,0x00,0x02,0x7d,0x00,0x70,0xfe,0x7e,
391        0xfa,0x00,0xfe,0x02,0x00,0x08,0x0c,0xf6,0x0f,0x80,
392        0x00,0x15,0xf6,0x00,0xfe,0x7d,0x00,0x79,0x02,0x7e,
393        0x0a,0x00,0xf4,0xf7,0x07,0x09,0x07,0xf7,0x03,0x8c,
394        0x01,0x02,0x01,0x01,0x05,0x00,0x02,0x7f,0x01,0x7e,
395        0x00,0x74,0x00,0x86,0xff,0x01,0xfe,0x01,0xfb,0x00,
396        0xff,0x7f,0xff,0x7f,0x00,0x7c,0x01,0x7e,0x01,0x00,
397        0x05,0x00,0x02,0x00,0x01,0x02,0x03,0xfe,0x04,0x8e,
398        0x02,0x01,0x04,0x00,0x02,0x7f,0x01,0x7e,0x00,0x77,
399        0xff,0x7e,0xfe,0x7f,0xfc,0x00,0xfe,0x01,0xff,0x02,
400        0x00,0x09,0x01,0x02,0x02,0x02,0x03,0x01,0x02,0x01,
401        0x01,0x01,0x01,0x02,0x02,0xeb,0x03,0x80,0x00,0x15,
402        0x03,0x00,0x02,0x7e,0x00,0x7b,0xfe,0x7e,0xfd,0x00,
403        0x03,0x80,0x04,0x00,0x03,0x7e,0x00,0x78,0xfd,0x7e,
404        0xf9,0x00,0x0c,0x80,0x03,0x8c,0x02,0x02,0x02,0x01,
405        0x03,0x00,0x02,0x7f,0x01,0x7d,0xfe,0x7e,0xf9,0x7d,
406        0xff,0x7e,0x00,0x7d,0x03,0x7f,0x02,0x00,0x03,0x01,
407        0x02,0x01,0x02,0xfe,0x0d,0x8c,0xff,0x02,0xfe,0x01,
408        0xfc,0x00,0xfe,0x7f,0xff,0x7e,0x00,0x77,0x01,0x7e,
409        0x02,0x7f,0x04,0x00,0x02,0x01,0x01,0x02,0x00,0x0f,
410        0xff,0x02,0xfe,0x01,0xf9,0x00,0x0c,0xeb,0x03,0x88,
411        0x0a,0x00,0x00,0x02,0x00,0x03,0xfe,0x02,0xfa,0x00,
412        0xff,0x7e,0xff,0x7d,0x00,0x7b,0x01,0x7c,0x01,0x7f,
413        0x06,0x00,0x02,0x02,0x03,0xfe,0x03,0x8f,0x06,0x77,
414        0x06,0x09,0xfa,0x80,0x00,0x71,0xff,0x87,0xfb,0x79,
415        0x07,0x87,0x05,0x79,0x02,0x80,0x03,0x8d,0x02,0x02,
416        0x06,0x00,0x02,0x7e,0x00,0x7d,0xfc,0x7d,0x04,0x7e,
417        0x00,0x7d,0xfe,0x7e,0xfa,0x00,0xfe,0x02,0x04,0x85,
418        0x02,0x00,0x06,0xf9,0x03,0x8f,0x00,0x73,0x01,0x7e,
419        0x07,0x00,0x02,0x02,0x00,0x0d,0x00,0xf3,0x01,0x7e,
420        0x03,0x80,0x03,0x8f,0x00,0x73,0x01,0x7e,0x07,0x00,
421        0x02,0x02,0x00,0x0d,0x00,0xf3,0x01,0x7e,0xf8,0x90,
422        0x03,0x00,0x08,0xf0,0x03,0x80,0x00,0x15,0x00,0xf3,
423        0x02,0x00,0x06,0x07,0xfa,0xf9,0x07,0x78,0x03,0x80,
424        0x03,0x80,0x04,0x0c,0x02,0x03,0x04,0x00,0x00,0x71,
425        0x02,0x80,0x03,0x80,0x00,0x0f,0x06,0x77,0x06,0x09,
426        0x00,0x71,0x02,0x80,0x03,0x80,0x00,0x0f,0x0a,0xf1,
427        0x00,0x0f,0xf6,0xf8,0x0a,0x00,0x02,0xf9,0x05,0x80,
428        0xff,0x01,0xff,0x04,0x00,0x05,0x01,0x03,0x01,0x02,
429        0x06,0x00,0x02,0x7e,0x00,0x7d,0x00,0x7b,0x00,0x7c,
430        0xfe,0x7f,0xfa,0x00,0x0b,0x80,0x03,0x80,0x00,0x0f,
431        0x00,0xfb,0x01,0x03,0x01,0x02,0x05,0x00,0x02,0x7e,
432        0x01,0x7d,0x00,0x76,0x03,0x80,0x10,0x80,0x10,0x80,
433        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
434        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
435        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
436        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
437        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
438        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
439        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
440        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
441        0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,0x10,0x80,
442        0x10,0x80,0x0a,0x8f,0x02,0x7f,0x01,0x7e,0x00,0x76,
443        0xff,0x7f,0xfe,0x7f,0xfb,0x00,0xff,0x01,0xff,0x01,
444        0x00,0x0a,0x01,0x02,0x01,0x01,0x05,0x00,0xf9,0x80,
445        0x00,0x6b,0x0c,0x86,0x0d,0x8a,0xff,0x03,0xfe,0x02,
446        0xfb,0x00,0xff,0x7e,0xff,0x7d,0x00,0x7b,0x01,0x7c,
447        0x01,0x7f,0x05,0x00,0x02,0x01,0x01,0x03,0x03,0xfc,
448        0x03,0x80,0x00,0x0f,0x00,0xfb,0x01,0x03,0x01,0x02,
449        0x04,0x00,0x01,0x7e,0x01,0x7d,0x00,0x76,0x00,0x8a,
450        0x01,0x03,0x02,0x02,0x03,0x00,0x02,0x7e,0x01,0x7d,
451        0x00,0x76,0x03,0x80,0x03,0x8f,0x00,0x74,0x01,0x7e,
452        0x02,0x7f,0x04,0x00,0x02,0x01,0x01,0x01,0x00,0x8d,
453        0x00,0x6e,0xff,0x7e,0xfe,0x7f,0xfb,0x00,0xfe,0x01,
454        0x0c,0x85,0x03,0x8d,0x01,0x02,0x03,0x00,0x02,0x7e,
455        0x01,0x02,0x03,0x00,0x02,0x7e,0x00,0x74,0xfe,0x7f,
456        0xfd,0x00,0xff,0x01,0xfe,0x7f,0xfd,0x00,0xff,0x01,
457        0x00,0x0c,0x06,0x82,0x00,0x6b,0x08,0x86,0x03,0x80,
458        0x0a,0x0f,0xf6,0x80,0x0a,0x71,0x03,0x80,0x03,0x8f,
459        0x00,0x73,0x01,0x7e,0x07,0x00,0x02,0x02,0x00,0x0d,
460        0x00,0xf3,0x01,0x7e,0x00,0x7e,0x03,0x82,0x03,0x8f,
461        0x00,0x79,0x02,0x7e,0x08,0x00,0x00,0x89,0x00,0x71,
462        0x02,0x80,0x03,0x8f,0x00,0x73,0x01,0x7e,0x03,0x00,
463        0x02,0x02,0x00,0x0d,0x00,0xf3,0x01,0x7e,0x03,0x00,
464        0x02,0x02,0x00,0x0d,0x00,0xf3,0x01,0x7e,0x03,0x80,
465        0x03,0x8f,0x00,0x73,0x01,0x7e,0x03,0x00,0x02,0x02,
466        0x00,0x0d,0x00,0xf3,0x01,0x7e,0x03,0x00,0x02,0x02,
467        0x00,0x0d,0x00,0xf3,0x01,0x7e,0x00,0x7e,0x03,0x82,
468        0x03,0x8d,0x00,0x02,0x02,0x00,0x00,0x71,0x08,0x00,
469        0x02,0x02,0x00,0x06,0xfe,0x02,0xf8,0x00,0x0c,0xf6,
470        0x03,0x8f,0x00,0x71,0x07,0x00,0x02,0x02,0x00,0x06,
471        0xfe,0x02,0xf9,0x00,0x0c,0x85,0x00,0x71,0x02,0x80,
472        0x03,0x8f,0x00,0x71,0x07,0x00,0x03,0x02,0x00,0x06,
473        0xfd,0x02,0xf9,0x00,0x0c,0xf6,0x03,0x8d,0x02,0x02,
474        0x06,0x00,0x02,0x7e,0x00,0x75,0xfe,0x7e,0xfa,0x00,
475        0xfe,0x02,0x04,0x85,0x06,0x00,0x02,0xf9,0x03,0x80,
476        0x00,0x0f,0x00,0xf8,0x04,0x00,0x00,0x06,0x02,0x02,
477        0x04,0x00,0x02,0x7e,0x00,0x75,0xfe,0x7e,0xfc,0x00,
478        0xfe,0x02,0x00,0x05,0x0a,0xf9,0x0d,0x80,0x00,0x0f,
479        0xf7,0x00,0xff,0x7e,0x00,0x7b,0x01,0x7e,0x09,0x00,
480        0xf6,0xfa,0x04,0x06,0x08,0xfa
481    };
482
483    //-------------------------------------------------------------------------
484    gsv_text::gsv_text() :
485      m_x(0.0),
486      m_y(0.0),
487      m_start_x(0.0),
488      m_width(10.0),
489      m_height(0.0),
490      m_space(0.0),
491      m_line_space(0.0),
492      m_text(m_chr),
493      m_text_buf(),
494      m_cur_chr(m_chr),
495      m_font(gsv_default_font),
496      m_loaded_font(),
497      m_status(initial),
498      m_big_endian(false),
499      m_flip(false)
500    {
501        m_chr[0] = m_chr[1] = 0;
502
503        int t = 1;
504        if(*(char*)&t == 0) m_big_endian = true;
505    }
506
507
508
509    //-------------------------------------------------------------------------
510    void gsv_text::font(const void* font)
511    {
512        m_font = font;
513        if(m_font == 0) m_font = &m_loaded_font[0];
514    }
515
516    //-------------------------------------------------------------------------
517    void gsv_text::size(double height, double width)
518    {
519        m_height = height;
520        m_width  = width;
521    }
522
523    //-------------------------------------------------------------------------
524    void gsv_text::space(double space)
525    {
526        m_space = space;
527    }
528
529    //-------------------------------------------------------------------------
530    void gsv_text::line_space(double line_space)
531    {
532        m_line_space = line_space;
533    }
534
535    //-------------------------------------------------------------------------
536    void gsv_text::start_point(double x, double y)
537    {
538        m_x = m_start_x = x;
539        m_y = y;
540        //if(m_flip) m_y += m_height;
541    }
542
543
544    //-------------------------------------------------------------------------
545    void gsv_text::load_font(const char* file)
546    {
547        m_loaded_font.resize(0);
548        FILE* fd = fopen(file, "rb");
549        if(fd)
550        {
551            unsigned len;
552
553            fseek(fd, 0l, SEEK_END);
554            len = ftell(fd);
555            fseek(fd, 0l, SEEK_SET);
556            if(len > 0)
557            {
558                m_loaded_font.resize(len);
559                fread(&m_loaded_font[0], 1, len, fd);
560                m_font = &m_loaded_font[0];
561            }
562            fclose(fd);
563        }
564    }
565
566
567    //-------------------------------------------------------------------------
568    void gsv_text::text(const char* text)
569    {
570        if(text == 0)
571        {
572            m_chr[0] = 0;
573            m_text = m_chr;
574            return;
575        }
576        unsigned new_size = strlen(text) + 1;
577        if(new_size > m_text_buf.size())
578        {
579            m_text_buf.resize(new_size);
580        }
581        memcpy(&m_text_buf[0], text, new_size);
582        m_text = &m_text_buf[0];
583    }
584
585
586
587    //-------------------------------------------------------------------------
588    void gsv_text::rewind(unsigned)
589    {
590        m_status = initial;
591        if(m_font == 0) return;
592
593        m_indices = (int8u*)m_font;
594        double base_height = value(m_indices + 4);
595        m_indices += value(m_indices);
596        m_glyphs = (int8*)(m_indices + 257*2);
597        m_h = m_height / base_height;
598        m_w = (m_width == 0.0) ? m_h : m_width / base_height;
599        if(m_flip) m_h = -m_h;
600        m_cur_chr = m_text;
601    }
602
603
604    //-------------------------------------------------------------------------
605    unsigned gsv_text::vertex(double* x, double* y)
606    {
607        unsigned idx;
608        int8 yc, yf;
609        int dx, dy;
610        bool quit = false;
611
612
613        while(!quit)
614        {
615            switch(m_status)
616            {
617            case initial:
618                if(m_font == 0)
619                {
620                    quit = true;
621                    break;
622                }
623                m_status = next_char;
624
625            case next_char:
626                if(*m_cur_chr == 0)
627                {
628                    quit = true;
629                    break;
630                }
631                idx = (*m_cur_chr++) & 0xFF;
632                if(idx == '\n')
633                {
634                    m_x = m_start_x;
635                    m_y -= m_flip ? -m_height - m_line_space : m_height + m_line_space;
636                    break;
637                }
638                idx <<= 1;
639                m_bglyph = m_glyphs + value(m_indices + idx);
640                m_eglyph = m_glyphs + value(m_indices + idx + 2);
641                m_status = start_glyph;
642
643            case start_glyph:
644                *x = m_x;
645                *y = m_y;
646                m_status = glyph;
647                return path_cmd_move_to;
648
649            case glyph:
650                if(m_bglyph >= m_eglyph)
651                {
652                    m_status = next_char;
653                    m_x += m_space;
654                    break;
655                }
656                dx = int(*m_bglyph++);
657                yf = (yc = *m_bglyph++) & 0x80;
658                yc <<= 1;
659                yc >>= 1;
660                dy = int(yc);
661                m_x += double(dx) * m_w;
662                m_y += double(dy) * m_h;
663                *x = m_x;
664                *y = m_y;
665                return yf ? path_cmd_move_to : path_cmd_line_to;
666            }
667
668        }
669        return path_cmd_stop;
670    }
671
672
673
674}
675