diff --git a/demos/src/ftrast.c b/demos/src/ftrast.c index 756912e09..07c8df437 100644 --- a/demos/src/ftrast.c +++ b/demos/src/ftrast.c @@ -133,8 +133,8 @@ typedef enum TFlow_ { Flow_None = 0, - Flow_Up, - Flow_Down + Flow_Up = 1, + Flow_Down = -1 } TFlow; @@ -196,24 +196,6 @@ static const Byte RMask[8] = { 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF }; - /* We provide two different builds of the scan-line converter */ - /* The static build uses global variables and isn't */ - /* re-entrant. */ - /* The indirect build is re-entrant but accesses all variables */ - /* indirectly. */ - /* */ - /* As a consequence, the indirect build is about 10% slower */ - /* than the static one on a _Pentium_ (this could get worse */ - /* on older processors), but the code size is reduced by */ - /* more than 30% ! */ - /* */ - /* The indirect build is now the default, defined in */ - /* ttconfig.h. Be careful if you experiment with this. */ - - /* Note also that, though its code can be re-entrant, the */ - /* component is always used in thread-safe mode. This is */ - /* simply due to the fact that we want to use a single */ - /* render pool (of 64 Kb), and not to waste memory. */ #ifdef TT_STATIC_RASTER @@ -398,7 +380,7 @@ /* */ /************************************************************************/ - static void Set_High_Precision( RAS_ARGS Bool High ) + static void Set_High_Precision( RAS_ARGS Int High ) { if ( High ) { @@ -1120,10 +1102,10 @@ /* Description: Injects a new conic arc and adjusts the profile list. */ /* */ - static Bool Conic_To( RAS_ARGS Long x, - Long y, - Long cx, - Long cy ) + static Bool Conic_To( RAS_ARGS Long cx, + Long cy, + Long x, + Long y ) { Long y1, y2, y3, x3, ymin, ymax; TStates state_bez; @@ -1211,12 +1193,12 @@ /* Description: Injects a new cubic arc and adjusts the profile list. */ /* */ - static Bool Cubic_To( RAS_ARGS Long x, - Long y, - Long cx1, + static Bool Cubic_To( RAS_ARGS Long cx1, Long cy1, Long cx2, - Long cy2 ) + Long cy2, + Long x, + Long y ) { Long y1, y2, y3, y4, x4, ymin1, ymax1, ymin2, ymax2; TStates state_bez; @@ -1333,7 +1315,7 @@ static Bool Decompose_Curve( RAS_ARGS UShort first, UShort last, - Bool flipped ) + int flipped ) { FT_Vector v_last; FT_Vector v_control; @@ -1393,6 +1375,9 @@ tags--; } + ras.lastX = v_start.x; + ras.lastY = v_start.y; + while (point < limit) { point++; @@ -1763,9 +1748,9 @@ (void)max; - ras.traceIncr = - pitch; + ras.traceIncr = (Short)- pitch; ras.traceOfs = - *min * pitch; - if (ras.traceIncr > 0) + if (pitch > 0) ras.traceOfs += (ras.target.rows-1)*pitch; ras.gray_min_x = 0; @@ -2152,7 +2137,7 @@ ras.traceOfs = 0; pitch = ras.target.pitch; byte_len = -pitch; - ras.traceIncr = byte_len; + ras.traceIncr = (Short)byte_len; ras.traceG = (*min/2)*byte_len; if (pitch > 0) { @@ -2160,8 +2145,8 @@ byte_len = -byte_len; } - ras.gray_min_x = byte_len; - ras.gray_max_x = -byte_len; + ras.gray_min_x = (Short)byte_len; + ras.gray_max_x = -(Short)byte_len; } @@ -2359,8 +2344,8 @@ { Q = P->link; - bottom = P->start; - top = P->start + P->height-1; + bottom = (Short)P->start; + top = (Short)P->start + P->height-1; if ( min_Y > bottom ) min_Y = bottom; if ( max_Y < top ) max_Y = top; @@ -2959,8 +2944,8 @@ Scan_DropOuts : ras.target = *target_map; return ( params->flags & ft_raster_flag_aa - ? Render_Glyph( raster ) - : Render_Gray_Glyph( raster ) ); + ? Render_Gray_Glyph( raster ) + : Render_Glyph( raster ) ); #if 0 /* Note that we always use drop-out mode 2, because it seems that */ diff --git a/demos/src/ftrast.h b/demos/src/ftrast.h new file mode 100644 index 000000000..c08dee363 --- /dev/null +++ b/demos/src/ftrast.h @@ -0,0 +1,8 @@ +#ifndef FTRASTER_H +#define FTRASTER_H + +#include + + extern FT_Raster_Funcs ft_black_raster; + +#endif diff --git a/demos/src/ftview.c b/demos/src/ftview.c index c66920a69..b0c092192 100644 --- a/demos/src/ftview.c +++ b/demos/src/ftview.c @@ -28,6 +28,7 @@ #include "grfont.h" #include "ftgrays.h" +#include "ftrast.h" #define DIM_X 500 #define DIM_Y 400 @@ -423,7 +424,10 @@ $\243^\250*\265\371%!\247:/;.,?<>"; FT_Error error; error = 1; - if ( use_grays && antialias ) + if ( !antialias) + error = FT_Set_Raster( library, &ft_black_raster ); + + else if ( use_grays && antialias ) error = FT_Set_Raster( library, &ft_grays_raster ); if (error)