* include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor
documentation improvements. * include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos. * src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4. If xstr is larger than 8 and bitmap is of pixel_mode FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error.
This commit is contained in:
parent
71d7628175
commit
38e82be157
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2005-05-30 Chia I Wu <b90201047@ntu.edu.tw>
|
||||
|
||||
* include/freetype/ftbitmap.h (FT_Bitmap_Embolden): Minor
|
||||
documentation improvements.
|
||||
|
||||
* include/freetype/ftoutln.h (FT_Outline_Embolden): Fix typos.
|
||||
|
||||
* src/base/ftbitmap.c (FT_Bitmap_Embolden): Add support for bitmap
|
||||
of pixel_mode FT_PIXEL_MODE_GRAY2 or FT_PIXEL_MODE_GRAY4.
|
||||
If xstr is larger than 8 and bitmap is of pixel_mode
|
||||
FT_PIXEL_MODE_MONO, set xstr to 8 instead of returning error.
|
||||
|
||||
2005-05-29 Chia I Wu <b90201047@ntu.edu.tw>
|
||||
|
||||
* src/base/ftbitmap.c (FT_Bitmap_Embolden): Fix emboldening bitmap
|
||||
|
|
|
@ -97,7 +97,7 @@ FT_BEGIN_HEADER
|
|||
/* FT_Bitmap_Embolden */
|
||||
/* */
|
||||
/* <Description> */
|
||||
/* Emboldens a bitmap. The new bitmap will be about `xStrength' */
|
||||
/* Embolden a bitmap. The new bitmap will be about `xStrength' */
|
||||
/* pixels wider and `yStrength' pixels higher. The left and bottom */
|
||||
/* borders are kept unchanged. */
|
||||
/* */
|
||||
|
@ -105,10 +105,10 @@ FT_BEGIN_HEADER
|
|||
/* library :: A handle to a library object. */
|
||||
/* */
|
||||
/* xStrength :: How strong the glyph is emboldened horizontally. */
|
||||
/* Expressed in 16.16 pixel format. */
|
||||
/* Expressed in 26.6 pixel format. */
|
||||
/* */
|
||||
/* yStrength :: How strong the glyph is emboldened vertically. */
|
||||
/* Expressed in 16.16 pixel format. */
|
||||
/* Expressed in 26.6 pixel format. */
|
||||
/* */
|
||||
/* <InOut> */
|
||||
/* bitmap :: A handle to the target bitmap. */
|
||||
|
@ -118,12 +118,11 @@ FT_BEGIN_HEADER
|
|||
/* */
|
||||
/* <Note> */
|
||||
/* The current implementation restricts `xStrength' to be less than */
|
||||
/* or equal to 8. */
|
||||
/* or equal to 8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO. */
|
||||
/* */
|
||||
/* Don't embolden the bitmap owned by a @FT_GlyphSlot directly! Call */
|
||||
/* @FT_Bitmap_Copy to get a copy and work on the copy instead. */
|
||||
/* */
|
||||
/* */
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Bitmap_Embolden( FT_Library library,
|
||||
FT_Bitmap* bitmap,
|
||||
|
|
|
@ -319,7 +319,7 @@ FT_BEGIN_HEADER
|
|||
/* */
|
||||
/* <Input> */
|
||||
/* strength :: How strong the glyph is emboldened. Expressed in */
|
||||
/* 16.16 pixel format. */
|
||||
/* 26.6 pixel format. */
|
||||
/* */
|
||||
/* <Return> */
|
||||
/* FreeType error code. 0 means success. */
|
||||
|
|
|
@ -211,30 +211,56 @@
|
|||
if ( !library )
|
||||
return FT_Err_Invalid_Library_Handle;
|
||||
|
||||
if ( !bitmap )
|
||||
if ( !bitmap || !bitmap->buffer )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
xstr = FT_PIX_ROUND( xStrength ) >> 6;
|
||||
ystr = FT_PIX_ROUND( yStrength ) >> 6;
|
||||
|
||||
if ( xstr == 0 && ystr == 0 )
|
||||
return FT_Err_Ok;
|
||||
else if ( xstr < 0 || ystr < 0 )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
switch ( bitmap->pixel_mode )
|
||||
{
|
||||
case FT_PIXEL_MODE_GRAY2:
|
||||
case FT_PIXEL_MODE_GRAY4:
|
||||
return FT_Err_Invalid_Glyph_Format;
|
||||
{
|
||||
FT_Bitmap tmp;
|
||||
FT_Int align;
|
||||
|
||||
|
||||
if ( bitmap->pixel_mode == FT_PIXEL_MODE_GRAY2 )
|
||||
align = ( bitmap->width + xstr + 3 ) / 4;
|
||||
else
|
||||
align = ( bitmap->width + xstr + 1 ) / 2;
|
||||
|
||||
FT_Bitmap_New( &tmp );
|
||||
error = FT_Bitmap_Convert( library, bitmap, &tmp, align );
|
||||
|
||||
if ( error )
|
||||
return error;
|
||||
|
||||
FT_Bitmap_Done( library, bitmap );
|
||||
*bitmap = tmp;
|
||||
}
|
||||
break;
|
||||
|
||||
case FT_PIXEL_MODE_MONO:
|
||||
if ( xstr > 8 )
|
||||
xstr = 8;
|
||||
break;
|
||||
|
||||
case FT_PIXEL_MODE_LCD:
|
||||
xstr *= 3;
|
||||
break;
|
||||
|
||||
case FT_PIXEL_MODE_LCD_V:
|
||||
ystr *= 3;
|
||||
break;
|
||||
}
|
||||
|
||||
if ( xstr == 0 && ystr == 0 )
|
||||
return FT_Err_Ok;
|
||||
else if ( xstr < 0 || ystr < 0 || xstr > 8 )
|
||||
return FT_Err_Invalid_Argument;
|
||||
|
||||
error = ft_bitmap_assure_buffer( library->memory, bitmap, xstr, ystr );
|
||||
if ( error )
|
||||
return error;
|
||||
|
|
Loading…
Reference in New Issue