ResidualVM logo ResidualVM website - Forums - Contact us BuildBot - Doxygen - Wiki curved edge

Graphics::Font Class Reference

Instances of this class represent a distinct font, with a built-in renderer. More...

#include <font.h>

Inheritance diagram for Graphics::Font:

List of all members.

Public Member Functions

 Font ()
virtual ~Font ()
virtual int getFontHeight () const =0
 Query the height of the font.
virtual int getMaxCharWidth () const =0
 Query the maximum width of the font.
virtual int getCharWidth (uint32 chr) const =0
 Query the width of a specific character.
virtual int getKerningOffset (uint32 left, uint32 right) const
 Query the kerning offset between two characters.
virtual Common::Rect getBoundingBox (uint32 chr) const
 Calculate the bounding box of a character.
Common::Rect getBoundingBox (const Common::String &str, int x=0, int y=0, const int w=0, TextAlign align=kTextAlignLeft, int deltax=0, bool useEllipsis=false) const
 Return the bounding box of a string drawn with drawString.
Common::Rect getBoundingBox (const Common::U32String &str, int x=0, int y=0, const int w=0, TextAlign align=kTextAlignLeft) const
virtual void drawChar (Surface *dst, uint32 chr, int x, int y, uint32 color) const =0
 Draw a character at a specific point on a surface.
void drawChar (ManagedSurface *dst, uint32 chr, int x, int y, uint32 color) const
void drawString (Surface *dst, const Common::String &str, int x, int y, int w, uint32 color, TextAlign align=kTextAlignLeft, int deltax=0, bool useEllipsis=true) const
void drawString (Surface *dst, const Common::U32String &str, int x, int y, int w, uint32 color, TextAlign align=kTextAlignLeft, int deltax=0) const
void drawString (ManagedSurface *dst, const Common::String &str, int x, int y, int w, uint32 color, TextAlign align=kTextAlignLeft, int deltax=0, bool useEllipsis=true) const
void drawString (ManagedSurface *dst, const Common::U32String &str, int x, int y, int w, uint32 color, TextAlign align=kTextAlignLeft, int deltax=0) const
int getStringWidth (const Common::String &str) const
 Compute and return the width the string str has when rendered using this font.
int getStringWidth (const Common::U32String &str) const
int wordWrapText (const Common::String &str, int maxWidth, Common::Array< Common::String > &lines, int initWidth=0) const
 Take a text (which may contain newline characters) and word wrap it so that no text line is wider than maxWidth pixels.
int wordWrapText (const Common::U32String &str, int maxWidth, Common::Array< Common::U32String > &lines, int initWidth=0) const

Private Member Functions

Common::String handleEllipsis (const Common::String &str, int w) const

Detailed Description

Instances of this class represent a distinct font, with a built-in renderer.

Todo:
Maybe move the high-level methods (drawString etc.) to a separate FontRenderer class? That way, we could have different variants... ?

Definition at line 52 of file font.h.


Constructor & Destructor Documentation

Graphics::Font::Font (  )  [inline]

Definition at line 54 of file font.h.

virtual Graphics::Font::~Font (  )  [inline, virtual]

Definition at line 55 of file font.h.


Member Function Documentation

virtual void Graphics::Font::drawChar ( Surface dst,
uint32  chr,
int  x,
int  y,
uint32  color 
) const [pure virtual]

Draw a character at a specific point on a surface.

Note that the point describes the top left edge point where to draw the character. This can be different from top left edge point of the character's bounding box! For example, TTF fonts sometimes move characters like 't' one (or more) pixels to the left to create better visual results. To query the actual bounding box of a character use getBoundingBox.

See also:
getBoundingBox

The Font implemenation should take care of not drawing outside of the specified surface.

Parameters:
dst The surface to drawn on.
chr The character to draw.
x The x coordinate where to draw the character.
y The y coordinate where to draw the character.
color The color of the character.

Implemented in Graphics::BdfFont, and Graphics::WinFont.

void Graphics::Font::drawChar ( ManagedSurface dst,
uint32  chr,
int  x,
int  y,
uint32  color 
) const

Definition at line 290 of file font.cpp.

void Graphics::Font::drawString ( Surface dst,
const Common::String str,
int  x,
int  y,
int  w,
uint32  color,
TextAlign  align = kTextAlignLeft,
int  deltax = 0,
bool  useEllipsis = true 
) const

Definition at line 298 of file font.cpp.

void Graphics::Font::drawString ( Surface dst,
const Common::U32String str,
int  x,
int  y,
int  w,
uint32  color,
TextAlign  align = kTextAlignLeft,
int  deltax = 0 
) const

Definition at line 303 of file font.cpp.

void Graphics::Font::drawString ( ManagedSurface dst,
const Common::String str,
int  x,
int  y,
int  w,
uint32  color,
TextAlign  align = kTextAlignLeft,
int  deltax = 0,
bool  useEllipsis = true 
) const

