pangomm: Pango::LayoutIter Class Reference

pangomm 2.28.4

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Attributes | Related Functions
Pango::LayoutIter Class Reference

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

Collaboration diagram for Pango::LayoutIter:
[legend]

List of all members.

## Public Member Functions
| LayoutIter ()
| LayoutIter (PangoLayoutIter* gobject, bool make_a_copy=true)
| LayoutIter (const LayoutIter& other)
LayoutIter& | operator= (const LayoutIter& other)
| ~LayoutIter ()
void | swap (LayoutIter& other)
PangoLayoutIter* | gobj ()
| Provides access to the underlying C instance.
const PangoLayoutIter* | gobj () const
| Provides access to the underlying C instance.
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.
int | get_index () const
| Gets the current byte index.
LayoutRun | get_run () const
| Gets the current run.
Glib::RefPtr< LayoutLine > | get_line () const
| Gets the current line.
bool | at_last_line () const
| Determines whether iter is on the last line of the layout.
Glib::RefPtr< Layout > | get_layout ()
| Gets the layout associated with a Pango::LayoutIter.
Glib::RefPtr< const Layout > | get_layout () const
| Gets the layout associated with a Pango::LayoutIter.
bool | next_char ()
| Moves iter forward to the next character in visual order.
bool | next_cluster ()
| Moves iter forward to the next cluster in visual order.
bool | next_run ()
| Moves iter forward to the next run in visual order.
bool | next_line ()
| Moves iter forward to the start of the next line.
Rectangle | get_char_extents () const
| Gets the extents of the current character, in layout coordinates (origin is the top left of the entire layout).
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).
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).
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).
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).
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).
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).
void | get_line_extents (Rectangle& ink_rect, Rectangle& logical_rect) const
| Obtains the extents of the current line.
Rectangle | get_line_ink_extents () const
| Obtains the ink extents of the current line.
Rectangle | get_line_logical_extents () const
| Obtains the logical extents of the current line.
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.
void | get_layout_extents (Rectangle& ink_rect, Rectangle& logical_rect) const
| Obtains the extents of the Pango::Layout being iterated over.
Rectangle | get_layout_ink_extents () const
| Obtains the ink extents of the Pango::Layout being iterated over.
Rectangle | get_layout_logical_extents () const
| Obtains the logical extents of the Pango::Layout being iterated over.
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).
## Protected Attributes
PangoLayoutIter* | gobject_
## Related Functions
(Note that these are not member functions.)
void | swap (LayoutIter& lhs, LayoutIter& rhs)
Pango::LayoutIter | wrap (PangoLayoutIter* object, bool take_copy=false)
| A Glib::wrap() method for this object.

## 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 | ( |  | ) |

## 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_rect | Rectangle to fill with ink extents, or `0`.
  logical_rect | Rectangle to fill with logical extents, or `0`.

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 `0` 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 `0` if you aren't interested in them.

Parameters:

  ink_rect | Rectangle to fill with ink extents, or `0`.
  logical_rect | Rectangle to fill with logical extents, or `0`.

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 | ( |  | ) | const

Gets the current line.

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

Returns:
  The current line.

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 `0` 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_rect | Rectangle to fill with ink extents, or `0`.
  logical_rect | Rectangle to fill with logical extents, or `0`.

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).

Parameters:

  y0 | Start of line.
  y1 | End of line.

LayoutRun 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 `0` run, so this function can return `0`. The `0` run at the end of each line ensures that all lines have at least one run, even lines consisting of only a newline.

Use the faster get_run_readonly() if you do not plan to modify the contents of the run (glyphs, glyph widths, etc.).

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_rect | Rectangle to fill with ink extents, or `0`.
  logical_rect | Rectangle to fill with logical extents, or `0`.

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.

const PangoLayoutIter* Pango::LayoutIter::gobj | ( |  | ) | const`[inline]`

Provides access to the underlying C instance.

PangoLayoutIter* Pango::LayoutIter::gobj | ( |  | ) | `[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 | ) |

void Pango::LayoutIter::swap | ( | LayoutIter& | other | ) |

## Friends And Related Function Documentation

void swap | ( | LayoutIter& | lhs,
|  | LayoutIter& | rhs
| ) |  | `[related]`

Parameters:

  lhs | The left-hand side
  rhs | The right-hand side

Pango::LayoutIter wrap | ( | PangoLayoutIter * | object,
|  | bool | take_copy = `false`
| ) |  | `[related]`

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

Parameters:

  object | The C instance.
  take_copy | False 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]`

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

- pangomm/layoutiter.h