Main Page | Class Hierarchy | Compound List | File List | Compound Members | File Members

FTPolyGlyph.cpp

Go to the documentation of this file.
00001 #include "FTPolyGlyph.h"
00002 #include "FTVectoriser.h"
00003 
00004 
00005 FTPolyGlyph::FTPolyGlyph( FT_Glyph glyph)
00006 :   FTGlyph( glyph),
00007     glList(0)
00008 {
00009     if( ft_glyph_format_outline != glyph->format)
00010     {
00011         return;
00012     }
00013 
00014     FTVectoriser vectoriser( glyph);
00015 
00016     if(( vectoriser.ContourCount() < 1) || ( vectoriser.PointCount() < 3))
00017     {
00018         return;
00019     }
00020 
00021     vectoriser.MakeMesh( 1.0);
00022     
00023     glList = glGenLists( 1);
00024     glNewList( glList, GL_COMPILE);
00025 
00026         const FTMesh* mesh = vectoriser.GetMesh();
00027         for( unsigned int index = 0; index < mesh->TesselationCount(); ++index)
00028         {
00029             const FTTesselation* subMesh = mesh->Tesselation( index);
00030             unsigned int polyonType = subMesh->PolygonType();
00031 
00032             glBegin( polyonType);
00033                 for( unsigned int x = 0; x < subMesh->PointCount(); ++x)
00034                 {
00035                     glVertex3f( subMesh->Point(x).x / 64.0f,
00036                                 subMesh->Point(x).y / 64.0f,
00037                                 0.0f);
00038                 }
00039             glEnd();
00040         }
00041     glEndList();
00042 
00043     FT_Done_Glyph( glyph);
00044 }
00045 
00046 
00047 FTPolyGlyph::~FTPolyGlyph()
00048 {
00049     glDeleteLists( glList, 1);
00050 }
00051 
00052 
00053 float FTPolyGlyph::Render( const FTPoint& pen)
00054 {
00055     if( glList)
00056     {
00057         glTranslatef(  pen.x,  pen.y, 0);
00058         glCallList( glList);    
00059         glTranslatef( -pen.x, -pen.y, 0);
00060     }
00061     
00062     return advance;
00063 }

Generated on Mon Aug 25 15:16:38 2003 for FTGL by doxygen 1.3.3