Commit 4587e5d2 authored by Matthias Clasen's avatar Matthias Clasen
Browse files

Add a readonly version of pango_layout_get_log_attrs()

Otherwise, we are forced to either make many unnecessary copies
or pass the log attrs around alongside the layout in APIs operating
on the attrs.
https://bugzilla.gnome.org/show_bug.cgi?id=650170
parent c43c4884
......@@ -481,6 +481,7 @@ PANGO_TYPE_ALIGNMENT
pango_layout_get_unknown_glyphs_count
pango_layout_get_log_attrs
pango_layout_get_log_attrs_readonly
pango_layout_index_to_pos
pango_layout_index_to_line_x
......
......@@ -1277,6 +1277,41 @@ pango_layout_get_log_attrs (PangoLayout *layout,
*n_attrs = layout->n_chars + 1;
}
/**
* pango_layout_get_log_attrs_readonly:
* @layout: a #PangoLayout
* @n_attrs: location to store the number of the attributes in the array
*
* Retrieves an array of logical attributes for each character in
* the @layout.
*
* This is a faster alternative to pango_layout_get_log_attrs().
* The returned array is part of @layout and must not be modified.
* Modifying the layout will invalidate the returned array.
*
* The number of attributes returned in @n_attrs will be one more
* than the total number of characters in the layout, since there
* need to be attributes corresponding to both the position before
* the first character and the position after the last character.
*
* Returns: an array of logical attributes
*
* Since: 1.30
*/
PangoLogAttr *
pango_layout_get_log_attrs_readonly (PangoLayout *layout,
gint *n_attrs)
{
g_return_if_fail (layout != NULL);
pango_layout_check_lines (layout);
if (n_attrs)
*n_attrs = layout->n_chars + 1;
return layout->log_attrs;
}
/**
* pango_layout_get_line_count:
......
......@@ -166,6 +166,9 @@ void pango_layout_get_log_attrs (PangoLayout *layout,
PangoLogAttr **attrs,
gint *n_attrs);
PangoLogAttr *pango_layout_get_log_attrs_readonly (PangoLayout *layout,
gint *n_attrs);
void pango_layout_index_to_pos (PangoLayout *layout,
int index_,
PangoRectangle *pos);
......
......@@ -177,6 +177,7 @@ EXPORTS
pango_fontset_simple_size
pango_get_lib_subdirectory
pango_get_log_attrs
pango_get_log_attrs_readonly
pango_get_mirror_char
pango_get_sysconf_subdirectory
pango_glyph_item_apply_attrs
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment