diff options
Diffstat (limited to 'extern/bFTGL/src/FTCharmap.cpp')
-rw-r--r-- | extern/bFTGL/src/FTCharmap.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/extern/bFTGL/src/FTCharmap.cpp b/extern/bFTGL/src/FTCharmap.cpp new file mode 100644 index 00000000000..f2400eea0f6 --- /dev/null +++ b/extern/bFTGL/src/FTCharmap.cpp @@ -0,0 +1,62 @@ +#include "FTFace.h" +#include "FTCharmap.h" + + +FTCharmap::FTCharmap( FTFace* face) +: ftFace( *(face->Face())), + err(0) +{ + if( !ftFace->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::GlyphListIndex( unsigned int characterCode ) +{ + return charMap.find( characterCode); +} + + +unsigned int FTCharmap::FontIndex( unsigned int characterCode ) +{ + return FT_Get_Char_Index( ftFace, characterCode); +} + + +void FTCharmap::InsertIndex( const unsigned int characterCode, const unsigned int containerIndex) +{ + charMap.insert( characterCode, containerIndex); +} |