Add a readonly version of pango_layout_get_log_attrs()
authorMatthias Clasen <mclasen@redhat.com>
Sat, 14 May 2011 12:31:02 +0000 (08:31 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 16 May 2011 13:28:57 +0000 (09:28 -0400)
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

docs/pango-sections.txt
pango/pango-layout.c
pango/pango-layout.h
pango/pango.def

index 61e3f69..d0236a2 100644 (file)
@@ -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
index f0dbbcc..0b17ea8 100644 (file)
@@ -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:
index 3b769ff..52dc36a 100644 (file)
@@ -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);
index 3b1bc76..70e1a50 100644 (file)
@@ -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