HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Data Fields
v1::text_shaper_line Class Reference

Public Types

using iterator = std::vector<text_shaper_char>::iterator
 
using const_iterator = std::vector<text_shaper_char>::const_iterator
 
using column_vector = std::vector<iterator>
 

Public Member Functions

 text_shaper_line (size_t line_nr, const_iterator begin, iterator first, iterator last, float width, font_metrics_px const &metrics) noexcept
 Construct a line.
 
constexpr size_t size () const noexcept
 
constexpr iterator front () const noexcept
 
constexpr iterator back () const noexcept
 
iterator operator[] (size_t index) const noexcept
 
void layout (horizontal_alignment alignment, float min_x, float max_x, float sub_pixel_width) noexcept
 
std::pair< const_iterator, bool > get_nearest (point2 position) const noexcept
 Get the character nearest to position.
 

Data Fields

iterator first
 The first character in the line, in logical order.
 
iterator last
 One beyond the last character in the line, in logical order.
 
column_vector columns
 Iterators to the characters in the text.
 
font_metrics_px metrics
 The maximum metrics of the font of each glyph on this line.
 
size_t line_nr
 The line number of this line, counted from top to bottom.
 
float y
 Position of the base-line of this line.
 
aarectangle rectangle
 The rectangle of the line.
 
float width
 The width of this line, excluding trailing white space, glyph morphing and kerning.
 
unicode_general_category last_category
 Category of the last character on the line.
 
unicode_bidi_class paragraph_direction
 The writing direction of the paragraph.
 

Constructor & Destructor Documentation

◆ text_shaper_line()

v1::text_shaper_line::text_shaper_line ( size_t line_nr,
const_iterator begin,
iterator first,
iterator last,
float width,
font_metrics_px const & metrics )
inlinenoexcept

Construct a line.

Parameters
line_nrThe line number counting from top to bottom.
beginThe first character of the text.
firstThe first character of the line.
lastOne beyond the last character of the line.
widthThe width of the line.
metricsThe initial line metrics.

Member Function Documentation

◆ get_nearest()

std::pair< const_iterator, bool > v1::text_shaper_line::get_nearest ( point2 position) const
inlinenoexcept

Get the character nearest to position.

Returns
An iterator to the character, and true if the position is after the character.

Field Documentation

◆ columns

column_vector v1::text_shaper_line::columns

Iterators to the characters in the text.

The Iterators are in display-order.

◆ first

iterator v1::text_shaper_line::first

The first character in the line, in logical order.

◆ last

iterator v1::text_shaper_line::last

One beyond the last character in the line, in logical order.

◆ last_category

unicode_general_category v1::text_shaper_line::last_category

Category of the last character on the line.

Use to determine if this line ends in:

  • Zp: An explicit paragraph separator.
  • Zl: An explicit line separator.
  • *: A word-wrapped line. Need to add line-separators into the stream for bidi-algorithm.

◆ line_nr

size_t v1::text_shaper_line::line_nr

The line number of this line, counted from top to bottom.

◆ metrics

font_metrics_px v1::text_shaper_line::metrics

The maximum metrics of the font of each glyph on this line.

◆ paragraph_direction

unicode_bidi_class v1::text_shaper_line::paragraph_direction

The writing direction of the paragraph.

This value will be set the same on each line of a paragraph.

◆ rectangle

aarectangle v1::text_shaper_line::rectangle

The rectangle of the line.

The attributes of the rectangle are:

  • left: The rectangle.left() of the first character on the line.
  • right: The rectangle.right() of the last visible character on the line.
  • top: At the ascender of the line.
  • bottom: At the descender of the line.

◆ width

float v1::text_shaper_line::width

The width of this line, excluding trailing white space, glyph morphing and kerning.

◆ y

float v1::text_shaper_line::y

Position of the base-line of this line.


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