Edit

kc3-lang/ftgl/include/FTGlyph.h

Branch :

  • Show log

    Commit

  • Author : henry
    Date : 2002-06-20 08:22:06
    Hash : 9013e3ec
    Message : Changes for VTK Removed tabs Removed mmgr Optimisations for loading pixel based fonts Minor changes

  • include/FTGlyph.h
  • #ifndef     __FTGlyph__
    #define     __FTGlyph__
    
    #include <ft2build.h>
    #include FT_FREETYPE_H
    #include FT_GLYPH_H
    
    #include "FTGL.h"
    
    
    /**
     * FTBBox
     *
     *
     */
    class FTGL_EXPORT FTBBox
    {
        public:
            FTBBox()
            :   x1(0),
                y1(0),
                z1(0),
                x2(0),
                y2(0),
                z2(0)
            {}
            
            FTBBox( FT_Glyph glyph)
            {
                FT_BBox bbox;
                FT_Glyph_Get_CBox( glyph, ft_glyph_bbox_subpixels, &bbox );
                
                x1 = bbox.xMin >> 6;
                y1 = bbox.yMin >> 6;
                z1 = 0;
                x2 = bbox.xMax >> 6;
                y2 = bbox.yMax >> 6;
                z2 = 0; 
            }       
            
            FTBBox( int a, int b, int c, int d, int e, int f)
            :   x1(a),
                y1(b),
                z1(c),
                x2(d),
                y2(e),
                z2(f)
            {}
    
            ~FTBBox()
            {}
        
            // Make these ftPoints
            float x1, y1, z1, x2, y2, z2;
    
        protected:
        
        
        private:
    };
    
    
    /**
     * FTGlyph is the base class for FTGL glyphs.
     *
     * It provides the interface between Freetype glyphs and their openGL
     * renderable counterparts. This is an abstract class and derived classes
     * must implement the <code>render</code> function. 
     * 
     * @see FTGlyphContainer
     *
     */
    class FTGL_EXPORT FTGlyph
    {
        public:
            /**
             * Constructor
             */
            FTGlyph();
    
            /**
             * Destructor
             */
            virtual ~FTGlyph();
    
            /**
             * Renders this glyph at the current pen position.
             *
             * @param pen   The current pen position.
             * @return      The advance distance for this glyph.
             */
            virtual float Render( const FT_Vector& pen) = 0;
            
            /**
             * Return the advance width for this glyph.
             *
             * @return  advance width.
             */
            float Advance() const { return advance;}
            
            /**
             * Return the bounding box for this glyph.
             *
             * @return  bounding box.
             */
            FTBBox BBox() const { return bBox;}
            
            /**
             * Queries for errors.
             *
             * @return  The current error code.
             */
            FT_Error Error() const { return err;}
            
        protected:
            /**
             * The advance distance for this glyph
             */
            float advance;
    
            /**
             * Vector from the pen position to the topleft corner of the glyph
             */
            FT_Vector pos;
    
            
            /**
             * A freetype bounding box
             */
            FTBBox bBox;
            
            /**
             * Current error code. Zero means no error.
             */
            FT_Error err;
            
        private:
    
    };
    
    
    #endif  //  __FTGlyph__