pangomm: Pango::LayoutIter Class Reference

A Pango::LayoutIter can be used to iterate over the visual extents of a Pango::Layout. More...

#include <pangomm/layoutiter.h>

Public Member Functions

 LayoutIter ()
 
 LayoutIter (PangoLayoutIter* gobject, bool make_a_copy=true)
 
 LayoutIter (const LayoutIter& other)
 
LayoutIteroperator= (const LayoutIter& other)
 
 LayoutIter (LayoutIter&& other) noexcept
 
LayoutIteroperator= (LayoutIter&& other) noexcept
 
 ~LayoutIter () noexcept
 
void swap (LayoutIter& other) noexcept
 
PangoLayoutIter* gobj ()
 Provides access to the underlying C instance. More...

 
const PangoLayoutIter* gobj () const
 Provides access to the underlying C instance. More...

 
PangoLayoutIter* gobj_copy () const
 Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs. More...

 
int get_index () const
 Gets the current byte index. More...

 
GlyphItem get_run () const
 Gets the current run. More...

 
Glib::RefPtr< LayoutLineget_line ()
 Gets the current line. More...

 
Glib::RefPtr< const LayoutLineget_line () const
 Gets the current line for read-only access. More...

 
bool at_last_line () const
 Determines whether iter is on the last line of the layout. More...

 
Glib::RefPtr< Layoutget_layout ()
 Gets the layout associated with a Pango::LayoutIter. More...

 
Glib::RefPtr< const Layoutget_layout () const
 Gets the layout associated with a Pango::LayoutIter. More...

 
bool next_char ()
 Moves iter forward to the next character in visual order. More...

 
bool next_cluster ()
 Moves iter forward to the next cluster in visual order. More...

 
bool next_run ()
 Moves iter forward to the next run in visual order. More...

 
bool next_line ()
 Moves iter forward to the start of the next line. More...

 
Rectangle get_char_extents () const
 Gets the extents of the current character, in layout coordinates (origin is the top left of the entire layout). More...

 
void get_cluster_extents (Rectangle& ink_rect, Rectangle& logical_rect) const
 Gets the extents of the current cluster, in layout coordinates (origin is the top left of the entire layout). More...

 
Rectangle get_cluster_ink_extents () const
 Gets the ink extents of the current cluster, in layout coordinates (origin is the top left of the entire layout). More...

 
Rectangle get_cluster_logical_extents () const
 Gets the logical extents of the current cluster, in layout coordinates (origin is the top left of the entire layout). More...

 
void get_run_extents (Rectangle& ink_rect, Rectangle& logical_rect) const
 Gets the extents of the current run in layout coordinates (origin is the top left of the entire layout). More...

 
Rectangle get_run_ink_extents () const
 Gets the ink extents of the current run in layout coordinates (origin is the top left of the entire layout). More...

 
Rectangle get_run_logical_extents () const
 Gets the logical extents of the current run in layout coordinates (origin is the top left of the entire layout). More...

 
void get_line_extents (Rectangle& ink_rect, Rectangle& logical_rect) const
 Obtains the extents of the current line. More...

 
Rectangle get_line_ink_extents () const
 Obtains the ink extents of the current line. More...

 
Rectangle get_line_logical_extents () const
 Obtains the logical extents of the current line. More...

 
void get_line_yrange (int& y0, int& y1) const
 Divides the vertical space in the Pango::Layout being iterated over between the lines in the layout, and returns the space belonging to the current line. More...

 
void get_layout_extents (Rectangle& ink_rect, Rectangle& logical_rect) const
 Obtains the extents of the Pango::Layout being iterated over. More...

 
Rectangle get_layout_ink_extents () const
 Obtains the ink extents of the Pango::Layout being iterated over. More...

 
Rectangle get_layout_logical_extents () const
 Obtains the logical extents of the Pango::Layout being iterated over. More...

 
int get_baseline () const
 Gets the Y position of the current line's baseline, in layout coordinates (origin at top left of the entire layout). More...

 

Static Public Member Functions

static GType get_type ()
 Get the GType for this class, for use with the underlying GObject type system. More...

 

Protected Attributes

PangoLayoutIter* gobject_
 

Related Functions

(Note that these are not member functions.)

