qgrayraster.c

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/painting/qgrayraster.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2 typedef int TCoord;-
3 typedef int TPos;-
4 typedef int TArea;-
5 typedef struct TCell_* PCell;-
6-
7 typedef struct TCell_-
8 {-
9 int x;-
10 int cover;-
11 TArea area;-
12 PCell next;-
13-
14 } TCell;-
15-
16-
17 typedef struct TWorker_-
18 {-
19 TCoord ex, ey;-
20 TPos min_ex, max_ex;-
21 TPos min_ey, max_ey;-
22 TPos count_ex, count_ey;-
23-
24 TArea area;-
25 int cover;-
26 int invalid;-
27-
28 PCell cells;-
29 int max_cells;-
30 int num_cells;-
31-
32 TCoord cx, cy;-
33 TPos x, y;-
34-
35 TPos last_ey;-
36-
37 QT_FT_Vector bez_stack[32 * 3 + 1];-
38 int lev_stack[32];-
39-
40 QT_FT_Outline outline;-
41 QT_FT_Bitmap target;-
42 QT_FT_BBox clip_box;-
43-
44 QT_FT_Span gray_spans[256];-
45 int num_gray_spans;-
46-
47 QT_FT_SpanFunc render_span;-
48 void* render_span_data;-
49-
50 int band_size;-
51 int band_shoot;-
52 int conic_level;-
53 int cubic_level;-
54-
55 jmp_buf jump_buffer;-
56-
57 void* buffer;-
58 long buffer_size;-
59-
60 PCell* ycells;-
61 int ycount;-
62-
63 int skip_spans;-
64 } TWorker, *PWorker;-
65-
66-
67 typedef struct TRaster_-
68 {-
69 void* buffer;-
70 long buffer_size;-
71 long buffer_allocated_size;-
72 int band_size;-
73 void* memory;-
74 PWorker worker;-
75-
76 } TRaster, *PRaster;-
77-
78 int q_gray_rendered_spans(TRaster *raster)-
79 {-
80 if ( raster
rasterDescription
TRUEnever evaluated
FALSEnever evaluated
&& raster->worker
raster->workerDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
81 return
never executed: return raster->worker->skip_spans > 0 ? 0 : -raster->worker->skip_spans;
raster->worker->skip_spans > 0 ? 0 : -raster->worker->skip_spans;
never executed: return raster->worker->skip_spans > 0 ? 0 : -raster->worker->skip_spans;
0
82 return
never executed: return 0;
0;
never executed: return 0;
0
83 }-
84-
85-
86-
87-
88-
89 static void-
90 gray_init_cells( PWorker worker, void* buffer,-
91 long byte_size )-
92 {-
93 (*worker).buffer = buffer;-
94 (*worker).buffer_size = byte_size;-
95-
96 (*worker).ycells = (PCell*) buffer;-
97 (*worker).cells = ((void *)0);-
98 (*worker).max_cells = 0;-
99 (*worker).num_cells = 0;-
100 (*worker).area = 0;-
101 (*worker).cover = 0;-
102 (*worker).invalid = 1;-
103 }
never executed: end of block
0
104-
105-
106-
107-
108-
109-
110 static void-
111 gray_compute_cbox( PWorker worker )-
112 {-
113 QT_FT_Outline* outline = &(*worker).outline;-
114 QT_FT_Vector* vec = outline->points;-
115 QT_FT_Vector* limit = vec + outline->n_points;-
116-
117-
118 if ( outline->n_points <= 0
outline->n_points <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
119 {-
120 (*worker).min_ex = (*worker).max_ex = 0;-
121 (*worker).min_ey = (*worker).max_ey = 0;-
122 return;
never executed: return;
0
123 }-
124-
125 (*worker).min_ex = (*worker).max_ex = vec->x;-
126 (*worker).min_ey = (*worker).max_ey = vec->y;-
127-
128 vec++;-
129-
130 for ( ; vec < limit
vec < limitDescription
TRUEnever evaluated
FALSEnever evaluated
; vec++ )
0
131 {-
132 TPos x = vec->x;-
133 TPos y = vec->y;-
134-
135-
136 if ( x < (*worker).min_ex
x < (*worker).min_exDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).min_ex = x;
worker).min_ex = x;
never executed: (*worker).min_ex = x;
0
137 if ( x > (*worker).max_ex
x > (*worker).max_exDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).max_ex = x;
worker).max_ex = x;
never executed: (*worker).max_ex = x;
0
138 if ( y < (*worker).min_ey
y < (*worker).min_eyDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).min_ey = y;
worker).min_ey = y;
never executed: (*worker).min_ey = y;
0
139 if ( y > (*worker).max_ey
y > (*worker).max_eyDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).max_ey = y;
worker).max_ey = y;
never executed: (*worker).max_ey = y;
0
140 }
never executed: end of block
0
141-
142-
143 (*worker).min_ex = (*worker).min_ex >> 6;-
144 (*worker).min_ey = (*worker).min_ey >> 6;-
145 (*worker).max_ex = ( (*worker).max_ex + 63 ) >> 6;-
146 (*worker).max_ey = ( (*worker).max_ey + 63 ) >> 6;-
147 }
never executed: end of block
0
148-
149-
150-
151-
152-
153-
154 static void-
155 gray_record_cell( PWorker worker )-
156 {-
157 PCell *pcell, cell;-
158 int x = (*worker).ex;-
159-
160 if ( (*
(*worker).invalidDescription
TRUEnever evaluated
FALSEnever evaluated
worker).invalid
(*worker).invalidDescription
TRUEnever evaluated
FALSEnever evaluated
|| !( (*worker).area | (*worker).cover )
!( (*worker).a...orker).cover )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
161 return;
never executed: return;
0
162-
163 if ( x > (*worker).max_ex
x > (*worker).max_exDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
164 x = (*worker).max_ex;
never executed: x = (*worker).max_ex;
0
165-
166 pcell = &(*worker).ycells[(*worker).ey];-
167-
168 for (;;)-
169 {-
170 cell = *pcell;-
171 if ( cell == ((void *)0)
cell == ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
|| cell->x > x
cell->x > xDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
172 break;
never executed: break;
0
173-
174 if ( cell->x == x
cell->x == xDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
175 cell->area += (*worker).area;-
176 cell->cover += (*worker).cover;-
177 return;
never executed: return;
0
178 }-
179-
180 pcell = &cell->next;-
181 }
never executed: end of block
0
182-
183 if ( (*
(*worker).num_...ker).max_cellsDescription
TRUEnever evaluated
FALSEnever evaluated
worker).num_cells >= (*worker).max_cells
(*worker).num_...ker).max_cellsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
184 longjmp( (*worker).jump_buffer, 1 );
never executed: longjmp( (*worker).jump_buffer, 1 );
0
185-
186 cell = (*worker).cells + (*worker).num_cells++;-
187 cell->x = x;-
188 cell->area = (*worker).area;-
189 cell->cover = (*worker).cover;-
190-
191 cell->next = *pcell;-
192 *pcell = cell;-
193 }
never executed: end of block
0
194-
195-
196-
197-
198-
199-
200 static void-
201 gray_set_cell( PWorker worker, TCoord ex,-
202 TCoord ey )-
203 {-
204 ey -= (*worker).min_ey;-
205-
206 if ( ex > (*worker).max_ex
ex > (*worker).max_exDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
207 ex = (*worker).max_ex;
never executed: ex = (*worker).max_ex;
0
208-
209 ex -= (*worker).min_ex;-
210 if ( ex < 0
ex < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
211 ex = -1;
never executed: ex = -1;
0
212-
213-
214 if ( ex != (*worker).ex
ex != (*worker).exDescription
TRUEnever evaluated
FALSEnever evaluated
|| ey != (*worker).ey
ey != (*worker).eyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
215 {-
216-
217 if ( !(*worker).invalid
!(*worker).invalidDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
218 gray_record_cell( worker );
never executed: gray_record_cell( worker );
0
219-
220 (*worker).area = 0;-
221 (*worker).cover = 0;-
222 (*worker).ex = ex;-
223 (*worker).ey = ey;-
224 }
never executed: end of block
0
225-
226 (*worker).invalid = ( (
(unsigned)ey >...rker).count_eyDescription
TRUEnever evaluated
FALSEnever evaluated
unsigned)ey >= (unsigned)(*worker).count_ey
(unsigned)ey >...rker).count_eyDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
227 ex >= (*worker).count_ex
ex >= (*worker).count_exDescription
TRUEnever evaluated
FALSEnever evaluated
);
0
228 }
never executed: end of block
0
229-
230-
231-
232-
233-
234-
235 static void-
236 gray_start_cell( PWorker worker, TCoord ex,-
237 TCoord ey )-
238 {-
239 if ( ex > (*worker).max_ex
ex > (*worker).max_exDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
240 ex = (TCoord)( (*worker).max_ex );
never executed: ex = (TCoord)( (*worker).max_ex );
0
241-
242 if ( ex < (*worker).min_ex
ex < (*worker).min_exDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
243 ex = (TCoord)( (*worker).min_ex - 1 );
never executed: ex = (TCoord)( (*worker).min_ex - 1 );
0
244-
245 (*worker).area = 0;-
246 (*worker).cover = 0;-
247 (*worker).ex = ex - (*worker).min_ex;-
248 (*worker).ey = ey - (*worker).min_ey;-
249 (*worker).last_ey = ( (TPos)(ey) * ( 1 << 8 ) );-
250 (*worker).invalid = 0;-
251-
252 gray_set_cell( worker, ex, ey );-
253 }
never executed: end of block
0
254-
255-
256-
257-
258-
259-
260 static void-
261 gray_render_scanline( PWorker worker, TCoord ey,-
262 TPos x1,-
263 TCoord y1,-
264 TPos x2,-
265 TCoord y2 )-
266 {-
267 TCoord ex1, ex2, fx1, fx2, delta;-
268 int p, first, dx;-
269 int incr, lift, mod, rem;-
270-
271-
272 dx = x2 - x1;-
273-
274 ex1 = ( (TCoord)( (x1) >> 8 ) );-
275 ex2 = ( (TCoord)( (x2) >> 8 ) );-
276 fx1 = (TCoord)( x1 - ( (TPos)(ex1) * ( 1 << 8 ) ) );-
277 fx2 = (TCoord)( x2 - ( (TPos)(ex2) * ( 1 << 8 ) ) );-
278-
279-
280 if ( y1 == y2
y1 == y2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
281 {-
282 gray_set_cell( worker, ex2, ey );-
283 return;
never executed: return;
0
284 }-
285-
286-
287-
288 if ( ex1 == ex2
ex1 == ex2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
289 {-
290 delta = y2 - y1;-
291 (*worker).area += (TArea)( fx1 + fx2 ) * delta;-
292 (*worker).cover += delta;-
293 return;
never executed: return;
0
294 }-
295-
296-
297-
298-
299 p = ( ( 1L << 8 ) - fx1 ) * ( y2 - y1 );-
300 first = ( 1L << 8 );-
301 incr = 1;-
302-
303 if ( dx < 0
dx < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
304 {-
305 p = fx1 * ( y2 - y1 );-
306 first = 0;-
307 incr = -1;-
308 dx = -dx;-
309 }
never executed: end of block
0
310-
311 delta = (TCoord)( p / dx );-
312 mod = (TCoord)( p % dx );-
313 if ( mod < 0
mod < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
314 {-
315 delta--;-
316 mod += (TCoord)dx;-
317 }
never executed: end of block
0
318-
319 (*worker).area += (TArea)( fx1 + first ) * delta;-
320 (*worker).cover += delta;-
321-
322 ex1 += incr;-
323 gray_set_cell( worker, ex1, ey );-
324 y1 += delta;-
325-
326 if ( ex1 != ex2
ex1 != ex2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
327 {-
328 p = ( 1L << 8 ) * ( y2 - y1 + delta );-
329 lift = (TCoord)( p / dx );-
330 rem = (TCoord)( p % dx );-
331 if ( rem < 0
rem < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
332 {-
333 lift--;-
334 rem += (TCoord)dx;-
335 }
never executed: end of block
0
336-
337 mod -= (int)dx;-
338-
339 while ( ex1 != ex2
ex1 != ex2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
340 {-
341 delta = lift;-
342 mod += rem;-
343 if ( mod >= 0
mod >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
344 {-
345 mod -= (TCoord)dx;-
346 delta++;-
347 }
never executed: end of block
0
348-
349 (*worker).area += (TArea)( 1L << 8 ) * delta;-
350 (*worker).cover += delta;-
351 y1 += delta;-
352 ex1 += incr;-
353 gray_set_cell( worker, ex1, ey );-
354 }
never executed: end of block
0
355 }
never executed: end of block
0
356-
357 delta = y2 - y1;-
358 (*worker).area += (TArea)( fx2 + ( 1L << 8 ) - first ) * delta;-
359 (*worker).cover += delta;-
360 }
never executed: end of block
0
361-
362-
363-
364-
365-
366-
367 static void-
368 gray_render_line( PWorker worker, TPos to_x,-
369 TPos to_y )-
370 {-
371 TCoord ey1, ey2, fy1, fy2;-
372 TPos dx, dy, x, x2;-
373 int p, first;-
374 int delta, rem, mod, lift, incr;-
375-
376-
377 ey1 = ( (TCoord)( ((*worker).last_ey) >> 8 ) );-
378 ey2 = ( (TCoord)( (to_y) >> 8 ) );-
379 fy1 = (TCoord)( (*worker).y - (*worker).last_ey );-
380 fy2 = (TCoord)( to_y - ( (TPos)(ey2) * ( 1 << 8 ) ) );-
381-
382 dx = to_x - (*worker).x;-
383 dy = to_y - (*worker).y;-
384-
385-
386-
387-
388-
389 {-
390 TCoord min, max;-
391-
392-
393 min = ey1;-
394 max = ey2;-
395 if ( ey1 > ey2
ey1 > ey2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
396 {-
397 min = ey2;-
398 max = ey1;-
399 }
never executed: end of block
0
400 if ( min >= (*worker).max_ey
min >= (*worker).max_eyDescription
TRUEnever evaluated
FALSEnever evaluated
|| max < (*worker).min_ey
max < (*worker).min_eyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
401 goto
never executed: goto End;
End;
never executed: goto End;
0
402 }-
403-
404-
405 if ( ey1 == ey2
ey1 == ey2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
406 {-
407 gray_render_scanline( worker, ey1, (*worker).x, fy1, to_x, fy2 );-
408 goto
never executed: goto End;
End;
never executed: goto End;
0
409 }-
410-
411-
412 if ( dx == 0
dx == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
413 {-
414 TCoord ex = ( (TCoord)( ((*worker).x) >> 8 ) );-
415 TCoord two_fx = (TCoord)( ( (*worker).x - ( (TPos)(ex) * ( 1 << 8 ) ) ) << 1 );-
416 TPos area, max_ey1;-
417-
418-
419 first = ( 1L << 8 );-
420 if ( dy < 0
dy < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
421 first = 0;
never executed: first = 0;
0
422-
423 delta = (int)( first - fy1 );-
424 (*worker).area += (TArea)two_fx * delta;-
425 (*worker).cover += delta;-
426-
427 delta = (int)( first + first - ( 1L << 8 ) );-
428 area = (TArea)two_fx * delta;-
429 max_ey1 = (*worker).count_ey + (*worker).min_ey;-
430 if (dy < 0
dy < 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
431 if (ey1 > max_ey1
ey1 > max_ey1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
432 ey1 = (
(max_ey1 > ey2)Description
TRUEnever evaluated
FALSEnever evaluated
max_ey1 > ey2)
(max_ey1 > ey2)Description
TRUEnever evaluated
FALSEnever evaluated
? max_ey1 : ey2;
0
433 gray_set_cell( &(*worker), ex, ey1 );-
434 }
never executed: end of block
else {
0
435 ey1--;-
436 gray_set_cell( &(*worker), ex, ey1 );-
437 }
never executed: end of block
0
438 while ( ey1 > ey2
ey1 > ey2Description
TRUEnever evaluated
FALSEnever evaluated
&& ey1 >= (*worker).min_ey
ey1 >= (*worker).min_eyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
439 {-
440 (*worker).area += area;-
441 (*worker).cover += delta;-
442 ey1--;-
443-
444 gray_set_cell( &(*worker), ex, ey1 );-
445 }
never executed: end of block
0
446 if (ey1 != ey2
ey1 != ey2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
447 ey1 = ey2;-
448 gray_set_cell( &(*worker), ex, ey1 );-
449 }
never executed: end of block
0
450 }
never executed: end of block
else {
0
451 if (ey1 < (*worker).min_ey
ey1 < (*worker).min_eyDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
452 ey1 = ((*
((*worker).min_ey < ey2)Description
TRUEnever evaluated
FALSEnever evaluated
worker).min_ey < ey2)
((*worker).min_ey < ey2)Description
TRUEnever evaluated
FALSEnever evaluated
? (*worker).min_ey : ey2;
0
453 gray_set_cell( &(*worker), ex, ey1 );-
454 }
never executed: end of block
else {
0
455 ey1++;-
456 gray_set_cell( &(*worker), ex, ey1 );-
457 }
never executed: end of block
0
458 while ( ey1 < ey2
ey1 < ey2Description
TRUEnever evaluated
FALSEnever evaluated
&& ey1 < max_ey1
ey1 < max_ey1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
459 {-
460 (*worker).area += area;-
461 (*worker).cover += delta;-
462 ey1++;-
463-
464 gray_set_cell( &(*worker), ex, ey1 );-
465 }
never executed: end of block
0
466 if (ey1 != ey2
ey1 != ey2Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
467 ey1 = ey2;-
468 gray_set_cell( &(*worker), ex, ey1 );-
469 }
never executed: end of block
0
470 }
never executed: end of block
0
471-
472 delta = (int)( fy2 - ( 1L << 8 ) + first );-
473 (*worker).area += (TArea)two_fx * delta;-
474 (*worker).cover += delta;-
475-
476 goto
never executed: goto End;
End;
never executed: goto End;
0
477 }-
478-
479-
480 p = ( ( 1L << 8 ) - fy1 ) * dx;-
481 first = ( 1L << 8 );-
482 incr = 1;-
483-
484 if ( dy < 0
dy < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
485 {-
486 p = fy1 * dx;-
487 first = 0;-
488 incr = -1;-
489 dy = -dy;-
490 }
never executed: end of block
0
491-
492 delta = (int)( p / dy );-
493 mod = (int)( p % dy );-
494 if ( mod < 0
mod < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
495 {-
496 delta--;-
497 mod += (TCoord)dy;-
498 }
never executed: end of block
0
499-
500 x = (*worker).x + delta;-
501 gray_render_scanline( worker, ey1, (*worker).x, fy1, x, (TCoord)first );-
502-
503 ey1 += incr;-
504 gray_set_cell( worker, ( (TCoord)( (x) >> 8 ) ), ey1 );-
505-
506 if ( ey1 != ey2
ey1 != ey2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
507 {-
508 p = ( 1L << 8 ) * dx;-
509 lift = (int)( p / dy );-
510 rem = (int)( p % dy );-
511 if ( rem < 0
rem < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
512 {-
513 lift--;-
514 rem += (int)dy;-
515 }
never executed: end of block
0
516 mod -= (int)dy;-
517-
518 while ( ey1 != ey2
ey1 != ey2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
519 {-
520 delta = lift;-
521 mod += rem;-
522 if ( mod >= 0
mod >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
523 {-
524 mod -= (int)dy;-
525 delta++;-
526 }
never executed: end of block
0
527-
528 x2 = x + delta;-
529 gray_render_scanline( worker, ey1, x,-
530 (TCoord)( ( 1L << 8 ) - first ), x2,-
531 (TCoord)first );-
532 x = x2;-
533-
534 ey1 += incr;-
535 gray_set_cell( worker, ( (TCoord)( (x) >> 8 ) ), ey1 );-
536 }
never executed: end of block
0
537 }
never executed: end of block
0
538-
539 gray_render_scanline( worker, ey1, x,-
540 (TCoord)( ( 1L << 8 ) - first ), to_x,-
541 fy2 );-
542-
543 End:
code before this statement never executed: End:
0
544 (*worker).x = to_x;-
545 (*worker).y = to_y;-
546 (*worker).last_ey = ( (TPos)(ey2) * ( 1 << 8 ) );-
547 }
never executed: end of block
0
548-
549-
550 static void-
551 gray_split_conic( QT_FT_Vector* base )-
552 {-
553 TPos a, b;-
554-
555-
556 base[4].x = base[2].x;-
557 b = base[1].x;-
558 a = base[3].x = ( base[2].x + b ) / 2;-
559 b = base[1].x = ( base[0].x + b ) / 2;-
560 base[2].x = ( a + b ) / 2;-
561-
562 base[4].y = base[2].y;-
563 b = base[1].y;-
564 a = base[3].y = ( base[2].y + b ) / 2;-
565 b = base[1].y = ( base[0].y + b ) / 2;-
566 base[2].y = ( a + b ) / 2;-
567 }
never executed: end of block
0
568-
569-
570 static void-
571 gray_render_conic( PWorker worker, const QT_FT_Vector* control,-
572 const QT_FT_Vector* to )-
573 {-
574 TPos dx, dy;-
575 int top, level;-
576 int* levels;-
577 QT_FT_Vector* arc;-
578-
579-
580 dx = ( ((*worker).x) >> ( 8 - 6 ) ) + to->x - ( control->x << 1 );-
581 if ( dx < 0
dx < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
582 dx = -dx;
never executed: dx = -dx;
0
583 dy = ( ((*worker).y) >> ( 8 - 6 ) ) + to->y - ( control->y << 1 );-
584 if ( dy < 0
dy < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
585 dy = -dy;
never executed: dy = -dy;
0
586 if ( dx < dy
dx < dyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
587 dx = dy;
never executed: dx = dy;
0
588-
589 level = 1;-
590 dx = dx / (*worker).conic_level;-
591 while ( dx > 0
dx > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
592 {-
593 dx >>= 2;-
594 level++;-
595 }
never executed: end of block
0
596-
597-
598 if ( level <= 1
level <= 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
599 {-
600-
601-
602 TPos to_x, to_y, mid_x, mid_y;-
603-
604-
605 to_x = ( (to->x) * ( 1 << ( 8 - 6 ) ) );-
606 to_y = ( (to->y) * ( 1 << ( 8 - 6 ) ) );-
607 mid_x = ( (*worker).x + to_x + 2 * ( (control->x) * ( 1 << ( 8 - 6 ) ) ) ) / 4;-
608 mid_y = ( (*worker).y + to_y + 2 * ( (control->y) * ( 1 << ( 8 - 6 ) ) ) ) / 4;-
609-
610 gray_render_line( worker, mid_x, mid_y );-
611 gray_render_line( worker, to_x, to_y );-
612-
613 return;
never executed: return;
0
614 }-
615-
616 arc = (*worker).bez_stack;-
617 levels = (*worker).lev_stack;-
618 top = 0;-
619 levels[0] = level;-
620-
621 arc[0].x = ( (to->x) * ( 1 << ( 8 - 6 ) ) );-
622 arc[0].y = ( (to->y) * ( 1 << ( 8 - 6 ) ) );-
623 arc[1].x = ( (control->x) * ( 1 << ( 8 - 6 ) ) );-
624 arc[1].y = ( (control->y) * ( 1 << ( 8 - 6 ) ) );-
625 arc[2].x = (*worker).x;-
626 arc[2].y = (*worker).y;-
627-
628 while ( top >= 0
top >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
629 {-
630 level = levels[top];-
631 if ( level > 1
level > 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
632 {-
633-
634 TPos min, max, y;-
635-
636-
637 min = max = arc[0].y;-
638-
639 y = arc[1].y;-
640 if ( y < min
y < minDescription
TRUEnever evaluated
FALSEnever evaluated
) min = y;
never executed: min = y;
0
641 if ( y > max
y > maxDescription
TRUEnever evaluated
FALSEnever evaluated
) max = y;
never executed: max = y;
0
642-
643 y = arc[2].y;-
644 if ( y < min
y < minDescription
TRUEnever evaluated
FALSEnever evaluated
) min = y;
never executed: min = y;
0
645 if ( y > max
y > maxDescription
TRUEnever evaluated
FALSEnever evaluated
) max = y;
never executed: max = y;
0
646-
647 if ( (
( (TCoord)( (m...worker).max_eyDescription
TRUEnever evaluated
FALSEnever evaluated
(TCoord)( (min) >> 8 ) ) >= (*worker).max_ey
( (TCoord)( (m...worker).max_eyDescription
TRUEnever evaluated
FALSEnever evaluated
|| (
( (TCoord)( (m...worker).min_eyDescription
TRUEnever evaluated
FALSEnever evaluated
(TCoord)( (max) >> 8 ) ) < (*worker).min_ey
( (TCoord)( (m...worker).min_eyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
648 goto
never executed: goto Draw;
Draw;
never executed: goto Draw;
0
649-
650 gray_split_conic( arc );-
651 arc += 2;-
652 top++;-
653 levels[top] = levels[top - 1] = level - 1;-
654 continue;
never executed: continue;
0
655 }-
656-
657 Draw:
code before this statement never executed: Draw:
0
658 {-
659 TPos to_x, to_y, mid_x, mid_y;-
660-
661-
662 to_x = arc[0].x;-
663 to_y = arc[0].y;-
664 mid_x = ( (*worker).x + to_x + 2 * arc[1].x ) / 4;-
665 mid_y = ( (*worker).y + to_y + 2 * arc[1].y ) / 4;-
666-
667 gray_render_line( worker, mid_x, mid_y );-
668 gray_render_line( worker, to_x, to_y );-
669-
670 top--;-
671 arc -= 2;-
672 }-
673 }
never executed: end of block
0
674-
675 return;
never executed: return;
0
676 }-
677-
678-
679 static void-
680 gray_split_cubic( QT_FT_Vector* base )-
681 {-
682 TPos a, b, c, d;-
683-
684-
685 base[6].x = base[3].x;-
686 c = base[1].x;-
687 d = base[2].x;-
688 base[1].x = a = ( base[0].x + c ) / 2;-
689 base[5].x = b = ( base[3].x + d ) / 2;-
690 c = ( c + d ) / 2;-
691 base[2].x = a = ( a + c ) / 2;-
692 base[4].x = b = ( b + c ) / 2;-
693 base[3].x = ( a + b ) / 2;-
694-
695 base[6].y = base[3].y;-
696 c = base[1].y;-
697 d = base[2].y;-
698 base[1].y = a = ( base[0].y + c ) / 2;-
699 base[5].y = b = ( base[3].y + d ) / 2;-
700 c = ( c + d ) / 2;-
701 base[2].y = a = ( a + c ) / 2;-
702 base[4].y = b = ( b + c ) / 2;-
703 base[3].y = ( a + b ) / 2;-
704 }
never executed: end of block
0
705-
706-
707 static void-
708 gray_render_cubic( PWorker worker, const QT_FT_Vector* control1,-
709 const QT_FT_Vector* control2,-
710 const QT_FT_Vector* to )-
711 {-
712 TPos dx, dy, da, db;-
713 int top, level;-
714 int* levels;-
715 QT_FT_Vector* arc;-
716-
717-
718 dx = ( ((*worker).x) >> ( 8 - 6 ) ) + to->x - ( control1->x << 1 );-
719 if ( dx < 0
dx < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
720 dx = -dx;
never executed: dx = -dx;
0
721 dy = ( ((*worker).y) >> ( 8 - 6 ) ) + to->y - ( control1->y << 1 );-
722 if ( dy < 0
dy < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
723 dy = -dy;
never executed: dy = -dy;
0
724 if ( dx < dy
dx < dyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
725 dx = dy;
never executed: dx = dy;
0
726 da = dx;-
727-
728 dx = ( ((*worker).x) >> ( 8 - 6 ) ) + to->x - 3 * ( control1->x + control2->x );-
729 if ( dx < 0
dx < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
730 dx = -dx;
never executed: dx = -dx;
0
731 dy = ( ((*worker).y) >> ( 8 - 6 ) ) + to->y - 3 * ( control1->y + control2->y );-
732 if ( dy < 0
dy < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
733 dy = -dy;
never executed: dy = -dy;
0
734 if ( dx < dy
dx < dyDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
735 dx = dy;
never executed: dx = dy;
0
736 db = dx;-
737-
738 level = 1;-
739 da = da / (*worker).cubic_level;-
740 db = db / (*worker).conic_level;-
741 while ( da > 0
da > 0Description
TRUEnever evaluated
FALSEnever evaluated
|| db > 0
db > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
742 {-
743 da >>= 2;-
744 db >>= 3;-
745 level++;-
746 }
never executed: end of block
0
747-
748 if ( level <= 1
level <= 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
749 {-
750 TPos to_x, to_y, mid_x, mid_y;-
751-
752-
753 to_x = ( (to->x) * ( 1 << ( 8 - 6 ) ) );-
754 to_y = ( (to->y) * ( 1 << ( 8 - 6 ) ) );-
755 mid_x = ( (*worker).x + to_x +-
756 3 * ( (control1->x + control2->x) * ( 1 << ( 8 - 6 ) ) ) ) / 8;-
757 mid_y = ( (*worker).y + to_y +-
758 3 * ( (control1->y + control2->y) * ( 1 << ( 8 - 6 ) ) ) ) / 8;-
759-
760 gray_render_line( worker, mid_x, mid_y );-
761 gray_render_line( worker, to_x, to_y );-
762 return;
never executed: return;
0
763 }-
764-
765 arc = (*worker).bez_stack;-
766 arc[0].x = ( (to->x) * ( 1 << ( 8 - 6 ) ) );-
767 arc[0].y = ( (to->y) * ( 1 << ( 8 - 6 ) ) );-
768 arc[1].x = ( (control2->x) * ( 1 << ( 8 - 6 ) ) );-
769 arc[1].y = ( (control2->y) * ( 1 << ( 8 - 6 ) ) );-
770 arc[2].x = ( (control1->x) * ( 1 << ( 8 - 6 ) ) );-
771 arc[2].y = ( (control1->y) * ( 1 << ( 8 - 6 ) ) );-
772 arc[3].x = (*worker).x;-
773 arc[3].y = (*worker).y;-
774-
775 levels = (*worker).lev_stack;-
776 top = 0;-
777 levels[0] = level;-
778-
779 while ( top >= 0
top >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
780 {-
781 level = levels[top];-
782 if ( level > 1
level > 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
783 {-
784-
785 TPos min, max, y;-
786-
787-
788 min = max = arc[0].y;-
789 y = arc[1].y;-
790 if ( y < min
y < minDescription
TRUEnever evaluated
FALSEnever evaluated
) min = y;
never executed: min = y;
0
791 if ( y > max
y > maxDescription
TRUEnever evaluated
FALSEnever evaluated
) max = y;
never executed: max = y;
0
792 y = arc[2].y;-
793 if ( y < min
y < minDescription
TRUEnever evaluated
FALSEnever evaluated
) min = y;
never executed: min = y;
0
794 if ( y > max
y > maxDescription
TRUEnever evaluated
FALSEnever evaluated
) max = y;
never executed: max = y;
0
795 y = arc[3].y;-
796 if ( y < min
y < minDescription
TRUEnever evaluated
FALSEnever evaluated
) min = y;
never executed: min = y;
0
797 if ( y > max
y > maxDescription
TRUEnever evaluated
FALSEnever evaluated
) max = y;
never executed: max = y;
0
798 if ( (
( (TCoord)( (m...worker).max_eyDescription
TRUEnever evaluated
FALSEnever evaluated
(TCoord)( (min) >> 8 ) ) >= (*worker).max_ey
( (TCoord)( (m...worker).max_eyDescription
TRUEnever evaluated
FALSEnever evaluated
|| (
( (TCoord)( (max) >> 8 ) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
(TCoord)( (max) >> 8 ) ) < 0
( (TCoord)( (max) >> 8 ) ) < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
799 goto
never executed: goto Draw;
Draw;
never executed: goto Draw;
0
800 gray_split_cubic( arc );-
801 arc += 3;-
802 top ++;-
803 levels[top] = levels[top - 1] = level - 1;-
804 continue;
never executed: continue;
0
805 }-
806-
807 Draw:
code before this statement never executed: Draw:
0
808 {-
809 TPos to_x, to_y, mid_x, mid_y;-
810-
811-
812 to_x = arc[0].x;-
813 to_y = arc[0].y;-
814 mid_x = ( (*worker).x + to_x + 3 * ( arc[1].x + arc[2].x ) ) / 8;-
815 mid_y = ( (*worker).y + to_y + 3 * ( arc[1].y + arc[2].y ) ) / 8;-
816-
817 gray_render_line( worker, mid_x, mid_y );-
818 gray_render_line( worker, to_x, to_y );-
819 top --;-
820 arc -= 3;-
821 }-
822 }
never executed: end of block
0
823-
824 return;
never executed: return;
0
825 }-
826-
827-
828-
829 static int-
830 gray_move_to( const QT_FT_Vector* to,-
831 PWorker worker )-
832 {-
833 TPos x, y;-
834-
835-
836-
837 gray_record_cell( worker );-
838-
839-
840 x = ( (to->x) * ( 1 << ( 8 - 6 ) ) );-
841 y = ( (to->y) * ( 1 << ( 8 - 6 ) ) );-
842-
843 gray_start_cell( worker, ( (TCoord)( (x) >> 8 ) ), ( (TCoord)( (y) >> 8 ) ) );-
844-
845 worker->x = x;-
846 worker->y = y;-
847 return
never executed: return 0;
0;
never executed: return 0;
0
848 }-
849-
850 static void-
851 gray_render_span( int count,-
852 const QT_FT_Span* spans,-
853 PWorker worker )-
854 {-
855 unsigned char* p;-
856 QT_FT_Bitmap* map = &worker->target;-
857-
858 for ( ; count > 0
count > 0Description
TRUEnever evaluated
FALSEnever evaluated
; count--, spans++ )
0
859 {-
860 unsigned char coverage = spans->coverage;-
861-
862-
863 p = (unsigned char*)map->buffer - spans->y * map->pitch;-
864 if ( map->pitch >= 0
map->pitch >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
865 p += ( map->rows - 1 ) * map->pitch;
never executed: p += ( map->rows - 1 ) * map->pitch;
0
866-
867-
868 if ( coverage
coverageDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
869 {-
870-
871-
872-
873-
874 if ( spans->len >= 8
spans->len >= 8Description
TRUEnever evaluated
FALSEnever evaluated
)
0
875 memset( p + spans->x, (unsigned char)coverage, spans->len );
never executed: memset( p + spans->x, (unsigned char)coverage, spans->len );
0
876 else-
877 {-
878 unsigned char* q = p + spans->x;-
879-
880-
881 switch ( spans->len )-
882 {-
883 case
never executed: case 7:
7:
never executed: case 7:
*q++ = (unsigned char)coverage;
0
884 case
never executed: case 6:
6:
never executed: case 6:
code before this statement never executed: case 6:
*q++ = (unsigned char)coverage;
0
885 case
never executed: case 5:
5:
never executed: case 5:
code before this statement never executed: case 5:
*q++ = (unsigned char)coverage;
0
886 case
never executed: case 4:
4:
never executed: case 4:
code before this statement never executed: case 4:
*q++ = (unsigned char)coverage;
0
887 case
never executed: case 3:
3:
never executed: case 3:
code before this statement never executed: case 3:
*q++ = (unsigned char)coverage;
0
888 case
never executed: case 2:
2:
never executed: case 2:
code before this statement never executed: case 2:
*q++ = (unsigned char)coverage;
0
889 case
never executed: case 1:
1:
never executed: case 1:
code before this statement never executed: case 1:
*q = (unsigned char)coverage;
0
890 default
never executed: default:
:
never executed: default:
code before this statement never executed: default:
0
891 ;-
892 }
never executed: end of block
0
893 }-
894 }-
895 }
never executed: end of block
0
896 }
never executed: end of block
0
897-
898-
899 static void-
900 gray_hline( PWorker worker, TCoord x,-
901 TCoord y,-
902 TPos area,-
903 int acount )-
904 {-
905 QT_FT_Span* span;-
906 int coverage;-
907 int skip;-
908-
909-
910-
911-
912-
913-
914-
915 coverage = (int)( area >> ( 8 * 2 + 1 - 8 ) );-
916-
917 if ( coverage < 0
coverage < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
918 coverage = -coverage;
never executed: coverage = -coverage;
0
919-
920 if ( (*
(*worker).outline.flags & 0x2Description
TRUEnever evaluated
FALSEnever evaluated
worker).outline.flags & 0x2
(*worker).outline.flags & 0x2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
921 {-
922 coverage &= 511;-
923-
924 if ( coverage > 256
coverage > 256Description
TRUEnever evaluated
FALSEnever evaluated
)
0
925 coverage = 512 - coverage;
never executed: coverage = 512 - coverage;
0
926 else if ( coverage == 256
coverage == 256Description
TRUEnever evaluated
FALSEnever evaluated
)
0
927 coverage = 255;
never executed: coverage = 255;
0
928 }
never executed: end of block
0
929 else-
930 {-
931-
932 if ( coverage >= 256
coverage >= 256Description
TRUEnever evaluated
FALSEnever evaluated
)
0
933 coverage = 255;
never executed: coverage = 255;
0
934 }
never executed: end of block
0
935-
936 y += (TCoord)(*worker).min_ey;-
937 x += (TCoord)(*worker).min_ex;-
938-
939-
940 if ( x >= 32768
x >= 32768Description
TRUEnever evaluated
FALSEnever evaluated
)
0
941 x = 32767;
never executed: x = 32767;
0
942-
943 if ( coverage
coverageDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
944 {-
945-
946 span = (*worker).gray_spans + (*worker).num_gray_spans - 1;-
947 if ( (*
(*worker).num_gray_spans > 0Description
TRUEnever evaluated
FALSEnever evaluated
worker).num_gray_spans > 0
(*worker).num_gray_spans > 0Description
TRUEnever evaluated
FALSEnever evaluated
&&
0
948 span->y == y
span->y == yDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
949 (
(int)span->x +...>len == (int)xDescription
TRUEnever evaluated
FALSEnever evaluated
int)span->x + span->len == (int)x
(int)span->x +...>len == (int)xDescription
TRUEnever evaluated
FALSEnever evaluated
&&
0
950 span->coverage == coverage
span->coverage == coverageDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
951 {-
952 span->len = (unsigned short)( span->len + acount );-
953 return;
never executed: return;
0
954 }-
955-
956 if ( (*
(*worker).num_...y_spans >= 256Description
TRUEnever evaluated
FALSEnever evaluated
worker).num_gray_spans >= 256
(*worker).num_...y_spans >= 256Description
TRUEnever evaluated
FALSEnever evaluated
)
0
957 {-
958 if ( (*
(*worker).render_spanDescription
TRUEnever evaluated
FALSEnever evaluated
worker).render_span
(*worker).render_spanDescription
TRUEnever evaluated
FALSEnever evaluated
&& (*
(*worker).num_...er).skip_spansDescription
TRUEnever evaluated
FALSEnever evaluated
worker).num_gray_spans > (*worker).skip_spans
(*worker).num_...er).skip_spansDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
959 {-
960 skip = (*
(*worker).skip_spans > 0Description
TRUEnever evaluated
FALSEnever evaluated
worker).skip_spans > 0
(*worker).skip_spans > 0Description
TRUEnever evaluated
FALSEnever evaluated
? (*worker).skip_spans : 0;
0
961 (*worker).render_span( (*worker).num_gray_spans - skip,-
962 (*worker).gray_spans + skip,-
963 (*worker).render_span_data );-
964 }
never executed: end of block
0
965-
966 (*worker).skip_spans -= (*worker).num_gray_spans;-
967 (*worker).num_gray_spans = 0;-
968-
969 span = (*worker).gray_spans;-
970 }
never executed: end of block
0
971 else-
972 span++;
never executed: span++;
0
973-
974-
975 span->x = (short)x;-
976 span->len = (unsigned short)acount;-
977 span->y = (short)y;-
978 span->coverage = (unsigned char)coverage;-
979-
980 (*worker).num_gray_spans++;-
981 }
never executed: end of block
0
982 }
never executed: end of block
0
983 static void-
984 gray_sweep( PWorker worker, const QT_FT_Bitmap* target )-
985 {-
986 int yindex;-
987-
988 (target) = (target);-
989-
990-
991 if ( (*
(*worker).num_cells == 0Description
TRUEnever evaluated
FALSEnever evaluated
worker).num_cells == 0
(*worker).num_cells == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
992 return;
never executed: return;
0
993-
994 for ( yindex = 0; yindex < (*worker).ycount
yindex < (*worker).ycountDescription
TRUEnever evaluated
FALSEnever evaluated
; yindex++ )
0
995 {-
996 PCell cell = (*worker).ycells[yindex];-
997 TCoord cover = 0;-
998 TCoord x = 0;-
999-
1000-
1001 for ( ; cell != ((void *)0)
cell != ((void *)0)Description
TRUEnever evaluated
FALSEnever evaluated
; cell = cell->next )
0
1002 {-
1003 TArea area;-
1004-
1005-
1006 if ( cell->x > x
cell->x > xDescription
TRUEnever evaluated
FALSEnever evaluated
&& cover != 0
cover != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1007 gray_hline( worker, x, yindex, cover * ( ( 1L << 8 ) * 2 ),
never executed: gray_hline( worker, x, yindex, cover * ( ( 1L << 8 ) * 2 ), cell->x - x );
0
1008 cell->x - x );
never executed: gray_hline( worker, x, yindex, cover * ( ( 1L << 8 ) * 2 ), cell->x - x );
0
1009-
1010 cover += cell->cover;-
1011 area = cover * ( ( 1L << 8 ) * 2 ) - cell->area;-
1012-
1013 if ( area != 0
area != 0Description
TRUEnever evaluated
FALSEnever evaluated
&& cell->x >= 0
cell->x >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1014 gray_hline( worker, cell->x, yindex, area, 1 );
never executed: gray_hline( worker, cell->x, yindex, area, 1 );
0
1015-
1016 x = cell->x + 1;-
1017 }
never executed: end of block
0
1018-
1019 if ( (*
(*worker).count_ex > xDescription
TRUEnever evaluated
FALSEnever evaluated
worker).count_ex > x
(*worker).count_ex > xDescription
TRUEnever evaluated
FALSEnever evaluated
&& cover != 0
cover != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1020 gray_hline( worker, x, yindex, cover * ( ( 1L << 8 ) * 2 ),
never executed: gray_hline( worker, x, yindex, cover * ( ( 1L << 8 ) * 2 ), (*worker).count_ex - x );
0
1021 (*worker).count_ex - x );
never executed: gray_hline( worker, x, yindex, cover * ( ( 1L << 8 ) * 2 ), (*worker).count_ex - x );
0
1022 }
never executed: end of block
0
1023 }
never executed: end of block
0
1024 static-
1025 int QT_FT_Outline_Decompose( const QT_FT_Outline* outline,-
1026 void* user )-
1027 {-
1028-
1029-
1030-
1031 QT_FT_Vector v_last;-
1032 QT_FT_Vector v_control;-
1033 QT_FT_Vector v_start;-
1034-
1035 QT_FT_Vector* point;-
1036 QT_FT_Vector* limit;-
1037 char* tags;-
1038-
1039 int n;-
1040 int first;-
1041 int error;-
1042 char tag;-
1043-
1044 first = 0;-
1045-
1046 for ( n = 0; n < outline->n_contours
n < outline->n_contoursDescription
TRUEnever evaluated
FALSEnever evaluated
; n++ )
0
1047 {-
1048 int last;-
1049-
1050-
1051 last = outline->contours[n];-
1052 limit = outline->points + last;-
1053-
1054 v_start = outline->points[first];-
1055 v_last = outline->points[last];-
1056-
1057 v_start.x = (v_start.x);-
1058 v_start.y = (v_start.y);-
1059-
1060 v_last.x = (v_last.x);-
1061 v_last.y = (v_last.y);-
1062-
1063 v_control = v_start;-
1064-
1065 point = outline->points + first;-
1066 tags = outline->tags + first;-
1067 tag = ( tags[0] & 3 );-
1068-
1069-
1070 if ( tag == 2
tag == 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1071 goto
never executed: goto Invalid_Outline;
Invalid_Outline;
never executed: goto Invalid_Outline;
0
1072-
1073-
1074 if ( tag == 0
tag == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1075 {-
1076-
1077 if ( (
( outline->tag...st] & 3 ) == 1Description
TRUEnever evaluated
FALSEnever evaluated
outline->tags[last] & 3 ) == 1
( outline->tag...st] & 3 ) == 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1078 {-
1079-
1080 v_start = v_last;-
1081 limit--;-
1082 }
never executed: end of block
0
1083 else-
1084 {-
1085-
1086-
1087-
1088 v_start.x = ( v_start.x + v_last.x ) / 2;-
1089 v_start.y = ( v_start.y + v_last.y ) / 2;-
1090-
1091 v_last = v_start;-
1092 }
never executed: end of block
0
1093 point--;-
1094 tags--;-
1095 }
never executed: end of block
0
1096-
1097 error = gray_move_to( &v_start, user );-
1098 if ( error
errorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1099 goto
never executed: goto Exit;
Exit;
never executed: goto Exit;
0
1100-
1101 while ( point < limit
point < limitDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1102 {-
1103 point++;-
1104 tags++;-
1105-
1106 tag = ( tags[0] & 3 );-
1107 switch ( tag )-
1108 {-
1109 case
never executed: case 1:
1:
never executed: case 1:
0
1110 {-
1111 QT_FT_Vector vec;-
1112-
1113-
1114 vec.x = (point->x);-
1115 vec.y = (point->y);-
1116-
1117 gray_render_line(user, ( (vec.x) * ( 1 << ( 8 - 6 ) ) ), ( (vec.y) * ( 1 << ( 8 - 6 ) ) ));-
1118 continue;
never executed: continue;
0
1119 }-
1120-
1121 case
never executed: case 0:
0:
never executed: case 0:
0
1122 {-
1123 v_control.x = (point->x);-
1124 v_control.y = (point->y);-
1125-
1126 Do_Conic:
code before this statement never executed: Do_Conic:
0
1127 if ( point < limit
point < limitDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1128 {-
1129 QT_FT_Vector vec;-
1130 QT_FT_Vector v_middle;-
1131-
1132-
1133 point++;-
1134 tags++;-
1135 tag = ( tags[0] & 3 );-
1136-
1137 vec.x = (point->x);-
1138 vec.y = (point->y);-
1139-
1140 if ( tag == 1
tag == 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1141 {-
1142 gray_render_conic(user, &v_control, &vec);-
1143 continue;
never executed: continue;
0
1144 }-
1145-
1146 if ( tag != 0
tag != 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1147 goto
never executed: goto Invalid_Outline;
Invalid_Outline;
never executed: goto Invalid_Outline;
0
1148-
1149 v_middle.x = ( v_control.x + vec.x ) / 2;-
1150 v_middle.y = ( v_control.y + vec.y ) / 2;-
1151-
1152 gray_render_conic(user, &v_control, &v_middle);-
1153 v_control = vec;-
1154 goto
never executed: goto Do_Conic;
Do_Conic;
never executed: goto Do_Conic;
0
1155 }-
1156-
1157 gray_render_conic(user, &v_control, &v_start);-
1158 goto
never executed: goto Close;
Close;
never executed: goto Close;
0
1159 }-
1160-
1161 default
never executed: default:
:
never executed: default:
0
1162 {-
1163 QT_FT_Vector vec1, vec2;-
1164-
1165-
1166 if ( point + 1 > limit
point + 1 > limitDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1167 (
( tags[1] & 3 ) != 2Description
TRUEnever evaluated
FALSEnever evaluated
tags[1] & 3 ) != 2
( tags[1] & 3 ) != 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1168 goto
never executed: goto Invalid_Outline;
Invalid_Outline;
never executed: goto Invalid_Outline;
0
1169-
1170 point += 2;-
1171 tags += 2;-
1172-
1173 vec1.x = (point[-2].x);-
1174 vec1.y = (point[-2].y);-
1175-
1176 vec2.x = (point[-1].x);-
1177 vec2.y = (point[-1].y);-
1178-
1179 if ( point <= limit
point <= limitDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1180 {-
1181 QT_FT_Vector vec;-
1182-
1183-
1184 vec.x = (point->x);-
1185 vec.y = (point->y);-
1186-
1187 gray_render_cubic(user, &vec1, &vec2, &vec);-
1188 continue;
never executed: continue;
0
1189 }-
1190-
1191 gray_render_cubic(user, &vec1, &vec2, &v_start);-
1192 goto
never executed: goto Close;
Close;
never executed: goto Close;
0
1193 }-
1194 }-
1195 }-
1196-
1197-
1198 gray_render_line(user, ( (v_start.x) * ( 1 << ( 8 - 6 ) ) ), ( (v_start.y) * ( 1 << ( 8 - 6 ) ) ));-
1199-
1200 Close:
code before this statement never executed: Close:
0
1201 first = last + 1;-
1202 }
never executed: end of block
0
1203-
1204 return
never executed: return 0;
0;
never executed: return 0;
0
1205-
1206 Exit:-
1207 return
never executed: return error;
error;
never executed: return error;
0
1208-
1209 Invalid_Outline:-
1210 return
never executed: return -1;
-1;
never executed: return -1;
0
1211 }-
1212-
1213 typedef struct TBand_-
1214 {-
1215 TPos min, max;-
1216-
1217 } TBand;-
1218-
1219-
1220 static int-
1221 gray_convert_glyph_inner( PWorker worker )-
1222 {-
1223 volatile int error = 0;-
1224-
1225 if ( _setjmp ((*worker).jump_buffer) == 0
_setjmp ((*wor...p_buffer) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1226 {-
1227 error = QT_FT_Outline_Decompose( &(*worker).outline, &(*worker) );-
1228 gray_record_cell( worker );-
1229 }
never executed: end of block
0
1230 else-
1231 {-
1232 error = -4;-
1233 }
never executed: end of block
0
1234-
1235 return
never executed: return error;
error;
never executed: return error;
0
1236 }-
1237-
1238-
1239 static int-
1240 gray_convert_glyph( PWorker worker )-
1241 {-
1242 TBand bands[40];-
1243 TBand* volatile band;-
1244 int volatile n, num_bands;-
1245 TPos volatile min, max, max_y;-
1246 QT_FT_BBox* clip;-
1247 int skip;-
1248-
1249 (*worker).num_gray_spans = 0;-
1250-
1251-
1252 gray_compute_cbox( worker );-
1253-
1254-
1255 clip = &(*worker).clip_box;-
1256-
1257 if ( (*
(*worker).max_ex <= clip->xMinDescription
TRUEnever evaluated
FALSEnever evaluated
worker).max_ex <= clip->xMin
(*worker).max_ex <= clip->xMinDescription
TRUEnever evaluated
FALSEnever evaluated
|| (*
(*worker).min_ex >= clip->xMaxDescription
TRUEnever evaluated
FALSEnever evaluated
worker).min_ex >= clip->xMax
(*worker).min_ex >= clip->xMaxDescription
TRUEnever evaluated
FALSEnever evaluated
||
0
1258 (*
(*worker).max_ey <= clip->yMinDescription
TRUEnever evaluated
FALSEnever evaluated
worker).max_ey <= clip->yMin
(*worker).max_ey <= clip->yMinDescription
TRUEnever evaluated
FALSEnever evaluated
|| (*
(*worker).min_ey >= clip->yMaxDescription
TRUEnever evaluated
FALSEnever evaluated
worker).min_ey >= clip->yMax
(*worker).min_ey >= clip->yMaxDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1259 return
never executed: return 0;
0;
never executed: return 0;
0
1260-
1261 if ( (*
(*worker).min_ex < clip->xMinDescription
TRUEnever evaluated
FALSEnever evaluated
worker).min_ex < clip->xMin
(*worker).min_ex < clip->xMinDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).min_ex = clip->xMin;
worker).min_ex = clip->xMin;
never executed: (*worker).min_ex = clip->xMin;
0
1262 if ( (*
(*worker).min_ey < clip->yMinDescription
TRUEnever evaluated
FALSEnever evaluated
worker).min_ey < clip->yMin
(*worker).min_ey < clip->yMinDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).min_ey = clip->yMin;
worker).min_ey = clip->yMin;
never executed: (*worker).min_ey = clip->yMin;
0
1263-
1264 if ( (*
(*worker).max_ex > clip->xMaxDescription
TRUEnever evaluated
FALSEnever evaluated
worker).max_ex > clip->xMax
(*worker).max_ex > clip->xMaxDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).max_ex = clip->xMax;
worker).max_ex = clip->xMax;
never executed: (*worker).max_ex = clip->xMax;
0
1265 if ( (*
(*worker).max_ey > clip->yMaxDescription
TRUEnever evaluated
FALSEnever evaluated
worker).max_ey > clip->yMax
(*worker).max_ey > clip->yMaxDescription
TRUEnever evaluated
FALSEnever evaluated
) (*
never executed: (*worker).max_ey = clip->yMax;
worker).max_ey = clip->yMax;
never executed: (*worker).max_ey = clip->yMax;
0
1266-
1267 (*worker).count_ex = (*worker).max_ex - (*worker).min_ex;-
1268 (*worker).count_ey = (*worker).max_ey - (*worker).min_ey;-
1269-
1270-
1271-
1272-
1273 (*worker).conic_level = 32;-
1274 (*worker).cubic_level = 16;-
1275-
1276 {-
1277 int level = 0;-
1278-
1279-
1280 if ( (*
(*worker).count_ex > 24Description
TRUEnever evaluated
FALSEnever evaluated
worker).count_ex > 24
(*worker).count_ex > 24Description
TRUEnever evaluated
FALSEnever evaluated
|| (*
(*worker).count_ey > 24Description
TRUEnever evaluated
FALSEnever evaluated
worker).count_ey > 24
(*worker).count_ey > 24Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1281 level++;
never executed: level++;
0
1282 if ( (*
(*worker).count_ex > 120Description
TRUEnever evaluated
FALSEnever evaluated
worker).count_ex > 120
(*worker).count_ex > 120Description
TRUEnever evaluated
FALSEnever evaluated
|| (*
(*worker).count_ey > 120Description
TRUEnever evaluated
FALSEnever evaluated
worker).count_ey > 120
(*worker).count_ey > 120Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1283 level++;
never executed: level++;
0
1284-
1285 (*worker).conic_level <<= level;-
1286 (*worker).cubic_level <<= level;-
1287 }-
1288-
1289-
1290 num_bands = (int)( ( (*worker).max_ey - (*worker).min_ey ) / (*worker).band_size );-
1291 if ( num_bands == 0
num_bands == 0Description
TRUEnever evaluated
FALSEnever evaluated
) num_bands = 1;
never executed: num_bands = 1;
0
1292 if ( num_bands >= 39
num_bands >= 39Description
TRUEnever evaluated
FALSEnever evaluated
) num_bands = 39;
never executed: num_bands = 39;
0
1293-
1294 (*worker).band_shoot = 0;-
1295-
1296 min = (*worker).min_ey;-
1297 max_y = (*worker).max_ey;-
1298-
1299 for ( n = 0; n < num_bands
n < num_bandsDescription
TRUEnever evaluated
FALSEnever evaluated
; n++, min = max )
0
1300 {-
1301 max = min + (*worker).band_size;-
1302 if ( n == num_bands - 1
n == num_bands - 1Description
TRUEnever evaluated
FALSEnever evaluated
|| max > max_y
max > max_yDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1303 max = max_y;
never executed: max = max_y;
0
1304-
1305 bands[0].min = min;-
1306 bands[0].max = max;-
1307 band = bands;-
1308-
1309 while ( band >= bands
band >= bandsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1310 {-
1311 TPos bottom, top, middle;-
1312 int error;-
1313-
1314 {-
1315 PCell cells_max;-
1316 int yindex;-
1317 int cell_start, cell_end, cell_mod;-
1318-
1319-
1320 (*worker).ycells = (PCell*)(*worker).buffer;-
1321 (*worker).ycount = band->max - band->min;-
1322-
1323 cell_start = sizeof ( PCell ) * (*worker).ycount;-
1324 cell_mod = cell_start % sizeof ( TCell );-
1325 if ( cell_mod > 0
cell_mod > 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1326 cell_start += sizeof ( TCell ) - cell_mod;
never executed: cell_start += sizeof ( TCell ) - cell_mod;
0
1327-
1328 cell_end = (*worker).buffer_size;-
1329 cell_end -= cell_end % sizeof( TCell );-
1330-
1331 cells_max = (PCell)( (char*)(*worker).buffer + cell_end );-
1332 (*worker).cells = (PCell)( (char*)(*worker).buffer + cell_start );-
1333 if ( (*
(*worker).cells >= cells_maxDescription
TRUEnever evaluated
FALSEnever evaluated
worker).cells >= cells_max
(*worker).cells >= cells_maxDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1334 goto
never executed: goto ReduceBands;
ReduceBands;
never executed: goto ReduceBands;
0
1335-
1336 (*worker).max_cells = (int)(cells_max - (*worker).cells);-
1337 if ( (*
(*worker).max_cells < 2Description
TRUEnever evaluated
FALSEnever evaluated
worker).max_cells < 2
(*worker).max_cells < 2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1338 goto
never executed: goto ReduceBands;
ReduceBands;
never executed: goto ReduceBands;
0
1339-
1340 for ( yindex = 0; yindex < (*worker).ycount
yindex < (*worker).ycountDescription
TRUEnever evaluated
FALSEnever evaluated
; yindex++ )
0
1341 (*
never executed: (*worker).ycells[yindex] = ((void *)0);
worker).ycells[yindex] = ((void *)0);
never executed: (*worker).ycells[yindex] = ((void *)0);
0
1342 }-
1343-
1344 (*worker).num_cells = 0;-
1345 (*worker).invalid = 1;-
1346 (*worker).min_ey = band->min;-
1347 (*worker).max_ey = band->max;-
1348 (*worker).count_ey = band->max - band->min;-
1349-
1350 error = gray_convert_glyph_inner( worker );-
1351-
1352 if ( !error
!errorDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1353 {-
1354 gray_sweep( worker, &(*worker).target );-
1355 band--;-
1356 continue;
never executed: continue;
0
1357 }-
1358 else if ( error != -4
error != -4Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1359 return
never executed: return 1;
1;
never executed: return 1;
0
1360-
1361 ReduceBands:
code before this statement never executed: ReduceBands:
0
1362-
1363 bottom = band->min;-
1364 top = band->max;-
1365 middle = bottom + ( ( top - bottom ) >> 1 );-
1366-
1367-
1368-
1369 if ( middle == bottom
middle == bottomDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1370 {-
1371-
1372-
1373-
1374 return
never executed: return -6;
-6;
never executed: return -6;
0
1375 }-
1376-
1377 if ( bottom-top >= (*worker).band_size
bottom-top >= ...ker).band_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1378 (*
never executed: (*worker).band_shoot++;
worker).band_shoot++;
never executed: (*worker).band_shoot++;
0
1379-
1380 band[1].min = bottom;-
1381 band[1].max = middle;-
1382 band[0].min = middle;-
1383 band[0].max = top;-
1384 band++;-
1385 }
never executed: end of block
0
1386 }
never executed: end of block
0
1387-
1388 if ( (*
(*worker).render_spanDescription
TRUEnever evaluated
FALSEnever evaluated
worker).render_span
(*worker).render_spanDescription
TRUEnever evaluated
FALSEnever evaluated
&& (*
(*worker).num_...er).skip_spansDescription
TRUEnever evaluated
FALSEnever evaluated
worker).num_gray_spans > (*worker).skip_spans
(*worker).num_...er).skip_spansDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1389 {-
1390 skip = (*
(*worker).skip_spans > 0Description
TRUEnever evaluated
FALSEnever evaluated
worker).skip_spans > 0
(*worker).skip_spans > 0Description
TRUEnever evaluated
FALSEnever evaluated
? (*worker).skip_spans : 0;
0
1391 (*worker).render_span( (*worker).num_gray_spans - skip,-
1392 (*worker).gray_spans + skip,-
1393 (*worker).render_span_data );-
1394 }
never executed: end of block
0
1395-
1396 (*worker).skip_spans -= (*worker).num_gray_spans;-
1397-
1398 if ( (*
(*worker).band_shoot > 8Description
TRUEnever evaluated
FALSEnever evaluated
worker).band_shoot > 8
(*worker).band_shoot > 8Description
TRUEnever evaluated
FALSEnever evaluated
&& (*
(*worker).band_size > 16Description
TRUEnever evaluated
FALSEnever evaluated
worker).band_size > 16
(*worker).band_size > 16Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1399 (*
never executed: (*worker).band_size = (*worker).band_size / 2;
worker).band_size = (*worker).band_size / 2;
never executed: (*worker).band_size = (*worker).band_size / 2;
0
1400-
1401 return
never executed: return 0;
0;
never executed: return 0;
0
1402 }-
1403-
1404-
1405 static int-
1406 gray_raster_render( QT_FT_Raster raster,-
1407 const QT_FT_Raster_Params* params )-
1408 {-
1409 const QT_FT_Outline* outline = (const QT_FT_Outline*)params->source;-
1410 const QT_FT_Bitmap* target_map = params->target;-
1411 PWorker worker;-
1412-
1413-
1414 if ( !raster
!rasterDescription
TRUEnever evaluated
FALSEnever evaluated
|| !raster->buffer
!raster->bufferDescription
TRUEnever evaluated
FALSEnever evaluated
|| !raster->buffer_size
!raster->buffer_sizeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1415 return
never executed: return -3;
-3;
never executed: return -3;
0
1416-
1417 if ( raster->worker
raster->workerDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1418 raster->worker->skip_spans = params->skip_spans;
never executed: raster->worker->skip_spans = params->skip_spans;
0
1419-
1420-
1421-
1422-
1423 if (raster->buffer_allocated_size < 8192
raster->buffer...ed_size < 8192Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1424 return
never executed: return -6;
-6;
never executed: return -6;
0
1425-
1426-
1427 if ( outline->n_points == 0
outline->n_points == 0Description
TRUEnever evaluated
FALSEnever evaluated
|| outline->n_contours <= 0
outline->n_contours <= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1428 return
never executed: return 0;
0;
never executed: return 0;
0
1429-
1430 if ( !outline
!outlineDescription
TRUEnever evaluated
FALSEnever evaluated
|| !outline->contours
!outline->contoursDescription
TRUEnever evaluated
FALSEnever evaluated
|| !outline->points
!outline->pointsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1431 return
never executed: return -1;
-1;
never executed: return -1;
0
1432-
1433 if ( outline->n_points !=
outline->n_poi...tours - 1] + 1Description
TRUEnever evaluated
FALSEnever evaluated
0
1434 outline->contours[outline->n_contours - 1] + 1
outline->n_poi...tours - 1] + 1Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1435 return
never executed: return -1;
-1;
never executed: return -1;
0
1436-
1437 worker = raster->worker;-
1438-
1439-
1440 if ( (
( params->flags & 0x2 ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
params->flags & 0x2 ) == 0
( params->flags & 0x2 ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1441 {-
1442 if ( !target_map
!target_mapDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1443 return
never executed: return -3;
-3;
never executed: return -3;
0
1444-
1445-
1446 if ( !target_map->width
!target_map->widthDescription
TRUEnever evaluated
FALSEnever evaluated
|| !target_map->rows
!target_map->rowsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1447 return
never executed: return 0;
0;
never executed: return 0;
0
1448-
1449 if ( !target_map->buffer
!target_map->bufferDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1450 return
never executed: return -3;
-3;
never executed: return -3;
0
1451 }
never executed: end of block
0
1452-
1453-
1454 if ( !( params->flags & 0x1 )
!( params->flags & 0x1 )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1455 return
never executed: return -2;
-2;
never executed: return -2;
0
1456-
1457-
1458 if ( (
( params->flags & 0x2 ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
params->flags & 0x2 ) == 0
( params->flags & 0x2 ) == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1459 {-
1460-
1461 (*worker).clip_box.xMin = 0;-
1462 (*worker).clip_box.yMin = 0;-
1463 (*worker).clip_box.xMax = target_map->width;-
1464 (*worker).clip_box.yMax = target_map->rows;-
1465 }
never executed: end of block
0
1466 else if ( params->flags & 0x4
params->flags & 0x4Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1467 {-
1468 (*worker).clip_box = params->clip_box;-
1469 }
never executed: end of block
0
1470 else-
1471 {-
1472 (*worker).clip_box.xMin = -32768L;-
1473 (*worker).clip_box.yMin = -32768L;-
1474 (*worker).clip_box.xMax = 32767L;-
1475 (*worker).clip_box.yMax = 32767L;-
1476 }
never executed: end of block
0
1477-
1478 gray_init_cells( worker, raster->buffer, raster->buffer_size );-
1479-
1480 (*worker).outline = *outline;-
1481 (*worker).num_cells = 0;-
1482 (*worker).invalid = 1;-
1483 (*worker).band_size = raster->band_size;-
1484-
1485 if ( target_map
target_mapDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1486 (*
never executed: (*worker).target = *target_map;
worker).target = *target_map;
never executed: (*worker).target = *target_map;
0
1487-
1488 (*worker).render_span = (QT_FT_SpanFunc)gray_render_span;-
1489 (*worker).render_span_data = &(*worker);-
1490-
1491 if ( params->flags & 0x2
params->flags & 0x2Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1492 {-
1493 (*worker).render_span = (QT_FT_SpanFunc)params->gray_spans;-
1494 (*worker).render_span_data = params->user;-
1495 }
never executed: end of block
0
1496-
1497 return
never executed: return gray_convert_glyph( worker );
gray_convert_glyph( worker );
never executed: return gray_convert_glyph( worker );
0
1498 }-
1499-
1500-
1501-
1502-
1503-
1504 static int-
1505 gray_raster_new( QT_FT_Raster* araster )-
1506 {-
1507 *araster = malloc(sizeof(TRaster));-
1508 if (!*araster
!*arasterDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
1509 *araster = 0;-
1510 return
never executed: return -4;
-4;
never executed: return -4;
0
1511 }-
1512 memset( *araster, 0, sizeof(TRaster) );-
1513-
1514 return
never executed: return 0;
0;
never executed: return 0;
0
1515 }-
1516-
1517-
1518 static void-
1519 gray_raster_done( QT_FT_Raster raster )-
1520 {-
1521 free(raster);-
1522 }
never executed: end of block
0
1523-
1524-
1525 static void-
1526 gray_raster_reset( QT_FT_Raster raster,-
1527 char* pool_base,-
1528 long pool_size )-
1529 {-
1530 PRaster rast = (PRaster)raster;-
1531-
1532 if ( raster
rasterDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1533 {-
1534 if ( pool_base
pool_baseDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
( pool_size >= 8192 )Description
TRUEnever evaluated
FALSEnever evaluated
pool_size >= 8192 )
( pool_size >= 8192 )Description
TRUEnever evaluated
FALSEnever evaluated
)
0
1535 {-
1536 PWorker worker = (PWorker)pool_base;-
1537-
1538-
1539 rast->worker = worker;-
1540 rast->buffer = pool_base +-
1541 ( ( sizeof ( TWorker ) + sizeof ( TCell ) - 1 ) &-
1542 ~( sizeof ( TCell ) - 1 ) );-
1543 rast->buffer_size = (long)( ( pool_base + pool_size ) --
1544 (char*)rast->buffer ) &-
1545 ~( sizeof ( TCell ) - 1 );-
1546 rast->band_size = (int)( rast->buffer_size /-
1547 ( sizeof ( TCell ) * 8 ) );-
1548 }
never executed: end of block
0
1549 else if ( pool_base
pool_baseDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
1550 {-
1551-
1552 rast->buffer = pool_base;-
1553 rast->worker = ((void *)0);-
1554 rast->buffer_size = pool_size;-
1555 }
never executed: end of block
0
1556 else-
1557 {-
1558 rast->buffer = ((void *)0);-
1559 rast->buffer_size = 0;-
1560 rast->worker = ((void *)0);-
1561 }
never executed: end of block
0
1562 rast->buffer_allocated_size = pool_size;-
1563 }
never executed: end of block
0
1564 }
never executed: end of block
0
1565-
1566 const QT_FT_Raster_Funcs qt_ft_grays_raster =-
1567 {-
1568 QT_FT_GLYPH_FORMAT_OUTLINE,-
1569-
1570 (QT_FT_Raster_NewFunc) gray_raster_new,-
1571 (QT_FT_Raster_ResetFunc) gray_raster_reset,-
1572 (QT_FT_Raster_SetModeFunc)0,-
1573 (QT_FT_Raster_RenderFunc) gray_raster_render,-
1574 (QT_FT_Raster_DoneFunc) gray_raster_done-
1575 };-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9