Changeset 407

Show
Ignore:
Timestamp:
07/21/08 17:40:06 (2 years ago)
Author:
odole
Message:

2008-07-21 Olivier DOLE <odole@pleyo.com>

Reviewed by Mario Bensi.
fix a regression in freetype with FT_PIXEL_MODE_MONO.

  • WKAL/Concretizations/Fonts/Freetype/BCFontFreetype.cpp:
    (WKAL::Font::drawGlyphs):
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/BAL/ChangeLogOWB

    r406 r407  
     12008-07-21  Olivier DOLE  <odole@pleyo.com> 
     2 
     3        Reviewed by Mario Bensi. 
     4        fix a regression in freetype with FT_PIXEL_MODE_MONO. 
     5 
     6        * WKAL/Concretizations/Fonts/Freetype/BCFontFreetype.cpp: 
     7        (WKAL::Font::drawGlyphs): 
     8 
    192008-07-21  Olivier DOLE  <odole@pleyo.com> 
    210 
  • trunk/BAL/WKAL/Concretizations/Fonts/Freetype/BCFontFreetype.cpp

    r406 r407  
    192192    Vector<unsigned> *glyphRGBABuffer = new Vector<unsigned>(width * height); 
    193193    glyphRGBABuffer->fill(0); 
     194    bool isMono = (ftBitmapGlyph[0]->bitmap.pixel_mode == FT_PIXEL_MODE_MONO);  
    194195    for (int i = 0; i < numGlyphs; i++) { 
    195196        int yOffset = height - glyphBoxY[i].y() + yMin; 
    196  
    197         if (ftBitmapGlyph[0]->bitmap.pixel_mode == FT_PIXEL_MODE_MONO) { 
     197        unsigned char* bitmapAddr = ftBitmapGlyph[i]->bitmap.buffer; 
     198 
     199        if (isMono) { 
    198200            unsigned pixelColor = (penColor.alpha() << 24) | (penColor.red() << 16) | (penColor.green() << 8) | penColor.blue(); 
    199             unsigned char* bitmapAddr = ftBitmapGlyph[i]->bitmap.buffer; 
    200201            for (int j = 0; j < ftBitmapGlyph[i]->bitmap.rows; j++) { 
    201                 unsigned char *bufferAddr = ftBitmapGlyph[i]->bitmap.buffer; 
     202                unsigned char *bufferAddr = bitmapAddr; 
    202203                for (int k = 0; k < ftBitmapGlyph[i]->bitmap.width; k++) { 
    203                     if ((*ftBitmapGlyph[i]->bitmap.buffer) & (1 << (7 - k % 8))) 
     204                    if ((*bitmapAddr) & (1 << (7 - k % 8))) 
    204205                        (*glyphRGBABuffer)[(yOffset + j) * width + glyphBoxX[i].x() + k] = pixelColor; 
    205206                    else 
     
    211212            } 
    212213        } else { 
    213             unsigned char* bitmapAddr = ftBitmapGlyph[i]->bitmap.buffer; 
    214214            for (int j = 0; j < ftBitmapGlyph[i]->bitmap.rows; j++) { 
    215215                for (int k = 0; k < ftBitmapGlyph[i]->bitmap.width; k++) {