* src/smooth/ftgrays.c (SUBPIXELS): Add cast to `TPos'.

Update all callers.
(TRUNC): Add cast to `TCoord'.
Update all callers.
(TRaster): Use `TPos' for min_ex, max_ex, min_ey, max_ey, and
last_ey.
Update all casts.
(gray_render_line): Fix casts for `p' and `first'.
This commit is contained in:
Werner Lemberg 2002-10-05 06:57:53 +00:00
parent 90e3dd6e86
commit 4c09ae8002
2 changed files with 57 additions and 48 deletions

View File

@ -1,3 +1,14 @@
2002-10-05 Werner Lemberg <wl@gnu.org>
* src/smooth/ftgrays.c (SUBPIXELS): Add cast to `TPos'.
Update all callers.
(TRUNC): Add cast to `TCoord'.
Update all callers.
(TRaster): Use `TPos' for min_ex, max_ex, min_ey, max_ey, and
last_ey.
Update all casts.
(gray_render_line): Fix casts for `p' and `first'.
2002-10-02 Detlef Würkner <TetiSoft@apg.lahn.de>
* src/bdf/bdflib.c (bdf_load_font): Allocate the _bdf_parse_t

View File

@ -201,8 +201,8 @@
#define ONE_PIXEL ( 1L << PIXEL_BITS )
#define PIXEL_MASK ( -1L << PIXEL_BITS )
#define TRUNC( x ) ( (x) >> PIXEL_BITS )
#define SUBPIXELS( x ) ( (x) << PIXEL_BITS )
#define TRUNC( x ) ( (TCoord)((x) >> PIXEL_BITS) )
#define SUBPIXELS( x ) ( (TPos)(x) << PIXEL_BITS )
#define FLOOR( x ) ( (x) & -ONE_PIXEL )
#define CEILING( x ) ( ( (x) + ONE_PIXEL - 1 ) & -ONE_PIXEL )
#define ROUND( x ) ( ( (x) + ONE_PIXEL / 2 ) & -ONE_PIXEL )
@ -289,8 +289,8 @@
int max_cells;
int num_cells;
TCoord min_ex, max_ex;
TCoord min_ey, max_ey;
TPos min_ex, max_ex;
TPos min_ey, max_ey;
TArea area;
int cover;
@ -300,7 +300,7 @@
TCoord cx, cy;
TPos x, y;
TCoord last_ey;
TPos last_ey;
FT_Vector bez_stack[32 * 3 + 1];
int lev_stack[32];
@ -367,8 +367,8 @@
return;
}
ras.min_ex = ras.max_ex = (TCoord)vec->x;
ras.min_ey = ras.max_ey = (TCoord)vec->y;
ras.min_ex = ras.max_ex = vec->x;
ras.min_ey = ras.max_ey = vec->y;
vec++;
@ -378,10 +378,10 @@
TPos y = vec->y;
if ( x < ras.min_ex ) ras.min_ex = (TCoord)x;
if ( x > ras.max_ex ) ras.max_ex = (TCoord)x;
if ( y < ras.min_ey ) ras.min_ey = (TCoord)y;
if ( y > ras.max_ey ) ras.max_ey = (TCoord)y;
if ( x < ras.min_ex ) ras.min_ex = x;
if ( x > ras.max_ex ) ras.max_ex = x;
if ( y < ras.min_ey ) ras.min_ey = y;
if ( y > ras.max_ey ) ras.max_ey = y;
}
/* truncate the bounding box to integer pixels */
@ -408,8 +408,8 @@
ft_longjmp( ras.jump_buffer, 1 );
cell = ras.cells + ras.num_cells++;
cell->x = ras.ex - ras.min_ex;
cell->y = ras.ey - ras.min_ey;
cell->x = (TCoord)(ras.ex - ras.min_ex);
cell->y = (TCoord)(ras.ey - ras.min_ey);
cell->area = ras.area;
cell->cover = ras.cover;
}
@ -446,7 +446,7 @@
/* All cells that are on the left of the clipping region go to the */
/* min_ex - 1 horizontal position. */
if ( ex < ras.min_ex )
ex = ras.min_ex - 1;
ex = (TCoord)(ras.min_ex - 1);
/* if our position is new, then record the previous cell */
if ( ex != ras.ex || ey != ras.ey )
@ -482,7 +482,7 @@
TCoord ey )
{
if ( ex < ras.min_ex )
ex = ras.min_ex - 1;
ex = (TCoord)(ras.min_ex - 1);
ras.area = 0;
ras.cover = 0;
@ -513,8 +513,8 @@
dx = x2 - x1;
ex1 = (TCoord)TRUNC( x1 ); /* if (ex1 >= ras.max_ex) ex1 = ras.max_ex-1; */
ex2 = (TCoord)TRUNC( x2 ); /* if (ex2 >= ras.max_ex) ex2 = ras.max_ex-1; */
ex1 = TRUNC( x1 ); /* if (ex1 >= ras.max_ex) ex1 = ras.max_ex-1; */
ex2 = TRUNC( x2 ); /* if (ex2 >= ras.max_ex) ex2 = ras.max_ex-1; */
fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) );
fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) );
@ -616,8 +616,8 @@
int delta, rem, mod, lift, incr;
ey1 = (TCoord)TRUNC( ras.last_ey );
ey2 = (TCoord)TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */
ey1 = TRUNC( ras.last_ey );
ey2 = TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */
fy1 = (TCoord)( ras.y - ras.last_ey );
fy2 = (TCoord)( to_y - SUBPIXELS( ey2 ) );
@ -655,8 +655,8 @@
if ( dx == 0 )
{
TCoord ex = (TCoord)TRUNC( ras.x );
TCoord two_fx = (TCoord)( ( ras.x - SUBPIXELS( (TPos)ex ) ) << 1 );
TCoord ex = TRUNC( ras.x );
TCoord two_fx = (TCoord)( ( ras.x - SUBPIXELS( ex ) ) << 1 );
TPos area;
@ -691,13 +691,13 @@
}
/* ok, we have to render several scanlines */
p = (int)( ( ONE_PIXEL - fy1 ) * dx );
first = (int)ONE_PIXEL;
p = ( ONE_PIXEL - fy1 ) * dx;
first = ONE_PIXEL;
incr = 1;
if ( dy < 0 )
{
p = fy1 * (int)dx;
p = fy1 * dx;
first = 0;
incr = -1;
dy = -dy;
@ -712,14 +712,14 @@
}
x = ras.x + delta;
gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, first );
gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, (TCoord)first );
ey1 += incr;
gray_set_cell( RAS_VAR_ (TCoord)TRUNC( x ), ey1 );
gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 );
if ( ey1 != ey2 )
{
p = (int)( ONE_PIXEL * dx );
p = ONE_PIXEL * dx;
lift = (int)( p / dy );
rem = (int)( p % dy );
if ( rem < 0 )
@ -742,7 +742,7 @@
x2 = x + delta;
gray_render_scanline( RAS_VAR_ ey1, x,
(TCoord)( ONE_PIXEL - first ), x2,
first );
(TCoord)first );
x = x2;
ey1 += incr;
@ -1242,8 +1242,7 @@
x = UPSCALE( to->x );
y = UPSCALE( to->y );
gray_start_cell( (PRaster)raster,
(TCoord)TRUNC( x ), (TCoord)TRUNC( y ) );
gray_start_cell( (PRaster)raster, TRUNC( x ), TRUNC( y ) );
((PRaster)raster)->x = x;
((PRaster)raster)->y = y;
@ -1388,9 +1387,8 @@
coverage = 255;
}
y += ras.min_ey;
x += ras.min_ex;
y += (TCoord)ras.min_ey;
x += (TCoord)ras.min_ex;
if ( coverage )
{
@ -1504,15 +1502,15 @@
/* draw a gray span between the start cell and the current one */
if ( cur->x > x )
gray_hline( RAS_VAR_ x, y,
cover * ( ONE_PIXEL * 2 ), cur->x - x );
cover * ( ONE_PIXEL * 2 ), cur->x - x );
}
else
{
/* draw a gray span until the end of the clipping region */
if ( cover && x < ras.max_ex - ras.min_ex )
gray_hline( RAS_VAR_ x, y,
cover * ( ONE_PIXEL * 2 ),
ras.max_ex - x - ras.min_ex );
cover * ( ONE_PIXEL * 2 ),
(int)( ras.max_ex - x - ras.min_ex ) );
cover = 0;
}
@ -1828,11 +1826,11 @@
static int
gray_convert_glyph( RAS_ARG )
{
TBand bands[40];
volatile TBand* band;
volatile int n, num_bands;
volatile TPos min, max, max_y;
FT_BBox* clip;
TBand bands[40];
volatile TBand* band;
volatile int n, num_bands;
volatile TPos min, max, max_y;
FT_BBox* clip;
/* Set up state in the raster object */
@ -1845,11 +1843,11 @@
ras.max_ey <= clip->yMin || ras.min_ey >= clip->yMax )
return 0;
if ( ras.min_ex < clip->xMin ) ras.min_ex = (TCoord)clip->xMin;
if ( ras.min_ey < clip->yMin ) ras.min_ey = (TCoord)clip->yMin;
if ( ras.min_ex < clip->xMin ) ras.min_ex = clip->xMin;
if ( ras.min_ey < clip->yMin ) ras.min_ey = clip->yMin;
if ( ras.max_ex > clip->xMax ) ras.max_ex = (TCoord)clip->xMax;
if ( ras.max_ey > clip->yMax ) ras.max_ey = (TCoord)clip->yMax;
if ( ras.max_ex > clip->xMax ) ras.max_ex = clip->xMax;
if ( ras.max_ey > clip->yMax ) ras.max_ey = clip->yMax;
/* simple heuristic used to speed-up the bezier decomposition -- see */
/* the code in gray_render_conic() and gray_render_cubic() for more */
@ -1871,7 +1869,7 @@
}
/* setup vertical bands */
num_bands = ( ras.max_ey - ras.min_ey ) / ras.band_size;
num_bands = (int)( ( ras.max_ey - ras.min_ey ) / ras.band_size );
if ( num_bands == 0 ) num_bands = 1;
if ( num_bands >= 39 ) num_bands = 39;
@ -1898,8 +1896,8 @@
ras.num_cells = 0;
ras.invalid = 1;
ras.min_ey = (TCoord)band->min;
ras.max_ey = (TCoord)band->max;
ras.min_ey = band->min;
ras.max_ey = band->max;
#if 1
error = gray_convert_glyph_inner( RAS_VAR );