diff --git a/ChangeLog b/ChangeLog index a5ba6f9da..9fde1ebb8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,32 @@ +2002-09-27 Werner Lemberg + + * src/include/freetype/internal/tttypes.h (num_sbit_strikes, + num_sbit_scales): Use `FT_ULong'. + * src/sfnt/sfobjs.c (sfnt_load_face): Updated accordingly. + * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Ditto. + (find_sbit_image): Remove cast. + * src/raster/ftrend1.c (ft_raster1_render): Fix cast. + +2002-09-27 Wolfgang Domröse + + * src/sfnt/ttload.c (tt_face_load_names): Use cast. + * src/sfnt/ttcmap.c (code_to_next2): Use long constant. + (code_to_index4): Use cast. + (code_to_index8_12): Fix cast. + * src/sfnt/ttcmap0.c (tt_cmap4_char_next, tt_cmap8_char_index, + tt_cmap12_char_index): Use cast for `result'. + (tt_face_build_cmaps): Use cast. + * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_ucs4): Use cast for + `code'. + (sfnt_load_face): Use FT_Int32 for `flags'. + + * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, + gray_compute_cbox, gray_convert_glyph, gray_raster_reset): Add casts + to `TCoord' and `int'. + More 16bit fixes. + s/FT_Pos/TPos/. + * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add casts. + 2002-09-26 Werner Lemberg * src/sfnt/ttpost.c (load_post_names, tt_face_free_ps_names, diff --git a/include/freetype/internal/tttypes.h b/include/freetype/internal/tttypes.h index 94a89051d..4097ac8f5 100644 --- a/include/freetype/internal/tttypes.h +++ b/include/freetype/internal/tttypes.h @@ -1518,10 +1518,10 @@ FT_BEGIN_HEADER TT_PCLT pclt; /* embedded bitmaps support */ - FT_Int num_sbit_strikes; + FT_ULong num_sbit_strikes; TT_SBit_Strike sbit_strikes; - FT_Int num_sbit_scales; + FT_ULong num_sbit_scales; TT_SBit_Scale sbit_scales; /* postscript names table */ diff --git a/src/raster/ftrend1.c b/src/raster/ftrend1.c index d7ab6e46d..86b170cfe 100644 --- a/src/raster/ftrend1.c +++ b/src/raster/ftrend1.c @@ -200,8 +200,8 @@ goto Exit; slot->format = FT_GLYPH_FORMAT_BITMAP; - slot->bitmap_left = (FT_UInt)( cbox.xMin >> 6 ); - slot->bitmap_top = (FT_UInt)( cbox.yMax >> 6 ); + slot->bitmap_left = (FT_Int)( cbox.xMin >> 6 ); + slot->bitmap_top = (FT_Int)( cbox.yMax >> 6 ); Exit: return error; diff --git a/src/sfnt/sfobjs.c b/src/sfnt/sfobjs.c index dac6c1806..adaca2440 100644 --- a/src/sfnt/sfobjs.c +++ b/src/sfnt/sfobjs.c @@ -86,7 +86,7 @@ for ( n = 0; n < len; n++ ) { - code = FT_NEXT_ULONG( read ); + code = (FT_UInt)FT_NEXT_ULONG( read ); if ( code < 32 || code > 127 ) code = '?'; @@ -515,7 +515,7 @@ /* now set up root fields */ { FT_Face root = &face->root; - FT_Int flags = 0; + FT_Int32 flags = 0; FT_Memory memory; @@ -617,7 +617,7 @@ if ( face->num_sbit_strikes ) { - FT_Int n; + FT_ULong n; root->face_flags |= FT_FACE_FLAG_FIXED_SIZES; diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c index a5f9cd1a0..f6aabfeec 100644 --- a/src/sfnt/ttcmap.c +++ b/src/sfnt/ttcmap.c @@ -629,7 +629,7 @@ * This is relatively simplistic -- look for a subHeader containing * glyphs and then walk to the first glyph in that subHeader. */ - while ( charCode < 0x10000 ) + while ( charCode < 0x10000L ) { char_lo = (FT_UInt)( charCode & 0xFF ); char_hi = charCode >> 8; @@ -746,7 +746,7 @@ /* directly */ if ( seg4->idRangeOffset == 0 ) - result = ( charCode + seg4->idDelta ) & 0xFFFFU; + result = (FT_UInt)( charCode + seg4->idDelta ) & 0xFFFFU; else { /* otherwise, we must use the glyphIdArray to do it */ @@ -971,7 +971,8 @@ cmap8_12->last_group = group; Found1: - return group->startGlyphID + (FT_UInt)( charCode - group->startCharCode ); + return (FT_UInt)( group->startGlyphID + + ( charCode - group->startCharCode ) ); } diff --git a/src/sfnt/ttcmap0.c b/src/sfnt/ttcmap0.c index 3b9e6fb1e..5a024ec8d 100644 --- a/src/sfnt/ttcmap0.c +++ b/src/sfnt/ttcmap0.c @@ -940,7 +940,7 @@ code++; } - return result; + return (FT_UInt)result; Exit: *pchar_code = result; @@ -1281,7 +1281,7 @@ if ( char_code <= end ) { - result = start_id + char_code - start; + result = (FT_UInt)( start_id + char_code - start ); break; } } @@ -1588,7 +1588,7 @@ if ( char_code <= end ) { - result = start_id + char_code - start; + result = (FT_UInt)( start_id + char_code - start ); break; } } @@ -1747,7 +1747,7 @@ ft_validator_init( FT_VALIDATOR( &valid ), cmap, limit, FT_VALIDATE_DEFAULT ); - valid.num_glyphs = face->root.num_glyphs; + valid.num_glyphs = (FT_UInt)face->root.num_glyphs; if ( ft_setjmp( FT_VALIDATOR( &valid )->jump_buffer ) == 0 ) { diff --git a/src/sfnt/ttload.c b/src/sfnt/ttload.c index 603e490e0..669f365e4 100644 --- a/src/sfnt/ttload.c +++ b/src/sfnt/ttload.c @@ -1139,7 +1139,7 @@ entry++; } - table->numNameRecords = entry - table->names; + table->numNameRecords = (FT_UInt)( entry - table->names ); } FT_FRAME_EXIT(); diff --git a/src/sfnt/ttsbit.c b/src/sfnt/ttsbit.c index 51513ea9c..a554060d1 100644 --- a/src/sfnt/ttsbit.c +++ b/src/sfnt/ttsbit.c @@ -626,7 +626,7 @@ FT_Int y_ppem, FT_ULong *astrike_index ) { - FT_Int i; + FT_ULong i; if ( x_ppem < 0 || x_ppem > 255 || @@ -791,8 +791,8 @@ TT_SBit_Strike strike; - if ( !face->sbit_strikes || - ( face->num_sbit_strikes <= (FT_Int)strike_index ) ) + if ( !face->sbit_strikes || + ( face->num_sbit_strikes <= strike_index ) ) goto Fail; strike = &face->sbit_strikes[strike_index]; diff --git a/src/smooth/ftgrays.c b/src/smooth/ftgrays.c index f519d3179..0733d346c 100644 --- a/src/smooth/ftgrays.c +++ b/src/smooth/ftgrays.c @@ -367,8 +367,8 @@ return; } - ras.min_ex = ras.max_ex = vec->x; - ras.min_ey = ras.max_ey = vec->y; + ras.min_ex = ras.max_ex = (TCoord)vec->x; + ras.min_ey = ras.max_ey = (TCoord)vec->y; vec++; @@ -378,10 +378,10 @@ TPos y = vec->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; + 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; } /* truncate the bounding box to integer pixels */ @@ -513,10 +513,10 @@ dx = x2 - x1; - 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 = x1 - SUBPIXELS( ex1 ); - fx2 = x2 - SUBPIXELS( ex2 ); + 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; */ + fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) ); + fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) ); /* trivial case. Happens often */ if ( y1 == y2 ) @@ -550,12 +550,12 @@ dx = -dx; } - delta = p / dx; - mod = p % dx; + delta = (TCoord)( p / dx ); + mod = (TCoord)( p % dx ); if ( mod < 0 ) { delta--; - mod += dx; + mod += (TCoord)dx; } ras.area += (TArea)( fx1 + first ) * delta; @@ -568,12 +568,12 @@ if ( ex1 != ex2 ) { p = ONE_PIXEL * ( y2 - y1 + delta ); - lift = p / dx; - rem = p % dx; + lift = (TCoord)( p / dx ); + rem = (TCoord)( p % dx ); if ( rem < 0 ) { lift--; - rem += dx; + rem += (TCoord)dx; } mod -= dx; @@ -584,7 +584,7 @@ mod += rem; if ( mod >= 0 ) { - mod -= dx; + mod -= (TCoord)dx; delta++; } @@ -612,13 +612,14 @@ { TCoord ey1, ey2, fy1, fy2; TPos dx, dy, x, x2; - int p, rem, mod, lift, delta, first, incr; + long p, first; + int delta, rem, mod, lift, incr; - ey1 = TRUNC( ras.last_ey ); - ey2 = TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */ - fy1 = ras.y - ras.last_ey; - fy2 = to_y - SUBPIXELS( ey2 ); + ey1 = (TCoord)TRUNC( ras.last_ey ); + ey2 = (TCoord)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 ) ); dx = to_x - ras.x; dy = to_y - ras.y; @@ -654,8 +655,8 @@ if ( dx == 0 ) { - TCoord ex = TRUNC( ras.x ); - TCoord two_fx = ( ras.x - SUBPIXELS( ex ) ) << 1; + TCoord ex = (TCoord)TRUNC( ras.x ); + TCoord two_fx = (TCoord)( ( ras.x - SUBPIXELS( (TPos)ex ) ) << 1 ); TPos area; @@ -666,16 +667,16 @@ incr = -1; } - delta = first - fy1; + delta = (int)( first - fy1 ); ras.area += (TArea)two_fx * delta; ras.cover += delta; ey1 += incr; gray_set_cell( raster, ex, ey1 ); - delta = first + first - ONE_PIXEL; + delta = (int)( first + first - ONE_PIXEL ); area = (TArea)two_fx * delta; - while( ey1 != ey2 ) + while ( ey1 != ey2 ) { ras.area += area; ras.cover += delta; @@ -683,50 +684,50 @@ gray_set_cell( raster, ex, ey1 ); } - delta = fy2 - ONE_PIXEL + first; + delta = (int)( fy2 - ONE_PIXEL + first ); ras.area += (TArea)two_fx * delta; ras.cover += delta; goto End; } /* ok, we have to render several scanlines */ - p = ( ONE_PIXEL - fy1 ) * dx; - first = ONE_PIXEL; + p = (int)( ( ONE_PIXEL - fy1 ) * dx ); + first = (int)ONE_PIXEL; incr = 1; if ( dy < 0 ) { - p = fy1 * dx; + p = fy1 * (int)dx; first = 0; incr = -1; dy = -dy; } - delta = p / dy; - mod = p % dy; + delta = (int)( p / dy ); + mod = (int)( p % dy ); if ( mod < 0 ) { delta--; - mod += dy; + mod += (TCoord)dy; } x = ras.x + delta; gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, first ); ey1 += incr; - gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 ); + gray_set_cell( RAS_VAR_ (TCoord)TRUNC( x ), ey1 ); if ( ey1 != ey2 ) { - p = ONE_PIXEL * dx; - lift = p / dy; - rem = p % dy; + p = (int)( ONE_PIXEL * dx ); + lift = (int)( p / dy ); + rem = (int)( p % dy ); if ( rem < 0 ) { lift--; - rem += dy; + rem += (int)dy; } - mod -= dy; + mod -= (int)dy; while ( ey1 != ey2 ) { @@ -734,12 +735,14 @@ mod += rem; if ( mod >= 0 ) { - mod -= dy; + mod -= (int)dy; delta++; } x2 = x + delta; - gray_render_scanline( RAS_VAR_ ey1, x, ONE_PIXEL - first, x2, first ); + gray_render_scanline( RAS_VAR_ ey1, x, + (TCoord)( ONE_PIXEL - first ), x2, + first ); x = x2; ey1 += incr; @@ -747,7 +750,9 @@ } } - gray_render_scanline( RAS_VAR_ ey1, x, ONE_PIXEL - first, to_x, fy2 ); + gray_render_scanline( RAS_VAR_ ey1, x, + (TCoord)( ONE_PIXEL - first ), to_x, + fy2 ); End: ras.x = to_x; @@ -1237,7 +1242,8 @@ x = UPSCALE( to->x ); y = UPSCALE( to->y ); - gray_start_cell( (PRaster)raster, TRUNC( x ), TRUNC( y ) ); + gray_start_cell( (PRaster)raster, + (TCoord)TRUNC( x ), (TCoord)TRUNC( y ) ); ((PRaster)raster)->x = x; ((PRaster)raster)->y = y; @@ -1361,8 +1367,8 @@ /* */ /* the coverage percentage is area/(PIXEL_BITS*PIXEL_BITS*2) */ /* */ - coverage = area >> ( PIXEL_BITS * 2 + 1 - 8); /* use range 0..256 */ - + coverage = (int)( area >> ( PIXEL_BITS * 2 + 1 - 8 ) ); + /* use range 0..256 */ if ( coverage < 0 ) coverage = -coverage; @@ -1593,14 +1599,14 @@ FT_Vector* limit; char* tags; - int n; /* index of contour in outline */ - int first; /* index of first point in contour */ - int error; - char tag; /* current point's state */ + int n; /* index of contour in outline */ + int first; /* index of first point in contour */ + int error; + char tag; /* current point's state */ #if 0 - int shift = func_interface->shift; - FT_Pos delta = func_interface->delta; + int shift = func_interface->shift; + TPos delta = func_interface->delta; #endif @@ -1784,7 +1790,7 @@ typedef struct TBand_ { - FT_Pos min, max; + TPos min, max; } TBand; @@ -1839,11 +1845,11 @@ ras.max_ey <= clip->yMin || ras.min_ey >= clip->yMax ) return 0; - if ( ras.min_ex < clip->xMin ) ras.min_ex = clip->xMin; - if ( ras.min_ey < clip->yMin ) ras.min_ey = clip->yMin; + 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.max_ex > clip->xMax ) ras.max_ex = clip->xMax; - if ( ras.max_ey > clip->yMax ) ras.max_ey = clip->yMax; + if ( ras.max_ex > clip->xMax ) ras.max_ex = (TCoord)clip->xMax; + if ( ras.max_ey > clip->yMax ) ras.max_ey = (TCoord)clip->yMax; /* simple heuristic used to speed-up the bezier decomposition -- see */ /* the code in gray_render_conic() and gray_render_cubic() for more */ @@ -1886,14 +1892,14 @@ while ( band >= bands ) { - FT_Pos bottom, top, middle; - int error; + TPos bottom, top, middle; + int error; ras.num_cells = 0; ras.invalid = 1; - ras.min_ey = band->min; - ras.max_ey = band->max; + ras.min_ey = (TCoord)band->min; + ras.max_ey = (TCoord)band->max; #if 1 error = gray_convert_glyph_inner( RAS_VAR ); @@ -2136,7 +2142,7 @@ if ( raster && pool_base && pool_size >= 4096 ) gray_init_cells( rast, (char*)pool_base, pool_size ); - rast->band_size = ( pool_size / sizeof ( TCell ) ) / 8; + rast->band_size = (int)( ( pool_size / sizeof ( TCell ) ) / 8 ); } diff --git a/src/smooth/ftsmooth.c b/src/smooth/ftsmooth.c index 199b94aef..131b17eba 100644 --- a/src/smooth/ftsmooth.c +++ b/src/smooth/ftsmooth.c @@ -218,8 +218,8 @@ goto Exit; slot->format = FT_GLYPH_FORMAT_BITMAP; - slot->bitmap_left = cbox.xMin >> 6; - slot->bitmap_top = cbox.yMax >> 6; + slot->bitmap_left = (FT_Int)( cbox.xMin >> 6 ); + slot->bitmap_top = (FT_Int)( cbox.yMax >> 6 ); Exit: if ( outline && origin )