25 typedef unsigned char Byte;
42 0, 5, 8, 13, 20, 27, 38, 47,
43 50, 54, 58, 65, 72, 76, 83, 87,
44 91, 98,105,112,119,126,133,140,
45 147,154,161,164,167,174,181,188,
46 195,207,216,224,233,242,250,258,
47 267,276,279,286,294,301,312,321,
48 331,339,349,357,365,372,380,389,
49 400,409,418,427,430,434,437,443,
50 450,453,460,467,474,481,488,492,
51 499,506,509,512,518,521,530,537,
52 544,551,557,562,568,571,578,585,
53 594,600,607,613,617,620,624,631
58 5, 3, 5, 7, 7,11, 9, 3,
59 4, 4, 7, 7, 4, 7, 4, 4,
61 7, 7, 7, 7, 7, 7, 7, 7,
62 7, 7, 3, 3, 7, 7, 7, 7,
63 12, 9, 8, 9, 9, 8, 8, 9,
64 9, 3, 7, 8, 7,11, 9,10,
65 8,10, 8, 8, 7, 8, 9,11,
66 9, 9, 9, 3, 4, 3, 6, 7,
67 3, 7, 7, 7, 7, 7, 4, 7,
68 7, 3, 3, 6, 3, 9, 7, 7,
69 7, 6, 5, 6, 3, 7, 7, 9,
70 6, 7, 6, 4, 3, 4, 7, 5
74 0x02, 0x50, 0x01, 0x06, 0x20, 0x60, 0xc6, 0x04, 0x00, 0x00, 0x00, 0x27,
75 0x04, 0x1c, 0x38, 0x11, 0xf1, 0xc7, 0xc7, 0x0e, 0x00, 0x00, 0x00, 0x03,
76 0x81, 0xf0, 0x10, 0x7c, 0x1e, 0x3e, 0x1f, 0x9f, 0x87, 0x88, 0x24, 0x09,
77 0x09, 0x02, 0x02, 0x41, 0x0f, 0x0f, 0x83, 0xc3, 0xe1, 0xe7, 0xf4, 0x24,
78 0x12, 0x22, 0x41, 0x20, 0x9f, 0xce, 0x30, 0x00, 0x10, 0x04, 0x00, 0x01,
79 0x00, 0x30, 0x08, 0x12, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
80 0x00, 0x00, 0x00, 0x00, 0x01, 0xac, 0x00, 0x00, 0x02, 0x51, 0x43, 0x89,
81 0x40, 0x90, 0x49, 0x15, 0x00, 0x00, 0x00, 0x28, 0x9c, 0x22, 0x44, 0x31,
82 0x02, 0x20, 0x48, 0x91, 0x00, 0x00, 0x00, 0x04, 0x46, 0x08, 0x28, 0x42,
83 0x21, 0x21, 0x10, 0x10, 0x08, 0x48, 0x24, 0x09, 0x11, 0x03, 0x06, 0x61,
84 0x10, 0x88, 0x44, 0x22, 0x12, 0x10, 0x84, 0x24, 0x12, 0x22, 0x22, 0x20,
85 0x80, 0x4a, 0x11, 0x00, 0x20, 0x04, 0x00, 0x01, 0x00, 0x40, 0x08, 0x00,
86 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
87 0x02, 0x22, 0x00, 0x00, 0x02, 0x51, 0x45, 0x49, 0x40, 0x90, 0x89, 0x0a,
88 0x00, 0x00, 0x00, 0x48, 0x84, 0x02, 0x04, 0x51, 0x02, 0x00, 0x88, 0x91,
89 0x00, 0x00, 0x00, 0x04, 0x44, 0xd4, 0x28, 0x42, 0x40, 0x20, 0x90, 0x10,
90 0x10, 0x08, 0x24, 0x09, 0x21, 0x03, 0x06, 0x51, 0x20, 0x48, 0x48, 0x12,
91 0x12, 0x00, 0x84, 0x22, 0x22, 0x22, 0x22, 0x11, 0x00, 0x89, 0x12, 0x80,
92 0x31, 0xc5, 0x87, 0x0d, 0x1c, 0xe3, 0x4b, 0x12, 0x49, 0x29, 0x16, 0x1c,
93 0x58, 0x69, 0x4c, 0xe8, 0x91, 0x44, 0x61, 0x44, 0xf2, 0x22, 0x00, 0x00,
94 0x02, 0x07, 0xe5, 0x06, 0x80, 0x60, 0x10, 0x95, 0x08, 0x00, 0x00, 0x48,
95 0x84, 0x04, 0x18, 0x51, 0xe2, 0xc0, 0x87, 0x11, 0x24, 0x18, 0x03, 0x00,
96 0x89, 0x24, 0x44, 0x42, 0x40, 0x20, 0x90, 0x10, 0x10, 0x08, 0x24, 0x09,
97 0x41, 0x02, 0x8a, 0x51, 0x20, 0x48, 0x48, 0x12, 0x11, 0x80, 0x84, 0x22,
98 0x21, 0x24, 0x14, 0x11, 0x01, 0x09, 0x14, 0x40, 0x02, 0x26, 0x48, 0x93,
99 0x22, 0x44, 0xcc, 0x92, 0x51, 0x36, 0x99, 0x22, 0x64, 0x99, 0x92, 0x48,
100 0x91, 0x44, 0x52, 0x44, 0x12, 0x22, 0x00, 0x00, 0x02, 0x01, 0x43, 0x80,
101 0x80, 0xa0, 0x10, 0x84, 0x08, 0x00, 0x00, 0x88, 0x84, 0x08, 0x04, 0x90,
102 0x13, 0x21, 0x08, 0x8f, 0x00, 0x61, 0xf0, 0xc0, 0x8a, 0x24, 0x44, 0x7c,
103 0x40, 0x20, 0x9f, 0x9f, 0x11, 0xcf, 0xe4, 0x09, 0xc1, 0x02, 0x8a, 0x49,
104 0x20, 0x4f, 0x88, 0x13, 0xe0, 0x60, 0x84, 0x22, 0x21, 0x54, 0x08, 0x0a,
105 0x02, 0x08, 0x90, 0x00, 0x00, 0x24, 0x48, 0x11, 0x22, 0x44, 0x48, 0x92,
106 0x61, 0x24, 0x91, 0x22, 0x44, 0x89, 0x10, 0x48, 0x91, 0x24, 0x8c, 0x44,
107 0x22, 0x22, 0x64, 0x00, 0x02, 0x07, 0xe1, 0x41, 0x31, 0x14, 0x10, 0x80,
108 0x3e, 0x07, 0xc0, 0x88, 0x84, 0x10, 0x05, 0x10, 0x12, 0x21, 0x08, 0x81,
109 0x01, 0x80, 0x00, 0x31, 0x0a, 0x24, 0x7c, 0x42, 0x40, 0x20, 0x90, 0x10,
110 0x10, 0x48, 0x24, 0x09, 0x21, 0x02, 0x52, 0x45, 0x20, 0x48, 0x08, 0x92,
111 0x20, 0x10, 0x84, 0x21, 0x41, 0x54, 0x14, 0x04, 0x04, 0x08, 0x90, 0x00,
112 0x01, 0xe4, 0x48, 0x11, 0x3e, 0x44, 0x48, 0x92, 0x61, 0x24, 0x91, 0x22,
113 0x44, 0x89, 0x0c, 0x48, 0x8a, 0x24, 0x8c, 0x48, 0x44, 0x21, 0x98, 0x00,
114 0x02, 0x02, 0x85, 0x41, 0x49, 0x08, 0x10, 0x80, 0x08, 0x00, 0x00, 0x88,
115 0x84, 0x20, 0x45, 0xf9, 0x12, 0x21, 0x08, 0x81, 0x00, 0x61, 0xf0, 0xc1,
116 0x0a, 0x68, 0x82, 0x42, 0x40, 0x20, 0x90, 0x10, 0x10, 0x48, 0x24, 0x89,
117 0x11, 0x02, 0x52, 0x45, 0x20, 0x48, 0x08, 0x52, 0x12, 0x10, 0x84, 0x21,
118 0x40, 0x88, 0x22, 0x04, 0x08, 0x08, 0x90, 0x00, 0x02, 0x24, 0x48, 0x11,
119 0x20, 0x44, 0x48, 0x92, 0x51, 0x24, 0x91, 0x22, 0x44, 0x89, 0x02, 0x48,
120 0x8a, 0x2a, 0x92, 0x28, 0x42, 0x22, 0x00, 0x00, 0x00, 0x02, 0x85, 0x41,
121 0x49, 0x18, 0x10, 0x80, 0x08, 0x00, 0x01, 0x08, 0x84, 0x20, 0x44, 0x11,
122 0x12, 0x22, 0x08, 0x91, 0x00, 0x18, 0x03, 0x00, 0x09, 0xb0, 0x82, 0x42,
123 0x21, 0x21, 0x10, 0x10, 0x08, 0xc8, 0x24, 0x89, 0x09, 0x02, 0x22, 0x43,
124 0x10, 0x88, 0x04, 0x22, 0x12, 0x10, 0x84, 0x20, 0x80, 0x88, 0x22, 0x04,
125 0x10, 0x08, 0x50, 0x00, 0x02, 0x26, 0x48, 0x93, 0x22, 0x44, 0xc8, 0x92,
126 0x49, 0x24, 0x91, 0x22, 0x64, 0x99, 0x12, 0x49, 0x84, 0x11, 0x21, 0x28,
127 0x82, 0x22, 0x00, 0x00, 0x02, 0x02, 0x83, 0x82, 0x30, 0xe4, 0x10, 0x80,
128 0x00, 0x20, 0x05, 0x07, 0x04, 0x3e, 0x38, 0x10, 0xe1, 0xc2, 0x07, 0x0e,
129 0x24, 0x00, 0x00, 0x01, 0x04, 0x00, 0x82, 0x7c, 0x1e, 0x3e, 0x1f, 0x90,
130 0x07, 0x48, 0x24, 0x71, 0x05, 0xf2, 0x22, 0x41, 0x0f, 0x08, 0x03, 0xd2,
131 0x11, 0xe0, 0x83, 0xc0, 0x80, 0x88, 0x41, 0x04, 0x1f, 0xc8, 0x50, 0x00,
132 0x01, 0xd5, 0x87, 0x0d, 0x1c, 0x43, 0x48, 0x92, 0x45, 0x24, 0x91, 0x1c,
133 0x58, 0x69, 0x0c, 0x66, 0x84, 0x11, 0x21, 0x10, 0xf2, 0x22, 0x00, 0x00,
134 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x20, 0x00, 0x00,
135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
136 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
137 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
138 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
139 0x00, 0x00, 0x40, 0x02, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00,
140 0x00, 0x00, 0x00, 0x10, 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
141 0x00, 0x00, 0x09, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
142 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
144 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
145 0x00, 0x08, 0x10, 0x1f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x02,
146 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
147 0x02, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 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, 0x00, 0x00, 0x00,
151 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x00,
152 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00,
153 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0xac, 0x00, 0x00
158 { 0xff, 0xff, 0xff, 0x00 },
159 { 0x00, 0x00, 0x00, 0xff },
160 { 0xff, 0xff, 0xc0, 0xff },
161 { 0x9f, 0x9f, 0x60, 0xff },
162 { 0x90, 0x00, 0x00, 0xff },
163 { 0x00, 0x90, 0x00, 0xff },
164 { 0x00, 0x00, 0x90, 0xff },
165 { 0xc0, 0xc0, 0xc0, 0xff }
171 { 0x00, 0x00, 0x00, 0x00 },
172 { 0x00, 0x00, 0x00, 0x2e },
173 { 0x00, 0x00, 0x00, 0x48 },
174 { 0x00, 0x00, 0x00, 0x5d },
175 { 0x00, 0x00, 0x00, 0x6f },
176 { 0x00, 0x00, 0x00, 0x80 },
177 { 0x00, 0x00, 0x00, 0x8f },
178 { 0x00, 0x00, 0x00, 0x9e },
179 { 0x00, 0x00, 0x00, 0xac },
180 { 0x00, 0x00, 0x00, 0xb9 },
181 { 0x00, 0x00, 0x00, 0xc5 },
182 { 0x00, 0x00, 0x00, 0xd2 },
183 { 0x00, 0x00, 0x00, 0xdd },
184 { 0x00, 0x00, 0x00, 0xe9 },
185 { 0x00, 0x00, 0x00, 0xf4 },
186 { 0x00, 0x00, 0x00, 0xff }
191 { 0xff, 0xff, 0xff, 0xff },
192 { 0xe0, 0xe0, 0xe0, 0xff },
193 { 0xd0, 0xd0, 0xd0, 0xff },
194 { 0xc0, 0xc0, 0xc0, 0xff },
195 { 0xb0, 0xb0, 0xb0, 0xff },
196 { 0xa0, 0xa0, 0xa0, 0xff },
197 { 0x90, 0x90, 0x90, 0xff },
198 { 0x80, 0x80, 0x80, 0xff },
199 { 0x70, 0x70, 0x70, 0xff },
200 { 0x60, 0x60, 0x60, 0xff },
201 { 0x50, 0x50, 0x50, 0xff },
202 { 0x40, 0x40, 0x40, 0xff },
203 { 0x30, 0x30, 0x30, 0xff },
204 { 0x20, 0x20, 0x20, 0xff },
205 { 0x10, 0x10, 0x10, 0xff },
206 { 0x00, 0x00, 0x00, 0xff }
216 double red1,green1,blue1;
217 double red2,green2,blue2;
221 pow(235/255.0,gamma/100.0),
227 pow(138/255.0,gamma/100.0),
231 palette[2].
red = (int)(red1 * 255.0);
232 palette[2].
green = (int)(green1 * 255.0);
233 palette[2].
blue = (int)(blue1 * 255.0);
235 palette[3].
red = (int)(red2 * 255.0);
236 palette[3].
green = (int)(green2 * 255.0);
237 palette[3].
blue = (int)(blue2 * 255.0);
239 data =
new uchar[w*h];
252 if (x>=0 && x<width && y>=0 && y<
height)
258 if (x>=0 && x<width && y>=0 && y<
height)
274 unsigned short bitPattern=0;
276 int byteOffset = rowOffset+(cp>>3);
277 int bitOffset = cp&7;
281 int bits=8-bitOffset;
282 if (bits>bitsLeft) bits=bitsLeft;
284 bitPattern|=((
fontRaw[byteOffset]<<bitOffset)&0xff)>>(8-bits);
291 for (xf=0;xf<cw;xf++)
328 for (x=xs;x<=xe;x++,j++)
331 if (mask&(1<<(i&0x1f)))
setPixel(x,y,colIndex);
349 for (y=ys;y<=ye;y++,i++)
351 if (mask&(1<<(i&0x1f)))
setPixel(x,y,colIndex);
377 for (yp=y,yi=0;yp<y+lheight;yp++,yi++)
378 for (xp=x,xi=0;xp<x+lwidth;xp++,xi++)
379 if (mask&(1<<((xi+yi)&0x1f)))
386 GifEncoder gifenc(
data,
387 mode==0 ? palette : palette2,
391 QFile file(fileName);
392 if (file.open(IO_WriteOnly))
394 gifenc.writeGIF(file);
402 static bool useTransparency =
Config_getBool(FORMULA_TRANSPARENT);
407 int numCols = mode==0 ? 8 : 16;
408 Color *pPal = mode==0 ? palette :
409 useTransparency ? palette2 :
412 for (i=0;i<numCols;i++,pPal++)
429 double *pRed,
double *pGreen,
double *pBlue)
437 v = (l <= 0.5) ? (l * (1.0 + s)) : (l + s - l * s);
443 double fract, vsf, mid1, mid2;
450 vsf = v * sv * fract;
493 const uchar *greyLevels,
const uchar *alphaLevels,
494 int saturation,
int hue,
int gamma)
499 m_data = (uchar*)malloc(width*height*4);
501 for (i=0;i<width*height;i++)
504 double red,green,blue;
507 pow(greyLevels[i]/255.0,gamma/100.0),
509 r = (int)(red *255.0);
510 g = (int)(green*255.0);
511 b = (int)(blue *255.0);
512 a = alphaLevels ? alphaLevels[i] : 255;