

#include <difont/difont.h>

#ifndef _DIFONT_ExtrudeGlyph__
#define _DIFONT_ExtrudeGlyph__

/**
 * ExtrudeGlyph is a specialisation of Glyph for creating tessellated
 * extruded polygon glyphs.
 */
namespace difont {
    class ExtrudeGlyph : public Glyph {
    public:
        /**
         * Constructor. Sets the Error to Invalid_Outline if the glyph isn't
         * an outline.
         *
         * @param glyph The Freetype glyph to be processed
         * @param depth The distance along the z axis to extrude the glyph
         * @param frontOutset outset contour size
         * @param backOutset outset contour size
         * @param useDisplayList Enable or disable the use of Display Lists
         *                       for this glyph
         *                       <code>true</code> turns ON display lists.
         *                       <code>false</code> turns OFF display lists.
         */
        ExtrudeGlyph(FT_GlyphSlot glyph, float depth, float frontOutset,
                     float backOutset, bool useDisplayList);

        /**
         * Destructor
         */
        virtual ~ExtrudeGlyph();

        /**
         * Render this glyph at the current pen position.
         *
         * @param pen  The current pen position.
         * @param renderMode  Render mode to display
         * @return  The advance distance for this glyph.
         */
        virtual const difont::Point& Render(const difont::Point& pen, int renderMode);
    };
}

#endif  //  __ExtrudeGlyph__