void swap (LayoutIter& lhs, LayoutIter& rhs) noexcept
 
Pango::LayoutIter wrap (PangoLayoutIter* object, bool take_copy=false)
 A Glib::wrap() method for this object. More...

 

Detailed Description

A Pango::LayoutIter can be used to iterate over the visual extents of a Pango::Layout.

Constructor & Destructor Documentation

Pango::LayoutIter::LayoutIter ( )
Pango::LayoutIter::LayoutIter ( PangoLayoutIter *  gobject,
bool  make_a_copy = true 
)
explicit
Pango::LayoutIter::LayoutIter ( const LayoutIter other)
Pango::LayoutIter::LayoutIter ( LayoutIter&&  other)
noexcept
Pango::LayoutIter::~LayoutIter ( )
noexcept

Member Function Documentation

bool Pango::LayoutIter::at_last_line ( ) const

Determines whether iter is on the last line of the layout.

Returns
true if iter is on the last line.
int Pango::LayoutIter::get_baseline ( ) const

Gets the Y position of the current line's baseline, in layout coordinates (origin at top left of the entire layout).

Returns
Baseline of current line.
Rectangle Pango::LayoutIter::get_char_extents ( ) const

Gets the extents of the current character, in layout coordinates (origin is the top left of the entire layout).

Only logical extents can sensibly be obtained for characters; ink extents make sense only down to the level of clusters.

Returns
The logical extents of the current character.
void Pango::LayoutIter::get_cluster_extents ( Rectangle ink_rect,
Rectangle logical_rect 
) const

Gets the extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).

Parameters
ink_rectRectangle to fill with ink extents, or nullptr.
logical_rectRectangle to fill with logical extents, or nullptr.
Rectangle Pango::LayoutIter::get_cluster_ink_extents ( ) const

Gets the ink extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).

Returns
The extents of the current cluster as drawn.
Rectangle Pango::LayoutIter::get_cluster_logical_extents ( ) const

Gets the logical extents of the current cluster, in layout coordinates (origin is the top left of the entire layout).

Returns
The logical extents of the current cluster.
int Pango::LayoutIter::get_index ( ) const

Gets the current byte index.

Note that iterating forward by char moves in visual order, not logical order, so indexes may not be sequential. Also, the index may be equal to the length of the text in the layout, if on the nullptr run (see get_run()).

Returns
Current byte index.
Glib::RefPtr<Layout> Pango::LayoutIter::get_layout ( )

Gets the layout associated with a Pango::LayoutIter.

Since pangomm 1.20:
Returns
The layout associated with iter.
Glib::RefPtr<const Layout> Pango::LayoutIter::get_layout ( ) const

Gets the layout associated with a Pango::LayoutIter.

Since pangomm 1.20:
Returns
The layout associated with iter.
void Pango::LayoutIter::get_layout_extents ( Rectangle ink_rect,
Rectangle logical_rect 
) const

Obtains the extents of the Pango::Layout being iterated over.

ink_rect or logical_rect can be nullptr if you aren't interested in them.

Parameters
ink_rectRectangle to fill with ink extents, or nullptr.
logical_rectRectangle to fill with logical extents, or nullptr.
Rectangle Pango::LayoutIter::get_layout_ink_extents ( ) const

Obtains the ink extents of the Pango::Layout being iterated over.

Returns
The extents of the layout as drawn.
Rectangle Pango::LayoutIter::get_layout_logical_extents ( ) const

Obtains the logical extents of the Pango::Layout being iterated over.

Returns
The logical extents of the layout.
Glib::RefPtr<LayoutLine> Pango::LayoutIter::get_line ( )

Gets the current line.

Use the faster const version of get_line() if you do not plan to modify the contents of the line (glyphs, glyph widths, etc.).

Returns
The current line.
Glib::RefPtr<const LayoutLine> Pango::LayoutIter::get_line ( ) const

Gets the current line for read-only access.

Returns
The current line, that should not be modified.
void Pango::LayoutIter::get_line_extents ( Rectangle ink_rect,
Rectangle logical_rect 
) const

Obtains the extents of the current line.

ink_rect or logical_rect can be nullptr if you aren't interested in them. Extents are in layout coordinates (origin is the top-left corner of the entire Pango::Layout). Thus the extents returned by this function will be the same width/height but not at the same x/y as the extents returned from Pango::LayoutLine::get_extents().

