Edit

kc3-lang/ftgl/include/FTContour.h

Branch :

  • Show log

    Commit

  • Author : henry
    Date : 2002-12-19 10:22:49
    Hash : 5793be41
    Message : Inlined some functions

  • include/FTContour.h
  • #ifndef     __FTContour__
    #define     __FTContour__
    
    #include "FTPoint.h"
    #include "FTVector.h"
    #include "FTGL.h"
    
    
    /**
     * FTContour class is a container of points that describe a vector font
     * outline. It is used as a container for the output of the bezier curve
     * evaluator in FTVectoriser.
     *
     * @see FTOutlineGlyph
     * @see FTPolyGlyph
     * @see FTPoint
     */
    class FTGL_EXPORT FTContour
    {
        public:
            /**
             * Constructor
             *
             * @param contour
             * @param pointTags
             * @param numberOfPoints
             */
            FTContour( FT_Vector* contour, char* pointTags, unsigned int numberOfPoints);
    
            /**
             * Destructor
             */
            ~FTContour()
            {
                pointList.clear();
            }
            
            /**
             * Return a point at index.
             *
             * @param index of the point in the curve.
             * @return const point reference
             */
            const FTPoint& Point( unsigned int index) const { return pointList[index];}
    
            /**
             * How many points define this contour
             *
             * @return the number of points in this contour
             */
            size_t PointCount() const { return pointList.size();}
    
        private:
            /**
             * Add a point to this contour. This function tests for duplicate
             * points.
             *
             * @param point The point to be added to the contour.
             */
            inline void AddPoint( FTPoint point);
            
            inline void AddPoint( float x, float y);
            
            /**
             * De Casteljau (bezier) algorithm contributed by Jed Soane
             * Evaluates a quadratic or conic (second degree) curve
             */
            inline void evaluateQuadraticCurve();
    
            /**
             * De Casteljau (bezier) algorithm contributed by Jed Soane
             * Evaluates a cubic (third degree) curve
             */
            inline void evaluateCubicCurve();
    
            /**
             *  The list of points in this contour
             */
            typedef FTVector<FTPoint> PointVector;
            PointVector pointList;
            
            /**
             * 2D array storing values of de Casteljau algorithm.
             */
            float controlPoints[4][2];
    };
    
    #endif // __FTContour__