67 lines
1.4 KiB
C++
67 lines
1.4 KiB
C++
|
#include "FTGLOutlineFont.h"
|
||
|
#include "FTOutlineGlyph.h"
|
||
|
|
||
|
|
||
|
FTGLOutlineFont::FTGLOutlineFont( const char* fontFilePath)
|
||
|
: FTFont( fontFilePath)
|
||
|
{}
|
||
|
|
||
|
|
||
|
FTGLOutlineFont::FTGLOutlineFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes)
|
||
|
: FTFont( pBufferBytes, bufferSizeInBytes)
|
||
|
{}
|
||
|
|
||
|
|
||
|
FTGLOutlineFont::~FTGLOutlineFont()
|
||
|
{}
|
||
|
|
||
|
|
||
|
FTGlyph* FTGLOutlineFont::MakeGlyph( unsigned int g)
|
||
|
{
|
||
|
FT_GlyphSlot ftGlyph = face.Glyph( g, FT_LOAD_NO_HINTING);
|
||
|
|
||
|
if( ftGlyph)
|
||
|
{
|
||
|
FTOutlineGlyph* tempGlyph = new FTOutlineGlyph( ftGlyph, useDisplayLists);
|
||
|
return tempGlyph;
|
||
|
}
|
||
|
|
||
|
err = face.Error();
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
|
||
|
void FTGLOutlineFont::Render( const char* string)
|
||
|
{
|
||
|
glPushAttrib( GL_ENABLE_BIT | GL_HINT_BIT | GL_LINE_BIT | GL_COLOR_BUFFER_BIT);
|
||
|
|
||
|
glDisable( GL_TEXTURE_2D);
|
||
|
|
||
|
glEnable( GL_LINE_SMOOTH);
|
||
|
glHint( GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
|
||
|
glEnable(GL_BLEND);
|
||
|
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE
|
||
|
|
||
|
FTFont::Render( string);
|
||
|
|
||
|
glPopAttrib();
|
||
|
}
|
||
|
|
||
|
|
||
|
void FTGLOutlineFont::Render( const wchar_t* string)
|
||
|
{
|
||
|
glPushAttrib( GL_ENABLE_BIT | GL_HINT_BIT | GL_LINE_BIT | GL_COLOR_BUFFER_BIT);
|
||
|
|
||
|
glDisable( GL_TEXTURE_2D);
|
||
|
|
||
|
glEnable( GL_LINE_SMOOTH);
|
||
|
glHint( GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
|
||
|
glEnable(GL_BLEND);
|
||
|
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE
|
||
|
|
||
|
FTFont::Render( string);
|
||
|
|
||
|
glPopAttrib();
|
||
|
}
|
||
|
|