24 typedef unsigned char Byte;
41 0, 5, 8, 13, 20, 27, 38, 47,
42 50, 54, 58, 65, 72, 76, 83, 87,
43 91, 98,105,112,119,126,133,140,
44 147,154,161,164,167,174,181,188,
45 195,207,216,224,233,242,250,258,
46 267,276,279,286,294,301,312,321,
47 331,339,349,357,365,372,380,389,
48 400,409,418,427,430,434,437,443,
49 450,453,460,467,474,481,488,492,
50 499,506,509,512,518,521,530,537,
51 544,551,557,562,568,571,578,585,
52 594,600,607,613,617,620,624,631
57 5, 3, 5, 7, 7,11, 9, 3,
58 4, 4, 7, 7, 4, 7, 4, 4,
60 7, 7, 7, 7, 7, 7, 7, 7,
61 7, 7, 3, 3, 7, 7, 7, 7,
62 12, 9, 8, 9, 9, 8, 8, 9,
63 9, 3, 7, 8, 7,11, 9,10,
64 8,10, 8, 8, 7, 8, 9,11,
65 9, 9, 9, 3, 4, 3, 6, 7,
66 3, 7, 7, 7, 7, 7, 4, 7,
67 7, 3, 3, 6, 3, 9, 7, 7,
68 7, 6, 5, 6, 3, 7, 7, 9,
69 6, 7, 6, 4, 3, 4, 7, 5
73 0x02, 0x50, 0x01, 0x06, 0x20, 0x60, 0xc6, 0x04, 0x00, 0x00, 0x00, 0x27,
74 0x04, 0x1c, 0x38, 0x11, 0xf1, 0xc7, 0xc7, 0x0e, 0x00, 0x00, 0x00, 0x03,
75 0x81, 0xf0, 0x10, 0x7c, 0x1e, 0x3e, 0x1f, 0x9f, 0x87, 0x88, 0x24, 0x09,
76 0x09, 0x02, 0x02, 0x41, 0x0f, 0x0f, 0x83, 0xc3, 0xe1, 0xe7, 0xf4, 0x24,
77 0x12, 0x22, 0x41, 0x20, 0x9f, 0xce, 0x30, 0x00, 0x10, 0x04, 0x00, 0x01,
78 0x00, 0x30, 0x08, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
79 0x00, 0x00, 0x00, 0x00, 0x01, 0xac, 0x00, 0x00, 0x02, 0x51, 0x43, 0x89,
80 0x40, 0x90, 0x49, 0x15, 0x00, 0x00, 0x00, 0x28, 0x9c, 0x22, 0x44, 0x31,
81 0x02, 0x20, 0x48, 0x91, 0x00, 0x00, 0x00, 0x04, 0x46, 0x08, 0x28, 0x42,
82 0x21, 0x21, 0x10, 0x10, 0x08, 0x48, 0x24, 0x09, 0x11, 0x03, 0x06, 0x61,
83 0x10, 0x88, 0x44, 0x22, 0x12, 0x10, 0x84, 0x24, 0x12, 0x22, 0x22, 0x20,
84 0x80, 0x4a, 0x11, 0x00, 0x20, 0x04, 0x00, 0x01, 0x00, 0x40, 0x08, 0x00,
85 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
86 0x02, 0x22, 0x00, 0x00, 0x02, 0x51, 0x45, 0x49, 0x40, 0x90, 0x89, 0x0a,
87 0x00, 0x00, 0x00, 0x48, 0x84, 0x02, 0x04, 0x51, 0x02, 0x00, 0x88, 0x91,
88 0x00, 0x00, 0x00, 0x04, 0x44, 0xd4, 0x28, 0x42, 0x40, 0x20, 0x90, 0x10,
89 0x10, 0x08, 0x24, 0x09, 0x21, 0x03, 0x06, 0x51, 0x20, 0x48, 0x48, 0x12,
90 0x12, 0x00, 0x84, 0x22, 0x22, 0x22, 0x22, 0x11, 0x00, 0x89, 0x12, 0x80,
91 0x31, 0xc5, 0x87, 0x0d, 0x1c, 0xe3, 0x4b, 0x12, 0x49, 0x29, 0x16, 0x1c,
92 0x58, 0x69, 0x4c, 0xe8, 0x91, 0x44, 0x61, 0x44, 0xf2, 0x22, 0x00, 0x00,
93 0x02, 0x07, 0xe5, 0x06, 0x80, 0x60, 0x10, 0x95, 0x08, 0x00, 0x00, 0x48,
94 0x84, 0x04, 0x18, 0x51, 0xe2, 0xc0, 0x87, 0x11, 0x24, 0x18, 0x03, 0x00,
95 0x89, 0x24, 0x44, 0x42, 0x40, 0x20, 0x90, 0x10, 0x10, 0x08, 0x24, 0x09,
96 0x41, 0x02, 0x8a, 0x51, 0x20, 0x48, 0x48, 0x12, 0x11, 0x80, 0x84, 0x22,
97 0x21, 0x24, 0x14, 0x11, 0x01, 0x09, 0x14, 0x40, 0x02, 0x26, 0x48, 0x93,
98 0x22, 0x44, 0xcc, 0x92, 0x51, 0x36, 0x99, 0x22, 0x64, 0x99, 0x92, 0x48,
99 0x91, 0x44, 0x52, 0x44, 0x12, 0x22, 0x00, 0x00, 0x02, 0x01, 0x43, 0x80,
100 0x80, 0xa0, 0x10, 0x84, 0x08, 0x00, 0x00, 0x88, 0x84, 0x08, 0x04, 0x90,
101 0x13, 0x21, 0x08, 0x8f, 0x00, 0x61, 0xf0, 0xc0, 0x8a, 0x24, 0x44, 0x7c,
102 0x40, 0x20, 0x9f, 0x9f, 0x11, 0xcf, 0xe4, 0x09, 0xc1, 0x02, 0x8a, 0x49,
103 0x20, 0x4f, 0x88, 0x13, 0xe0, 0x60, 0x84, 0x22, 0x21, 0x54, 0x08, 0x0a,
104 0x02, 0x08, 0x90, 0x00, 0x00, 0x24, 0x48, 0x11, 0x22, 0x44, 0x48, 0x92,
105 0x61, 0x24, 0x91, 0x22, 0x44, 0x89, 0x10, 0x48, 0x91, 0x24, 0x8c, 0x44,
106 0x22, 0x22, 0x64, 0x00, 0x02, 0x07, 0xe1, 0x41, 0x31, 0x14, 0x10, 0x80,
107 0x3e, 0x07, 0xc0, 0x88, 0x84, 0x10, 0x05, 0x10, 0x12, 0x21, 0x08, 0x81,
108 0x01, 0x80, 0x00, 0x31, 0x0a, 0x24, 0x7c, 0x42, 0x40, 0x20, 0x90, 0x10,
109 0x10, 0x48, 0x24, 0x09, 0x21, 0x02, 0x52, 0x45, 0x20, 0x48, 0x08, 0x92,
110 0x20, 0x10, 0x84, 0x21, 0x41, 0x54, 0x14, 0x04, 0x04, 0x08, 0x90, 0x00,
111 0x01, 0xe4, 0x48, 0x11, 0x3e, 0x44, 0x48, 0x92, 0x61, 0x24, 0x91, 0x22,
112 0x44, 0x89, 0x0c, 0x48, 0x8a, 0x24, 0x8c, 0x48, 0x44, 0x21, 0x98, 0x00,
113 0x02, 0x02, 0x85, 0x41, 0x49, 0x08, 0x10, 0x80, 0x08, 0x00, 0x00, 0x88,
114 0x84, 0x20, 0x45, 0xf9, 0x12, 0x21, 0x08, 0x81, 0x00, 0x61, 0xf0, 0xc1,
115 0x0a, 0x68, 0x82, 0x42, 0x40, 0x20, 0x90, 0x10, 0x10, 0x48, 0x24, 0x89,
116 0x11, 0x02, 0x52, 0x45, 0x20, 0x48, 0x08, 0x52, 0x12, 0x10, 0x84, 0x21,
117 0x40, 0x88, 0x22, 0x04, 0x08, 0x08, 0x90, 0x00, 0x02, 0x24, 0x48, 0x11,
118 0x20, 0x44, 0x48, 0x92, 0x51, 0x24, 0x91, 0x22, 0x44, 0x89, 0x02, 0x48,
119 0x8a, 0x2a, 0x92, 0x28, 0x42, 0x22, 0x00, 0x00, 0x00, 0x02, 0x85, 0x41,
120 0x49, 0x18, 0x10, 0x80, 0x08, 0x00, 0x01, 0x08, 0x84, 0x20, 0x44, 0x11,
121 0x12, 0x22, 0x08, 0x91, 0x00, 0x18, 0x03, 0x00, 0x09, 0xb0, 0x82, 0x42,
122 0x21, 0x21, 0x10, 0x10, 0x08, 0xc8, 0x24, 0x89, 0x09, 0x02, 0x22, 0x43,
123 0x10, 0x88, 0x04, 0x22, 0x12, 0x10, 0x84, 0x20, 0x80, 0x88, 0x22, 0x04,
124 0x10, 0x08, 0x50, 0x00, 0x02, 0x26, 0x48, 0x93, 0x22, 0x44, 0xc8, 0x92,
125 0x49, 0x24, 0x91, 0x22, 0x64, 0x99, 0x12, 0x49, 0x84, 0x11, 0x21, 0x28,
126 0x82, 0x22, 0x00, 0x00, 0x02, 0x02, 0x83, 0x82, 0x30, 0xe4, 0x10, 0x80,
127 0x00, 0x20, 0x05, 0x07, 0x04, 0x3e, 0x38, 0x10, 0xe1, 0xc2, 0x07, 0x0e,
128 0x24, 0x00, 0x00, 0x01, 0x04, 0x00, 0x82, 0x7c, 0x1e, 0x3e, 0x1f, 0x90,
129 0x07, 0x48, 0x24, 0x71, 0x05, 0xf2, 0x22, 0x41, 0x0f, 0x08, 0x03, 0xd2,
130 0x11, 0xe0, 0x83, 0xc0, 0x80, 0x88, 0x41, 0x04, 0x1f, 0xc8, 0x50, 0x00,
131 0x01, 0xd5, 0x87, 0x0d, 0x1c, 0x43, 0x48, 0x92, 0x45, 0x24, 0x91, 0x1c,
132 0x58, 0x69, 0x0c, 0x66, 0x84, 0x11, 0x21, 0x10, 0xf2, 0x22, 0x00, 0x00,
133 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00,
134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
135 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
136 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
137 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
138 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00,
139 0x00, 0x00, 0x00, 0x10, 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
140 0x00, 0x00, 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
141 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x08, 0x10, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x02,
145 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
146 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00,
147 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
149 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
150 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00,
152 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xac, 0x00, 0x00
157 { 0xff, 0xff, 0xff, 0x00 },
158 { 0x00, 0x00, 0x00, 0xff },
159 { 0xff, 0xff, 0xc0, 0xff },
160 { 0x9f, 0x9f, 0x60, 0xff },
161 { 0x90, 0x00, 0x00, 0xff },
162 { 0x00, 0x90, 0x00, 0xff },
163 { 0x00, 0x00, 0x90, 0xff },
164 { 0xc0, 0xc0, 0xc0, 0xff }
170 { 0x00, 0x00, 0x00, 0x00 },
171 { 0x00, 0x00, 0x00, 0x2e },
172 { 0x00, 0x00, 0x00, 0x48 },
173 { 0x00, 0x00, 0x00, 0x5d },
174 { 0x00, 0x00, 0x00, 0x6f },
175 { 0x00, 0x00, 0x00, 0x80 },
176 { 0x00, 0x00, 0x00, 0x8f },
177 { 0x00, 0x00, 0x00, 0x9e },
178 { 0x00, 0x00, 0x00, 0xac },
179 { 0x00, 0x00, 0x00, 0xb9 },
180 { 0x00, 0x00, 0x00, 0xc5 },
181 { 0x00, 0x00, 0x00, 0xd2 },
182 { 0x00, 0x00, 0x00, 0xdd },
183 { 0x00, 0x00, 0x00, 0xe9 },
184 { 0x00, 0x00, 0x00, 0xf4 },
185 { 0x00, 0x00, 0x00, 0xff }
190 { 0xff, 0xff, 0xff, 0xff },
191 { 0xe0, 0xe0, 0xe0, 0xff },
192 { 0xd0, 0xd0, 0xd0, 0xff },
193 { 0xc0, 0xc0, 0xc0, 0xff },
194 { 0xb0, 0xb0, 0xb0, 0xff },
195 { 0xa0, 0xa0, 0xa0, 0xff },
196 { 0x90, 0x90, 0x90, 0xff },
197 { 0x80, 0x80, 0x80, 0xff },
198 { 0x70, 0x70, 0x70, 0xff },
199 { 0x60, 0x60, 0x60, 0xff },
200 { 0x50, 0x50, 0x50, 0xff },
201 { 0x40, 0x40, 0x40, 0xff },
202 { 0x30, 0x30, 0x30, 0xff },
203 { 0x20, 0x20, 0x20, 0xff },
204 { 0x10, 0x10, 0x10, 0xff },
205 { 0x00, 0x00, 0x00, 0xff }
215 double red1,green1,blue1;
216 double red2,green2,blue2;
220 pow(235/255.0,gamma/100.0),
226 pow(138/255.0,gamma/100.0),
273 unsigned short bitPattern=0;
275 uint byteOffset = rowOffset+(cp>>3);
276 uint bitOffset = cp&7;
280 uint bits=8-bitOffset;
281 if (bits>bitsLeft) bits=bitsLeft;
283 bitPattern|=((
fontRaw[byteOffset]<<bitOffset)&0xff)>>(8-bits);
290 for (xf=0;xf<cw;xf++)
304 const char *p = s.
data();
319 const char *p = s.
data();
329 for (x=xs;x<=xe;x++,j++)
332 if (mask&(1<<(i&0x1f)))
setPixel(x,y,colIndex);
350 for (y=ys;y<=ye;y++,i++)
352 if (mask&(1<<(i&0x1f)))
setPixel(x,y,colIndex);
378 for (yp=y,yi=0;yp<y+
height;yp++,yi++)
379 for (xp=x,xi=0;xp<x+
width;xp++,xi++)
380 if (mask&(1<<((xi+yi)&0x1f)))
386 static bool useTransparency =
Config_getBool(FORMULA_TRANSPARENT);
389 LodePNG_Encoder encoder;
390 LodePNG_Encoder_init(&encoder);
391 uint numCols = mode==0 ? 8 : 16;
396 for (i=0;i<numCols;i++,pPal++)
398 LodePNG_InfoColor_addPalette(&encoder.infoPng.color,
401 encoder.infoPng.color.colorType = 3;
402 encoder.infoRaw.color.colorType = 3;
404 LodePNG_saveFile(buffer, bufferSize, fileName.
data());
406 LodePNG_Encoder_cleanup(&encoder);
413 double *pRed,
double *pGreen,
double *pBlue)
421 v = (l <= 0.5) ? (l * (1.0 + s)) : (l + s - l * s);
427 double fract, vsf, mid1, mid2;
434 vsf = v * sv * fract;
477 const uchar *greyLevels,
const uchar *alphaLevels,
478 int saturation,
int hue,
int gamma)
485 for (i=0;i<width*height;i++)
488 double red,green,blue;
491 pow(greyLevels[i]/255.0,gamma/100.0),
493 r = (int)(red *255.0);
494 g = (int)(green*255.0);
495 b = (int)(blue *255.0);
496 a = alphaLevels ? alphaLevels[i] : 255;
513 LodePNG_Encoder encoder;
514 LodePNG_Encoder_init(&encoder);
515 encoder.infoPng.color.colorType =
m_hasAlpha ? 6 : 2;
516 encoder.infoRaw.color.colorType = 6;
518 LodePNG_saveFile(buffer, bufferSize, fileName.
data());
519 LodePNG_Encoder_cleanup(&encoder);