OpenTTD Source 20241224-master-gf74b0cf984
gfx_layout.h File Reference

Functions related to laying out the texts. More...

#include "fontcache.h"
#include "gfx_func.h"
#include "core/math_func.hpp"
#include <stack>
#include <string_view>

Go to the source code of this file.

Data Structures

struct  FontState
 Text drawing parameters, which can change while drawing a line, but are kept between multiple parts of the same text, e.g. More...
 
class  Font
 Container with information about a font. More...
 
class  ParagraphLayouter
 Interface to glue fallback and normal layouter into one. More...
 
class  ParagraphLayouter::Position
 Position of a glyph within a VisualRun. More...
 
class  ParagraphLayouter::VisualRun
 Visual run contains data about the bit of text with the same font. More...
 
class  ParagraphLayouter::Line
 A single line worth of VisualRuns. More...
 
class  Layouter
 The layouter performs all the layout work. More...
 
struct  Layouter::LineCacheKey
 Key into the linecache. More...
 
struct  Layouter::LineCacheQuery
 
struct  Layouter::LineCacheCompare
 Comparator for std::map. More...
 
struct  Layouter::LineCacheItem
 Item in the linecache. More...
 

Typedefs

using FontMap = std::vector< std::pair< int, Font * > >
 Mapping from index to font.
 

Functions

ParagraphLayouter::Position GetCharPosInString (std::string_view str, const char *ch, FontSize start_fontsize=FS_NORMAL)
 Get the leading corner of a character in a single-line string relative to the start of the string.
 
ptrdiff_t GetCharAtPosition (std::string_view str, int x, FontSize start_fontsize=FS_NORMAL)
 Get the character from a string that is drawn at a specific position.
 

Detailed Description

Functions related to laying out the texts.

Definition in file gfx_layout.h.

Typedef Documentation

◆ FontMap

using FontMap = std::vector<std::pair<int, Font *> >

Mapping from index to font.

The pointer is owned by FontColourMap.

Definition at line 84 of file gfx_layout.h.

Function Documentation

◆ GetCharAtPosition()

ptrdiff_t GetCharAtPosition ( std::string_view  str,
int  x,
FontSize  start_fontsize 
)

Get the character from a string that is drawn at a specific position.

Parameters
strString to test.
xPosition relative to the start of the string.
start_fontsizeFont size to start the text with.
Returns
Index of the character position or -1 if there is no character at the position.

Definition at line 438 of file gfx_layout.cpp.

References Layouter::GetCharAtPosition().

Referenced by IConsoleWindow::GetTextCharacterAtPosition().

◆ GetCharPosInString()

ParagraphLayouter::Position GetCharPosInString ( std::string_view  str,
const char *  ch,
FontSize  start_fontsize 
)

Get the leading corner of a character in a single-line string relative to the start of the string.

Parameters
strString containing the character.
chPointer to the character in the string.
start_fontsizeFont size to start the text with.
Returns
Upper left corner of the glyph associated with the character.

Definition at line 421 of file gfx_layout.cpp.

References Layouter::GetCharPosition().

Referenced by QueryString::GetBoundingRect(), IConsoleWindow::GetTextBoundingRect(), Textbuf::UpdateCaretPosition(), and Textbuf::UpdateMarkedText().