diff options
Diffstat (limited to 'extern/bFTGL/src')
25 files changed, 0 insertions, 2298 deletions
diff --git a/extern/bFTGL/src/FTBitmapGlyph.cpp b/extern/bFTGL/src/FTBitmapGlyph.cpp deleted file mode 100644 index 5db33f10c79..00000000000 --- a/extern/bFTGL/src/FTBitmapGlyph.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include <string> - -#include "FTBitmapGlyph.h" - -FTBitmapGlyph::FTBitmapGlyph( FT_GlyphSlot glyph) -: FTGlyph( glyph), - destWidth(0), - destHeight(0), - data(0) -{ - err = FT_Render_Glyph( glyph, FT_RENDER_MODE_MONO); - if( err || ft_glyph_format_bitmap != glyph->format) - { - return; - } - - FT_Bitmap bitmap = glyph->bitmap; - - unsigned int srcWidth = bitmap.width; - unsigned int srcHeight = bitmap.rows; - unsigned int srcPitch = bitmap.pitch; - - destWidth = srcWidth; - destHeight = srcHeight; - destPitch = srcPitch; - - if( destWidth && destHeight) - { - data = new unsigned char[destPitch * destHeight]; - unsigned char* dest = data + (( destHeight - 1) * destPitch); - - unsigned char* src = bitmap.buffer; - - for( unsigned int y = 0; y < srcHeight; ++y) - { - memcpy( dest, src, srcPitch); - dest -= destPitch; - src += srcPitch; - } - } - - pos.x = glyph->bitmap_left; - pos.y = static_cast<int>(srcHeight) - glyph->bitmap_top; -} - - -FTBitmapGlyph::~FTBitmapGlyph() -{ - delete [] data; -} - - -float FTBitmapGlyph::Render( const FTPoint& pen) -{ - if( data) - { - glBitmap( 0, 0, 0.0, 0.0, pen.x + pos.x, pen.y - pos.y, (const GLubyte*)0 ); - - glPixelStorei( GL_UNPACK_ROW_LENGTH, destPitch * 8); - glBitmap( destWidth, destHeight, 0.0f, 0.0, 0.0, 0.0, (const GLubyte*)data); - - glBitmap( 0, 0, 0.0, 0.0, -pen.x - pos.x, -pen.y + pos.y, (const GLubyte*)0 ); - } - - return advance; -} diff --git a/extern/bFTGL/src/FTBufferGlyph.cpp b/extern/bFTGL/src/FTBufferGlyph.cpp deleted file mode 100644 index 27310103152..00000000000 --- a/extern/bFTGL/src/FTBufferGlyph.cpp +++ /dev/null @@ -1,59 +0,0 @@ -#include "FTBufferGlyph.h" - -FTBufferGlyph::FTBufferGlyph( FT_GlyphSlot glyph, unsigned char* b) -: FTGlyph( glyph), - destWidth(0), - destHeight(0), - data(0), - buffer(b) -{ - err = FT_Render_Glyph( glyph, FT_RENDER_MODE_NORMAL); - if( err || ft_glyph_format_bitmap != glyph->format) - { - return; - } - - FT_Bitmap bitmap = glyph->bitmap; - - unsigned int srcWidth = bitmap.width; - unsigned int srcHeight = bitmap.rows; - unsigned int srcPitch = bitmap.pitch; - - destWidth = srcWidth; - destHeight = srcHeight; - destPitch = srcPitch; - - if( destWidth && destHeight) - { - data = new unsigned char[destPitch * destHeight]; - unsigned char* dest = data + (( destHeight - 1) * destPitch); - - unsigned char* src = bitmap.buffer; - - for( unsigned int y = 0; y < srcHeight; ++y) - { - memcpy( dest, src, srcPitch); - dest -= destPitch; - src += srcPitch; - } - } - - pos.x = glyph->bitmap_left; - pos.y = srcHeight - glyph->bitmap_top; -} - - -FTBufferGlyph::~FTBufferGlyph() -{ - delete [] data; -} - - -float FTBufferGlyph::Render( const FTPoint& pen) -{ - if( data && buffer) - { - } - - return advance; -} diff --git a/extern/bFTGL/src/FTCharmap.cpp b/extern/bFTGL/src/FTCharmap.cpp deleted file mode 100644 index 00e8cfceca5..00000000000 --- a/extern/bFTGL/src/FTCharmap.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#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( const unsigned int characterCode ) -{ - return charMap.find( characterCode); -} - - -unsigned int FTCharmap::FontIndex( const 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); -} diff --git a/extern/bFTGL/src/FTContour.cpp b/extern/bFTGL/src/FTContour.cpp deleted file mode 100644 index 6b0cf8a23e1..00000000000 --- a/extern/bFTGL/src/FTContour.cpp +++ /dev/null @@ -1,149 +0,0 @@ -#include "FTContour.h" - -static const float BEZIER_STEP_SIZE = 0.2f; - - -void FTContour::AddPoint( FTPoint point) -{ - if( pointList.empty() || point != pointList[pointList.size() - 1]) - { - pointList.push_back( point); - } -} - - -void FTContour::AddPoint( float x, float y) -{ - AddPoint( FTPoint( x, y, 0.0f)); -} - - -void FTContour::evaluateQuadraticCurve() -{ - for( unsigned int i = 0; i <= ( 1.0f / BEZIER_STEP_SIZE); i++) - { - float bezierValues[2][2]; - - float t = static_cast<float>(i) * BEZIER_STEP_SIZE; - - bezierValues[0][0] = (1.0f - t) * controlPoints[0][0] + t * controlPoints[1][0]; - bezierValues[0][1] = (1.0f - t) * controlPoints[0][1] + t * controlPoints[1][1]; - - bezierValues[1][0] = (1.0f - t) * controlPoints[1][0] + t * controlPoints[2][0]; - bezierValues[1][1] = (1.0f - t) * controlPoints[1][1] + t * controlPoints[2][1]; - - bezierValues[0][0] = (1.0f - t) * bezierValues[0][0] + t * bezierValues[1][0]; - bezierValues[0][1] = (1.0f - t) * bezierValues[0][1] + t * bezierValues[1][1]; - - AddPoint( bezierValues[0][0], bezierValues[0][1]); - } -} - -void FTContour::evaluateCubicCurve() -{ - for( unsigned int i = 0; i <= ( 1.0f / BEZIER_STEP_SIZE); i++) - { - float bezierValues[3][2]; - - float t = static_cast<float>(i) * BEZIER_STEP_SIZE; - - bezierValues[0][0] = (1.0f - t) * controlPoints[0][0] + t * controlPoints[1][0]; - bezierValues[0][1] = (1.0f - t) * controlPoints[0][1] + t * controlPoints[1][1]; - - bezierValues[1][0] = (1.0f - t) * controlPoints[1][0] + t * controlPoints[2][0]; - bezierValues[1][1] = (1.0f - t) * controlPoints[1][1] + t * controlPoints[2][1]; - - bezierValues[2][0] = (1.0f - t) * controlPoints[2][0] + t * controlPoints[3][0]; - bezierValues[2][1] = (1.0f - t) * controlPoints[2][1] + t * controlPoints[3][1]; - - bezierValues[0][0] = (1.0f - t) * bezierValues[0][0] + t * bezierValues[1][0]; - bezierValues[0][1] = (1.0f - t) * bezierValues[0][1] + t * bezierValues[1][1]; - - bezierValues[1][0] = (1.0f - t) * bezierValues[1][0] + t * bezierValues[2][0]; - bezierValues[1][1] = (1.0f - t) * bezierValues[1][1] + t * bezierValues[2][1]; - - bezierValues[0][0] = (1.0f - t) * bezierValues[0][0] + t * bezierValues[1][0]; - bezierValues[0][1] = (1.0f - t) * bezierValues[0][1] + t * bezierValues[1][1]; - - AddPoint( bezierValues[0][0], bezierValues[0][1]); - } -} - - -FTContour::FTContour( FT_Vector* contour, char* pointTags, unsigned int numberOfPoints) -{ - for( unsigned int pointIndex = 0; pointIndex < numberOfPoints; ++ pointIndex) - { - char pointTag = pointTags[pointIndex]; - - if( pointTag == FT_Curve_Tag_On || numberOfPoints < 2) - { - AddPoint( contour[pointIndex].x, contour[pointIndex].y); - continue; - } - - FTPoint controlPoint( contour[pointIndex]); - FTPoint previousPoint = ( 0 == pointIndex) - ? FTPoint( contour[numberOfPoints - 1]) - : pointList[pointList.size() - 1]; - - FTPoint nextPoint = ( pointIndex == numberOfPoints - 1) - ? pointList[0] - : FTPoint( contour[pointIndex + 1]); - - if( pointTag == FT_Curve_Tag_Conic) - { - char nextPointTag = ( pointIndex == numberOfPoints - 1) - ? pointTags[0] - : pointTags[pointIndex + 1]; - - while( nextPointTag == FT_Curve_Tag_Conic) - { - nextPoint = FTPoint( static_cast<float>( controlPoint.x + nextPoint.x) * 0.5f, - static_cast<float>( controlPoint.y + nextPoint.y) * 0.5f, - 0); - - controlPoints[0][0] = previousPoint.x; controlPoints[0][1] = previousPoint.y; - controlPoints[1][0] = controlPoint.x; controlPoints[1][1] = controlPoint.y; - controlPoints[2][0] = nextPoint.x; controlPoints[2][1] = nextPoint.y; - - evaluateQuadraticCurve(); - ++pointIndex; - - previousPoint = nextPoint; - controlPoint = FTPoint( contour[pointIndex]); - nextPoint = ( pointIndex == numberOfPoints - 1) - ? pointList[0] - : FTPoint( contour[pointIndex + 1]); - nextPointTag = ( pointIndex == numberOfPoints - 1) - ? pointTags[0] - : pointTags[pointIndex + 1]; - } - - controlPoints[0][0] = previousPoint.x; controlPoints[0][1] = previousPoint.y; - controlPoints[1][0] = controlPoint.x; controlPoints[1][1] = controlPoint.y; - controlPoints[2][0] = nextPoint.x; controlPoints[2][1] = nextPoint.y; - - evaluateQuadraticCurve(); - continue; - } - - if( pointTag == FT_Curve_Tag_Cubic) - { - FTPoint controlPoint2 = nextPoint; - - FTPoint nextPoint = ( pointIndex == numberOfPoints - 2) - ? pointList[0] - : FTPoint( contour[pointIndex + 2]); - - controlPoints[0][0] = previousPoint.x; controlPoints[0][1] = previousPoint.y; - controlPoints[1][0] = controlPoint.x; controlPoints[1][1] = controlPoint.y; - controlPoints[2][0] = controlPoint2.x; controlPoints[2][1] = controlPoint2.y; - controlPoints[3][0] = nextPoint.x; controlPoints[3][1] = nextPoint.y; - - evaluateCubicCurve(); - ++pointIndex; - continue; - } - } -} diff --git a/extern/bFTGL/src/FTExtrdGlyph.cpp b/extern/bFTGL/src/FTExtrdGlyph.cpp deleted file mode 100644 index 0b120e68709..00000000000 --- a/extern/bFTGL/src/FTExtrdGlyph.cpp +++ /dev/null @@ -1,141 +0,0 @@ -#include <math.h> - -#include "FTExtrdGlyph.h" -#include "FTVectoriser.h" - - -FTExtrdGlyph::FTExtrdGlyph( FT_GlyphSlot glyph, float d) -: FTGlyph( glyph), - glList(0), - depth(d) -{ - bBox.SetDepth( -depth); - - if( ft_glyph_format_outline != glyph->format) - { - err = 0x14; // Invalid_Outline - return; - } - - FTVectoriser vectoriser( glyph); - if ( ( vectoriser.ContourCount() < 1) || ( vectoriser.PointCount() < 3)) - { - return; - } - - unsigned int tesselationIndex; - glList = glGenLists(1); - glNewList( glList, GL_COMPILE); - - vectoriser.MakeMesh( 1.0); - glNormal3d(0.0, 0.0, 1.0); - - const FTMesh* mesh = vectoriser.GetMesh(); - for( tesselationIndex = 0; tesselationIndex < mesh->TesselationCount(); ++tesselationIndex) - { - const FTTesselation* subMesh = mesh->Tesselation( tesselationIndex); - unsigned int polyonType = subMesh->PolygonType(); - - glBegin( polyonType); - for( unsigned int pointIndex = 0; pointIndex < subMesh->PointCount(); ++pointIndex) - { - glVertex3f( subMesh->Point( pointIndex).x / 64.0f, - subMesh->Point( pointIndex).y / 64.0f, - 0.0f); - } - glEnd(); - } - - vectoriser.MakeMesh( -1.0); - glNormal3d(0.0, 0.0, -1.0); - - mesh = vectoriser.GetMesh(); - for( tesselationIndex = 0; tesselationIndex < mesh->TesselationCount(); ++tesselationIndex) - { - const FTTesselation* subMesh = mesh->Tesselation( tesselationIndex); - unsigned int polyonType = subMesh->PolygonType(); - - glBegin( polyonType); - for( unsigned int pointIndex = 0; pointIndex < subMesh->PointCount(); ++pointIndex) - { - glVertex3f( subMesh->Point( pointIndex).x / 64.0f, - subMesh->Point( pointIndex).y / 64.0f, - -depth); - } - glEnd(); - } - - int contourFlag = vectoriser.ContourFlag(); - - for( size_t c = 0; c < vectoriser.ContourCount(); ++c) - { - const FTContour* contour = vectoriser.Contour(c); - unsigned int numberOfPoints = contour->PointCount(); - - glBegin( GL_QUAD_STRIP); - for( unsigned int j = 0; j <= numberOfPoints; ++j) - { - unsigned int index = ( j == numberOfPoints) ? 0 : j; - unsigned int nextIndex = ( index == numberOfPoints - 1) ? 0 : index + 1; - - FTPoint normal = GetNormal( contour->Point(index), contour->Point(nextIndex)); - glNormal3f( normal.x, normal.y, 0.0f); - - if( contourFlag & ft_outline_reverse_fill) - { - glVertex3f( contour->Point(index).x / 64.0f, contour->Point(index).y / 64.0f, 0.0f); - glVertex3f( contour->Point(index).x / 64.0f, contour->Point(index).y / 64.0f, -depth); - } - else - { - glVertex3f( contour->Point(index).x / 64.0f, contour->Point(index).y / 64.0f, -depth); - glVertex3f( contour->Point(index).x / 64.0f, contour->Point(index).y / 64.0f, 0.0f); - } - } - glEnd(); - } - - glEndList(); -} - - -FTExtrdGlyph::~FTExtrdGlyph() -{ - glDeleteLists( glList, 1); -} - - -float FTExtrdGlyph::Render( const FTPoint& pen) -{ - if( glList) - { - glTranslatef( pen.x, pen.y, 0); - glCallList( glList); - glTranslatef( -pen.x, -pen.y, 0); - } - - return advance; -} - - -FTPoint FTExtrdGlyph::GetNormal( const FTPoint &a, const FTPoint &b) -{ - float vectorX = a.x - b.x; - float vectorY = a.y - b.y; - - float length = sqrt( vectorX * vectorX + vectorY * vectorY ); - - if( length > 0.0f) - { - length = 1 / length; - } - else - { - length = 0.0f; - } - - return FTPoint( -vectorY * length, - vectorX * length, - 0.0f); -} - diff --git a/extern/bFTGL/src/FTFace.cpp b/extern/bFTGL/src/FTFace.cpp deleted file mode 100644 index 0385e234d6c..00000000000 --- a/extern/bFTGL/src/FTFace.cpp +++ /dev/null @@ -1,154 +0,0 @@ -#include "FTFace.h" -#include "FTLibrary.h" - -#include FT_TRUETYPE_TABLES_H - -FTFace::FTFace( const char* filename) -: numGlyphs(0), - fontEncodingList(0), - err(0) -{ - const FT_Long DEFAULT_FACE_INDEX = 0; - ftFace = new FT_Face; - - err = FT_New_Face( *FTLibrary::Instance().GetLibrary(), filename, DEFAULT_FACE_INDEX, ftFace); - - if( err) - { - delete ftFace; - ftFace = 0; - } - else - { - numGlyphs = (*ftFace)->num_glyphs; - } -} - - -FTFace::FTFace( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: numGlyphs(0), - err(0) -{ - const FT_Long DEFAULT_FACE_INDEX = 0; - ftFace = new FT_Face; - - err = FT_New_Memory_Face( *FTLibrary::Instance().GetLibrary(), (FT_Byte *)pBufferBytes, bufferSizeInBytes, DEFAULT_FACE_INDEX, ftFace); - - if( err) - { - delete ftFace; - ftFace = 0; - } - else - { - numGlyphs = (*ftFace)->num_glyphs; - } -} - - -FTFace::~FTFace() -{ - Close(); -} - - -bool FTFace::Attach( const char* filename) -{ - err = FT_Attach_File( *ftFace, filename); - return !err; -} - - -bool FTFace::Attach( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -{ - FT_Open_Args open; - - open.flags = FT_OPEN_MEMORY; - open.memory_base = (FT_Byte *)pBufferBytes; - open.memory_size = bufferSizeInBytes; - - err = FT_Attach_Stream( *ftFace, &open); - return !err; -} - - -void FTFace::Close() -{ - if( ftFace) - { - FT_Done_Face( *ftFace); - delete ftFace; - ftFace = 0; - } -} - - -const FTSize& FTFace::Size( const unsigned int size, const unsigned int res) -{ - charSize.CharSize( ftFace, size, res, res); - err = charSize.Error(); - - return charSize; -} - - -unsigned int FTFace::CharMapCount() -{ - return (*ftFace)->num_charmaps; -} - - -FT_Encoding* FTFace::CharMapList() -{ - if( 0 == fontEncodingList) - { - fontEncodingList = new FT_Encoding[CharMapCount()]; - for( size_t encodingIndex = 0; encodingIndex < CharMapCount(); ++encodingIndex) - { - fontEncodingList[encodingIndex] = (*ftFace)->charmaps[encodingIndex]->encoding; - } - } - - return fontEncodingList; -} - - -unsigned int FTFace::UnitsPerEM() const -{ - return (*ftFace)->units_per_EM; -} - - -FTPoint FTFace::KernAdvance( unsigned int index1, unsigned int index2) -{ - float x, y; - x = y = 0.0f; - - if( FT_HAS_KERNING((*ftFace)) && index1 && index2) - { - FT_Vector kernAdvance; - kernAdvance.x = kernAdvance.y = 0; - - err = FT_Get_Kerning( *ftFace, index1, index2, ft_kerning_unfitted, &kernAdvance); - if( !err) - { - x = static_cast<float>( kernAdvance.x) / 64.0f; - y = static_cast<float>( kernAdvance.y) / 64.0f; - } - } - - return FTPoint( x, y, 0.0); -} - - -FT_GlyphSlot FTFace::Glyph( unsigned int index, FT_Int load_flags) -{ - err = FT_Load_Glyph( *ftFace, index, load_flags); - if( err) - { - return NULL; - } - - return (*ftFace)->glyph; -} - diff --git a/extern/bFTGL/src/FTFont.cpp b/extern/bFTGL/src/FTFont.cpp deleted file mode 100644 index c06d883104b..00000000000 --- a/extern/bFTGL/src/FTFont.cpp +++ /dev/null @@ -1,271 +0,0 @@ -#include "FTFace.h" -#include "FTFont.h" -#include "FTGlyphContainer.h" -#include "FTBBox.h" - - -FTFont::FTFont( const char* fontname) -: face( fontname), - glyphList(0) -{ - err = face.Error(); - if( err == 0) - { - glyphList = new FTGlyphContainer( &face); - } -} - - -FTFont::FTFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: face( pBufferBytes, bufferSizeInBytes), - glyphList(0) -{ - err = face.Error(); - if( err == 0) - { - glyphList = new FTGlyphContainer( &face); - } -} - - -FTFont::~FTFont() -{ - delete glyphList; -} - - -bool FTFont::Attach( const char* filename) -{ - if( face.Attach( filename)) - { - err = 0; - return true; - } - else - { - err = face.Error(); - return false; - } -} - - -bool FTFont::Attach( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -{ - if( face.Attach( pBufferBytes, bufferSizeInBytes)) - { - err = 0; - return true; - } - else - { - err = face.Error(); - return false; - } -} - - -bool FTFont::FaceSize( const unsigned int size, const unsigned int res ) -{ - charSize = face.Size( size, res); - - if( face.Error()) - { - return false; - } - - if( glyphList != NULL) - { - delete glyphList; - } - - glyphList = new FTGlyphContainer( &face); - return true; -} - - -unsigned int FTFont::FaceSize() const -{ - return charSize.CharSize(); -} - - -bool FTFont::CharMap( FT_Encoding encoding) -{ - bool result = glyphList->CharMap( encoding); - err = glyphList->Error(); - return result; -} - - -unsigned int FTFont::CharMapCount() -{ - return face.CharMapCount(); -} - - -FT_Encoding* FTFont::CharMapList() -{ - return face.CharMapList(); -} - - -float FTFont::Ascender() const -{ - return charSize.Ascender(); -} - - -float FTFont::Descender() const -{ - return charSize.Descender(); -} - - -void FTFont::BBox( const char* string, - float& llx, float& lly, float& llz, float& urx, float& ury, float& urz) -{ - FTBBox totalBBox; - - if((NULL != string) && ('\0' != *string)) - { - const unsigned char* c = (unsigned char*)string; - - CheckGlyph( *c); - - totalBBox = glyphList->BBox( *c); - float advance = glyphList->Advance( *c, *(c + 1)); - ++c; - - while( *c) - { - CheckGlyph( *c); - FTBBox tempBBox = glyphList->BBox( *c); - tempBBox.Move( FTPoint( advance, 0.0f, 0.0f)); - totalBBox += tempBBox; - advance += glyphList->Advance( *c, *(c + 1)); - ++c; - } - } - - llx = totalBBox.lowerX; - lly = totalBBox.lowerY; - llz = totalBBox.lowerZ; - urx = totalBBox.upperX; - ury = totalBBox.upperY; - urz = totalBBox.upperZ; -} - - -void FTFont::BBox( const wchar_t* string, - float& llx, float& lly, float& llz, float& urx, float& ury, float& urz) -{ - FTBBox totalBBox; - - if((NULL != string) && ('\0' != *string)) - { - const wchar_t* c = string; - - CheckGlyph( *c); - - totalBBox = glyphList->BBox( *c); - float advance = glyphList->Advance( *c, *(c + 1)); - ++c; - - while( *c) - { - CheckGlyph( *c); - FTBBox tempBBox = glyphList->BBox( *c); - tempBBox.Move( FTPoint( advance, 0.0f, 0.0f)); - totalBBox += tempBBox; - advance += glyphList->Advance( *c, *(c + 1)); - ++c; - } - } - - llx = totalBBox.lowerX; - lly = totalBBox.lowerY; - llz = totalBBox.lowerZ; - urx = totalBBox.upperX; - ury = totalBBox.upperY; - urz = totalBBox.upperZ; -} - - -float FTFont::Advance( const wchar_t* string) -{ - const wchar_t* c = string; - float width = 0.0f; - - while( *c) - { - CheckGlyph( *c); - width += glyphList->Advance( *c, *(c + 1)); - ++c; - } - - return width; -} - - -float FTFont::Advance( const char* string) -{ - const unsigned char* c = (unsigned char*)string; - float width = 0.0f; - - while( *c) - { - CheckGlyph( *c); - width += glyphList->Advance( *c, *(c + 1)); - ++c; - } - - return width; -} - - -void FTFont::Render( const char* string ) -{ - const unsigned char* c = (unsigned char*)string; - pen.x = 0; pen.y = 0; - - while( *c) - { - DoRender( *c, *(c + 1)); - ++c; - } -} - - -void FTFont::Render( const wchar_t* string ) -{ - const wchar_t* c = string; - pen.x = 0; pen.y = 0; - - while( *c) - { - DoRender( *c, *(c + 1)); - ++c; - } -} - - -void FTFont::DoRender( const unsigned int chr, const unsigned int nextChr) -{ - CheckGlyph( chr); - - FTPoint kernAdvance = glyphList->Render( chr, nextChr, pen); - - pen.x += kernAdvance.x; - pen.y += kernAdvance.y; -} - - -void FTFont::CheckGlyph( const unsigned int characterCode) -{ - if( NULL == glyphList->Glyph( characterCode)) - { - unsigned int glyphIndex = glyphList->FontIndex( characterCode); - glyphList->Add( MakeGlyph( glyphIndex), characterCode); - } -} - diff --git a/extern/bFTGL/src/FTGLBitmapFont.cpp b/extern/bFTGL/src/FTGLBitmapFont.cpp deleted file mode 100644 index 7e982a608da..00000000000 --- a/extern/bFTGL/src/FTGLBitmapFont.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "FTGLBitmapFont.h" -#include "FTBitmapGlyph.h" - - -FTGLBitmapFont::FTGLBitmapFont( const char* fontname) -: FTFont( fontname) -{} - - -FTGLBitmapFont::FTGLBitmapFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: FTFont( pBufferBytes, bufferSizeInBytes) -{} - - -FTGLBitmapFont::~FTGLBitmapFont() -{} - - -FTGlyph* FTGLBitmapFont::MakeGlyph( unsigned int g) -{ - FT_GlyphSlot ftGlyph = face.Glyph( g, FT_LOAD_DEFAULT); - - if( ftGlyph) - { - FTBitmapGlyph* tempGlyph = new FTBitmapGlyph( ftGlyph); - return tempGlyph; - } - - err = face.Error(); - return NULL; -} - - -void FTGLBitmapFont::Render( const char* string) -{ - glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT); - glPushAttrib( GL_ENABLE_BIT); - - glPixelStorei( GL_UNPACK_LSB_FIRST, GL_FALSE); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1); - - glDisable( GL_BLEND); - - FTFont::Render( string); - - glPopAttrib(); - glPopClientAttrib(); -} - - -void FTGLBitmapFont::Render( const wchar_t* string) -{ - glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT); - glPushAttrib( GL_ENABLE_BIT); - - glPixelStorei( GL_UNPACK_LSB_FIRST, GL_FALSE); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1); - - glDisable( GL_BLEND); - - FTFont::Render( string); - - glPopAttrib(); - glPopClientAttrib(); -} - diff --git a/extern/bFTGL/src/FTGLBufferFont.cpp b/extern/bFTGL/src/FTGLBufferFont.cpp deleted file mode 100644 index b8af0fcb05f..00000000000 --- a/extern/bFTGL/src/FTGLBufferFont.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "FTGLBufferFont.h" -#include "FTBufferGlyph.h" - - -FTGLBufferFont::FTGLBufferFont( const char* fontname) -: FTFont( fontname), - buffer(0) -{} - - -FTGLBufferFont::FTGLBufferFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: FTFont( pBufferBytes, bufferSizeInBytes), - buffer(0) -{} - - -FTGLBufferFont::~FTGLBufferFont() -{} - - -FTGlyph* FTGLBufferFont::MakeGlyph( unsigned int g) -{ - FT_GlyphSlot ftGlyph = face.Glyph( g, FT_LOAD_NO_HINTING); - - if( ftGlyph) - { - FTBufferGlyph* tempGlyph = new FTBufferGlyph( ftGlyph, buffer); - return tempGlyph; - } - - err = face.Error(); - return NULL; -} - - -void FTGLBufferFont::Render( const char* string) -{ - if( NULL != buffer) - { - FTFont::Render( string); - } -} - - -void FTGLBufferFont::Render( const wchar_t* string) -{ - if( NULL != buffer) - { - FTFont::Render( string); - } -} - - diff --git a/extern/bFTGL/src/FTGLExtrdFont.cpp b/extern/bFTGL/src/FTGLExtrdFont.cpp deleted file mode 100644 index 37d89333a60..00000000000 --- a/extern/bFTGL/src/FTGLExtrdFont.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include "FTGLExtrdFont.h" -#include "FTExtrdGlyph.h" - - -FTGLExtrdFont::FTGLExtrdFont( const char* fontname) -: FTFont( fontname), - depth( 0.0f) -{} - - -FTGLExtrdFont::FTGLExtrdFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: FTFont( pBufferBytes, bufferSizeInBytes), - depth( 0.0f) -{} - - -FTGLExtrdFont::~FTGLExtrdFont() -{} - - -FTGlyph* FTGLExtrdFont::MakeGlyph( unsigned int glyphIndex) -{ - FT_GlyphSlot ftGlyph = face.Glyph( glyphIndex, FT_LOAD_NO_HINTING); - - if( ftGlyph) - { - FTExtrdGlyph* tempGlyph = new FTExtrdGlyph( ftGlyph, depth); - return tempGlyph; - } - - err = face.Error(); - return NULL; -} - - diff --git a/extern/bFTGL/src/FTGLOutlineFont.cpp b/extern/bFTGL/src/FTGLOutlineFont.cpp deleted file mode 100644 index b9fd187e862..00000000000 --- a/extern/bFTGL/src/FTGLOutlineFont.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "FTGLOutlineFont.h" -#include "FTOutlineGlyph.h" - - -FTGLOutlineFont::FTGLOutlineFont( const char* fontname) -: FTFont( fontname) -{} - - -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); - 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(); -} - diff --git a/extern/bFTGL/src/FTGLPixmapFont.cpp b/extern/bFTGL/src/FTGLPixmapFont.cpp deleted file mode 100644 index 2654b85e31e..00000000000 --- a/extern/bFTGL/src/FTGLPixmapFont.cpp +++ /dev/null @@ -1,68 +0,0 @@ -#include "FTGLPixmapFont.h" -#include "FTPixmapGlyph.h" - - -FTGLPixmapFont::FTGLPixmapFont( const char* fontname) -: FTFont( fontname) -{} - - -FTGLPixmapFont::FTGLPixmapFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: FTFont( pBufferBytes, bufferSizeInBytes) -{} - - -FTGLPixmapFont::~FTGLPixmapFont() -{} - - -FTGlyph* FTGLPixmapFont::MakeGlyph( unsigned int g) -{ - FT_GlyphSlot ftGlyph = face.Glyph( g, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP); - - if( ftGlyph) - { - FTPixmapGlyph* tempGlyph = new FTPixmapGlyph( ftGlyph); - return tempGlyph; - } - - err = face.Error(); - return NULL; -} - - -void FTGLPixmapFont::Render( const char* string) -{ - glPushAttrib( GL_ENABLE_BIT | GL_PIXEL_MODE_BIT | GL_COLOR_BUFFER_BIT); - glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT); - - glEnable(GL_BLEND); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glDisable( GL_TEXTURE_2D); - - FTFont::Render( string); - - glPopClientAttrib(); - glPopAttrib(); -} - - -void FTGLPixmapFont::Render( const wchar_t* string) -{ - //glPushAttrib( GL_ENABLE_BIT | GL_PIXEL_MODE_BIT | GL_COLOR_BUFFER_BIT); - // glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT); - - glEnable(GL_BLEND); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glDisable( GL_TEXTURE_2D); - - FTFont::Render( string); - - glDisable(GL_BLEND); - // glPopClientAttrib(); - // glPopAttrib(); -} - - diff --git a/extern/bFTGL/src/FTGLPolygonFont.cpp b/extern/bFTGL/src/FTGLPolygonFont.cpp deleted file mode 100644 index 2d4dfa1f26a..00000000000 --- a/extern/bFTGL/src/FTGLPolygonFont.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "FTGLPolygonFont.h" -#include "FTPolyGlyph.h" - - -FTGLPolygonFont::FTGLPolygonFont( const char* fontname) -: FTFont( fontname) -{} - - -FTGLPolygonFont::FTGLPolygonFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: FTFont( pBufferBytes, bufferSizeInBytes) -{} - - -FTGLPolygonFont::~FTGLPolygonFont() -{} - - -FTGlyph* FTGLPolygonFont::MakeGlyph( unsigned int g) -{ - FT_GlyphSlot ftGlyph = face.Glyph( g, FT_LOAD_NO_HINTING); - - if( ftGlyph) - { - FTPolyGlyph* tempGlyph = new FTPolyGlyph( ftGlyph); - return tempGlyph; - } - - err = face.Error(); - return NULL; -} - - diff --git a/extern/bFTGL/src/FTGLTextureFont.cpp b/extern/bFTGL/src/FTGLTextureFont.cpp deleted file mode 100644 index 92f14be50f2..00000000000 --- a/extern/bFTGL/src/FTGLTextureFont.cpp +++ /dev/null @@ -1,178 +0,0 @@ -#include <string> // For memset - -#include "FTGLTextureFont.h" -#include "FTTextureGlyph.h" - - -inline GLuint NextPowerOf2( GLuint in) -{ - in -= 1; - - in |= in >> 16; - in |= in >> 8; - in |= in >> 4; - in |= in >> 2; - in |= in >> 1; - - return in + 1; -} - - -FTGLTextureFont::FTGLTextureFont( const char* fontname) -: FTFont( fontname), - maxTextSize(0), - textureWidth(0), - textureHeight(0), - glyphHeight(0), - glyphWidth(0), - padding(3), - xOffset(0), - yOffset(0) -{ - remGlyphs = numGlyphs = face.GlyphCount(); -} - - -FTGLTextureFont::FTGLTextureFont( const unsigned char *pBufferBytes, size_t bufferSizeInBytes) -: FTFont( pBufferBytes, bufferSizeInBytes), - maxTextSize(0), - textureWidth(0), - textureHeight(0), - glyphHeight(0), - glyphWidth(0), - padding(3), - xOffset(0), - yOffset(0) -{ - remGlyphs = numGlyphs = face.GlyphCount(); -} - - -FTGLTextureFont::~FTGLTextureFont() -{ - glDeleteTextures( textureIDList.size(), (const GLuint*)&textureIDList[0]); -} - - -FTGlyph* FTGLTextureFont::MakeGlyph( unsigned int glyphIndex) -{ - FT_GlyphSlot ftGlyph = face.Glyph( glyphIndex, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP); - - if( ftGlyph) - { - glyphHeight = static_cast<int>( charSize.Height()); - glyphWidth = static_cast<int>( charSize.Width()); - - if( textureIDList.empty()) - { - textureIDList.push_back( CreateTexture()); - xOffset = yOffset = padding; - } - - if( xOffset > ( textureWidth - glyphWidth)) - { - xOffset = padding; - yOffset += glyphHeight; - - if( yOffset > ( textureHeight - glyphHeight)) - { - textureIDList.push_back( CreateTexture()); - yOffset = padding; - } - } - - FTTextureGlyph* tempGlyph = new FTTextureGlyph( ftGlyph, textureIDList[textureIDList.size() - 1], - xOffset, yOffset, textureWidth, textureHeight); - xOffset += static_cast<int>( tempGlyph->BBox().upperX - tempGlyph->BBox().lowerX + padding); - - --remGlyphs; - return tempGlyph; - } - - err = face.Error(); - return NULL; -} - - -void FTGLTextureFont::CalculateTextureSize() -{ - if( !maxTextSize) - { - glGetIntegerv( GL_MAX_TEXTURE_SIZE, (GLint*)&maxTextSize); - } - - textureWidth = NextPowerOf2( (remGlyphs * glyphWidth) + ( padding * 2)); - if( textureWidth > maxTextSize) - { - textureWidth = maxTextSize; - } - - int h = static_cast<int>( (textureWidth - ( padding * 2)) / glyphWidth); - - textureHeight = NextPowerOf2( (( numGlyphs / h) + 1) * glyphHeight); - textureHeight = textureHeight > maxTextSize ? maxTextSize : textureHeight; -} - - -GLuint FTGLTextureFont::CreateTexture() -{ - CalculateTextureSize(); - - int totalMemory = textureWidth * textureHeight; - unsigned char* textureMemory = new unsigned char[totalMemory]; - memset( textureMemory, 0, totalMemory); - - GLuint textID; - glGenTextures( 1, (GLuint*)&textID); - - glBindTexture( GL_TEXTURE_2D, textID); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA, textureWidth, textureHeight, 0, GL_ALPHA, GL_UNSIGNED_BYTE, textureMemory); - - delete [] textureMemory; - - return textID; -} - - -bool FTGLTextureFont::FaceSize( const unsigned int size, const unsigned int res) -{ - if( !textureIDList.empty()) - { - glDeleteTextures( textureIDList.size(), (const GLuint*)&textureIDList[0]); - remGlyphs = numGlyphs = face.GlyphCount(); - } - - return FTFont::FaceSize( size, res); -} - - -void FTGLTextureFont::Render( const char* string) -{ -// glPushAttrib( GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT); - - glEnable(GL_BLEND); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE - - FTFont::Render( string); - -// glPopAttrib(); -} - - -void FTGLTextureFont::Render( const wchar_t* string) -{ -// glPushAttrib( GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT); - - glEnable(GL_BLEND); - glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // GL_ONE - - FTFont::Render( string); - -// glPopAttrib(); -} - diff --git a/extern/bFTGL/src/FTGlyph.cpp b/extern/bFTGL/src/FTGlyph.cpp deleted file mode 100644 index c68632949c2..00000000000 --- a/extern/bFTGL/src/FTGlyph.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "FTGlyph.h" - - -FTGlyph::FTGlyph( FT_GlyphSlot glyph) -: advance(0.0f), - err(0) -{ - if( glyph) - { - bBox = FTBBox( glyph); - advance = static_cast<float>( glyph->advance.x) / 64.0f; - } -} - - -FTGlyph::~FTGlyph() -{} diff --git a/extern/bFTGL/src/FTGlyphContainer.cpp b/extern/bFTGL/src/FTGlyphContainer.cpp deleted file mode 100644 index 2c1881bbfff..00000000000 --- a/extern/bFTGL/src/FTGlyphContainer.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#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(); - - return width; -} - - -FTPoint FTGlyphContainer::Render( const unsigned int characterCode, const unsigned int nextCharacterCode, FTPoint penPosition) -{ - FTPoint kernAdvance; - float advance = 0; - - 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.x = advance + kernAdvance.x; -// kernAdvance.y = advance.y + kernAdvance.y; - return kernAdvance; -} diff --git a/extern/bFTGL/src/FTLibrary.cpp b/extern/bFTGL/src/FTLibrary.cpp deleted file mode 100644 index 29ab5ae2693..00000000000 --- a/extern/bFTGL/src/FTLibrary.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "FTLibrary.h" - - -FTLibrary& FTLibrary::Instance() -{ - static FTLibrary ftlib; - return ftlib; -} - - -FTLibrary::~FTLibrary() -{ - if( library != 0) - { - FT_Done_FreeType( *library); - - delete library; - library= 0; - } - -// if( manager != 0) -// { -// FTC_Manager_Done( manager ); -// -// delete manager; -// manager= 0; -// } -} - - -FTLibrary::FTLibrary() -: library(0), - err(0) -{ - Initialise(); -} - - -bool FTLibrary::Initialise() -{ - if( library != 0) - return true; - - library = new FT_Library; - - err = FT_Init_FreeType( library); - if( err) - { - delete library; - library = 0; - return false; - } - -// FTC_Manager* manager; -// -// if( FTC_Manager_New( lib, 0, 0, 0, my_face_requester, 0, manager ) -// { -// delete manager; -// manager= 0; -// return false; -// } - - return true; -} diff --git a/extern/bFTGL/src/FTOutlineGlyph.cpp b/extern/bFTGL/src/FTOutlineGlyph.cpp deleted file mode 100644 index 340c7804140..00000000000 --- a/extern/bFTGL/src/FTOutlineGlyph.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "FTOutlineGlyph.h" -#include "FTVectoriser.h" - - -FTOutlineGlyph::FTOutlineGlyph( FT_GlyphSlot glyph) -: FTGlyph( glyph), - glList(0) -{ - if( ft_glyph_format_outline != glyph->format) - { - err = 0x14; // Invalid_Outline - return; - } - - FTVectoriser vectoriser( glyph); - - size_t numContours = vectoriser.ContourCount(); - if ( ( numContours < 1) || ( vectoriser.PointCount() < 3)) - { - return; - } - - glList = glGenLists(1); - glNewList( glList, GL_COMPILE); - for( unsigned int c = 0; c < numContours; ++c) - { - const FTContour* contour = vectoriser.Contour(c); - - glBegin( GL_LINE_LOOP); - for( unsigned int p = 0; p < contour->PointCount(); ++p) - { - glVertex2f( contour->Point(p).x / 64.0f, contour->Point(p).y / 64.0f); - } - glEnd(); - } - glEndList(); -} - - -FTOutlineGlyph::~FTOutlineGlyph() -{ - glDeleteLists( glList, 1); -} - - -float FTOutlineGlyph::Render( const FTPoint& pen) -{ - if( glList) - { - glTranslatef( pen.x, pen.y, 0); - glCallList( glList); - glTranslatef( -pen.x, -pen.y, 0); - } - - return advance; -} - diff --git a/extern/bFTGL/src/FTPixmapGlyph.cpp b/extern/bFTGL/src/FTPixmapGlyph.cpp deleted file mode 100644 index b051a06b6e3..00000000000 --- a/extern/bFTGL/src/FTPixmapGlyph.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "FTPixmapGlyph.h" - -FTPixmapGlyph::FTPixmapGlyph( FT_GlyphSlot glyph) -: FTGlyph( glyph), - destWidth(0), - destHeight(0), - data(0) -{ - err = FT_Render_Glyph( glyph, FT_RENDER_MODE_NORMAL); - if( err || ft_glyph_format_bitmap != glyph->format) - { - return; - } - - FT_Bitmap bitmap = glyph->bitmap; - - //check the pixel mode - //ft_pixel_mode_grays - - int srcWidth = bitmap.width; - int srcHeight = bitmap.rows; - - // FIXME What about dest alignment? - destWidth = srcWidth; - destHeight = srcHeight; - - if( destWidth && destHeight) - { - data = new unsigned char[destWidth * destHeight * 4]; - - // Get the current glColor. - float ftglColour[4]; -// glGetFloatv( GL_CURRENT_COLOR, ftglColour); - ftglColour[0] = ftglColour[1] = ftglColour[2] = ftglColour[3] = 1.0; - - unsigned char redComponent = static_cast<unsigned char>( ftglColour[0] * 255.0f); - unsigned char greenComponent = static_cast<unsigned char>( ftglColour[1] * 255.0f); - unsigned char blueComponent = static_cast<unsigned char>( ftglColour[2] * 255.0f); - - unsigned char* src = bitmap.buffer; - - unsigned char* dest = data + ((destHeight - 1) * destWidth) * 4; - size_t destStep = destWidth * 4 * 2; - - if( ftglColour[3] == 1.0f) - { - for( int y = 0; y < srcHeight; ++y) - { - for( int x = 0; x < srcWidth; ++x) - { - *dest++ = redComponent; - *dest++ = greenComponent; - *dest++ = blueComponent; - *dest++ = *src++; - } - dest -= destStep; - } - } - else - { - for( int y = 0; y < srcHeight; ++y) - { - for( int x = 0; x < srcWidth; ++x) - { - *dest++ = redComponent; - *dest++ = greenComponent; - *dest++ = blueComponent; - *dest++ = static_cast<unsigned char>(ftglColour[3] * *src++); - } - dest -= destStep; - } - } - - destHeight = srcHeight; - } - - pos.x = glyph->bitmap_left; - pos.y = srcHeight - glyph->bitmap_top; -} - - -FTPixmapGlyph::~FTPixmapGlyph() -{ - delete [] data; -} - -#include <math.h> -float FTPixmapGlyph::Render( const FTPoint& pen) -{ - if( data) - { - float dx, dy; - - dx= floor( (pen.x + pos.x ) ); - dy= ( (pen.y - pos.y ) ); - - // Move the glyph origin - glBitmap( 0, 0, 0.0f, 0.0f, dx, dy, (const GLubyte*)0); - - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0); - - glDrawPixels( destWidth, destHeight, GL_RGBA, GL_UNSIGNED_BYTE, (const GLvoid*)data); - - // Restore the glyph origin - glBitmap( 0, 0, 0.0f, 0.0f, -dx, -dy, (const GLubyte*)0); - } - - return advance; -} diff --git a/extern/bFTGL/src/FTPoint.cpp b/extern/bFTGL/src/FTPoint.cpp deleted file mode 100644 index e4678bc9564..00000000000 --- a/extern/bFTGL/src/FTPoint.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "FTPoint.h" - - -bool operator == ( const FTPoint &a, const FTPoint &b) -{ - return((a.x == b.x) && (a.y == b.y) && (a.z == b.z)); -} - -bool operator != ( const FTPoint &a, const FTPoint &b) -{ - return((a.x != b.x) || (a.y != b.y) || (a.z != b.z)); -} - - diff --git a/extern/bFTGL/src/FTPolyGlyph.cpp b/extern/bFTGL/src/FTPolyGlyph.cpp deleted file mode 100644 index 7e0d695493c..00000000000 --- a/extern/bFTGL/src/FTPolyGlyph.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "FTPolyGlyph.h" -#include "FTVectoriser.h" - - -FTPolyGlyph::FTPolyGlyph( FT_GlyphSlot glyph) -: FTGlyph( glyph), - glList(0) -{ - if( ft_glyph_format_outline != glyph->format) - { - err = 0x14; // Invalid_Outline - return; - } - - FTVectoriser vectoriser( glyph); - - if(( vectoriser.ContourCount() < 1) || ( vectoriser.PointCount() < 3)) - { - return; - } - - vectoriser.MakeMesh( 1.0); - - glList = glGenLists( 1); - glNewList( glList, GL_COMPILE); - - const FTMesh* mesh = vectoriser.GetMesh(); - for( unsigned int index = 0; index < mesh->TesselationCount(); ++index) - { - const FTTesselation* subMesh = mesh->Tesselation( index); - unsigned int polyonType = subMesh->PolygonType(); - - glBegin( polyonType); - for( unsigned int x = 0; x < subMesh->PointCount(); ++x) - { - glVertex3f( subMesh->Point(x).x / 64.0f, - subMesh->Point(x).y / 64.0f, - 0.0f); - } - glEnd(); - } - glEndList(); -} - - -FTPolyGlyph::~FTPolyGlyph() -{ - glDeleteLists( glList, 1); -} - - -float FTPolyGlyph::Render( const FTPoint& pen) -{ - if( glList) - { - glTranslatef( pen.x, pen.y, 0); - glCallList( glList); - glTranslatef( -pen.x, -pen.y, 0); - } - - return advance; -} diff --git a/extern/bFTGL/src/FTSize.cpp b/extern/bFTGL/src/FTSize.cpp deleted file mode 100644 index 5fb8ffba157..00000000000 --- a/extern/bFTGL/src/FTSize.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "FTSize.h" - - -FTSize::FTSize() -: ftFace(0), - ftSize(0), - size(0), - err(0) -{} - - -FTSize::~FTSize() -{} - - -bool FTSize::CharSize( FT_Face* face, unsigned int point_size, unsigned int x_resolution, unsigned int y_resolution ) -{ - err = FT_Set_Char_Size( *face, 0L, point_size * 64, x_resolution, y_resolution); - - if( !err) - { - ftFace = face; - size = point_size; - ftSize = (*ftFace)->size; - } - else - { - ftFace = 0; - size = 0; - ftSize = 0; - } - - return !err; -} - - -unsigned int FTSize::CharSize() const -{ - return size; -} - - -float FTSize::Ascender() const -{ - return ftSize == 0 ? 0.0f : static_cast<float>( ftSize->metrics.ascender) / 64.0f; -} - - -float FTSize::Descender() const -{ - return ftSize == 0 ? 0.0f : static_cast<float>( ftSize->metrics.descender) / 64.0f; -} - - -float FTSize::Height() const -{ - if( 0 == ftSize) - { - return 0.0f; - } - - if( FT_IS_SCALABLE((*ftFace))) - { - return ( (*ftFace)->bbox.yMax - (*ftFace)->bbox.yMin) * ( (float)ftSize->metrics.y_ppem / (float)(*ftFace)->units_per_EM); - } - else - { - return static_cast<float>( ftSize->metrics.height) / 64.0f; - } -} - - -float FTSize::Width() const -{ - if( 0 == ftSize) - { - return 0.0f; - } - - if( FT_IS_SCALABLE((*ftFace))) - { - return ( (*ftFace)->bbox.xMax - (*ftFace)->bbox.xMin) * ( static_cast<float>(ftSize->metrics.x_ppem) / static_cast<float>((*ftFace)->units_per_EM)); - } - else - { - return static_cast<float>( ftSize->metrics.max_advance) / 64.0f; - } -} - - -float FTSize::Underline() const -{ - return 0.0f; -} - -unsigned int FTSize::XPixelsPerEm() const -{ - return ftSize == 0 ? 0 : ftSize->metrics.x_ppem; -} - -unsigned int FTSize::YPixelsPerEm() const -{ - return ftSize == 0 ? 0 : ftSize->metrics.y_ppem; -} - diff --git a/extern/bFTGL/src/FTTextureGlyph.cpp b/extern/bFTGL/src/FTTextureGlyph.cpp deleted file mode 100644 index b8267dcce89..00000000000 --- a/extern/bFTGL/src/FTTextureGlyph.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include "FTTextureGlyph.h" - - -FTTextureGlyph::FTTextureGlyph( FT_GlyphSlot glyph, int id, int xOffset, int yOffset, GLsizei width, GLsizei height) -: FTGlyph( glyph), - destWidth(0), - destHeight(0), - glTextureID(id), - activeTextureID(0) -{ - err = FT_Render_Glyph( glyph, FT_RENDER_MODE_NORMAL); - if( err || glyph->format != ft_glyph_format_bitmap) - { - return; - } - - FT_Bitmap bitmap = glyph->bitmap; - - destWidth = bitmap.width; - destHeight = bitmap.rows; - - if( destWidth && destHeight) - { - glPushClientAttrib( GL_CLIENT_PIXEL_STORE_BIT); - glPixelStorei( GL_UNPACK_LSB_FIRST, GL_FALSE); - glPixelStorei( GL_UNPACK_ROW_LENGTH, 0); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1); - - glBindTexture( GL_TEXTURE_2D, glTextureID); - glTexSubImage2D( GL_TEXTURE_2D, 0, xOffset, yOffset, destWidth, destHeight, GL_ALPHA, GL_UNSIGNED_BYTE, bitmap.buffer); - - glPopClientAttrib(); - } - - -// 0 -// +----+ -// | | -// | | -// | | -// +----+ -// 1 - - uv[0].x = static_cast<float>(xOffset) / static_cast<float>(width); - uv[0].y = static_cast<float>(yOffset) / static_cast<float>(height); - uv[1].x = static_cast<float>( xOffset + destWidth) / static_cast<float>(width); - uv[1].y = static_cast<float>( yOffset + destHeight) / static_cast<float>(height); - - pos.x = glyph->bitmap_left; - pos.y = glyph->bitmap_top; -} - - -FTTextureGlyph::~FTTextureGlyph() -{} - -#include <math.h> - -float FTTextureGlyph::Render( const FTPoint& pen) -{ - float dx; - - glGetIntegerv( GL_TEXTURE_2D_BINDING_EXT, &activeTextureID); - if( activeTextureID != glTextureID) - { - glBindTexture( GL_TEXTURE_2D, (GLuint)glTextureID); - } - - dx= floor( (pen.x + pos.x ) ); - - glBegin( GL_QUADS); - glTexCoord2f( uv[0].x, uv[0].y); - glVertex2f( dx, pen.y + pos.y); - - glTexCoord2f( uv[0].x, uv[1].y); - glVertex2f( dx, pen.y + pos.y - destHeight); - - glTexCoord2f( uv[1].x, uv[1].y); - glVertex2f( dx + destWidth, pen.y + pos.y - destHeight); - - glTexCoord2f( uv[1].x, uv[0].y); - glVertex2f( dx + destWidth, pen.y + pos.y); - glEnd(); - - return advance; -} - diff --git a/extern/bFTGL/src/FTVectoriser.cpp b/extern/bFTGL/src/FTVectoriser.cpp deleted file mode 100644 index 82dcb0c0f51..00000000000 --- a/extern/bFTGL/src/FTVectoriser.cpp +++ /dev/null @@ -1,229 +0,0 @@ -#include "FTVectoriser.h" -#include "FTGL.h" - -#ifndef CALLBACK -#define CALLBACK -#endif - -#if defined(__APPLE_CC__) - #if __APPLE_CC__ >= 5465 - typedef GLvoid (*GLUTesselatorFunction)(); - #else - typedef GLvoid (*GLUTesselatorFunction)(...); - #endif -#elif defined( __mips ) || defined( __linux__ ) || defined( __FreeBSD__ ) || defined( __OpenBSD__ ) || defined( __sun ) || defined (__CYGWIN__) - typedef GLvoid (*GLUTesselatorFunction)(); -#elif defined ( WIN32) - typedef GLvoid (CALLBACK *GLUTesselatorFunction)( ); -#else - #error "Error - need to define type GLUTesselatorFunction for this platform/compiler" -#endif - - -void CALLBACK ftglError( GLenum errCode, FTMesh* mesh) -{ - mesh->Error( errCode); -} - - -void CALLBACK ftglVertex( void* data, FTMesh* mesh) -{ - FTGL_DOUBLE* vertex = static_cast<FTGL_DOUBLE*>(data); - mesh->AddPoint( vertex[0], vertex[1], vertex[2]); -} - - -void CALLBACK ftglCombine( FTGL_DOUBLE coords[3], void* vertex_data[4], GLfloat weight[4], void** outData, FTMesh* mesh) -{ - FTGL_DOUBLE* vertex = static_cast<FTGL_DOUBLE*>(coords); - *outData = mesh->Combine( vertex[0], vertex[1], vertex[2]); -} - - -void CALLBACK ftglBegin( GLenum type, FTMesh* mesh) -{ - mesh->Begin( type); -} - - -void CALLBACK ftglEnd( FTMesh* mesh) -{ - mesh->End(); -} - - -FTMesh::FTMesh() -: currentTesselation(0), - err(0) -{ - tesselationList.reserve( 16); -} - - -FTMesh::~FTMesh() -{ - for( size_t t = 0; t < tesselationList.size(); ++t) - { - delete tesselationList[t]; - } - - tesselationList.clear(); -} - - -void FTMesh::AddPoint( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z) -{ - currentTesselation->AddPoint( x, y, z); -} - - -FTGL_DOUBLE* FTMesh::Combine( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z) -{ - tempPointList.push_back( FTPoint( x, y,z)); - return &tempPointList.back().x; -} - - -void FTMesh::Begin( GLenum meshType) -{ - currentTesselation = new FTTesselation( meshType); -} - - -void FTMesh::End() -{ - tesselationList.push_back( currentTesselation); -} - - -const FTTesselation* const FTMesh::Tesselation( unsigned int index) const -{ - return ( index < tesselationList.size()) ? tesselationList[index] : NULL; -} - - -FTVectoriser::FTVectoriser( const FT_GlyphSlot glyph) -: contourList(0), - mesh(0), - ftContourCount(0), - contourFlag(0) -{ - if( glyph) - { - outline = glyph->outline; - - ftContourCount = outline.n_contours;; - contourList = 0; - contourFlag = outline.flags; - - ProcessContours(); - } -} - - -FTVectoriser::~FTVectoriser() -{ - for( size_t c = 0; c < ContourCount(); ++c) - { - delete contourList[c]; - } - - delete [] contourList; - delete mesh; -} - - -void FTVectoriser::ProcessContours() -{ - short contourLength = 0; - short startIndex = 0; - short endIndex = 0; - - contourList = new FTContour*[ftContourCount]; - - for( short contourIndex = 0; contourIndex < ftContourCount; ++contourIndex) - { - FT_Vector* pointList = &outline.points[startIndex]; - char* tagList = &outline.tags[startIndex]; - - endIndex = outline.contours[contourIndex]; - contourLength = ( endIndex - startIndex) + 1; - - FTContour* contour = new FTContour( pointList, tagList, contourLength); - - contourList[contourIndex] = contour; - - startIndex = endIndex + 1; - } -} - - -size_t FTVectoriser::PointCount() -{ - size_t s = 0; - for( size_t c = 0; c < ContourCount(); ++c) - { - s += contourList[c]->PointCount(); - } - - return s; -} - - -const FTContour* const FTVectoriser::Contour( unsigned int index) const -{ - return ( index < ContourCount()) ? contourList[index] : NULL; -} - - -void FTVectoriser::MakeMesh( FTGL_DOUBLE zNormal) -{ - if( mesh) - { - delete mesh; - } - - mesh = new FTMesh; - - GLUtesselator* tobj = gluNewTess(); - - gluTessCallback( tobj, GLU_TESS_BEGIN_DATA, (GLUTesselatorFunction)ftglBegin); - gluTessCallback( tobj, GLU_TESS_VERTEX_DATA, (GLUTesselatorFunction)ftglVertex); - gluTessCallback( tobj, GLU_TESS_COMBINE_DATA, (GLUTesselatorFunction)ftglCombine); - gluTessCallback( tobj, GLU_TESS_END_DATA, (GLUTesselatorFunction)ftglEnd); - gluTessCallback( tobj, GLU_TESS_ERROR_DATA, (GLUTesselatorFunction)ftglError); - - if( contourFlag & ft_outline_even_odd_fill) // ft_outline_reverse_fill - { - gluTessProperty( tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD); - } - else - { - gluTessProperty( tobj, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_NONZERO); - } - - - gluTessProperty( tobj, GLU_TESS_TOLERANCE, 0); - gluTessNormal( tobj, 0.0f, 0.0f, zNormal); - gluTessBeginPolygon( tobj, mesh); - - for( size_t c = 0; c < ContourCount(); ++c) - { - const FTContour* contour = contourList[c]; - - gluTessBeginContour( tobj); - - for( size_t p = 0; p < contour->PointCount(); ++p) - { - FTGL_DOUBLE* d = const_cast<FTGL_DOUBLE*>(&contour->Point(p).x); - gluTessVertex( tobj, d, d); - } - - gluTessEndContour( tobj); - } - - gluTessEndPolygon( tobj); - - gluDeleteTess( tobj); -} - diff --git a/extern/bFTGL/src/Makefile b/extern/bFTGL/src/Makefile deleted file mode 100644 index d91bcb2559d..00000000000 --- a/extern/bFTGL/src/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*- -# vim: tabstop=8 -# -# $Id$ -# -# ***** BEGIN GPL LICENSE BLOCK ***** -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. -# All rights reserved. -# -# The Original Code is: all of this file. -# -# Contributor(s): GSR -# -# ***** END GPL LICENSE BLOCK ***** -# -# - -LIBNAME = ftgl -DIR = $(OCGDIR)/extern/$(LIBNAME) - -CCFLAGS += $(LEVEL_1_CPP_WARNINGS) - -CSRCS = -CCSRCS = FTBitmapGlyph.cpp FTCharmap.cpp FTContour.cpp FTExtrdGlyph.cpp \ - FTFace.cpp FTFont.cpp FTGLBitmapFont.cpp FTGLExtrdFont.cpp \ - FTGLOutlineFont.cpp FTGLPixmapFont.cpp FTGLPolygonFont.cpp \ - FTGLTextureFont.cpp FTGlyph.cpp FTGlyphContainer.cpp FTLibrary.cpp \ - FTOutlineGlyph.cpp FTPixmapGlyph.cpp FTPoint.cpp FTPolyGlyph.cpp \ - FTSize.cpp FTTextureGlyph.cpp FTVectoriser.cpp - -include nan_compile.mk -CPPFLAGS += -I../include -CPPFLAGS += -I$(NAN_FREETYPE)/include -I$(NAN_FREETYPE)/include/freetype2 -CPPFLAGS += -I$(OPENGL_HEADERS) - -install: $(ALL_OR_DEBUG) - @[ -d $(NAN_FTGL) ] || mkdir -p $(NAN_FTGL) - @[ -d $(NAN_FTGL)/include ] || mkdir -p $(NAN_FTGL)/include - @[ -d $(NAN_FTGL)/lib/$(DEBUG_DIR) ] || mkdir -p $(NAN_FTGL)/lib/$(DEBUG_DIR) - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a $(NAN_FTGL)/lib/$(DEBUG_DIR) -ifeq ($(OS),darwin) - ranlib $(NAN_FTGL)/lib/$(DEBUG_DIR)lib$(LIBNAME).a -endif - @$(NANBLENDERHOME)/intern/tools/cpifdiff.sh ../include/*.h $(NAN_FTGL)/include/ - |