/[freetype]/freetype2/src/base/ftbitmap.c
ViewVC logotype

Diff of /freetype2/src/base/ftbitmap.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by wl, Sat May 28 21:52:37 2005 UTC revision 1.8 by wl, Mon May 30 07:54:20 2005 UTC
# Line 115  Line 115 
115      switch ( bitmap->pixel_mode )      switch ( bitmap->pixel_mode )
116      {      {
117      case FT_PIXEL_MODE_MONO:      case FT_PIXEL_MODE_MONO:
     case FT_PIXEL_MODE_LCD:  
     case FT_PIXEL_MODE_LCD_V:  
118        ppb = 8;        ppb = 8;
119        break;        break;
120      case FT_PIXEL_MODE_GRAY2:      case FT_PIXEL_MODE_GRAY2:
# Line 126  Line 124 
124        ppb = 2;        ppb = 2;
125        break;        break;
126      case FT_PIXEL_MODE_GRAY:      case FT_PIXEL_MODE_GRAY:
127        case FT_PIXEL_MODE_LCD:
128        case FT_PIXEL_MODE_LCD_V:
129        ppb = 1;        ppb = 1;
130        break;        break;
131      default:      default:
132        return FT_Err_Invalid_Glyph_Format;        return FT_Err_Invalid_Glyph_Format;
133      }      }
134    
135      /* check whether we must allocate memory */      /* if no need to allocate memory */
136      if ( ypixels == 0 && pitch * ppb >= bitmap->width + xpixels )      if ( ypixels == 0 && pitch * ppb >= bitmap->width + xpixels )
137        {
138          /* zero the padding */
139          for ( i = 0; i < bitmap->rows; i++ )
140          {
141            unsigned char*  last_byte;
142            int             bits = xpixels * ( 8 / ppb );
143            int             mask = 0;
144    
145    
146            last_byte = bitmap->buffer + i * pitch + ( bitmap->width - 1 ) / ppb;
147    
148            if ( bits >= 8 )
149            {
150              FT_MEM_ZERO( last_byte + 1, bits / 8 );
151              bits %= 8;
152            }
153    
154            if ( bits > 0 )
155            {
156              while ( bits-- > 0 )
157                mask |= 1 << bits;
158    
159              *last_byte &= ~mask;
160            }
161          }
162    
163        return FT_Err_Ok;        return FT_Err_Ok;
164        }
165    
166      new_pitch = ( bitmap->width + xpixels + ppb - 1 ) / ppb;      new_pitch = ( bitmap->width + xpixels + ppb - 1 ) / ppb;
167    
# Line 187  Line 214 
214      if ( !bitmap )      if ( !bitmap )
215        return FT_Err_Invalid_Argument;        return FT_Err_Invalid_Argument;
216    
217        xstr = FT_PIX_ROUND( xStrength ) >> 6;
218        ystr = FT_PIX_ROUND( yStrength ) >> 6;
219    
220      switch ( bitmap->pixel_mode )      switch ( bitmap->pixel_mode )
221      {      {
222      case FT_PIXEL_MODE_GRAY2:      case FT_PIXEL_MODE_GRAY2:
223      case FT_PIXEL_MODE_GRAY4:      case FT_PIXEL_MODE_GRAY4:
224        return FT_Err_Invalid_Glyph_Format;        return FT_Err_Invalid_Glyph_Format;
225        case FT_PIXEL_MODE_LCD:
226          xstr *= 3;
227          break;
228        case FT_PIXEL_MODE_LCD_V:
229          ystr *= 3;
230          break;
231      }      }
232    
     xstr = FT_PIX_ROUND( xStrength ) >> 6;  
     ystr = FT_PIX_ROUND( yStrength ) >> 6;  
   
233      if ( xstr == 0 && ystr == 0 )      if ( xstr == 0 && ystr == 0 )
234        return FT_Err_Ok;        return FT_Err_Ok;
235      else if ( xstr < 0 || ystr < 0 || xstr > 8 )      else if ( xstr < 0 || ystr < 0 || xstr > 8 )
# Line 245  Line 278 
278                break;                break;
279  #endif  #endif
280            }            }
281            else if ( bitmap->pixel_mode == FT_PIXEL_MODE_GRAY )            else
282            {            {
283              if ( x - i >= 0 )              if ( x - i >= 0 )
284              {              {
285                if ( p[x] + p[x - i] > bitmap->num_grays )                if ( p[x] + p[x - i] > bitmap->num_grays - 1 )
286                {                {
287                  p[x] = bitmap->num_grays;                  p[x] = bitmap->num_grays - 1;
288                  break;                  break;
289                }                }
290                else                else
291                {                {
292                  p[x] += p[x - i];                  p[x] += p[x - i];
293                  if ( p[x] == bitmap->num_grays )                  if ( p[x] == bitmap->num_grays - 1 )
294                    break;                    break;
295                }                }
296              }              }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26