mirror of https://github.com/freetype/freetype
Change some fields in `FT_Bitmap' to unsigned type.
This doesn't break ABI. * include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays', `pixel_mode', and `palette_mode' unsigned types. * src/base/ftbitmap.c: Updated. (FT_Bitmap_Copy): Fix casts. * src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c: Updated.
This commit is contained in:
parent
df485774fb
commit
b3500af717
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
|||
2014-11-19 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Change some fields in `FT_Bitmap' to unsigned type.
|
||||
|
||||
This doesn't break ABI.
|
||||
|
||||
* include/ftimage.h (FT_Bitmap): Make `rows', `width', `num_grays',
|
||||
`pixel_mode', and `palette_mode' unsigned types.
|
||||
|
||||
* src/base/ftbitmap.c: Updated.
|
||||
(FT_Bitmap_Copy): Fix casts.
|
||||
|
||||
* src/cache/ftcsbits.c, src/raster/ftraster.c, src/sfnt/pngshim.c:
|
||||
Updated.
|
||||
|
||||
2014-11-19 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Make `FT_Bitmap_Convert' correctly handle negative `pitch' values.
|
||||
|
|
|
@ -318,13 +318,13 @@ FT_BEGIN_HEADER
|
|||
/* */
|
||||
typedef struct FT_Bitmap_
|
||||
{
|
||||
int rows;
|
||||
int width;
|
||||
unsigned int rows;
|
||||
unsigned int width;
|
||||
int pitch;
|
||||
unsigned char* buffer;
|
||||
short num_grays;
|
||||
char pixel_mode;
|
||||
char palette_mode;
|
||||
unsigned short num_grays;
|
||||
unsigned char pixel_mode;
|
||||
unsigned char palette_mode;
|
||||
void* palette;
|
||||
|
||||
} FT_Bitmap;
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
|
||||
if ( pitch < 0 )
|
||||
pitch = -pitch;
|
||||
size = (FT_ULong)( pitch * source->rows );
|
||||
size = (FT_ULong)pitch * source->rows;
|
||||
|
||||
if ( target->buffer )
|
||||
{
|
||||
|
@ -72,7 +72,7 @@
|
|||
|
||||
if ( target_pitch < 0 )
|
||||
target_pitch = -target_pitch;
|
||||
target_size = (FT_ULong)( target_pitch * target->rows );
|
||||
target_size = (FT_ULong)target_pitch * target->rows;
|
||||
|
||||
if ( target_size != size )
|
||||
(void)FT_QREALLOC( target->buffer, target_size, size );
|
||||
|
@ -109,7 +109,7 @@
|
|||
int pitch;
|
||||
int new_pitch;
|
||||
FT_UInt bpp;
|
||||
FT_Int i, width, height;
|
||||
FT_UInt i, width, height;
|
||||
unsigned char* buffer = NULL;
|
||||
|
||||
|
||||
|
@ -147,17 +147,17 @@
|
|||
if ( ypixels == 0 && new_pitch <= pitch )
|
||||
{
|
||||
/* zero the padding */
|
||||
FT_Int bit_width = pitch * 8;
|
||||
FT_Int bit_last = ( width + xpixels ) * bpp;
|
||||
FT_UInt bit_width = pitch * 8;
|
||||
FT_UInt bit_last = ( width + xpixels ) * bpp;
|
||||
|
||||
|
||||
if ( bit_last < bit_width )
|
||||
{
|
||||
FT_Byte* line = bitmap->buffer + ( bit_last >> 3 );
|
||||
FT_Byte* end = bitmap->buffer + pitch;
|
||||
FT_Int shift = bit_last & 7;
|
||||
FT_UInt shift = bit_last & 7;
|
||||
FT_UInt mask = 0xFF00U >> shift;
|
||||
FT_Int count = height;
|
||||
FT_UInt count = height;
|
||||
|
||||
|
||||
for ( ; count > 0; count--, line += pitch, end += pitch )
|
||||
|
@ -186,7 +186,7 @@
|
|||
/* thus take care of the flow direction */
|
||||
if ( bitmap->pitch > 0 )
|
||||
{
|
||||
FT_Int len = ( width * bpp + 7 ) >> 3;
|
||||
FT_UInt len = ( width * bpp + 7 ) >> 3;
|
||||
|
||||
|
||||
for ( i = 0; i < bitmap->rows; i++ )
|
||||
|
@ -195,7 +195,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
FT_Int len = ( width * bpp + 7 ) >> 3;
|
||||
FT_UInt len = ( width * bpp + 7 ) >> 3;
|
||||
|
||||
|
||||
for ( i = 0; i < bitmap->rows; i++ )
|
||||
|
@ -226,7 +226,8 @@
|
|||
{
|
||||
FT_Error error;
|
||||
unsigned char* p;
|
||||
FT_Int i, x, y, pitch;
|
||||
FT_Int i, x, pitch;
|
||||
FT_UInt y;
|
||||
FT_Int xstr, ystr;
|
||||
|
||||
|
||||
|
@ -451,8 +452,8 @@
|
|||
case FT_PIXEL_MODE_LCD_V:
|
||||
case FT_PIXEL_MODE_BGRA:
|
||||
{
|
||||
FT_Int pad, old_target_pitch;
|
||||
FT_Long old_size;
|
||||
FT_Int pad, old_target_pitch;
|
||||
FT_ULong old_size;
|
||||
|
||||
|
||||
old_target_pitch = target->pitch;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
/* */
|
||||
/* FreeType sbits manager (body). */
|
||||
/* */
|
||||
/* Copyright 2000-2006, 2009-2011, 2013 by */
|
||||
/* Copyright 2000-2006, 2009-2011, 2013, 2014 by */
|
||||
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
|
||||
/* */
|
||||
/* This file is part of the FreeType project, and may only be used, */
|
||||
|
@ -142,12 +142,12 @@
|
|||
goto BadGlyph;
|
||||
}
|
||||
|
||||
/* Check that our values fit into 8-bit containers! */
|
||||
/* Check whether our values fit into 8-bit containers! */
|
||||
/* If this is not the case, our bitmap is too large */
|
||||
/* and we will leave it as `missing' with sbit.buffer = 0 */
|
||||
|
||||
#define CHECK_CHAR( d ) ( temp = (FT_Char)d, temp == d )
|
||||
#define CHECK_BYTE( d ) ( temp = (FT_Byte)d, temp == d )
|
||||
#define CHECK_CHAR( d ) ( temp = (FT_Char)d, (FT_Int) temp == (FT_Int) d )
|
||||
#define CHECK_BYTE( d ) ( temp = (FT_Byte)d, (FT_UInt)temp == (FT_UInt)d )
|
||||
|
||||
/* horizontal advance in pixels */
|
||||
xadvance = ( slot->advance.x + 32 ) >> 6;
|
||||
|
|
|
@ -2553,7 +2553,7 @@
|
|||
|
||||
e1 = TRUNC( e1 );
|
||||
|
||||
if ( e1 >= 0 && e1 < ras.target.rows )
|
||||
if ( e1 >= 0 && (ULong)e1 < ras.target.rows )
|
||||
{
|
||||
PByte p;
|
||||
|
||||
|
@ -2647,7 +2647,7 @@
|
|||
/* bounding box instead */
|
||||
if ( pxl < 0 )
|
||||
pxl = e1;
|
||||
else if ( TRUNC( pxl ) >= ras.target.rows )
|
||||
else if ( (ULong)( TRUNC( pxl ) ) >= ras.target.rows )
|
||||
pxl = e2;
|
||||
|
||||
/* check that the other pixel isn't set */
|
||||
|
@ -2662,9 +2662,9 @@
|
|||
if ( ras.target.pitch > 0 )
|
||||
bits += ( ras.target.rows - 1 ) * ras.target.pitch;
|
||||
|
||||
if ( e1 >= 0 &&
|
||||
e1 < ras.target.rows &&
|
||||
*bits & f1 )
|
||||
if ( e1 >= 0 &&
|
||||
(ULong)e1 < ras.target.rows &&
|
||||
*bits & f1 )
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
@ -2676,7 +2676,7 @@
|
|||
|
||||
e1 = TRUNC( pxl );
|
||||
|
||||
if ( e1 >= 0 && e1 < ras.target.rows )
|
||||
if ( e1 >= 0 && (ULong)e1 < ras.target.rows )
|
||||
{
|
||||
bits -= e1 * ras.target.pitch;
|
||||
if ( ras.target.pitch > 0 )
|
||||
|
|
|
@ -205,11 +205,11 @@
|
|||
goto Exit;
|
||||
}
|
||||
|
||||
if ( !populate_map_and_metrics &&
|
||||
( x_offset + metrics->width > map->width ||
|
||||
y_offset + metrics->height > map->rows ||
|
||||
pix_bits != 32 ||
|
||||
map->pixel_mode != FT_PIXEL_MODE_BGRA ) )
|
||||
if ( !populate_map_and_metrics &&
|
||||
( (FT_UInt)x_offset + metrics->width > map->width ||
|
||||
(FT_UInt)y_offset + metrics->height > map->rows ||
|
||||
pix_bits != 32 ||
|
||||
map->pixel_mode != FT_PIXEL_MODE_BGRA ) )
|
||||
{
|
||||
error = FT_THROW( Invalid_Argument );
|
||||
goto Exit;
|
||||
|
|
Loading…
Reference in New Issue