Edit

kc3-lang/ftgl/src/FTCharmap.cpp

Branch :

  • Show log

    Commit

  • Author : henry
    Date : 2002-12-01 07:50:59
    Hash : 3f78baa9
    Message : Better error handling and remove platform/encoding function

  • src/FTCharmap.cpp
  • #include    "FTCharmap.h"
    
    
    FTCharmap::FTCharmap( FT_Face face)
    :   ftFace( face),
        err(0)
    {
        if( !face->charmap)
        {
            err = FT_Set_Charmap( ftFace, ftFace->charmaps[0]);
        }
        
        ftEncoding = ftFace->charmap->encoding;
    }
    
    
    FTCharmap::~FTCharmap()
    {
        charMap.clear();
    }
    
    
    bool FTCharmap::CharMap( FT_Encoding encoding)
    {
        if( ftEncoding == encoding)
        {
            return true;
        }
        
        err = FT_Select_Charmap( ftFace, encoding );
        
        if( !err)
        {
            ftEncoding = encoding;
        }
        else
        {
            ftEncoding = ft_encoding_none;
        }
            
        charMap.clear();
        return !err;
    }
    
    
    unsigned int FTCharmap::CharIndex( unsigned int characterCode )
    {
        const CharacterMap::GlyphIndex *result = charMap.find( characterCode);
        
        if( !result)
        {
            unsigned int glyphIndex = FT_Get_Char_Index( ftFace, characterCode);
            charMap.insert( characterCode, glyphIndex);
            return glyphIndex;
        }
        else
        {
            return *result;
        }
    }