OpenTTD Source: Layouter Class Reference

OpenTTD Source 13.1

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 | LineCacheCompare
| Comparator for std::map. More...
struct | LineCacheItem
| Item in the linecache. More...
struct | LineCacheKey
| Key into the linecache. More...
struct | LineCacheQuery

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

## 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. More...
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, LineCacheCompare > | 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. More...

## 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 153 of file gfx_layout.h.

## Constructor & Destructor Documentation

## ◆ Layouter()

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 673 of file gfx_layout.cpp.

References Debug, GetCachedParagraphLayout(), Layouter::LineCacheItem::layout, Layouter::LineCacheItem::state_after, and Utf8Decode().

## Member Function Documentation

## ◆ GetBounds()

Dimension Layouter::GetBounds | ( |  | ) |

Get the boundaries of this paragraph.

Returns
  The boundaries.

Definition at line 752 of file gfx_layout.cpp.

Referenced by DrawStringMultiLine().

## ◆ GetCachedParagraphLayout()

Layouter::LineCacheItem & Layouter::GetCachedParagraphLayout | ( | const char * | str,
|  | size_t | len,
|  | const FontState & | state
| ) |  |
| staticprivate

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 890 of file gfx_layout.cpp.

References linecache.

Referenced by Layouter().

## ◆ GetCharAtPosition()

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 nullptr if no character is at the position.

Definition at line 815 of file gfx_layout.cpp.

## ◆ GetCharPosition()

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 768 of file gfx_layout.cpp.

References string, and Utf8Decode().

## ◆ ResetFontCache()

void Layouter::ResetFontCache | ( | FontSize | size | ) |
| static

Reset cached font information.

Parameters

  size | Font size to reset.

Definition at line 864 of file gfx_layout.cpp.

References fonts, and ResetLineCache().

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

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

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