_________ __                 __
        /   _____//  |_____________ _/  |______     ____  __ __  ______
        \_____  \\   __\_  __ \__  \\   __\__  \   / ___\|  |  \/  ___/
        /        \|  |  |  | \// __ \|  |  / __ \_/ /_/  >  |  /\___ \
       /_______  /|__|  |__|  (____  /__| (____  /\___  /|____//____  >
               \/                  \/          \//_____/            \/
    ______________________                           ______________________
                          T H E   W A R   B E G I N S
                   Stratagus - A free fantasy real time strategy game engine

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
gcn::ImageFont Class Reference

#include <imagefont.h>

Inheritance diagram for gcn::ImageFont:
gcn::Font

Public Member Functions

 ImageFont (const std::string &filename, const std::string &glyphs)
 
 ImageFont (const std::string &filename, unsigned char glyphsFrom=32, unsigned char glyphsTo=126)
 
virtual ~ImageFont ()
 
virtual int drawGlyph (Graphics *graphics, unsigned char glyph, int x, int y)
 
virtual void setRowSpacing (int spacing)
 
virtual int getRowSpacing ()
 
virtual void setGlyphSpacing (int spacing)
 
virtual int getGlyphSpacing ()
 
virtual int getWidth (unsigned char glyph) const
 
virtual int getWidth (const std::string &text) const
 
virtual void drawString (Graphics *graphics, const std::string &text, int x, int y, bool is_normal=true)
 
virtual int getHeight () const
 
virtual int getStringIndexAt (const std::string &text, int x)
 
- Public Member Functions inherited from gcn::Font
virtual ~Font ()
 

Protected Member Functions

void addGlyph (unsigned char c, int &x, int &y, const Color &separator)
 

Protected Attributes

Rectangle mGlyph [256]
 
int mHeight
 
int mGlyphSpacing
 
int mRowSpacing
 
ImagemImage
 
std::string mFilename
 

Detailed Description

   A font using an image containing the font data. It implements the font
   class. You can use any filetype for the font data as long as it can be
   loaded with your ImageLoader.

   This are two examples of an image containing a font.
    \image html imagefontexample.bmp
    \image html imagefontexample2.bmp

   The Image font format works like this: The first pixel, the pixal at
   coordinate (0,0), tells which color to look for when seperating glyphs.
   You create an image with your glyphs and simple separates them with
   the seperation color. When you create your ImageFont you supply the
   constructor with the glyphs present in your image. When creating an
   ImageFont for the image data in the first example above, the following
   constructor call would be used.
   @code gcn::ImageFont imageFont("fixedfont_big.bmp"," abcdefghijklmno\

pqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"); Noteworthy is that the first glyph actually gives the width of space. Glyphs can, as seen in the second example above, be seperated with horizontal lines making it possible to draw glyphs on more then one line in the image. However, these vertical lines must be of one pixel size!

Constructor & Destructor Documentation

◆ ImageFont() [1/2]

gcn::ImageFont::ImageFont ( const std::string &  filename,
const std::string &  glyphs 
)

Constructor which takes an image file containing the font and a string containing the glyphs. The glyphs in the string should be in the same order as they appear in the font image.

Parameters
filenamethe filename of the image.
glyphsthe glyphs found in the image.
Exceptions
Exceptionwhen glyph list is incorrect or the font file is corrupt or if no ImageLoader exists.

◆ ImageFont() [2/2]

gcn::ImageFont::ImageFont ( const std::string &  filename,
unsigned char  glyphsFrom = 32,
unsigned char  glyphsTo = 126 
)

Constructor which takes an image file containing the font and two boundaries of ASCII values. The font image should include all glyphs specified with the boundaries in increasing ASCII order. The boundaries are inclusive.

Parameters
filenamethe filename of the image.
glyphsFromthe ASCII value of the first glyph found in the image.
glyphsTothe ASCII value of the last glyph found in the image.
Exceptions
Exceptionwhen glyph bondaries are incorrect or the font file is corrupt or if no ImageLoader exists.

◆ ~ImageFont()

gcn::ImageFont::~ImageFont ( )
virtual

Destructor.

Member Function Documentation

◆ addGlyph()

void gcn::ImageFont::addGlyph ( unsigned char  c,
int &  x,
int &  y,
const Color separator 
)
protected

◆ drawGlyph()

int gcn::ImageFont::drawGlyph ( Graphics graphics,
unsigned char  glyph,
int  x,
int  y 
)
virtual

Draws a glyph.

NOTE: You normally won't use this function to draw text since the Graphics class contains better functions for drawing text.

Parameters
graphicsa graphics object to be used for drawing.
glypha glyph to draw.
xthe x coordinate where to draw the glyph.
ythe y coordinate where to draw the glyph.
Returns
the width of the glyph in pixels.
See also
Graphics

◆ drawString()

void gcn::ImageFont::drawString ( Graphics graphics,
const std::string &  text,
int  x,
int  y,
bool  is_normal = true 
)
virtual

Draws a string.

NOTE: You normally won't use this function to draw text since Graphics contains better functions for drawing text.

Parameters
graphicsa Graphics object to use for drawing.
textthe string to draw.
xthe x coordinate where to draw the string.
ythe y coordinate where to draw the string.

Implements gcn::Font.

◆ getGlyphSpacing()

int gcn::ImageFont::getGlyphSpacing ( )
virtual

Gets the spacing between letters in pixels.

Returns
the spacing.

◆ getHeight()

int gcn::ImageFont::getHeight ( ) const
virtual

Gets the height of the glyphs in the font.

Returns
the height of the glyphs int the font.

Implements gcn::Font.

◆ getRowSpacing()

int gcn::ImageFont::getRowSpacing ( )
virtual

Gets the spacing between rows in pixels.

Returns
the spacing.

◆ getStringIndexAt()

int gcn::ImageFont::getStringIndexAt ( const std::string &  text,
int  x 
)
virtual

Gets a string index in a string providing an x coordinate. Used to retrive a string index (for a character in a string) at a certain x position. It is especially useful when a mouse clicks in a TextField and you want to know which character was clicked.

Returns
a string index in a string providing an x coordinate.

Reimplemented from gcn::Font.

◆ getWidth() [1/2]

int gcn::ImageFont::getWidth ( const std::string &  text) const
virtual

Gets the width of a string. The width of a string is not necesserily the sum of all the widths of it's glyphs.

Parameters
textthe string to return the width of.
Returns
the width of a string.

Implements gcn::Font.

◆ getWidth() [2/2]

int gcn::ImageFont::getWidth ( unsigned char  glyph) const
virtual

Gets a width of a glyph.

Parameters
glyphthe glyph which width will be returned
Returns
the width of a glyph

◆ setGlyphSpacing()

void gcn::ImageFont::setGlyphSpacing ( int  spacing)
virtual

Sets the spacing between letters in pixels. Default is 0 pixels. The spacing can be negative.

Parameters
spacingthe spacing in pixels

◆ setRowSpacing()

void gcn::ImageFont::setRowSpacing ( int  spacing)
virtual

Sets the spacing between rows in pixels. Default is 0 pixels. The spacing can be negative.

Parameters
spacingthe spacing in pixels.

Member Data Documentation

◆ mFilename

std::string gcn::ImageFont::mFilename
protected

◆ mGlyph

Rectangle gcn::ImageFont::mGlyph[256]
protected

◆ mGlyphSpacing

int gcn::ImageFont::mGlyphSpacing
protected

◆ mHeight

int gcn::ImageFont::mHeight
protected

◆ mImage

Image* gcn::ImageFont::mImage
protected

◆ mRowSpacing

int gcn::ImageFont::mRowSpacing
protected

The documentation for this class was generated from the following files:
(C) Copyright 1998-2012 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.