Parameters
ink_rectRectangle to fill with ink extents, or nullptr.
logical_rectRectangle to fill with logical extents, or nullptr.
Rectangle Pango::LayoutIter::get_line_ink_extents ( ) const

Obtains the ink extents of the current line.

Returns
The extents of the current line as drawn.
Rectangle Pango::LayoutIter::get_line_logical_extents ( ) const

Obtains the logical extents of the current line.

Returns
The logical extents of the current line.
void Pango::LayoutIter::get_line_yrange ( int &  y0,
int &  y1 
) const

Divides the vertical space in the Pango::Layout being iterated over between the lines in the layout, and returns the space belonging to the current line.

A line's range includes the line's logical extents, plus half of the spacing above and below the line, if set_spacing() has been called to set layout spacing. The Y positions are in layout coordinates (origin at top left of the entire layout).

Note
Since 1.44, Pango uses line heights for placing lines, and there may be gaps between the ranges returned by this function.
Parameters
y0Start of line, or nullptr.
y1End of line, or nullptr.
GlyphItem Pango::LayoutIter::get_run ( ) const

Gets the current run.

When iterating by run, at the end of each line, there's a position with a nullptr run, so this function can return an invalid GlyphItem. The nullptr run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.

Returns
The current run.
void Pango::LayoutIter::get_run_extents ( Rectangle ink_rect,
Rectangle logical_rect 
) const

Gets the extents of the current run in layout coordinates (origin is the top left of the entire layout).

Parameters
ink_rectRectangle to fill with ink extents, or nullptr.
logical_rectRectangle to fill with logical extents, or nullptr.
Rectangle Pango::LayoutIter::get_run_ink_extents ( ) const

Gets the ink extents of the current run in layout coordinates (origin is the top left of the entire layout).

Returns
The extents of the current run as drawn.
Rectangle Pango::LayoutIter::get_run_logical_extents ( ) const

Gets the logical extents of the current run in layout coordinates (origin is the top left of the entire layout).

Returns
The logical extents of the current run.
static GType Pango::LayoutIter::get_type ( )
static

Get the GType for this class, for use with the underlying GObject type system.

PangoLayoutIter* Pango::LayoutIter::gobj ( )
inline

Provides access to the underlying C instance.

const PangoLayoutIter* Pango::LayoutIter::gobj ( ) const
inline

Provides access to the underlying C instance.

PangoLayoutIter* Pango::LayoutIter::gobj_copy ( ) const

Provides access to the underlying C instance. The caller is responsible for freeing it. Use when directly setting fields in structs.

bool Pango::LayoutIter::next_char ( )

Moves iter forward to the next character in visual order.

If iter was already at the end of the layout, returns false.

Returns
Whether motion was possible.
bool Pango::LayoutIter::next_cluster ( )

Moves iter forward to the next cluster in visual order.

If iter was already at the end of the layout, returns false.

Returns
Whether motion was possible.
bool Pango::LayoutIter::next_line ( )

Moves iter forward to the start of the next line.

If iter is already on the last line, returns false.

Returns
Whether motion was possible.
bool Pango::LayoutIter::next_run ( )

Moves iter forward to the next run in visual order.

If iter was already at the end of the layout, returns false.

Returns
Whether motion was possible.
LayoutIter& Pango::LayoutIter::operator= ( const LayoutIter other)
LayoutIter& Pango::LayoutIter::operator= ( LayoutIter&&  other)
noexcept
void Pango::LayoutIter::swap ( LayoutIter other)
noexcept

Friends And Related Function Documentation

void swap ( LayoutIter lhs,
LayoutIter rhs 
)
related
Parameters
lhsThe left-hand side
rhsThe right-hand side
Pango::LayoutIter wrap ( PangoLayoutIter *  object,
bool  take_copy = false 
)
related

A Glib::wrap() method for this object.

Parameters
objectThe C instance.
take_copyFalse if the result should take ownership of the C instance. True if it should take a new copy or ref.
Returns
A C++ instance that wraps this C instance.

Member Data Documentation

PangoLayoutIter* Pango::LayoutIter::gobject_
protected