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 <pango/pango-color.h> |
27 | #include <glib-object.h> |
28 | |
29 | G_BEGIN_DECLS |
30 | |
31 | |
32 | typedef struct _PangoAttribute PangoAttribute; |
33 | typedef struct _PangoAttrClass PangoAttrClass; |
34 | |
35 | typedef struct _PangoAttrString PangoAttrString; |
36 | typedef struct _PangoAttrLanguage PangoAttrLanguage; |
37 | typedef struct _PangoAttrInt PangoAttrInt; |
38 | typedef struct _PangoAttrSize PangoAttrSize; |
39 | typedef struct _PangoAttrFloat PangoAttrFloat; |
40 | typedef struct _PangoAttrColor PangoAttrColor; |
41 | typedef struct _PangoAttrFontDesc PangoAttrFontDesc; |
42 | typedef struct _PangoAttrShape PangoAttrShape; |
43 | typedef struct _PangoAttrFontFeatures PangoAttrFontFeatures; |
44 | |
45 | /** |
46 | * PangoAttrType: |
47 | * @PANGO_ATTR_INVALID: does not happen |
48 | * @PANGO_ATTR_LANGUAGE: language ([struct@Pango.AttrLanguage]) |
49 | * @PANGO_ATTR_FAMILY: font family name list ([struct@Pango.AttrString]) |
50 | * @PANGO_ATTR_STYLE: font slant style ([struct@Pango.AttrInt]) |
51 | * @PANGO_ATTR_WEIGHT: font weight ([struct@Pango.AttrInt]) |
52 | * @PANGO_ATTR_VARIANT: font variant (normal or small caps) ([struct@Pango.AttrInt]) |
53 | * @PANGO_ATTR_STRETCH: font stretch ([struct@Pango.AttrInt]) |
54 | * @PANGO_ATTR_SIZE: font size in points scaled by %PANGO_SCALE ([struct@Pango.AttrInt]) |
55 | * @PANGO_ATTR_FONT_DESC: font description ([struct@Pango.AttrFontDesc]) |
56 | * @PANGO_ATTR_FOREGROUND: foreground color ([struct@Pango.AttrColor]) |
57 | * @PANGO_ATTR_BACKGROUND: background color ([struct@Pango.AttrColor]) |
58 | * @PANGO_ATTR_UNDERLINE: whether the text has an underline ([struct@Pango.AttrInt]) |
59 | * @PANGO_ATTR_STRIKETHROUGH: whether the text is struck-through ([struct@Pango.AttrInt]) |
60 | * @PANGO_ATTR_RISE: baseline displacement ([struct@Pango.AttrInt]) |
61 | * @PANGO_ATTR_SHAPE: shape ([struct@Pango.AttrShape]) |
62 | * @PANGO_ATTR_SCALE: font size scale factor ([struct@Pango.AttrFloat]) |
63 | * @PANGO_ATTR_FALLBACK: whether fallback is enabled ([struct@Pango.AttrInt]) |
64 | * @PANGO_ATTR_LETTER_SPACING: letter spacing ([struct@PangoAttrInt]) |
65 | * @PANGO_ATTR_UNDERLINE_COLOR: underline color ([struct@Pango.AttrColor]) |
66 | * @PANGO_ATTR_STRIKETHROUGH_COLOR: strikethrough color ([struct@Pango.AttrColor]) |
67 | * @PANGO_ATTR_ABSOLUTE_SIZE: font size in pixels scaled by %PANGO_SCALE ([struct@Pango.AttrInt]) |
68 | * @PANGO_ATTR_GRAVITY: base text gravity ([struct@Pango.AttrInt]) |
69 | * @PANGO_ATTR_GRAVITY_HINT: gravity hint ([struct@Pango.AttrInt]) |
70 | * @PANGO_ATTR_FONT_FEATURES: OpenType font features ([struct@Pango.AttrFontFeatures]). Since 1.38 |
71 | * @PANGO_ATTR_FOREGROUND_ALPHA: foreground alpha ([struct@Pango.AttrInt]). Since 1.38 |
72 | * @PANGO_ATTR_BACKGROUND_ALPHA: background alpha ([struct@Pango.AttrInt]). Since 1.38 |
73 | * @PANGO_ATTR_ALLOW_BREAKS: whether breaks are allowed ([struct@Pango.AttrInt]). Since 1.44 |
74 | * @PANGO_ATTR_SHOW: how to render invisible characters ([struct@Pango.AttrInt]). Since 1.44 |
75 | * @PANGO_ATTR_INSERT_HYPHENS: whether to insert hyphens at intra-word line breaks ([struct@Pango.AttrInt]). Since 1.44 |
76 | * @PANGO_ATTR_OVERLINE: whether the text has an overline ([struct@Pango.AttrInt]). Since 1.46 |
77 | * @PANGO_ATTR_OVERLINE_COLOR: overline color ([struct@Pango.AttrColor]). Since 1.46 |
78 | * @PANGO_ATTR_LINE_HEIGHT: line height factor ([struct@Pango.AttrFloat]). Since: 1.50 |
79 | * @PANGO_ATTR_ABSOLUTE_LINE_HEIGHT: line height ([struct@Pango.AttrInt]). Since: 1.50 |
80 | * @PANGO_ATTR_WORD: override segmentation to classify the range of the attribute as a single word ([struct@Pango.AttrInt]). Since 1.50 |
81 | * @PANGO_ATTR_SENTENCE: override segmentation to classify the range of the attribute as a single sentence ([struct@Pango.AttrInt]). Since 1.50 |
82 | * @PANGO_ATTR_BASELINE_SHIFT: baseline displacement ([struct@Pango.AttrInt]). Since 1.50 |
83 | * @PANGO_ATTR_FONT_SCALE: font-relative size change ([struct@Pango.AttrInt]). Since 1.50 |
84 | * |
85 | * The `PangoAttrType` distinguishes between different types of attributes. |
86 | * |
87 | * Along with the predefined values, it is possible to allocate additional |
88 | * values for custom attributes using [func@AttrType.register]. The predefined |
89 | * values are given below. The type of structure used to store the attribute is |
90 | * listed in parentheses after the description. |
91 | */ |
92 | typedef enum |
93 | { |
94 | PANGO_ATTR_INVALID, /* 0 is an invalid attribute type */ |
95 | PANGO_ATTR_LANGUAGE, /* PangoAttrLanguage */ |
96 | PANGO_ATTR_FAMILY, /* PangoAttrString */ |
97 | PANGO_ATTR_STYLE, /* PangoAttrInt */ |
98 | PANGO_ATTR_WEIGHT, /* PangoAttrInt */ |
99 | PANGO_ATTR_VARIANT, /* PangoAttrInt */ |
100 | PANGO_ATTR_STRETCH, /* PangoAttrInt */ |
101 | PANGO_ATTR_SIZE, /* PangoAttrSize */ |
102 | PANGO_ATTR_FONT_DESC, /* PangoAttrFontDesc */ |
103 | PANGO_ATTR_FOREGROUND, /* PangoAttrColor */ |
104 | PANGO_ATTR_BACKGROUND, /* PangoAttrColor */ |
105 | PANGO_ATTR_UNDERLINE, /* PangoAttrInt */ |
106 | PANGO_ATTR_STRIKETHROUGH, /* PangoAttrInt */ |
107 | PANGO_ATTR_RISE, /* PangoAttrInt */ |
108 | PANGO_ATTR_SHAPE, /* PangoAttrShape */ |
109 | PANGO_ATTR_SCALE, /* PangoAttrFloat */ |
110 | PANGO_ATTR_FALLBACK, /* PangoAttrInt */ |
111 | PANGO_ATTR_LETTER_SPACING, /* PangoAttrInt */ |
112 | PANGO_ATTR_UNDERLINE_COLOR, /* PangoAttrColor */ |
113 | PANGO_ATTR_STRIKETHROUGH_COLOR,/* PangoAttrColor */ |
114 | PANGO_ATTR_ABSOLUTE_SIZE, /* PangoAttrSize */ |
115 | PANGO_ATTR_GRAVITY, /* PangoAttrInt */ |
116 | PANGO_ATTR_GRAVITY_HINT, /* PangoAttrInt */ |
117 | PANGO_ATTR_FONT_FEATURES, /* PangoAttrFontFeatures */ |
118 | PANGO_ATTR_FOREGROUND_ALPHA, /* PangoAttrInt */ |
119 | PANGO_ATTR_BACKGROUND_ALPHA, /* PangoAttrInt */ |
120 | PANGO_ATTR_ALLOW_BREAKS, /* PangoAttrInt */ |
121 | PANGO_ATTR_SHOW, /* PangoAttrInt */ |
122 | PANGO_ATTR_INSERT_HYPHENS, /* PangoAttrInt */ |
123 | PANGO_ATTR_OVERLINE, /* PangoAttrInt */ |
124 | PANGO_ATTR_OVERLINE_COLOR, /* PangoAttrColor */ |
125 | PANGO_ATTR_LINE_HEIGHT, /* PangoAttrFloat */ |
126 | PANGO_ATTR_ABSOLUTE_LINE_HEIGHT, /* PangoAttrInt */ |
127 | PANGO_ATTR_TEXT_TRANSFORM, /* PangoAttrInt */ |
128 | PANGO_ATTR_WORD, /* PangoAttrInt */ |
129 | PANGO_ATTR_SENTENCE, /* PangoAttrInt */ |
130 | PANGO_ATTR_BASELINE_SHIFT, /* PangoAttrSize */ |
131 | PANGO_ATTR_FONT_SCALE, /* PangoAttrInt */ |
132 | } PangoAttrType; |
133 | |
134 | /** |
135 | * PangoUnderline: |
136 | * @PANGO_UNDERLINE_NONE: no underline should be drawn |
137 | * @PANGO_UNDERLINE_SINGLE: a single underline should be drawn |
138 | * @PANGO_UNDERLINE_DOUBLE: a double underline should be drawn |
139 | * @PANGO_UNDERLINE_LOW: a single underline should be drawn at a |
140 | * position beneath the ink extents of the text being |
141 | * underlined. This should be used only for underlining |
142 | * single characters, such as for keyboard accelerators. |
143 | * %PANGO_UNDERLINE_SINGLE should be used for extended |
144 | * portions of text. |
145 | * @PANGO_UNDERLINE_ERROR: an underline indicating an error should |
146 | * be drawn below. The exact style of rendering is up to the |
147 | * `PangoRenderer` in use, but typical styles include wavy |
148 | * or dotted lines. |
149 | * This underline is typically used to indicate an error such |
150 | * as a possible mispelling; in some cases a contrasting color |
151 | * may automatically be used. This type of underlining is |
152 | * available since Pango 1.4. |
153 | * @PANGO_UNDERLINE_SINGLE_LINE: Like @PANGO_UNDERLINE_SINGLE, but |
154 | * drawn continuously across multiple runs. This type |
155 | * of underlining is available since Pango 1.46. |
156 | * @PANGO_UNDERLINE_DOUBLE_LINE: Like @PANGO_UNDERLINE_DOUBLE, but |
157 | * drawn continuously across multiple runs. This type |
158 | * of underlining is available since Pango 1.46. |
159 | * @PANGO_UNDERLINE_ERROR_LINE: Like @PANGO_UNDERLINE_ERROR, but |
160 | * drawn continuously across multiple runs. This type |
161 | * of underlining is available since Pango 1.46. |
162 | * |
163 | * The `PangoUnderline` enumeration is used to specify whether text |
164 | * should be underlined, and if so, the type of underlining. |
165 | */ |
166 | typedef enum { |
167 | PANGO_UNDERLINE_NONE, |
168 | PANGO_UNDERLINE_SINGLE, |
169 | PANGO_UNDERLINE_DOUBLE, |
170 | PANGO_UNDERLINE_LOW, |
171 | PANGO_UNDERLINE_ERROR, |
172 | PANGO_UNDERLINE_SINGLE_LINE, |
173 | PANGO_UNDERLINE_DOUBLE_LINE, |
174 | PANGO_UNDERLINE_ERROR_LINE |
175 | } PangoUnderline; |
176 | |
177 | |
178 | /** |
179 | * PangoOverline: |
180 | * @PANGO_OVERLINE_NONE: no overline should be drawn |
181 | * @PANGO_OVERLINE_SINGLE: Draw a single line above the ink |
182 | * extents of the text being underlined. |
183 | * |
184 | * The `PangoOverline` enumeration is used to specify whether text |
185 | * should be overlined, and if so, the type of line. |
186 | * |
187 | * Since: 1.46 |
188 | */ |
189 | typedef enum { |
190 | PANGO_OVERLINE_NONE, |
191 | PANGO_OVERLINE_SINGLE |
192 | } PangoOverline; |
193 | |
194 | /** |
195 | * PangoShowFlags: |
196 | * @PANGO_SHOW_NONE: No special treatment for invisible characters |
197 | * @PANGO_SHOW_SPACES: Render spaces, tabs and newlines visibly |
198 | * @PANGO_SHOW_LINE_BREAKS: Render line breaks visibly |
199 | * @PANGO_SHOW_IGNORABLES: Render default-ignorable Unicode |
200 | * characters visibly |
201 | * |
202 | * These flags affect how Pango treats characters that are normally |
203 | * not visible in the output. |
204 | * |
205 | * Since: 1.44 |
206 | */ |
207 | typedef enum { |
208 | PANGO_SHOW_NONE = 0, |
209 | PANGO_SHOW_SPACES = 1 << 0, |
210 | PANGO_SHOW_LINE_BREAKS = 1 << 1, |
211 | PANGO_SHOW_IGNORABLES = 1 << 2 |
212 | } PangoShowFlags; |
213 | |
214 | /** |
215 | * PangoTextTransform: |
216 | * @PANGO_TEXT_TRANSFORM_NONE: Leave text unchanged |
217 | * @PANGO_TEXT_TRANSFORM_LOWERCASE: Display letters and numbers as lowercase |
218 | * @PANGO_TEXT_TRANSFORM_UPPERCASE: Display letters and numbers as uppercase |
219 | * @PANGO_TEXT_TRANSFORM_CAPITALIZE: Display the first character of a word |
220 | * in titlecase |
221 | * |
222 | * An enumeration that affects how Pango treats characters during shaping. |
223 | * |
224 | * Since: 1.50 |
225 | */ |
226 | typedef enum { |
227 | PANGO_TEXT_TRANSFORM_NONE, |
228 | PANGO_TEXT_TRANSFORM_LOWERCASE, |
229 | PANGO_TEXT_TRANSFORM_UPPERCASE, |
230 | PANGO_TEXT_TRANSFORM_CAPITALIZE, |
231 | } PangoTextTransform; |
232 | |
233 | /** |
234 | * PangoBaselineShift: |
235 | * @PANGO_BASELINE_SHIFT_NONE: Leave the baseline unchanged |
236 | * @PANGO_BASELINE_SHIFT_SUPERSCRIPT: Shift the baseline to the superscript position, |
237 | * relative to the previous run |
238 | * @PANGO_BASELINE_SHIFT_SUBSCRIPT: Shift the baseline to the subscript position, |
239 | * relative to the previous run |
240 | * |
241 | * An enumeration that affects baseline shifts between runs. |
242 | * |
243 | * Since: 1.50 |
244 | */ |
245 | typedef enum { |
246 | PANGO_BASELINE_SHIFT_NONE, |
247 | PANGO_BASELINE_SHIFT_SUPERSCRIPT, |
248 | PANGO_BASELINE_SHIFT_SUBSCRIPT, |
249 | } PangoBaselineShift; |
250 | |
251 | /** |
252 | * PangoFontScale: |
253 | * @PANGO_FONT_SCALE_NONE: Leave the font size unchanged |
254 | * @PANGO_FONT_SCALE_SUPERSCRIPT: Change the font to a size suitable for superscripts |
255 | * @PANGO_FONT_SCALE_SUBSCRIPT: Change the font to a size suitable for subscripts |
256 | * @PANGO_FONT_SCALE_SMALL_CAPS: Change the font to a size suitable for Small Caps |
257 | * |
258 | * An enumeration that affects font sizes for superscript |
259 | * and subscript positioning and for (emulated) Small Caps. |
260 | * |
261 | * Since: 1.50 |
262 | */ |
263 | typedef enum { |
264 | PANGO_FONT_SCALE_NONE, |
265 | PANGO_FONT_SCALE_SUPERSCRIPT, |
266 | PANGO_FONT_SCALE_SUBSCRIPT, |
267 | PANGO_FONT_SCALE_SMALL_CAPS, |
268 | } PangoFontScale; |
269 | |
270 | /** |
271 | * PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING: |
272 | * |
273 | * Value for @start_index in `PangoAttribute` that indicates |
274 | * the beginning of the text. |
275 | * |
276 | * Since: 1.24 |
277 | */ |
278 | #define PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING ((guint)0) |
279 | |
280 | /** |
281 | * PANGO_ATTR_INDEX_TO_TEXT_END: (value 4294967295) |
282 | * |
283 | * Value for @end_index in `PangoAttribute` that indicates |
284 | * the end of the text. |
285 | * |
286 | * Since: 1.24 |
287 | */ |
288 | #define PANGO_ATTR_INDEX_TO_TEXT_END ((guint)(G_MAXUINT + 0)) |
289 | |
290 | /** |
291 | * PangoAttribute: |
292 | * @klass: the class structure holding information about the type of the attribute |
293 | * @start_index: the start index of the range (in bytes). |
294 | * @end_index: end index of the range (in bytes). The character at this index |
295 | * is not included in the range. |
296 | * |
297 | * The `PangoAttribute` structure represents the common portions of all |
298 | * attributes. |
299 | * |
300 | * Particular types of attributes include this structure as their initial |
301 | * portion. The common portion of the attribute holds the range to which |
302 | * the value in the type-specific part of the attribute applies and should |
303 | * be initialized using [method@Pango.Attribute.init]. By default, an attribute |
304 | * will have an all-inclusive range of [0,%G_MAXUINT]. |
305 | */ |
306 | struct _PangoAttribute |
307 | { |
308 | const PangoAttrClass *klass; |
309 | guint start_index; |
310 | guint end_index; |
311 | }; |
312 | |
313 | /** |
314 | * PangoAttrFilterFunc: |
315 | * @attribute: a Pango attribute |
316 | * @user_data: user data passed to the function |
317 | * |
318 | * Type of a function filtering a list of attributes. |
319 | * |
320 | * Return value: %TRUE if the attribute should be selected for |
321 | * filtering, %FALSE otherwise. |
322 | */ |
323 | typedef gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute, |
324 | gpointer user_data); |
325 | |
326 | /** |
327 | * PangoAttrDataCopyFunc: |
328 | * @user_data: user data to copy |
329 | * |
330 | * Type of a function that can duplicate user data for an attribute. |
331 | * |
332 | * Return value: new copy of @user_data. |
333 | **/ |
334 | typedef gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data); |
335 | |
336 | /** |
337 | * PangoAttrClass: |
338 | * @type: the type ID for this attribute |
339 | * @copy: function to duplicate an attribute of this type |
340 | * (see [method@Pango.Attribute.copy]) |
341 | * @destroy: function to free an attribute of this type |
342 | * (see [method@Pango.Attribute.destroy]) |
343 | * @equal: function to check two attributes of this type for equality |
344 | * (see [method@Pango.Attribute.equal]) |
345 | * |
346 | * The `PangoAttrClass` structure stores the type and operations for |
347 | * a particular type of attribute. |
348 | * |
349 | * The functions in this structure should not be called directly. Instead, |
350 | * one should use the wrapper functions provided for `PangoAttribute`. |
351 | */ |
352 | struct _PangoAttrClass |
353 | { |
354 | /*< public >*/ |
355 | PangoAttrType type; |
356 | PangoAttribute * (*copy) (const PangoAttribute *attr); |
357 | void (*destroy) (PangoAttribute *attr); |
358 | gboolean (*equal) (const PangoAttribute *attr1, const PangoAttribute *attr2); |
359 | }; |
360 | |
361 | /** |
362 | * PangoAttrString: |
363 | * @attr: the common portion of the attribute |
364 | * @value: the string which is the value of the attribute |
365 | * |
366 | * The `PangoAttrString` structure is used to represent attributes with |
367 | * a string value. |
368 | */ |
369 | struct _PangoAttrString |
370 | { |
371 | PangoAttribute attr; |
372 | char *value; |
373 | }; |
374 | /** |
375 | * PangoAttrLanguage: |
376 | * @attr: the common portion of the attribute |
377 | * @value: the `PangoLanguage` which is the value of the attribute |
378 | * |
379 | * The `PangoAttrLanguage` structure is used to represent attributes that |
380 | * are languages. |
381 | */ |
382 | struct _PangoAttrLanguage |
383 | { |
384 | PangoAttribute attr; |
385 | PangoLanguage *value; |
386 | }; |
387 | /** |
388 | * PangoAttrInt: |
389 | * @attr: the common portion of the attribute |
390 | * @value: the value of the attribute |
391 | * |
392 | * The `PangoAttrInt` structure is used to represent attributes with |
393 | * an integer or enumeration value. |
394 | */ |
395 | struct _PangoAttrInt |
396 | { |
397 | PangoAttribute attr; |
398 | int value; |
399 | }; |
400 | /** |
401 | * PangoAttrFloat: |
402 | * @attr: the common portion of the attribute |
403 | * @value: the value of the attribute |
404 | * |
405 | * The `PangoAttrFloat` structure is used to represent attributes with |
406 | * a float or double value. |
407 | */ |
408 | struct _PangoAttrFloat |
409 | { |
410 | PangoAttribute attr; |
411 | double value; |
412 | }; |
413 | /** |
414 | * PangoAttrColor: |
415 | * @attr: the common portion of the attribute |
416 | * @color: the `PangoColor` which is the value of the attribute |
417 | * |
418 | * The `PangoAttrColor` structure is used to represent attributes that |
419 | * are colors. |
420 | */ |
421 | struct _PangoAttrColor |
422 | { |
423 | PangoAttribute attr; |
424 | PangoColor color; |
425 | }; |
426 | |
427 | /** |
428 | * PangoAttrSize: |
429 | * @attr: the common portion of the attribute |
430 | * @size: size of font, in units of 1/%PANGO_SCALE of a point (for |
431 | * %PANGO_ATTR_SIZE) or of a device unit (for %PANGO_ATTR_ABSOLUTE_SIZE) |
432 | * @absolute: whether the font size is in device units or points. |
433 | * This field is only present for compatibility with Pango-1.8.0 |
434 | * (%PANGO_ATTR_ABSOLUTE_SIZE was added in 1.8.1); and always will |
435 | * be %FALSE for %PANGO_ATTR_SIZE and %TRUE for %PANGO_ATTR_ABSOLUTE_SIZE. |
436 | * |
437 | * The `PangoAttrSize` structure is used to represent attributes which |
438 | * set font size. |
439 | */ |
440 | struct _PangoAttrSize |
441 | { |
442 | PangoAttribute attr; |
443 | int size; |
444 | guint absolute : 1; |
445 | }; |
446 | |
447 | /** |
448 | * PangoAttrShape: |
449 | * @attr: the common portion of the attribute |
450 | * @ink_rect: the ink rectangle to restrict to |
451 | * @logical_rect: the logical rectangle to restrict to |
452 | * @data: user data set (see [func@Pango.AttrShape.new_with_data]) |
453 | * @copy_func: copy function for the user data |
454 | * @destroy_func: destroy function for the user data |
455 | * |
456 | * The `PangoAttrShape` structure is used to represent attributes which |
457 | * impose shape restrictions. |
458 | */ |
459 | struct _PangoAttrShape |
460 | { |
461 | PangoAttribute attr; |
462 | PangoRectangle ink_rect; |
463 | PangoRectangle logical_rect; |
464 | |
465 | gpointer data; |
466 | PangoAttrDataCopyFunc copy_func; |
467 | GDestroyNotify destroy_func; |
468 | }; |
469 | |
470 | /** |
471 | * PangoAttrFontDesc: |
472 | * @attr: the common portion of the attribute |
473 | * @desc: the font description which is the value of this attribute |
474 | * |
475 | * The `PangoAttrFontDesc` structure is used to store an attribute that |
476 | * sets all aspects of the font description at once. |
477 | */ |
478 | struct _PangoAttrFontDesc |
479 | { |
480 | PangoAttribute attr; |
481 | PangoFontDescription *desc; |
482 | }; |
483 | |
484 | /** |
485 | * PangoAttrFontFeatures: |
486 | * @attr: the common portion of the attribute |
487 | * @features: the features, as a string in CSS syntax |
488 | * |
489 | * The `PangoAttrFontFeatures` structure is used to represent OpenType |
490 | * font features as an attribute. |
491 | * |
492 | * Since: 1.38 |
493 | */ |
494 | struct _PangoAttrFontFeatures |
495 | { |
496 | PangoAttribute attr; |
497 | gchar *features; |
498 | }; |
499 | |
500 | PANGO_AVAILABLE_IN_ALL |
501 | GType pango_attribute_get_type (void) G_GNUC_CONST; |
502 | |
503 | PANGO_AVAILABLE_IN_ALL |
504 | PangoAttrType pango_attr_type_register (const char *name); |
505 | PANGO_AVAILABLE_IN_1_22 |
506 | const char * pango_attr_type_get_name (PangoAttrType type) G_GNUC_CONST; |
507 | PANGO_AVAILABLE_IN_1_20 |
508 | void pango_attribute_init (PangoAttribute *attr, |
509 | const PangoAttrClass *klass); |
510 | PANGO_AVAILABLE_IN_ALL |
511 | PangoAttribute * pango_attribute_copy (const PangoAttribute *attr); |
512 | PANGO_AVAILABLE_IN_ALL |
513 | void pango_attribute_destroy (PangoAttribute *attr); |
514 | PANGO_AVAILABLE_IN_ALL |
515 | gboolean pango_attribute_equal (const PangoAttribute *attr1, |
516 | const PangoAttribute *attr2) G_GNUC_PURE; |
517 | |
518 | PANGO_AVAILABLE_IN_ALL |
519 | PangoAttribute * pango_attr_language_new (PangoLanguage *language); |
520 | PANGO_AVAILABLE_IN_ALL |
521 | PangoAttribute * pango_attr_family_new (const char *family); |
522 | PANGO_AVAILABLE_IN_ALL |
523 | PangoAttribute * pango_attr_foreground_new (guint16 red, |
524 | guint16 green, |
525 | guint16 blue); |
526 | PANGO_AVAILABLE_IN_ALL |
527 | PangoAttribute * pango_attr_background_new (guint16 red, |
528 | guint16 green, |
529 | guint16 blue); |
530 | PANGO_AVAILABLE_IN_ALL |
531 | PangoAttribute * pango_attr_size_new (int size); |
532 | PANGO_AVAILABLE_IN_1_8 |
533 | PangoAttribute * pango_attr_size_new_absolute (int size); |
534 | PANGO_AVAILABLE_IN_ALL |
535 | PangoAttribute * pango_attr_style_new (PangoStyle style); |
536 | PANGO_AVAILABLE_IN_ALL |
537 | PangoAttribute * pango_attr_weight_new (PangoWeight weight); |
538 | PANGO_AVAILABLE_IN_ALL |
539 | PangoAttribute * pango_attr_variant_new (PangoVariant variant); |
540 | PANGO_AVAILABLE_IN_ALL |
541 | PangoAttribute * pango_attr_stretch_new (PangoStretch stretch); |
542 | PANGO_AVAILABLE_IN_ALL |
543 | PangoAttribute * pango_attr_font_desc_new (const PangoFontDescription *desc); |
544 | |
545 | PANGO_AVAILABLE_IN_ALL |
546 | PangoAttribute * pango_attr_underline_new (PangoUnderline underline); |
547 | PANGO_AVAILABLE_IN_1_8 |
548 | PangoAttribute * pango_attr_underline_color_new (guint16 red, |
549 | guint16 green, |
550 | guint16 blue); |
551 | PANGO_AVAILABLE_IN_ALL |
552 | PangoAttribute * pango_attr_strikethrough_new (gboolean strikethrough); |
553 | PANGO_AVAILABLE_IN_1_8 |
554 | PangoAttribute * pango_attr_strikethrough_color_new (guint16 red, |
555 | guint16 green, |
556 | guint16 blue); |
557 | PANGO_AVAILABLE_IN_ALL |
558 | PangoAttribute * pango_attr_rise_new (int rise); |
559 | PANGO_AVAILABLE_IN_1_50 |
560 | PangoAttribute * pango_attr_baseline_shift_new (int shift); |
561 | PANGO_AVAILABLE_IN_1_50 |
562 | PangoAttribute * pango_attr_font_scale_new (PangoFontScale scale); |
563 | PANGO_AVAILABLE_IN_ALL |
564 | PangoAttribute * pango_attr_scale_new (double scale_factor); |
565 | PANGO_AVAILABLE_IN_1_4 |
566 | PangoAttribute * pango_attr_fallback_new (gboolean enable_fallback); |
567 | PANGO_AVAILABLE_IN_1_6 |
568 | PangoAttribute * pango_attr_letter_spacing_new (int letter_spacing); |
569 | PANGO_AVAILABLE_IN_ALL |
570 | PangoAttribute * pango_attr_shape_new (const PangoRectangle *ink_rect, |
571 | const PangoRectangle *logical_rect); |
572 | PANGO_AVAILABLE_IN_1_8 |
573 | PangoAttribute * pango_attr_shape_new_with_data (const PangoRectangle *ink_rect, |
574 | const PangoRectangle *logical_rect, |
575 | gpointer data, |
576 | PangoAttrDataCopyFunc copy_func, |
577 | GDestroyNotify destroy_func); |
578 | PANGO_AVAILABLE_IN_1_16 |
579 | PangoAttribute * pango_attr_gravity_new (PangoGravity gravity); |
580 | PANGO_AVAILABLE_IN_1_16 |
581 | PangoAttribute * pango_attr_gravity_hint_new (PangoGravityHint hint); |
582 | PANGO_AVAILABLE_IN_1_38 |
583 | PangoAttribute * pango_attr_font_features_new (const char *features); |
584 | PANGO_AVAILABLE_IN_1_38 |
585 | PangoAttribute * pango_attr_foreground_alpha_new (guint16 alpha); |
586 | PANGO_AVAILABLE_IN_1_38 |
587 | PangoAttribute * pango_attr_background_alpha_new (guint16 alpha); |
588 | PANGO_AVAILABLE_IN_1_44 |
589 | PangoAttribute * pango_attr_allow_breaks_new (gboolean allow_breaks); |
590 | |
591 | PANGO_AVAILABLE_IN_1_50 |
592 | PangoAttribute * pango_attr_word_new (void); |
593 | PANGO_AVAILABLE_IN_1_50 |
594 | PangoAttribute * pango_attr_sentence_new (void); |
595 | |
596 | PANGO_AVAILABLE_IN_1_44 |
597 | PangoAttribute * pango_attr_insert_hyphens_new (gboolean insert_hyphens); |
598 | PANGO_AVAILABLE_IN_1_46 |
599 | PangoAttribute * pango_attr_overline_new (PangoOverline overline); |
600 | PANGO_AVAILABLE_IN_1_46 |
601 | PangoAttribute * pango_attr_overline_color_new (guint16 red, |
602 | guint16 green, |
603 | guint16 blue); |
604 | PANGO_AVAILABLE_IN_1_44 |
605 | PangoAttribute * pango_attr_show_new (PangoShowFlags flags); |
606 | PANGO_AVAILABLE_IN_1_50 |
607 | PangoAttribute * pango_attr_line_height_new (double factor); |
608 | PANGO_AVAILABLE_IN_1_50 |
609 | PangoAttribute * pango_attr_line_height_new_absolute (int height); |
610 | PANGO_AVAILABLE_IN_1_50 |
611 | PangoAttribute * pango_attr_text_transform_new (PangoTextTransform transform); |
612 | |
613 | PANGO_AVAILABLE_IN_1_50 |
614 | PangoAttrString * pango_attribute_as_string (PangoAttribute *attr); |
615 | PANGO_AVAILABLE_IN_1_50 |
616 | PangoAttrLanguage * pango_attribute_as_language (PangoAttribute *attr); |
617 | PANGO_AVAILABLE_IN_1_50 |
618 | PangoAttrInt * pango_attribute_as_int (PangoAttribute *attr); |
619 | PANGO_AVAILABLE_IN_1_50 |
620 | PangoAttrSize * pango_attribute_as_size (PangoAttribute *attr); |
621 | PANGO_AVAILABLE_IN_1_50 |
622 | PangoAttrFloat * pango_attribute_as_float (PangoAttribute *attr); |
623 | PANGO_AVAILABLE_IN_1_50 |
624 | PangoAttrColor * pango_attribute_as_color (PangoAttribute *attr); |
625 | PANGO_AVAILABLE_IN_1_50 |
626 | PangoAttrFontDesc * pango_attribute_as_font_desc (PangoAttribute *attr); |
627 | PANGO_AVAILABLE_IN_1_50 |
628 | PangoAttrShape * pango_attribute_as_shape (PangoAttribute *attr); |
629 | PANGO_AVAILABLE_IN_1_50 |
630 | PangoAttrFontFeatures * pango_attribute_as_font_features (PangoAttribute *attr); |
631 | |
632 | /* Attribute lists */ |
633 | |
634 | typedef struct _PangoAttrList PangoAttrList; |
635 | typedef struct _PangoAttrIterator PangoAttrIterator; |
636 | |
637 | #define PANGO_TYPE_ATTR_LIST pango_attr_list_get_type () |
638 | |
639 | /** |
640 | * PangoAttrIterator: |
641 | * |
642 | * A `PangoAttrIterator` is used to iterate through a `PangoAttrList`. |
643 | * |
644 | * A new iterator is created with [method@Pango.AttrList.get_iterator]. |
645 | * Once the iterator is created, it can be advanced through the style |
646 | * changes in the text using [method@Pango.AttrIterator.next]. At each |
647 | * style change, the range of the current style segment and the attributes |
648 | * currently in effect can be queried. |
649 | */ |
650 | |
651 | /** |
652 | * PangoAttrList: |
653 | * |
654 | * A `PangoAttrList` represents a list of attributes that apply to a section |
655 | * of text. |
656 | * |
657 | * The attributes in a `PangoAttrList` are, in general, allowed to overlap in |
658 | * an arbitrary fashion. However, if the attributes are manipulated only through |
659 | * [method@Pango.AttrList.change], the overlap between properties will meet |
660 | * stricter criteria. |
661 | * |
662 | * Since the `PangoAttrList` structure is stored as a linear list, it is not |
663 | * suitable for storing attributes for large amounts of text. In general, you |
664 | * should not use a single `PangoAttrList` for more than one paragraph of text. |
665 | */ |
666 | |
667 | PANGO_AVAILABLE_IN_ALL |
668 | GType pango_attr_list_get_type (void) G_GNUC_CONST; |
669 | |
670 | PANGO_AVAILABLE_IN_ALL |
671 | PangoAttrList * pango_attr_list_new (void); |
672 | PANGO_AVAILABLE_IN_1_10 |
673 | PangoAttrList * pango_attr_list_ref (PangoAttrList *list); |
674 | PANGO_AVAILABLE_IN_ALL |
675 | void pango_attr_list_unref (PangoAttrList *list); |
676 | PANGO_AVAILABLE_IN_ALL |
677 | PangoAttrList * pango_attr_list_copy (PangoAttrList *list); |
678 | PANGO_AVAILABLE_IN_ALL |
679 | void pango_attr_list_insert (PangoAttrList *list, |
680 | PangoAttribute *attr); |
681 | PANGO_AVAILABLE_IN_ALL |
682 | void pango_attr_list_insert_before (PangoAttrList *list, |
683 | PangoAttribute *attr); |
684 | PANGO_AVAILABLE_IN_ALL |
685 | void pango_attr_list_change (PangoAttrList *list, |
686 | PangoAttribute *attr); |
687 | PANGO_AVAILABLE_IN_ALL |
688 | void pango_attr_list_splice (PangoAttrList *list, |
689 | PangoAttrList *other, |
690 | int pos, |
691 | int len); |
692 | PANGO_AVAILABLE_IN_1_44 |
693 | void pango_attr_list_update (PangoAttrList *list, |
694 | int pos, |
695 | int remove, |
696 | int add); |
697 | |
698 | PANGO_AVAILABLE_IN_1_2 |
699 | PangoAttrList * pango_attr_list_filter (PangoAttrList *list, |
700 | PangoAttrFilterFunc func, |
701 | gpointer data); |
702 | |
703 | PANGO_AVAILABLE_IN_1_44 |
704 | GSList * pango_attr_list_get_attributes (PangoAttrList *list); |
705 | |
706 | PANGO_AVAILABLE_IN_1_46 |
707 | gboolean pango_attr_list_equal (PangoAttrList *list, |
708 | PangoAttrList *other_list); |
709 | |
710 | PANGO_AVAILABLE_IN_1_50 |
711 | char * pango_attr_list_to_string (PangoAttrList *list); |
712 | PANGO_AVAILABLE_IN_1_50 |
713 | PangoAttrList * pango_attr_list_from_string (const char *text); |
714 | |
715 | PANGO_AVAILABLE_IN_1_44 |
716 | GType pango_attr_iterator_get_type (void) G_GNUC_CONST; |
717 | |
718 | PANGO_AVAILABLE_IN_ALL |
719 | PangoAttrIterator * pango_attr_list_get_iterator (PangoAttrList *list); |
720 | |
721 | PANGO_AVAILABLE_IN_ALL |
722 | void pango_attr_iterator_range (PangoAttrIterator *iterator, |
723 | int *start, |
724 | int *end); |
725 | PANGO_AVAILABLE_IN_ALL |
726 | gboolean pango_attr_iterator_next (PangoAttrIterator *iterator); |
727 | PANGO_AVAILABLE_IN_ALL |
728 | PangoAttrIterator * pango_attr_iterator_copy (PangoAttrIterator *iterator); |
729 | PANGO_AVAILABLE_IN_ALL |
730 | void pango_attr_iterator_destroy (PangoAttrIterator *iterator); |
731 | PANGO_AVAILABLE_IN_ALL |
732 | PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator, |
733 | PangoAttrType type); |
734 | PANGO_AVAILABLE_IN_ALL |
735 | void pango_attr_iterator_get_font (PangoAttrIterator *iterator, |
736 | PangoFontDescription *desc, |
737 | PangoLanguage **language, |
738 | GSList **); |
739 | PANGO_AVAILABLE_IN_1_2 |
740 | GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator); |
741 | |
742 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttribute, pango_attribute_destroy) |
743 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttrList, pango_attr_list_unref) |
744 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttrIterator, pango_attr_iterator_destroy) |
745 | |
746 | G_END_DECLS |
747 | |
748 | #endif /* __PANGO_ATTRIBUTES_H__ */ |
749 | |