Commit 6d84af79f48035d1ea9a4ec2cf453f37a33d722d

henry 2001-11-12T02:40:15

Set the bounding box and re-order some operations

diff --git a/src/FTOutlineGlyph.cpp b/src/FTOutlineGlyph.cpp
index b20ba3f..e4a3b92 100644
--- a/src/FTOutlineGlyph.cpp
+++ b/src/FTOutlineGlyph.cpp
@@ -21,33 +21,34 @@ FTOutlineGlyph::FTOutlineGlyph( FT_Glyph glyph)
 	vectoriser = new FTVectoriser( glyph);
 	
 	vectoriser->Process();
+	
+	numPoints = vectoriser->points();
 	numContours = vectoriser->contours();
-	contourLength = new int[ numContours];
 	
+	if ( ( numContours < 1) || ( numPoints < 3))
+	{
+		delete vectoriser;
+		return;
+	}
+	
+	contourLength = new int[ numContours];
 	for( int cn = 0; cn < numContours; ++cn)
 	{
 		contourLength[cn] = vectoriser->contourSize( cn);
 	}
 	
-	numPoints = vectoriser->points();
 	data = new double[ numPoints * 3];
-	vectoriser->MakeOutline( data);
+	vectoriser->GetOutline( data);
 	
-	advance = glyph->advance.x >> 16;
-
 	delete vectoriser;
 	
-	if ( ( numContours < 1) || ( numPoints < 3))
-		return;
-		
-	glList = glGenLists(1);
 	int d = 0;
-
+	glList = glGenLists(1);
 	glNewList( glList, GL_COMPILE);
 		for( int c = 0; c < numContours; ++c)
 		{
 			glBegin( GL_LINE_LOOP);
-			for( int p = 0; p < ( contourLength[c]); ++p)
+			for( int p = 0; p < contourLength[c]; ++p)
 			{
 				glVertex2dv( data + d);
 				d += 3;
@@ -56,6 +57,12 @@ FTOutlineGlyph::FTOutlineGlyph( FT_Glyph glyph)
 		}
 	glEndList();
 
+	delete [] data; // FIXME
+	delete [] contourLength; // FIXME
+
+	bBox = FTBBox( glyph);
+	advance = glyph->advance.x >> 16;
+
 	// discard glyph image (bitmap or not)
 	FT_Done_Glyph( glyph); // Why does this have to be HERE
 }
@@ -63,8 +70,8 @@ FTOutlineGlyph::FTOutlineGlyph( FT_Glyph glyph)
 
 FTOutlineGlyph::~FTOutlineGlyph()
 {
-	delete [] data;
-	delete [] contourLength;
+//	delete [] data;
+//	delete [] contourLength;
 }