Removed comments and makeGlyphList function
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
diff --git a/include/FTGLTextureFont.h b/include/FTGLTextureFont.h
index 3791906..7196884 100755
--- a/include/FTGLTextureFont.h
+++ b/include/FTGLTextureFont.h
@@ -1,8 +1,8 @@
#ifndef __FTGLTextureFont__
#define __FTGLTextureFont__
-#include "FTGL.h"
#include "FTFont.h"
+#include "FTGL.h"
class FTTextureGlyph;
@@ -62,23 +62,21 @@ class FTGL_EXPORT FTGLTextureFont : public FTFont
private:
- inline virtual FTGlyph* MakeGlyph( unsigned int g);
-
/**
- * Constructs the internal glyph cache.
+ * Construct a FTTextureGlyph.
*
- * This a list of glyphs processed for openGL Rendering NOT
- * freetype glyphs
+ * @param g The glyph index NOT the char code.
+ * @return An FTTextureGlyph or <code>null</code> on failure.
*/
- virtual bool MakeGlyphList();
-
+ inline virtual FTGlyph* MakeGlyph( unsigned int g);
+
/**
* Get the size of a block of memory required to layout the glyphs
*
* Calculates a width and height based on the glyph sizes and the
* number of glyphs. It over estimates.
*/
- inline void GetSize();
+ inline void CalculateTextureSize();
/**
* Creates a 'blank' OpenGL texture object.
diff --git a/src/FTGLTextureFont.cpp b/src/FTGLTextureFont.cpp
index 17ff4b4..73d4b0c 100755
--- a/src/FTGLTextureFont.cpp
+++ b/src/FTGLTextureFont.cpp
@@ -64,11 +64,9 @@ FTGlyph* FTGLTextureFont::MakeGlyph( unsigned int g)
if( ftGlyph)
{
- // Estimate the glyph size size - global bbox
glyphHeight = static_cast<int>( charSize.Height());
glyphWidth = static_cast<int>( charSize.Width());
- // Is there a current texture
if( numTextures == 0)
{
glTextureID[0] = CreateTexture();
@@ -76,7 +74,6 @@ FTGlyph* FTGLTextureFont::MakeGlyph( unsigned int g)
++numTextures;
}
- // will it fit in the current texture
if( xOffset > ( textureWidth - glyphWidth))
{
xOffset = padding;
@@ -84,18 +81,15 @@ FTGlyph* FTGLTextureFont::MakeGlyph( unsigned int g)
if( yOffset > ( textureHeight - glyphHeight))
{
- // no - make a new texture
glTextureID[numTextures] = CreateTexture();
++numTextures;
yOffset = padding;
}
}
- // yes - load the glyph
FTTextureGlyph* tempGlyph = new FTTextureGlyph( *ftGlyph, glTextureID[numTextures - 1],
xOffset, yOffset, textureWidth, textureHeight);
- // FIXME ceiling
xOffset += static_cast<int>( tempGlyph->BBox().upperX - tempGlyph->BBox().lowerX + padding);
--remGlyphs;
@@ -107,25 +101,20 @@ FTGlyph* FTGLTextureFont::MakeGlyph( unsigned int g)
}
-bool FTGLTextureFont::MakeGlyphList()
+void FTGLTextureFont::CalculateTextureSize()
{
if( !maxTextSize)
+ {
glGetIntegerv( GL_MAX_TEXTURE_SIZE, (GLint*)&maxTextSize);
-
- return FTFont::MakeGlyphList();
-}
-
-
-void FTGLTextureFont::GetSize()
-{
- //work out the max width. Most likely maxTextSize
- textureWidth = NextPowerOf2( (remGlyphs * glyphWidth) + padding * 2);
+ }
+
+ textureWidth = NextPowerOf2( (remGlyphs * glyphWidth) + ( padding * 2));
if( textureWidth > maxTextSize)
{
textureWidth = maxTextSize;
}
- int h = static_cast<int>( (textureWidth - padding * 2) / glyphWidth);
+ int h = static_cast<int>( (textureWidth - ( padding * 2)) / glyphWidth);
textureHeight = NextPowerOf2( (( numGlyphs / h) + 1) * glyphHeight);
textureHeight = textureHeight > maxTextSize ? maxTextSize : textureHeight;
@@ -134,15 +123,12 @@ void FTGLTextureFont::GetSize()
GLuint FTGLTextureFont::CreateTexture()
{
- // calc the size
- GetSize();
+ CalculateTextureSize();
- // allocate some mem and clear it to black
int totalMem = textureWidth * textureHeight;
- textMem = new unsigned char[totalMem]; // GL_ALPHA texture;
+ textMem = new unsigned char[totalMem];
memset( textMem, 0, totalMem);
- // Create the blank texture
GLuint textID;
glGenTextures( 1, (GLuint*)&textID);