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

gcn::ImageFont Class Reference

#include <imagefont.h>

Inheritance diagram for gcn::ImageFont:

gcn::Font

List of all members.


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)
virtual int getHeight () const
virtual int getStringIndexAt (const std::string &text, int x)

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:
filename the filename of the image.
glyphs the glyphs found in the image.
Exceptions:
Exception when 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:
filename the filename of the image.
glyphsFrom the ASCII value of the first glyph found in the image.
glyphsTo the ASCII value of the last glyph found in the image.
Exceptions:
Exception when glyph bondaries are incorrect or the font file is corrupt or if no ImageLoader exists.

gcn::ImageFont::~ImageFont (  )  [virtual]

Destructor.


Member Function Documentation

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:
graphics a graphics object to be used for drawing.
glyph a glyph to draw.
x the x coordinate where to draw the glyph.
y the y coordinate where to draw the glyph.
Returns:
the width of the glyph in pixels.
See also:
Graphics

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

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

Parameters:
spacing the spacing in pixels.

int gcn::ImageFont::getRowSpacing (  )  [virtual]

Gets the spacing between rows in pixels.

Returns:
the spacing.

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

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

Parameters:
spacing the spacing in pixels

int gcn::ImageFont::getGlyphSpacing (  )  [virtual]

Gets the spacing between letters in pixels.

Returns:
the spacing.

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

Gets a width of a glyph.

Parameters:
glyph the 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:
text the string to return the width of.
Returns:
the width of a string.

Implements gcn::Font.

void gcn::ImageFont::drawString ( Graphics graphics,
const std::string &  text,
int  x,
int  y 
) [virtual]

Draws a string.

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

Parameters:
graphics a Graphics object to use for drawing.
text the string to draw.
x the x coordinate where to draw the string.
y the y coordinate where to draw the string.

Implements gcn::Font.

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

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


Member Data Documentation

int gcn::ImageFont::mHeight [protected]

int gcn::ImageFont::mRowSpacing [protected]

std::string gcn::ImageFont::mFilename [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.