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

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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.

imagefontexample.bmp
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.

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

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.
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.
gcn::ImageFont::~ImageFont ( )
virtual

Destructor.

Member Function Documentation

void gcn::ImageFont::addGlyph ( unsigned char  c,
int &  x,
int &  y,
const Color separator 
)
protected
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
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.

int gcn::ImageFont::getGlyphSpacing ( )
virtual

Gets the spacing between letters in pixels.

Returns
the spacing.
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.

int gcn::ImageFont::getRowSpacing ( )
virtual

Gets the spacing between rows in pixels.

Returns
the spacing.
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.

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
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.

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
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

std::string gcn::ImageFont::mFilename
protected
Rectangle gcn::ImageFont::mGlyph[256]
protected
int gcn::ImageFont::mGlyphSpacing
protected
int gcn::ImageFont::mHeight
protected
Image* gcn::ImageFont::mImage
protected
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.