Data Structures | Public Member Functions | Static Public Member Functions | Private Types | Static Private Member Functions | Private Attributes | Static Private Attributes

Layouter Class Reference

The layouter performs all the layout work. More...

#include <gfx_layout.h>

Inheritance diagram for Layouter:
AutoDeleteSmallVector< const ParagraphLayouter::Line *, 4 > SmallVector< const ParagraphLayouter::Line *, S >

Data Structures

struct  LineCacheItem
 Item in the linecache. More...
struct  LineCacheKey
 Key into the linecache. More...

Public Member Functions

 Layouter (const char *str, int maxw=INT32_MAX, TextColour colour=TC_FROMSTRING, FontSize fontsize=FS_NORMAL)
 Create a new layouter.
Dimension GetBounds ()
 Get the boundaries of this paragraph.
Point GetCharPosition (const char *ch) const
 Get the position of a character in the layout.
const char * GetCharAtPosition (int x) const
 Get the character that is at a position.

Static Public Member Functions

static Font * GetFont (FontSize size, TextColour colour)
 Get a static font instance.
static void ResetFontCache (FontSize size)
 Reset cached font information.
static void ResetLineCache ()
 Clear line cache.
static void ReduceLineCache ()
 Reduce the size of linecache if necessary to prevent infinite growth.

Private Types

typedef std::map< LineCacheKey,
LineCacheItem
LineCache
typedef SmallMap< TextColour,
Font * > 
FontColourMap

Static Private Member Functions

static LineCacheItemGetCachedParagraphLayout (const char *str, size_t len, const FontState &state)
 Get reference to cache item.

Private Attributes

const char * string
 Pointer to the original string.

Static Private Attributes

static LineCache * linecache
 Cache of ParagraphLayout lines.
static FontColourMap fonts [FS_END]
 Cache of Font instances.

Detailed Description

The layouter performs all the layout work.

It also accounts for the memory allocations and frees.

Definition at line 139 of file gfx_layout.h.


Constructor & Destructor Documentation

Layouter::Layouter ( const char *  str,
int  maxw = INT32_MAX,
TextColour  colour = TC_FROMSTRING,
FontSize  fontsize = FS_NORMAL 
)

Create a new layouter.

Parameters:
str The string to create the layout for.
maxw The maximum width.
colour The colour of the font.
fontsize The size of font to use.

Definition at line 633 of file gfx_layout.cpp.

References SmallVector< const ParagraphLayouter::Line *, S >::Append(), DEBUG, GetCachedParagraphLayout(), Layouter::LineCacheItem::layout, Layouter::LineCacheItem::state_after, and Utf8Decode().


Member Function Documentation

Dimension Layouter::GetBounds (  ) 

Get the boundaries of this paragraph.

Returns:
The boundaries.

Definition at line 683 of file gfx_layout.cpp.

References SmallVector< const ParagraphLayouter::Line *, S >::Begin(), and SmallVector< const ParagraphLayouter::Line *, S >::End().

Referenced by DrawStringMultiLine(), GetStringBoundingBox(), and GetStringHeight().

Layouter::LineCacheItem & Layouter::GetCachedParagraphLayout ( const char *  str,
size_t  len,
const FontState state 
) [static, private]

Get reference to cache item.

If the item does not exist yet, it is default constructed.

Parameters:
str Source string of the line (including colour and font size codes).
len Length of str in bytes (no termination).
state State of the font at the beginning of the line.
Returns:
Reference to cache item.

Definition at line 814 of file gfx_layout.cpp.

References linecache, Layouter::LineCacheKey::state_before, and Layouter::LineCacheKey::str.

Referenced by Layouter().

const char * Layouter::GetCharAtPosition ( int  x  )  const

Get the character that is at a position.

Parameters:
x Position in the string.
Returns:
Pointer to the character at the position or NULL if no character is at the position.

Definition at line 746 of file gfx_layout.cpp.

References SmallVector< const ParagraphLayouter::Line *, S >::Begin(), and IsInsideMM().

Referenced by GetCharAtPosition().

Point Layouter::GetCharPosition ( const char *  ch  )  const

Get the position of a character in the layout.

Parameters:
ch Character to get the position of.
Returns:
Upper left corner of the character relative to the start of the string.
Note:
Will only work right for single-line strings.

Definition at line 699 of file gfx_layout.cpp.

References SmallVector< const ParagraphLayouter::Line *, S >::Begin(), string, and Utf8Decode().

Referenced by GetCharPosInString().

void Layouter::ResetFontCache ( FontSize  size  )  [static]

Field Documentation

Cache of Font instances.

Definition at line 176 of file gfx_layout.h.

Referenced by GetFont(), and ResetFontCache().

Layouter::LineCache * Layouter::linecache [static, private]

Cache of ParagraphLayout lines.

Definition at line 171 of file gfx_layout.h.

Referenced by GetCachedParagraphLayout(), ReduceLineCache(), and ResetLineCache().


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