1/* Pango
2 * pango-attributes.h: Attributed text
3 *
4 * Copyright (C) 2000 Red Hat Software
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public
17 * License along with this library; if not, write to the
18 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 */
21
22#ifndef __PANGO_ATTRIBUTES_H__
23#define __PANGO_ATTRIBUTES_H__
24
25#include <pango/pango-font.h>
26#include <glib-object.h>
27
28G_BEGIN_DECLS
29
30/* PangoColor */
31
32typedef struct _PangoColor PangoColor;
33
34/**
35 * PangoColor:
36 * @red: value of red component
37 * @green: value of green component
38 * @blue: value of blue component
39 *
40 * The #PangoColor structure is used to
41 * represent a color in an uncalibrated RGB color-space.
42 */
43struct _PangoColor
44{
45 guint16 red;
46 guint16 green;
47 guint16 blue;
48};
49
50/**
51 * PANGO_TYPE_COLOR:
52 *
53 * The #GObject type for #PangoColor.
54 */
55#define PANGO_TYPE_COLOR pango_color_get_type ()
56PANGO_AVAILABLE_IN_ALL
57GType pango_color_get_type (void) G_GNUC_CONST;
58
59PANGO_AVAILABLE_IN_ALL
60PangoColor *pango_color_copy (const PangoColor *src);
61PANGO_AVAILABLE_IN_ALL
62void pango_color_free (PangoColor *color);
63PANGO_AVAILABLE_IN_ALL
64gboolean pango_color_parse (PangoColor *color,
65 const char *spec);
66PANGO_AVAILABLE_IN_1_16
67gchar *pango_color_to_string(const PangoColor *color);
68
69
70/* Attributes */
71
72typedef struct _PangoAttribute PangoAttribute;
73typedef struct _PangoAttrClass PangoAttrClass;
74
75typedef struct _PangoAttrString PangoAttrString;
76typedef struct _PangoAttrLanguage PangoAttrLanguage;
77typedef struct _PangoAttrInt PangoAttrInt;
78typedef struct _PangoAttrSize PangoAttrSize;
79typedef struct _PangoAttrFloat PangoAttrFloat;
80typedef struct _PangoAttrColor PangoAttrColor;
81typedef struct _PangoAttrFontDesc PangoAttrFontDesc;
82typedef struct _PangoAttrShape PangoAttrShape;
83typedef struct _PangoAttrFontFeatures PangoAttrFontFeatures;
84
85/**
86 * PANGO_TYPE_ATTR_LIST:
87 *
88 * The #GObject type for #PangoAttrList.
89 */
90#define PANGO_TYPE_ATTR_LIST pango_attr_list_get_type ()
91/**
92 * PangoAttrIterator:
93 *
94 * The #PangoAttrIterator structure is used to represent an
95 * iterator through a #PangoAttrList. A new iterator is created
96 * with pango_attr_list_get_iterator(). Once the iterator
97 * is created, it can be advanced through the style changes
98 * in the text using pango_attr_iterator_next(). At each
99 * style change, the range of the current style segment and the
100 * attributes currently in effect can be queried.
101 */
102/**
103 * PangoAttrList:
104 *
105 * The #PangoAttrList structure represents a list of attributes
106 * that apply to a section of text. The attributes are, in general,
107 * allowed to overlap in an arbitrary fashion, however, if the
108 * attributes are manipulated only through pango_attr_list_change(),
109 * the overlap between properties will meet stricter criteria.
110 *
111 * Since the #PangoAttrList structure is stored as a linear list,
112 * it is not suitable for storing attributes for large amounts
113 * of text. In general, you should not use a single #PangoAttrList
114 * for more than one paragraph of text.
115 */
116typedef struct _PangoAttrList PangoAttrList;
117typedef struct _PangoAttrIterator PangoAttrIterator;
118
119/**
120 * PangoAttrType:
121 * @PANGO_ATTR_INVALID: does not happen
122 * @PANGO_ATTR_LANGUAGE: language (#PangoAttrLanguage)
123 * @PANGO_ATTR_FAMILY: font family name list (#PangoAttrString)
124 * @PANGO_ATTR_STYLE: font slant style (#PangoAttrInt)
125 * @PANGO_ATTR_WEIGHT: font weight (#PangoAttrInt)
126 * @PANGO_ATTR_VARIANT: font variant (normal or small caps) (#PangoAttrInt)
127 * @PANGO_ATTR_STRETCH: font stretch (#PangoAttrInt)
128 * @PANGO_ATTR_SIZE: font size in points scaled by %PANGO_SCALE (#PangoAttrInt)
129 * @PANGO_ATTR_FONT_DESC: font description (#PangoAttrFontDesc)
130 * @PANGO_ATTR_FOREGROUND: foreground color (#PangoAttrColor)
131 * @PANGO_ATTR_BACKGROUND: background color (#PangoAttrColor)
132 * @PANGO_ATTR_UNDERLINE: whether the text has an underline (#PangoAttrInt)
133 * @PANGO_ATTR_STRIKETHROUGH: whether the text is struck-through (#PangoAttrInt)
134 * @PANGO_ATTR_RISE: baseline displacement (#PangoAttrInt)
135 * @PANGO_ATTR_SHAPE: shape (#PangoAttrShape)
136 * @PANGO_ATTR_SCALE: font size scale factor (#PangoAttrFloat)
137 * @PANGO_ATTR_FALLBACK: whether fallback is enabled (#PangoAttrInt)
138 * @PANGO_ATTR_LETTER_SPACING: letter spacing (#PangoAttrInt)
139 * @PANGO_ATTR_UNDERLINE_COLOR: underline color (#PangoAttrColor)
140 * @PANGO_ATTR_STRIKETHROUGH_COLOR: strikethrough color (#PangoAttrColor)
141 * @PANGO_ATTR_ABSOLUTE_SIZE: font size in pixels scaled by %PANGO_SCALE (#PangoAttrInt)
142 * @PANGO_ATTR_GRAVITY: base text gravity (#PangoAttrInt)
143 * @PANGO_ATTR_GRAVITY_HINT: gravity hint (#PangoAttrInt)
144 * @PANGO_ATTR_FONT_FEATURES: OpenType font features (#PangoAttrString). Since 1.38
145 * @PANGO_ATTR_FOREGROUND_ALPHA: foreground alpha (#PangoAttrInt). Since 1.38
146 * @PANGO_ATTR_BACKGROUND_ALPHA: background alpha (#PangoAttrInt). Since 1.38
147 *
148 * The #PangoAttrType
149 * distinguishes between different types of attributes. Along with the
150 * predefined values, it is possible to allocate additional values
151 * for custom attributes using pango_attr_type_register(). The predefined
152 * values are given below. The type of structure used to store the
153 * attribute is listed in parentheses after the description.
154 */
155typedef enum
156{
157 PANGO_ATTR_INVALID, /* 0 is an invalid attribute type */
158 PANGO_ATTR_LANGUAGE, /* PangoAttrLanguage */
159 PANGO_ATTR_FAMILY, /* PangoAttrString */
160 PANGO_ATTR_STYLE, /* PangoAttrInt */
161 PANGO_ATTR_WEIGHT, /* PangoAttrInt */
162 PANGO_ATTR_VARIANT, /* PangoAttrInt */
163 PANGO_ATTR_STRETCH, /* PangoAttrInt */
164 PANGO_ATTR_SIZE, /* PangoAttrSize */
165 PANGO_ATTR_FONT_DESC, /* PangoAttrFontDesc */
166 PANGO_ATTR_FOREGROUND, /* PangoAttrColor */
167 PANGO_ATTR_BACKGROUND, /* PangoAttrColor */
168 PANGO_ATTR_UNDERLINE, /* PangoAttrInt */
169 PANGO_ATTR_STRIKETHROUGH, /* PangoAttrInt */
170 PANGO_ATTR_RISE, /* PangoAttrInt */
171 PANGO_ATTR_SHAPE, /* PangoAttrShape */
172 PANGO_ATTR_SCALE, /* PangoAttrFloat */
173 PANGO_ATTR_FALLBACK, /* PangoAttrInt */
174 PANGO_ATTR_LETTER_SPACING, /* PangoAttrInt */
175 PANGO_ATTR_UNDERLINE_COLOR, /* PangoAttrColor */
176 PANGO_ATTR_STRIKETHROUGH_COLOR,/* PangoAttrColor */
177 PANGO_ATTR_ABSOLUTE_SIZE, /* PangoAttrSize */
178 PANGO_ATTR_GRAVITY, /* PangoAttrInt */
179 PANGO_ATTR_GRAVITY_HINT, /* PangoAttrInt */
180 PANGO_ATTR_FONT_FEATURES, /* PangoAttrString */
181 PANGO_ATTR_FOREGROUND_ALPHA, /* PangoAttrInt */
182 PANGO_ATTR_BACKGROUND_ALPHA /* PangoAttrInt */
183} PangoAttrType;
184
185/**
186 * PangoUnderline:
187 * @PANGO_UNDERLINE_NONE: no underline should be drawn
188 * @PANGO_UNDERLINE_SINGLE: a single underline should be drawn
189 * @PANGO_UNDERLINE_DOUBLE: a double underline should be drawn
190 * @PANGO_UNDERLINE_LOW: a single underline should be drawn at a position
191 * beneath the ink extents of the text being
192 * underlined. This should be used only for underlining
193 * single characters, such as for keyboard
194 * accelerators. %PANGO_UNDERLINE_SINGLE should
195 * be used for extended portions of text.
196 * @PANGO_UNDERLINE_ERROR: a wavy underline should be drawn below.
197 * This underline is typically used to indicate
198 * an error such as a possilble mispelling; in some
199 * cases a contrasting color may automatically
200 * be used. This type of underlining is available since Pango 1.4.
201 *
202 * The #PangoUnderline enumeration is used to specify
203 * whether text should be underlined, and if so, the type
204 * of underlining.
205 */
206typedef enum {
207 PANGO_UNDERLINE_NONE,
208 PANGO_UNDERLINE_SINGLE,
209 PANGO_UNDERLINE_DOUBLE,
210 PANGO_UNDERLINE_LOW,
211 PANGO_UNDERLINE_ERROR
212} PangoUnderline;
213
214/**
215 * PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING:
216 *
217 * This value can be used to set the start_index member of a #PangoAttribute
218 * such that the attribute covers from the beginning of the text.
219 *
220 * Since: 1.24
221 */
222/**
223 * PANGO_ATTR_INDEX_TO_TEXT_END:
224 *
225 * This value can be used to set the end_index member of a #PangoAttribute
226 * such that the attribute covers to the end of the text.
227 *
228 * Since: 1.24
229 */
230#define PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING 0
231#define PANGO_ATTR_INDEX_TO_TEXT_END G_MAXUINT
232
233/**
234 * PangoAttribute:
235 * @klass: the class structure holding information about the type of the attribute
236 * @start_index: the start index of the range (in bytes).
237 * @end_index: end index of the range (in bytes). The character at this index
238 * is not included in the range.
239 *
240 * The #PangoAttribute structure represents the common portions of all
241 * attributes. Particular types of attributes include this structure
242 * as their initial portion. The common portion of the attribute holds
243 * the range to which the value in the type-specific part of the attribute
244 * applies and should be initialized using pango_attribute_init().
245 * By default an attribute will have an all-inclusive range of [0,%G_MAXUINT].
246 */
247struct _PangoAttribute
248{
249 const PangoAttrClass *klass;
250 guint start_index; /* in bytes */
251 guint end_index; /* in bytes. The character at this index is not included */
252};
253
254/**
255 * PangoAttrFilterFunc:
256 * @attribute: a Pango attribute
257 * @user_data: user data passed to the function
258 *
259 * Type of a function filtering a list of attributes.
260 *
261 * Return value: %TRUE if the attribute should be selected for
262 * filtering, %FALSE otherwise.
263 **/
264typedef gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute,
265 gpointer user_data);
266
267/**
268 * PangoAttrDataCopyFunc:
269 * @user_data: user data to copy
270 *
271 * Type of a function that can duplicate user data for an attribute.
272 *
273 * Return value: new copy of @user_data.
274 **/
275typedef gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data);
276
277/**
278 * PangoAttrClass:
279 * @type: the type ID for this attribute
280 * @copy: function to duplicate an attribute of this type (see pango_attribute_copy())
281 * @destroy: function to free an attribute of this type (see pango_attribute_destroy())
282 * @equal: function to check two attributes of this type for equality (see pango_attribute_equal())
283 *
284 * The #PangoAttrClass structure stores the type and operations for
285 * a particular type of attribute. The functions in this structure should
286 * not be called directly. Instead, one should use the wrapper functions
287 * provided for #PangoAttribute.
288 */
289struct _PangoAttrClass
290{
291 /*< public >*/
292 PangoAttrType type;
293 PangoAttribute * (*copy) (const PangoAttribute *attr);
294 void (*destroy) (PangoAttribute *attr);
295 gboolean (*equal) (const PangoAttribute *attr1, const PangoAttribute *attr2);
296};
297
298/**
299 * PangoAttrString:
300 * @attr: the common portion of the attribute
301 * @value: the string which is the value of the attribute
302 *
303 * The #PangoAttrString structure is used to represent attributes with
304 * a string value.
305 */
306struct _PangoAttrString
307{
308 PangoAttribute attr;
309 char *value;
310};
311/**
312 * PangoAttrLanguage:
313 * @attr: the common portion of the attribute
314 * @value: the #PangoLanguage which is the value of the attribute
315 *
316 * The #PangoAttrLanguage structure is used to represent attributes that
317 * are languages.
318 */
319struct _PangoAttrLanguage
320{
321 PangoAttribute attr;
322 PangoLanguage *value;
323};
324/**
325 * PangoAttrInt:
326 * @attr: the common portion of the attribute
327 * @value: the value of the attribute
328 *
329 * The #PangoAttrInt structure is used to represent attributes with
330 * an integer or enumeration value.
331 */
332struct _PangoAttrInt
333{
334 PangoAttribute attr;
335 int value;
336};
337/**
338 * PangoAttrFloat:
339 * @attr: the common portion of the attribute
340 * @value: the value of the attribute
341 *
342 * The #PangoAttrFloat structure is used to represent attributes with
343 * a float or double value.
344 */
345struct _PangoAttrFloat
346{
347 PangoAttribute attr;
348 double value;
349};
350/**
351 * PangoAttrColor:
352 * @attr: the common portion of the attribute
353 * @color: the #PangoColor which is the value of the attribute
354 *
355 * The #PangoAttrColor structure is used to represent attributes that
356 * are colors.
357 */
358struct _PangoAttrColor
359{
360 PangoAttribute attr;
361 PangoColor color;
362};
363
364/**
365 * PangoAttrSize:
366 * @attr: the common portion of the attribute
367 * @size: size of font, in units of 1/%PANGO_SCALE of a point (for
368 * %PANGO_ATTR_SIZE) or of a device uni (for %PANGO_ATTR_ABSOLUTE_SIZE)
369 * @absolute: whether the font size is in device units or points.
370 * This field is only present for compatibility with Pango-1.8.0
371 * (%PANGO_ATTR_ABSOLUTE_SIZE was added in 1.8.1); and always will
372 * be %FALSE for %PANGO_ATTR_SIZE and %TRUE for %PANGO_ATTR_ABSOLUTE_SIZE.
373 *
374 * The #PangoAttrSize structure is used to represent attributes which
375 * set font size.
376 */
377struct _PangoAttrSize
378{
379 PangoAttribute attr;
380 int size;
381 guint absolute : 1;
382};
383
384/**
385 * PangoAttrShape:
386 * @attr: the common portion of the attribute
387 * @ink_rect: the ink rectangle to restrict to
388 * @logical_rect: the logical rectangle to restrict to
389 * @data: user data set (see pango_attr_shape_new_with_data())
390 * @copy_func: copy function for the user data
391 * @destroy_func: destroy function for the user data
392 *
393 * The #PangoAttrShape structure is used to represent attributes which
394 * impose shape restrictions.
395 */
396struct _PangoAttrShape
397{
398 PangoAttribute attr;
399 PangoRectangle ink_rect;
400 PangoRectangle logical_rect;
401
402 gpointer data;
403 PangoAttrDataCopyFunc copy_func;
404 GDestroyNotify destroy_func;
405};
406
407/**
408 * PangoAttrFontDesc:
409 * @attr: the common portion of the attribute
410 * @desc: the font description which is the value of this attribute
411 *
412 * The #PangoAttrFontDesc structure is used to store an attribute that
413 * sets all aspects of the font description at once.
414 */
415struct _PangoAttrFontDesc
416{
417 PangoAttribute attr;
418 PangoFontDescription *desc;
419};
420
421/**
422 * PangoAttrFontFeatures:
423 * @attr: the common portion of the attribute
424 * @features: the featues, as a string in CSS syntax
425 *
426 * The #PangoAttrFontFeatures structure is used to represent OpenType
427 * font features as an attribute.
428 *
429 * Since: 1.38
430 */
431struct _PangoAttrFontFeatures
432{
433 PangoAttribute attr;
434 gchar *features;
435};
436
437PANGO_AVAILABLE_IN_ALL
438PangoAttrType pango_attr_type_register (const gchar *name);
439PANGO_AVAILABLE_IN_1_22
440const char * pango_attr_type_get_name (PangoAttrType type) G_GNUC_CONST;
441
442PANGO_AVAILABLE_IN_1_20
443void pango_attribute_init (PangoAttribute *attr,
444 const PangoAttrClass *klass);
445PANGO_AVAILABLE_IN_ALL
446PangoAttribute * pango_attribute_copy (const PangoAttribute *attr);
447PANGO_AVAILABLE_IN_ALL
448void pango_attribute_destroy (PangoAttribute *attr);
449PANGO_AVAILABLE_IN_ALL
450gboolean pango_attribute_equal (const PangoAttribute *attr1,
451 const PangoAttribute *attr2) G_GNUC_PURE;
452
453PANGO_AVAILABLE_IN_ALL
454PangoAttribute *pango_attr_language_new (PangoLanguage *language);
455PANGO_AVAILABLE_IN_ALL
456PangoAttribute *pango_attr_family_new (const char *family);
457PANGO_AVAILABLE_IN_ALL
458PangoAttribute *pango_attr_foreground_new (guint16 red,
459 guint16 green,
460 guint16 blue);
461PANGO_AVAILABLE_IN_ALL
462PangoAttribute *pango_attr_background_new (guint16 red,
463 guint16 green,
464 guint16 blue);
465PANGO_AVAILABLE_IN_ALL
466PangoAttribute *pango_attr_size_new (int size);
467PANGO_AVAILABLE_IN_1_8
468PangoAttribute *pango_attr_size_new_absolute (int size);
469PANGO_AVAILABLE_IN_ALL
470PangoAttribute *pango_attr_style_new (PangoStyle style);
471PANGO_AVAILABLE_IN_ALL
472PangoAttribute *pango_attr_weight_new (PangoWeight weight);
473PANGO_AVAILABLE_IN_ALL
474PangoAttribute *pango_attr_variant_new (PangoVariant variant);
475PANGO_AVAILABLE_IN_ALL
476PangoAttribute *pango_attr_stretch_new (PangoStretch stretch);
477PANGO_AVAILABLE_IN_ALL
478PangoAttribute *pango_attr_font_desc_new (const PangoFontDescription *desc);
479
480PANGO_AVAILABLE_IN_ALL
481PangoAttribute *pango_attr_underline_new (PangoUnderline underline);
482PANGO_AVAILABLE_IN_1_8
483PangoAttribute *pango_attr_underline_color_new (guint16 red,
484 guint16 green,
485 guint16 blue);
486PANGO_AVAILABLE_IN_ALL
487PangoAttribute *pango_attr_strikethrough_new (gboolean strikethrough);
488PANGO_AVAILABLE_IN_1_8
489PangoAttribute *pango_attr_strikethrough_color_new (guint16 red,
490 guint16 green,
491 guint16 blue);
492
493PANGO_AVAILABLE_IN_ALL
494PangoAttribute *pango_attr_rise_new (int rise);
495PANGO_AVAILABLE_IN_ALL
496PangoAttribute *pango_attr_scale_new (double scale_factor);
497PANGO_AVAILABLE_IN_1_4
498PangoAttribute *pango_attr_fallback_new (gboolean enable_fallback);
499PANGO_AVAILABLE_IN_1_6
500PangoAttribute *pango_attr_letter_spacing_new (int letter_spacing);
501
502PANGO_AVAILABLE_IN_ALL
503PangoAttribute *pango_attr_shape_new (const PangoRectangle *ink_rect,
504 const PangoRectangle *logical_rect);
505PANGO_AVAILABLE_IN_1_8
506PangoAttribute *pango_attr_shape_new_with_data (const PangoRectangle *ink_rect,
507 const PangoRectangle *logical_rect,
508 gpointer data,
509 PangoAttrDataCopyFunc copy_func,
510 GDestroyNotify destroy_func);
511
512PANGO_AVAILABLE_IN_1_16
513PangoAttribute *pango_attr_gravity_new (PangoGravity gravity);
514PANGO_AVAILABLE_IN_1_16
515PangoAttribute *pango_attr_gravity_hint_new (PangoGravityHint hint);
516PANGO_AVAILABLE_IN_1_38
517PangoAttribute *pango_attr_font_features_new (const gchar *features);
518PANGO_AVAILABLE_IN_1_38
519PangoAttribute *pango_attr_foreground_alpha_new (guint16 alpha);
520PANGO_AVAILABLE_IN_1_38
521PangoAttribute *pango_attr_background_alpha_new (guint16 alpha);
522
523PANGO_AVAILABLE_IN_ALL
524GType pango_attr_list_get_type (void) G_GNUC_CONST;
525PANGO_AVAILABLE_IN_ALL
526PangoAttrList * pango_attr_list_new (void);
527PANGO_AVAILABLE_IN_1_10
528PangoAttrList * pango_attr_list_ref (PangoAttrList *list);
529PANGO_AVAILABLE_IN_ALL
530void pango_attr_list_unref (PangoAttrList *list);
531PANGO_AVAILABLE_IN_ALL
532PangoAttrList * pango_attr_list_copy (PangoAttrList *list);
533PANGO_AVAILABLE_IN_ALL
534void pango_attr_list_insert (PangoAttrList *list,
535 PangoAttribute *attr);
536PANGO_AVAILABLE_IN_ALL
537void pango_attr_list_insert_before (PangoAttrList *list,
538 PangoAttribute *attr);
539PANGO_AVAILABLE_IN_ALL
540void pango_attr_list_change (PangoAttrList *list,
541 PangoAttribute *attr);
542PANGO_AVAILABLE_IN_ALL
543void pango_attr_list_splice (PangoAttrList *list,
544 PangoAttrList *other,
545 gint pos,
546 gint len);
547
548PANGO_AVAILABLE_IN_1_2
549PangoAttrList *pango_attr_list_filter (PangoAttrList *list,
550 PangoAttrFilterFunc func,
551 gpointer data);
552
553PANGO_AVAILABLE_IN_ALL
554PangoAttrIterator *pango_attr_list_get_iterator (PangoAttrList *list);
555
556PANGO_AVAILABLE_IN_ALL
557void pango_attr_iterator_range (PangoAttrIterator *iterator,
558 gint *start,
559 gint *end);
560PANGO_AVAILABLE_IN_ALL
561gboolean pango_attr_iterator_next (PangoAttrIterator *iterator);
562PANGO_AVAILABLE_IN_ALL
563PangoAttrIterator *pango_attr_iterator_copy (PangoAttrIterator *iterator);
564PANGO_AVAILABLE_IN_ALL
565void pango_attr_iterator_destroy (PangoAttrIterator *iterator);
566PANGO_AVAILABLE_IN_ALL
567PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator,
568 PangoAttrType type);
569PANGO_AVAILABLE_IN_ALL
570void pango_attr_iterator_get_font (PangoAttrIterator *iterator,
571 PangoFontDescription *desc,
572 PangoLanguage **language,
573 GSList **extra_attrs);
574PANGO_AVAILABLE_IN_1_2
575GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator);
576
577
578PANGO_AVAILABLE_IN_ALL
579gboolean pango_parse_markup (const char *markup_text,
580 int length,
581 gunichar accel_marker,
582 PangoAttrList **attr_list,
583 char **text,
584 gunichar *accel_char,
585 GError **error);
586
587PANGO_AVAILABLE_IN_1_32
588GMarkupParseContext * pango_markup_parser_new (gunichar accel_marker);
589PANGO_AVAILABLE_IN_1_32
590gboolean pango_markup_parser_finish (GMarkupParseContext *context,
591 PangoAttrList **attr_list,
592 char **text,
593 gunichar *accel_char,
594 GError **error);
595
596G_END_DECLS
597
598#endif /* __PANGO_ATTRIBUTES_H__ */
599