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

FTVectoriser.h

Go to the documentation of this file.
00001 #ifndef     __FTVectoriser__
00002 #define     __FTVectoriser__
00003 
00004 
00005 #include "FTContour.h"
00006 #include "FTList.h"
00007 #include "FTPoint.h"
00008 #include "FTVector.h"
00009 #include "FTGL.h"
00010 
00011 
00012 #ifndef CALLBACK
00013 #define CALLBACK
00014 #endif
00015 
00016 
00020 class FTGL_EXPORT FTTesselation
00021 {
00022     public:
00026         FTTesselation( GLenum m)
00027         :   meshType(m)
00028         {
00029             pointList.reserve( 128);
00030         }
00031 
00035         ~FTTesselation()
00036         {
00037             pointList.clear();
00038         }
00039 
00043         void AddPoint( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z)
00044         {   
00045             pointList.push_back( FTPoint( x, y, z));
00046         }
00047 
00051         size_t PointCount() const { return pointList.size();}
00052         
00056         const FTPoint& Point( unsigned int index) const { return pointList[index];}
00057         
00061         GLenum PolygonType() const { return meshType;}
00062         
00063     private:
00067         typedef FTVector<FTPoint> PointVector;
00068         PointVector pointList;
00069 
00073         GLenum meshType;
00074 };
00075 
00076 
00080 class FTGL_EXPORT FTMesh
00081 {
00082     typedef FTVector<FTTesselation*> TesselationVector;
00083     typedef FTList<FTPoint> PointList;
00084 
00085     public:
00089         FTMesh();
00090 
00094         ~FTMesh();
00095         
00099         void AddPoint( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z);
00100         
00104         FTGL_DOUBLE* Combine( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z);
00105         
00109         void Begin( GLenum meshType);
00110         
00114         void End();
00115         
00119         void Error( GLenum e) { err = e;}
00120         
00124         unsigned int TesselationCount() const { return tesselationList.size();}
00125 
00129         const FTTesselation* const Tesselation( unsigned int index) const;
00130         
00134         const PointList& TempPointList() const { return tempPointList;}
00135 
00139         GLenum Error() const { return err;}
00140 
00141     private:
00145         FTTesselation* currentTesselation;
00146         
00150         TesselationVector tesselationList;
00151         
00155         PointList tempPointList;
00156         
00160         GLenum err;
00161 
00162 };
00163 
00164 
00165 
00177 class FTGL_EXPORT FTVectoriser
00178 {
00179     public:
00185         FTVectoriser( const FT_Glyph glyph);
00186 
00190         virtual ~FTVectoriser();
00191 
00198         void MakeMesh( FTGL_DOUBLE zNormal = 1.0);
00199         
00203         const FTMesh* const GetMesh() const { return mesh;}
00204         
00210         size_t PointCount();
00211 
00217         size_t ContourCount() const { return ftContourCount;}
00218 
00224          const FTContour* const Contour( unsigned int index) const;
00225 
00232         size_t ContourSize( int c) const { return contourList[c]->PointCount();}
00233 
00239         int ContourFlag() const { return contourFlag;}
00240         
00241     private:
00245         void ProcessContours();
00246 
00250         FTContour** contourList;
00251 
00255         FTMesh* mesh;
00256         
00260         short ftContourCount;
00261 
00265         int contourFlag;
00266 
00270         FT_Outline ftOutline;
00271 };
00272 
00273 
00274 #endif  //  __FTVectoriser__

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