Main Page Class Hierarchy Alphabetical List Compound List File List Compound Members File Members Related Pages

# XFuPrinter.h

Go to the documentation of this file.

    00001 /*! \file
    00002  * X-Forge Util <br>
    00003  * Copyright 2000-2003 Fathammer Ltd
    00004  *
    00005  * \brief Primitive bitmap font printer class.
    00006  *
    00007  * $Id: XFuPrinter.h,v 1.17 2003/08/12 13:33:52 lars Exp $
    00008  * $Date: 2003/08/12 13:33:52 $
    00009  * $Revision: 1.17 $
    00010  */
    00011
    00012 #ifndef XFUPRINTER_H_INCLUDED
    00013 #define XFUPRINTER_H_INCLUDED
    00014
    00015
    00016 //! Primitive bitmap font printer class.
    00017 /*!
    00018  * This class loads a single image file and creates as many XFcGLSurface objects as the
    00019  * font has characters. The image file must have all of its characters in ASCII order starting
    00020  * from character 33 (the exclamation mark, "!"). The image file must be as wide as a single
    00021  * character is high, i.e. for a 8x8 font with 20 characters and one character, the image
    00022  * dimensions would be 8x160.
    00023  */
    00024 class XFuPrinter
    00025 {
    00026 public:
    00027     //! Creates a XFuPrinter object from an image file.
    00028     static XFuPrinter * create(const CHAR *aFname);
    00029     //! Creates a XFuPrinter object from an image file, with choise of color key value.
    00030     /*!
    00031      * aAlphamask is the color key value.
    00032      * \sa XFcGLSurface
    00033      */
    00034     static XFuPrinter * create(const CHAR *aFname, INT32 aAlphamask);
    00035     //! Creates a XFuPrinter object from an image file, with choise of color key value and scale
    00036     static XFuPrinter * create(const CHAR *aFname, INT32 aAlphamask, REAL aXScale, REAL aYScale);
    00037     //! Prints a character string with the printer's font.
    00038     /*! String is printed to a target surface with optional blending and clipping rectangle.
    00039      */
    00040     virtual void print(XFcGLSurface *aTarget, INT32 aX, INT32 aY, const CHAR *aText,
    00041                        INT32 aBlendType = 0, INT32 aBlendValue = 0x7f, XFcRectangle *aClipRect = NULL);
    00042     //! Prints a character string with the printer's font, using target rectangle and word wrapping.
    00043     /*! If the string contains words that are wider than the rectangle, the words are printed on a new
    00044      *  line (no inter-word chopping is performed). If the aTargetRect is NULL, the whole surface is used.
    00045      *  \Note This function uses print() and stringmetrics() internally, so it will also work with rlespriteprinter.
    00046      *  \sa print
    00047      *  \return Pixel height of the total printing operation (ignores clipping)
    00048      */
    00049     INT32 print(XFcGLSurface *aTarget, XFcRectangle *aTargetRect, const CHAR *aText,
    00050                 INT32 aBlendType = 0, INT32 aBlendValue = 0x7f, XFcRectangle *aClipRect = NULL);
    00051
    00052     //! Calculates how big an area a string would take if printed.
    00053     virtual void stringMetrics(const CHAR *aText, INT32 &aWidth, INT32 &aHeight);
    00054     //! Returns the width of a single character.
    00055     virtual INT32 getCharWidth(CHAR aChar);
    00056     //! Sets the width of a space.
    00057     virtual void setSpaceWidth(INT32 aSpacing);
    00058     //! Sets letter spacing (i.e. extra space between characters).
    00059     virtual void setLetterSpacing(INT32 aSpacing);
    00060     //! Returns the current letter spacing (i.e. extra space between characters).
    00061     virtual INT32 getLetterSpacing();
    00062     //! Sets line spacing (Y-coordinate offset from a row to the next row).
    00063     virtual void setLineSpacing(INT32 aSpacing);
    00064     //! Returns the current line spacing (Y-coordinate offset from a row to the next row).
    00065     virtual INT32 getLineSpacing();
    00066     //! Returns height of one printer line.
    00067     virtual INT32 getLineHeight();
    00068     //! Virtual destructor.
    00069     virtual ~XFuPrinter();
    00070
    00071 protected:
    00072
    00073     //! Protected constructor.
    00074     XFuPrinter();
    00075
    00076     INT32 mMaxletter;           //!< Maximum letter in the font.
    00077     XFcGLSurface **mLetter;     //!< Array of XFcGLSurfaces.
    00078     INT32 mLetterSpacing;       //!< Current letter spacing.
    00079     INT32 mLineSpacing;         //!< Current line spacing.
    00080     INT32 mLineHeight;          //!< Line height.
    00081     INT32 mSpaceWidth;          //!< Width of space character.
    00082 };
    00083
    00084
    00085 #endif // !XFUPRINTER_H_INCLUDED
    00086

|  | X-Forge Documentation Confidential Copyright © 2002-2003 Fathammer |  | Documentation generated with doxygen by Dimitri van Heesch