Removed data memory buffer
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
diff --git a/src/FTPolyGlyph.cpp b/src/FTPolyGlyph.cpp
index 15ee3bf..08191e3 100644
--- a/src/FTPolyGlyph.cpp
+++ b/src/FTPolyGlyph.cpp
@@ -13,44 +13,34 @@ FTPolyGlyph::FTPolyGlyph( FT_Glyph glyph)
FTVectoriser* vectoriser = new FTVectoriser( glyph);
- vectoriser->MakeMesh(1.0);
- unsigned int numPoints = vectoriser->MeshPoints();
-
- if( numPoints < 3)
+ if ( ( vectoriser->ContourCount() < 1) || ( vectoriser->PointCount() < 3))
{
delete vectoriser;
return;
}
-
- FTGL_DOUBLE* data = new FTGL_DOUBLE[ numPoints * 3];
- vectoriser->GetMesh( data);
- delete vectoriser;
- int d = 0;
+ vectoriser->MakeMesh(1.0);
+
glList = glGenLists(1);
glNewList( glList, GL_COMPILE);
- int BEPairs = static_cast<int>(data[0]);
- for( int i = 0; i < BEPairs; ++i)
+ FTMesh* mesh = vectoriser->GetMesh();
+ for( unsigned int index = 0; index < mesh->TesselationCount(); ++index)
{
- int polyType = static_cast<int>(data[d + 1]);
- glBegin( polyType);
-
- int verts = static_cast<int>(data[d+2]);
-
- d += 3;
- for( int x = 0; x < verts; ++x)
- {
- glVertex3dv( data + d);
- d += 3;
- }
+ 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();
- delete [] data; // FIXME
- data = 0;
-
// discard glyph image (bitmap or not)
FT_Done_Glyph( glyph); // Why does this have to be HERE
}