⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftvectoriser.h

📁 ftgl-2.1.2 夸平台的opengl显示字体
💻 H
字号:
#ifndef     __FTVectoriser__#define     __FTVectoriser__#include "FTContour.h"#include "FTList.h"#include "FTPoint.h"#include "FTVector.h"#include "FTGL.h"#ifndef CALLBACK#define CALLBACK#endif/** * FTTesselation captures points that are output by OpenGL's gluTesselator. */class FTGL_EXPORT FTTesselation{    public:        /**         * Default constructor         */        FTTesselation( GLenum m)        :	meshType(m)        {            pointList.reserve( 128);        }        /**         *  Destructor         */        ~FTTesselation()        {            pointList.clear();        }        /**         * Add a point to the mesh.         */        void AddPoint( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z)        {               pointList.push_back( FTPoint( x, y, z));        }        /**         * The number of points in this mesh         */        size_t PointCount() const { return pointList.size();}                /**         *         */        const FTPoint& Point( unsigned int index) const { return pointList[index];}                /**         * Return the OpenGL polygon type.         */        GLenum PolygonType() const { return meshType;}            private:        /**         * Points generated by gluTesselator.         */        typedef FTVector<FTPoint> PointVector;        PointVector pointList;        /**         * OpenGL primitive type from gluTesselator.         */        GLenum meshType;};/** * FTMesh is a container of FTTesselation's that make up a polygon glyph */class FTGL_EXPORT FTMesh{	typedef FTVector<FTTesselation*> TesselationVector;	typedef FTList<FTPoint> PointList;    public:        /**         * Default constructor         */        FTMesh();        /**         *  Destructor         */        ~FTMesh();                /**         * Add a point to the mesh         */        void AddPoint( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z);                /**         *  Create a combine point for the gluTesselator         */        const FTGL_DOUBLE* Combine( const FTGL_DOUBLE x, const FTGL_DOUBLE y, const FTGL_DOUBLE z);                /**         * Begin a new polygon         */        void Begin( GLenum meshType);                /**         * End a polygon         */        void End();                /**         * Record a gluTesselation error         */        void Error( GLenum e) { err = e;}                /**         * The number of tesselations in the mesh         */        unsigned int TesselationCount() const { return tesselationList.size();}        /**         * Get a tesselation by index         */        const FTTesselation* const Tesselation( unsigned int index) const;                /**         * Return the temporary point list. For testing only.         */        const PointList& TempPointList() const { return tempPointList;}        /**         * Get the GL ERROR returned by the glu tesselator         */        GLenum Error() const { return err;}    private:        /**         * The current sub mesh that we are constructing.         */        FTTesselation* currentTesselation;                /**         * Holds each sub mesh that comprises this glyph.         */        TesselationVector tesselationList;                /**         * Holds extra points created by gluTesselator. See ftglCombine.         */        PointList tempPointList;                /**         * GL ERROR returned by the glu tesselator         */        GLenum err;};const FTGL_DOUBLE FTGL_FRONT_FACING = 1.0;const FTGL_DOUBLE FTGL_BACK_FACING = -1.0;/** * FTVectoriser class is a helper class that converts font outlines into * point data. * * @see FTExtrdGlyph * @see FTOutlineGlyph * @see FTPolyGlyph * @see FTContour * @see FTPoint * */class FTGL_EXPORT FTVectoriser{    public:        /**         * Constructor         *         * @param glyph The freetype glyph to be processed         */        FTVectoriser( const FT_GlyphSlot glyph);        /**         *  Destructor         */        virtual ~FTVectoriser();        /**         * Build an FTMesh from the vector outline data.          *         * @param zNormal   The direction of the z axis of the normal         *                  for this mesh         */        void MakeMesh( FTGL_DOUBLE zNormal = FTGL_FRONT_FACING);                /**         * Get the current mesh.         */        const FTMesh* const GetMesh() const { return mesh;}                /**         * Get the total count of points in this outline         *         * @return the number of points         */        size_t PointCount();        /**         * Get the count of contours in this outline         *         * @return the number of contours         */        size_t ContourCount() const { return ftContourCount;}        /**         * Return a contour at index         *         * @return the number of contours         */         const FTContour* const Contour( unsigned int index) const;        /**         * Get the number of points in a specific contour in this outline         *         * @param c     The contour index         * @return      the number of points in contour[c]         */        size_t ContourSize( int c) const { return contourList[c]->PointCount();}        /**         * Get the flag for the tesselation rule for this outline         *         * @return The contour flag         */        int ContourFlag() const { return contourFlag;}            private:        /**         * Process the freetype outline data into contours of points         */        void ProcessContours();        /**         * The list of contours in the glyph         */        FTContour** contourList;        /**         * A Mesh for tesselations         */        FTMesh* mesh;                /**         * The number of contours reported by Freetype         */        short ftContourCount;        /**         * A flag indicating the tesselation rule for the glyph         */        int contourFlag;        /**         * A Freetype outline         */        FT_Outline outline;};#endif  //  __FTVectoriser__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -