ftglyphcontainer.cpp

来自「ftgl-2.1.2 夸平台的opengl显示字体」· C++ 代码 · 共 92 行

CPP
92
字号
#include    "FTGlyphContainer.h"#include    "FTGlyph.h"#include    "FTFace.h"#include    "FTCharmap.h"FTGlyphContainer::FTGlyphContainer( FTFace* f):   face(f),    err(0){    glyphs.push_back( NULL);    charMap = new FTCharmap( face);}FTGlyphContainer::~FTGlyphContainer(){    GlyphVector::iterator glyphIterator;    for( glyphIterator = glyphs.begin(); glyphIterator != glyphs.end(); ++glyphIterator)    {        delete *glyphIterator;    }        glyphs.clear();    delete charMap;}bool FTGlyphContainer::CharMap( FT_Encoding encoding){    bool result = charMap->CharMap( encoding);    err = charMap->Error();    return result;}unsigned int FTGlyphContainer::FontIndex( const unsigned int characterCode) const{    return charMap->FontIndex( characterCode);}void FTGlyphContainer::Add( FTGlyph* tempGlyph, const unsigned int characterCode){    charMap->InsertIndex( characterCode, glyphs.size());    glyphs.push_back( tempGlyph);}const FTGlyph* const FTGlyphContainer::Glyph( const unsigned int characterCode) const{    signed int index = charMap->GlyphListIndex( characterCode);    return glyphs[index];}FTBBox FTGlyphContainer::BBox( const unsigned int characterCode) const{    return glyphs[charMap->GlyphListIndex( characterCode)]->BBox();}float FTGlyphContainer::Advance( const unsigned int characterCode, const unsigned int nextCharacterCode){    unsigned int left = charMap->FontIndex( characterCode);    unsigned int right = charMap->FontIndex( nextCharacterCode);    float width = face->KernAdvance( left, right).X();    width += glyphs[charMap->GlyphListIndex( characterCode)]->Advance().X();        return width;}FTPoint FTGlyphContainer::Render( const unsigned int characterCode, const unsigned int nextCharacterCode, FTPoint penPosition){    FTPoint kernAdvance, advance;        unsigned int left = charMap->FontIndex( characterCode);    unsigned int right = charMap->FontIndex( nextCharacterCode);    kernAdvance = face->KernAdvance( left, right);            if( !face->Error())    {        advance = glyphs[charMap->GlyphListIndex( characterCode)]->Render( penPosition);    }        kernAdvance += advance;    return kernAdvance;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?