Definition at line 307 of file font.cpp.

void Graphics::Font::drawString ( ManagedSurface dst,
const Common::U32String str,
int  x,
int  y,
int  w,
uint32  color,
TextAlign  align = kTextAlignLeft,
int  deltax = 0 
) const

Definition at line 314 of file font.cpp.

Common::Rect Graphics::Font::getBoundingBox ( uint32  chr  )  const [virtual]

Calculate the bounding box of a character.

It is assumed that the character shall be drawn at position (0, 0).

The idea here is that the character might be drawn outside the rect (0, 0) to (getCharWidth(chr), getFontHeight()) for some fonts. This is common among TTF fonts.

The default implementation simply returns the rect with a width of getCharWidth(chr) and height of getFontHeight().

Parameters:
chr The character to draw.
Returns:
The bounding box of the drawn glyph.

Definition at line 35 of file font.cpp.

Common::Rect Graphics::Font::getBoundingBox ( const Common::String str,
int  x = 0,
int  y = 0,
const int  w = 0,
TextAlign  align = kTextAlignLeft,
int  deltax = 0,
bool  useEllipsis = false 
) const

Return the bounding box of a string drawn with drawString.

Parameters:
x The x position where to start drawing
y The y position where to start drawing
w The width of the text area. This can be 0 to allow for obtaining the whole bounding box for a string. Note that this does not work with an align different from kTextAlignLeft or with useEllipsis.
align The text alignment. This can be used to center a string in the given area or to align it to the right.
delatx Offset to the x starting position of the string.
useEllipsis Try to fit the string in the area by inserting an ellipsis. Be ware that the default is false for this one unlike for drawString!
Returns:
The actual area where the string is drawn.

Definition at line 248 of file font.cpp.

Common::Rect Graphics::Font::getBoundingBox ( const Common::U32String str,
int  x = 0,
int  y = 0,
const int  w = 0,
TextAlign  align = kTextAlignLeft 
) const

Definition at line 268 of file font.cpp.

virtual int Graphics::Font::getCharWidth ( uint32  chr  )  const [pure virtual]

Query the width of a specific character.

Parameters:
chr The character to query the width of.
Returns:
The character's width.

Implemented in Graphics::BdfFont, and Graphics::WinFont.

virtual int Graphics::Font::getFontHeight (  )  const [pure virtual]

Query the height of the font.

Returns:
font height.

Implemented in Graphics::BdfFont, and Graphics::WinFont.

int Graphics::Font::getKerningOffset ( uint32  left,
uint32  right 
) const [virtual]

Query the kerning offset between two characters.

Parameters:
left The left character. May be 0.
right The right character. May be 0.
Returns:
The horizontal displacement.

Definition at line 31 of file font.cpp.

virtual int Graphics::Font::getMaxCharWidth (  )  const [pure virtual]

Query the maximum width of the font.

Returns:
maximum font width.

Implemented in Graphics::BdfFont, and Graphics::WinFont.

int Graphics::Font::getStringWidth ( const Common::U32String str  )  const

Definition at line 286 of file font.cpp.

int Graphics::Font::getStringWidth ( const Common::String str  )  const

Compute and return the width the string str has when rendered using this font.

This describes the logical width of the string when drawn at (0, 0). This can be different from the actual bounding box of the string. Use getBoundingBox when you need the bounding box of a drawn string.

See also:
getBoundingBox
drawChar

Definition at line 282 of file font.cpp.

Common::String Graphics::Font::handleEllipsis ( const Common::String str,
int  w 
) const [private]

Definition at line 329 of file font.cpp.

int Graphics::Font::wordWrapText ( const Common::U32String str,
int  maxWidth,
Common::Array< Common::U32String > &  lines,
int  initWidth = 0 
) const

Definition at line 325 of file font.cpp.

int Graphics::Font::wordWrapText ( const Common::String str,
int  maxWidth,
Common::Array< Common::String > &  lines,
int  initWidth = 0 
) const

Take a text (which may contain newline characters) and word wrap it so that no text line is wider than maxWidth pixels.

If necessary, additional line breaks are generated, preferably between words (i.e. where whitespaces are). The resulting lines are appended to the lines string list. It returns the maximal width of any of the new lines (i.e. a value which is less or equal to maxWidth).

Parameters:
str the string to word wrap
maxWidth the maximum width a line may have
lines the string list to which the text lines from str are appended
initWidth the starting width of the first line, for partially filled lines (optional)
Returns:
the maximal width of any of the lines added to lines

Definition at line 321 of file font.cpp.


The documentation for this class was generated from the following files:


Generated on Sat Sep 14 2019 05:04:10 for ResidualVM by doxygen 1.7.1
curved edge   curved edge