diff options
author | Werner Lemberg <wl@gnu.org> | 2005-05-28 21:52:37 +0000 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2005-05-28 21:52:37 +0000 |
commit | 50d381f55d384609263007da499e246ca3c7808f (patch) | |
tree | 8d5955721134b2738328da3b771581c74bd1b2a1 | |
parent | 3386362160ac13800df50ff1a7c120416cefe194 (diff) | |
download | freetype2-50d381f55d384609263007da499e246ca3c7808f.tar.gz |
* src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch.
Handle FT_PIXEL_MODE_GRAY with num_gray != 256.
Improve speed for FT_PIXEL_MODE_GRAY.
(ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and
FT_PIXEL_MODE_LCD_V.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | src/base/ftbitmap.c | 22 |
2 files changed, 27 insertions, 3 deletions
@@ -1,3 +1,11 @@ +2005-05-28 Chia I Wu <b90201047@ntu.edu.tw> + + * src/base/ftbitmap.c (FT_Bitmap_Embolden): Handle negative pitch. + Handle FT_PIXEL_MODE_GRAY with num_gray != 256. + Improve speed for FT_PIXEL_MODE_GRAY. + (ft_bitmap_assure_buffer): Accept FT_PIXEL_MODE_LCD and + FT_PIXEL_MODE_LCD_V. + 2005-05-27 Chia I Wu <b90201047@ntu.edu.tw> * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Initialize `error'. diff --git a/src/base/ftbitmap.c b/src/base/ftbitmap.c index 9de9e8f57..030618876 100644 --- a/src/base/ftbitmap.c +++ b/src/base/ftbitmap.c @@ -115,6 +115,8 @@ switch ( bitmap->pixel_mode ) { case FT_PIXEL_MODE_MONO: + case FT_PIXEL_MODE_LCD: + case FT_PIXEL_MODE_LCD_V: ppb = 8; break; case FT_PIXEL_MODE_GRAY2: @@ -210,7 +212,7 @@ else { pitch = -pitch; - p = bitmap->buffer + pitch * ( bitmap->rows - ystr - 1 ); + p = bitmap->buffer + pitch * ( bitmap->rows - 1 ); } /* for each row */ @@ -237,16 +239,30 @@ /* the maximum value of 8 for `xstr' comes from here */ if ( x > 0 ) p[x] |= p[x - 1] << ( 8 - i ); + +#if 0 + if ( p[x] == 0xff ) + break; +#endif } else if ( bitmap->pixel_mode == FT_PIXEL_MODE_GRAY ) { if ( x - i >= 0 ) { - if ( p[x] + p[x - i] > 0xff ) - p[x] = 0xff; + if ( p[x] + p[x - i] > bitmap->num_grays ) + { + p[x] = bitmap->num_grays; + break; + } else + { p[x] += p[x - i]; + if ( p[x] == bitmap->num_grays ) + break; + } } + else + break; } } } |