OpenTTD Source 20250521-master-g82876c25e0
|
The layouter performs all the layout work. More...
#include <gfx_layout.h>
Data Structures | |
struct | LineCacheEqualTo |
struct | LineCacheHash |
struct | LineCacheItem |
Item in the linecache. More... | |
struct | LineCacheKey |
Key into the linecache. More... | |
struct | LineCacheQuery |
Public Member Functions | |
Layouter (std::string_view str, int maxw=INT32_MAX, FontSize fontsize=FS_NORMAL) | |
Create a new layouter. | |
Dimension | GetBounds () |
Get the boundaries of this paragraph. | |
ParagraphLayouter::Position | GetCharPosition (std::string_view::const_iterator ch) const |
Get the position of a character in the layout. | |
ptrdiff_t | GetCharAtPosition (int x, size_t line_index) const |
Get the character that is at a pixel position in the first line of the layouted text. | |
Static Public Member Functions | |
static Font * | GetFont (FontSize size, TextColour colour) |
Get a static font instance. | |
static void | Initialize () |
Perform initialization of layout engine. | |
static void | ResetFontCache (FontSize size) |
Reset cached font information. | |
static void | ResetLineCache () |
Clear line cache. | |
Private Types | |
using | LineCache = LRUCache< LineCacheKey, LineCacheItem, LineCacheHash, LineCacheEqualTo > |
using | FontColourMap = std::map< TextColour, std::unique_ptr< Font > > |
Static Private Member Functions | |
static LineCacheItem & | GetCachedParagraphLayout (std::string_view str, const FontState &state) |
Get reference to cache item. | |
Private Attributes | |
std::string_view | string |
Pointer to the original string. | |
Static Private Attributes | |
static std::unique_ptr< LineCache > | linecache |
Cache of ParagraphLayout lines. | |
static FontColourMap | fonts [FS_END] |
Cache of Font instances. | |
Friends | |
struct | std::hash< Layouter::LineCacheQuery > |
The layouter performs all the layout work.
It also accounts for the memory allocations and frees.
Definition at line 160 of file gfx_layout.h.
|
private |
Definition at line 208 of file gfx_layout.h.
|
private |
Definition at line 203 of file gfx_layout.h.
Create a new layouter.
str | The string to create the layout for. |
maxw | The maximum width. |
fontsize | The size of font to use. |
Definition at line 129 of file gfx_layout.cpp.
References Layouter::LineCacheItem::cached_layout, Layouter::LineCacheItem::cached_width, GetCachedParagraphLayout(), Layouter::LineCacheItem::layout, and Layouter::LineCacheItem::state_after.
Dimension Layouter::GetBounds | ( | ) |
Get the boundaries of this paragraph.
Definition at line 208 of file gfx_layout.cpp.
Referenced by DrawStringMultiLine(), GetStringBoundingBox(), and GetStringHeight().
|
staticprivate |
Get reference to cache item.
If the item does not exist yet, it is default constructed.
str | Source string of the line (including colour and font size codes). |
state | State of the font at the beginning of the line. |
Definition at line 389 of file gfx_layout.cpp.
References linecache, Layouter::LineCacheKey::state_before, and Layouter::LineCacheKey::str.
Referenced by Layouter().
ptrdiff_t Layouter::GetCharAtPosition | ( | int | x, |
size_t | line_index | ||
) | const |
Get the character that is at a pixel position in the first line of the layouted text.
x | Position in the string. |
line_index | Which line of the layout to search |
Definition at line 303 of file gfx_layout.cpp.
References IsConsumedFormattingCode(), and IsInsideMM().
Referenced by GetCharAtPosition(), and TextfileWindow::GetHyperlink().
ParagraphLayouter::Position Layouter::GetCharPosition | ( | std::string_view::const_iterator | ch | ) | const |
Get the position of a character in the layout.
ch | Character to get the position of. Must be an iterator of the string passed to the constructor. |
Definition at line 237 of file gfx_layout.cpp.
References _current_text_dir, Utf8View::GetIterAtByte(), IsConsumedFormattingCode(), and TD_LTR.
Referenced by GetCharPosInString().
|
static |
Get a static font instance.
Definition at line 344 of file gfx_layout.cpp.
References fonts.
Referenced by GetLayouter().
|
static |
Perform initialization of layout engine.
Definition at line 356 of file gfx_layout.cpp.
References ICUParagraphLayoutFactory::InitializeLayouter().
Referenced by ReadLanguagePack().
|
static |
Reset cached font information.
size | Font size to reset. |
Definition at line 367 of file gfx_layout.cpp.
References fonts, MacOSResetScriptCache(), and ResetLineCache().
Referenced by SpriteFontCache::ClearFontCache(), TrueTypeFontCache::ClearFontCache(), FontCache::FontCache(), and FontCache::~FontCache().
|
static |
Clear line cache.
Definition at line 412 of file gfx_layout.cpp.
References linecache.
Referenced by ResetFontCache().
|
friend |
Definition at line 161 of file gfx_layout.h.
|
staticprivate |
Cache of Font instances.
Definition at line 209 of file gfx_layout.h.
Referenced by GetFont(), and ResetFontCache().
|
staticprivate |
Cache of ParagraphLayout lines.
Definition at line 204 of file gfx_layout.h.
Referenced by GetCachedParagraphLayout(), and ResetLineCache().
|
private |
Pointer to the original string.
Definition at line 161 of file gfx_layout.h.