Edit

kc3-lang/ftgl/include/FTGlyphContainer.h

Branch :

  • Show log

    Commit

  • Author : sammy
    Date : 2008-03-03 16:36:07
    Hash : f0f550ea
    Message : * Remove svn:executable property from source files.

  • include/FTGlyphContainer.h
  • #ifndef     __FTGlyphContainer__
    #define     __FTGlyphContainer__
    
    #include <ft2build.h>
    #include FT_FREETYPE_H
    #include FT_GLYPH_H
    
    #include "FTGL.h"
    #include "FTBBox.h"
    #include "FTPoint.h"
    #include "FTVector.h"
    
    class FTFace;
    class FTGlyph;
    
    /**
     * FTGlyphContainer holds the post processed FTGlyph objects.
     *
     * @see FTGlyph
     */
    class FTGL_EXPORT FTGlyphContainer
    {
            typedef FTVector<FTGlyph*> GlyphVector;
        public:
            /**
             * Constructor
             *
             * @param face      The Freetype face
             */
            FTGlyphContainer( FTFace* face);
    
            /**
             * Destructor
             */
            ~FTGlyphContainer();
    
            /**
             * Adds a glyph to this glyph list.
             *
             * @param glyph      The FTGlyph to be inserted into the container
             * @param glyphIndex The glyphs index in the container.
             * @return           <code>true</code>
             */
            bool Add( FTGlyph* glyph, unsigned int glyphIndex);
    
            /**
             * Get a glyph from the glyph list
             *
             * @param characterCode The char code of the glyph NOT the glyph index      
             * @return              An FTGlyph or <code>null</code> is it hasn't been
             * loaded.
             */
            const FTGlyph* const Glyph( const unsigned int characterCode) const;
    
            /**
             * Get the bounding box for a character.
             * @param characterCode The char code of the glyph NOT the glyph index      
             */
            FTBBox BBox( const unsigned int characterCode) const;
            
            /**
            * Returns the kerned advance width for a glyph.
            *
            * @param characterCode     glyph index of the character
            * @param nextCharacterCode the next glyph in a string
            * @return                  advance width
            */
            float Advance( unsigned int characterCode, unsigned int nextCharacterCode);
            
            /**
             * Renders a character
             * @param characterCode      the glyph to be Rendered
             * @param nextCharacterCode  the next glyph in the string. Used for kerning.
             * @param penPosition        the position to Render the glyph
             * @return                   The distance to advance the pen position after Rendering
             */
            FTPoint Render( unsigned int characterCode, unsigned int nextCharacterCode, FTPoint penPosition);
            
            /**
             * Queries the Font for errors.
             *
             * @return  The current error code.
             */
            FT_Error Error() const { return err;}
    
        private:
            /**
             * How many glyphs are reserved in this container
             */
            unsigned int numberOfGlyphs;
    
            /**
             * The current FTGL face
             */
            FTFace* face;
    
            /**
             * A structure to hold the glyphs
             */
            GlyphVector glyphs;
    
            /**
             * Current error code. Zero means no error.
             */
            FT_Error err;
            
    };
    
    
    #endif  //  __FTGlyphContainer__