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:

## 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 LineCacheItem & | GetCachedParagraphLayout (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 689 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 820 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 752 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 705 of file gfx_layout.cpp.

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

Referenced by GetCharPosInString().

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

Reset cached font information.

Parameters:

  | size | Font size to reset.

Definition at line 801 of file gfx_layout.cpp.

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

Referenced by FreeTypeFontCache::ClearFontCache(), SpriteFontCache::ClearFontCache(), FontCache::FontCache(), and FontCache::~FontCache().

## Field Documentation

Layouter::FontColourMap Layouter::fonts`[static, private]`

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:

- src/gfx_layout.h
- src/gfx_layout.cpp