File indexing completed on 2025-12-18 10:28:14
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef __PANGO_ATTRIBUTES_H__
0023 #define __PANGO_ATTRIBUTES_H__
0024
0025 #include <pango/pango-font.h>
0026 #include <pango/pango-color.h>
0027 #include <glib-object.h>
0028
0029 G_BEGIN_DECLS
0030
0031
0032 typedef struct _PangoAttribute PangoAttribute;
0033 typedef struct _PangoAttrClass PangoAttrClass;
0034
0035 typedef struct _PangoAttrString PangoAttrString;
0036 typedef struct _PangoAttrLanguage PangoAttrLanguage;
0037 typedef struct _PangoAttrInt PangoAttrInt;
0038 typedef struct _PangoAttrSize PangoAttrSize;
0039 typedef struct _PangoAttrFloat PangoAttrFloat;
0040 typedef struct _PangoAttrColor PangoAttrColor;
0041 typedef struct _PangoAttrFontDesc PangoAttrFontDesc;
0042 typedef struct _PangoAttrShape PangoAttrShape;
0043 typedef struct _PangoAttrFontFeatures PangoAttrFontFeatures;
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082
0083
0084
0085
0086
0087
0088
0089
0090
0091
0092 typedef enum
0093 {
0094 PANGO_ATTR_INVALID,
0095 PANGO_ATTR_LANGUAGE,
0096 PANGO_ATTR_FAMILY,
0097 PANGO_ATTR_STYLE,
0098 PANGO_ATTR_WEIGHT,
0099 PANGO_ATTR_VARIANT,
0100 PANGO_ATTR_STRETCH,
0101 PANGO_ATTR_SIZE,
0102 PANGO_ATTR_FONT_DESC,
0103 PANGO_ATTR_FOREGROUND,
0104 PANGO_ATTR_BACKGROUND,
0105 PANGO_ATTR_UNDERLINE,
0106 PANGO_ATTR_STRIKETHROUGH,
0107 PANGO_ATTR_RISE,
0108 PANGO_ATTR_SHAPE,
0109 PANGO_ATTR_SCALE,
0110 PANGO_ATTR_FALLBACK,
0111 PANGO_ATTR_LETTER_SPACING,
0112 PANGO_ATTR_UNDERLINE_COLOR,
0113 PANGO_ATTR_STRIKETHROUGH_COLOR,
0114 PANGO_ATTR_ABSOLUTE_SIZE,
0115 PANGO_ATTR_GRAVITY,
0116 PANGO_ATTR_GRAVITY_HINT,
0117 PANGO_ATTR_FONT_FEATURES,
0118 PANGO_ATTR_FOREGROUND_ALPHA,
0119 PANGO_ATTR_BACKGROUND_ALPHA,
0120 PANGO_ATTR_ALLOW_BREAKS,
0121 PANGO_ATTR_SHOW,
0122 PANGO_ATTR_INSERT_HYPHENS,
0123 PANGO_ATTR_OVERLINE,
0124 PANGO_ATTR_OVERLINE_COLOR,
0125 PANGO_ATTR_LINE_HEIGHT,
0126 PANGO_ATTR_ABSOLUTE_LINE_HEIGHT,
0127 PANGO_ATTR_TEXT_TRANSFORM,
0128 PANGO_ATTR_WORD,
0129 PANGO_ATTR_SENTENCE,
0130 PANGO_ATTR_BASELINE_SHIFT,
0131 PANGO_ATTR_FONT_SCALE,
0132 } PangoAttrType;
0133
0134
0135
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160
0161
0162
0163
0164
0165
0166 typedef enum {
0167 PANGO_UNDERLINE_NONE,
0168 PANGO_UNDERLINE_SINGLE,
0169 PANGO_UNDERLINE_DOUBLE,
0170 PANGO_UNDERLINE_LOW,
0171 PANGO_UNDERLINE_ERROR,
0172 PANGO_UNDERLINE_SINGLE_LINE,
0173 PANGO_UNDERLINE_DOUBLE_LINE,
0174 PANGO_UNDERLINE_ERROR_LINE
0175 } PangoUnderline;
0176
0177
0178
0179
0180
0181
0182
0183
0184
0185
0186
0187
0188
0189 typedef enum {
0190 PANGO_OVERLINE_NONE,
0191 PANGO_OVERLINE_SINGLE
0192 } PangoOverline;
0193
0194
0195
0196
0197
0198
0199
0200
0201
0202
0203
0204
0205
0206
0207 typedef enum {
0208 PANGO_SHOW_NONE = 0,
0209 PANGO_SHOW_SPACES = 1 << 0,
0210 PANGO_SHOW_LINE_BREAKS = 1 << 1,
0211 PANGO_SHOW_IGNORABLES = 1 << 2
0212 } PangoShowFlags;
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226 typedef enum {
0227 PANGO_TEXT_TRANSFORM_NONE,
0228 PANGO_TEXT_TRANSFORM_LOWERCASE,
0229 PANGO_TEXT_TRANSFORM_UPPERCASE,
0230 PANGO_TEXT_TRANSFORM_CAPITALIZE,
0231 } PangoTextTransform;
0232
0233
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245 typedef enum {
0246 PANGO_BASELINE_SHIFT_NONE,
0247 PANGO_BASELINE_SHIFT_SUPERSCRIPT,
0248 PANGO_BASELINE_SHIFT_SUBSCRIPT,
0249 } PangoBaselineShift;
0250
0251
0252
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263 typedef enum {
0264 PANGO_FONT_SCALE_NONE,
0265 PANGO_FONT_SCALE_SUPERSCRIPT,
0266 PANGO_FONT_SCALE_SUBSCRIPT,
0267 PANGO_FONT_SCALE_SMALL_CAPS,
0268 } PangoFontScale;
0269
0270
0271
0272
0273
0274
0275
0276
0277
0278 #define PANGO_ATTR_INDEX_FROM_TEXT_BEGINNING ((guint)0)
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288 #define PANGO_ATTR_INDEX_TO_TEXT_END ((guint)(G_MAXUINT + 0))
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298
0299
0300
0301
0302
0303
0304
0305
0306 struct _PangoAttribute
0307 {
0308 const PangoAttrClass *klass;
0309 guint start_index;
0310 guint end_index;
0311 };
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322
0323 typedef gboolean (*PangoAttrFilterFunc) (PangoAttribute *attribute,
0324 gpointer user_data);
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334 typedef gpointer (*PangoAttrDataCopyFunc) (gconstpointer user_data);
0335
0336
0337
0338
0339
0340
0341
0342
0343
0344
0345
0346
0347
0348
0349
0350
0351
0352 struct _PangoAttrClass
0353 {
0354
0355 PangoAttrType type;
0356 PangoAttribute * (*copy) (const PangoAttribute *attr);
0357 void (*destroy) (PangoAttribute *attr);
0358 gboolean (*equal) (const PangoAttribute *attr1, const PangoAttribute *attr2);
0359 };
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369 struct _PangoAttrString
0370 {
0371 PangoAttribute attr;
0372 char *value;
0373 };
0374
0375
0376
0377
0378
0379
0380
0381
0382 struct _PangoAttrLanguage
0383 {
0384 PangoAttribute attr;
0385 PangoLanguage *value;
0386 };
0387
0388
0389
0390
0391
0392
0393
0394
0395 struct _PangoAttrInt
0396 {
0397 PangoAttribute attr;
0398 int value;
0399 };
0400
0401
0402
0403
0404
0405
0406
0407
0408 struct _PangoAttrFloat
0409 {
0410 PangoAttribute attr;
0411 double value;
0412 };
0413
0414
0415
0416
0417
0418
0419
0420
0421 struct _PangoAttrColor
0422 {
0423 PangoAttribute attr;
0424 PangoColor color;
0425 };
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440 struct _PangoAttrSize
0441 {
0442 PangoAttribute attr;
0443 int size;
0444 guint absolute : 1;
0445 };
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459 struct _PangoAttrShape
0460 {
0461 PangoAttribute attr;
0462 PangoRectangle ink_rect;
0463 PangoRectangle logical_rect;
0464
0465 gpointer data;
0466 PangoAttrDataCopyFunc copy_func;
0467 GDestroyNotify destroy_func;
0468 };
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478 struct _PangoAttrFontDesc
0479 {
0480 PangoAttribute attr;
0481 PangoFontDescription *desc;
0482 };
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494 struct _PangoAttrFontFeatures
0495 {
0496 PangoAttribute attr;
0497 gchar *features;
0498 };
0499
0500 PANGO_AVAILABLE_IN_ALL
0501 GType pango_attribute_get_type (void) G_GNUC_CONST;
0502
0503 PANGO_AVAILABLE_IN_ALL
0504 PangoAttrType pango_attr_type_register (const char *name);
0505 PANGO_AVAILABLE_IN_1_22
0506 const char * pango_attr_type_get_name (PangoAttrType type) G_GNUC_CONST;
0507 PANGO_AVAILABLE_IN_1_20
0508 void pango_attribute_init (PangoAttribute *attr,
0509 const PangoAttrClass *klass);
0510 PANGO_AVAILABLE_IN_ALL
0511 PangoAttribute * pango_attribute_copy (const PangoAttribute *attr);
0512 PANGO_AVAILABLE_IN_ALL
0513 void pango_attribute_destroy (PangoAttribute *attr);
0514 PANGO_AVAILABLE_IN_ALL
0515 gboolean pango_attribute_equal (const PangoAttribute *attr1,
0516 const PangoAttribute *attr2) G_GNUC_PURE;
0517
0518 PANGO_AVAILABLE_IN_ALL
0519 PangoAttribute * pango_attr_language_new (PangoLanguage *language);
0520 PANGO_AVAILABLE_IN_ALL
0521 PangoAttribute * pango_attr_family_new (const char *family);
0522 PANGO_AVAILABLE_IN_ALL
0523 PangoAttribute * pango_attr_foreground_new (guint16 red,
0524 guint16 green,
0525 guint16 blue);
0526 PANGO_AVAILABLE_IN_ALL
0527 PangoAttribute * pango_attr_background_new (guint16 red,
0528 guint16 green,
0529 guint16 blue);
0530 PANGO_AVAILABLE_IN_ALL
0531 PangoAttribute * pango_attr_size_new (int size);
0532 PANGO_AVAILABLE_IN_1_8
0533 PangoAttribute * pango_attr_size_new_absolute (int size);
0534 PANGO_AVAILABLE_IN_ALL
0535 PangoAttribute * pango_attr_style_new (PangoStyle style);
0536 PANGO_AVAILABLE_IN_ALL
0537 PangoAttribute * pango_attr_weight_new (PangoWeight weight);
0538 PANGO_AVAILABLE_IN_ALL
0539 PangoAttribute * pango_attr_variant_new (PangoVariant variant);
0540 PANGO_AVAILABLE_IN_ALL
0541 PangoAttribute * pango_attr_stretch_new (PangoStretch stretch);
0542 PANGO_AVAILABLE_IN_ALL
0543 PangoAttribute * pango_attr_font_desc_new (const PangoFontDescription *desc);
0544
0545 PANGO_AVAILABLE_IN_ALL
0546 PangoAttribute * pango_attr_underline_new (PangoUnderline underline);
0547 PANGO_AVAILABLE_IN_1_8
0548 PangoAttribute * pango_attr_underline_color_new (guint16 red,
0549 guint16 green,
0550 guint16 blue);
0551 PANGO_AVAILABLE_IN_ALL
0552 PangoAttribute * pango_attr_strikethrough_new (gboolean strikethrough);
0553 PANGO_AVAILABLE_IN_1_8
0554 PangoAttribute * pango_attr_strikethrough_color_new (guint16 red,
0555 guint16 green,
0556 guint16 blue);
0557 PANGO_AVAILABLE_IN_ALL
0558 PangoAttribute * pango_attr_rise_new (int rise);
0559 PANGO_AVAILABLE_IN_1_50
0560 PangoAttribute * pango_attr_baseline_shift_new (int shift);
0561 PANGO_AVAILABLE_IN_1_50
0562 PangoAttribute * pango_attr_font_scale_new (PangoFontScale scale);
0563 PANGO_AVAILABLE_IN_ALL
0564 PangoAttribute * pango_attr_scale_new (double scale_factor);
0565 PANGO_AVAILABLE_IN_1_4
0566 PangoAttribute * pango_attr_fallback_new (gboolean enable_fallback);
0567 PANGO_AVAILABLE_IN_1_6
0568 PangoAttribute * pango_attr_letter_spacing_new (int letter_spacing);
0569 PANGO_AVAILABLE_IN_ALL
0570 PangoAttribute * pango_attr_shape_new (const PangoRectangle *ink_rect,
0571 const PangoRectangle *logical_rect);
0572 PANGO_AVAILABLE_IN_1_8
0573 PangoAttribute * pango_attr_shape_new_with_data (const PangoRectangle *ink_rect,
0574 const PangoRectangle *logical_rect,
0575 gpointer data,
0576 PangoAttrDataCopyFunc copy_func,
0577 GDestroyNotify destroy_func);
0578 PANGO_AVAILABLE_IN_1_16
0579 PangoAttribute * pango_attr_gravity_new (PangoGravity gravity);
0580 PANGO_AVAILABLE_IN_1_16
0581 PangoAttribute * pango_attr_gravity_hint_new (PangoGravityHint hint);
0582 PANGO_AVAILABLE_IN_1_38
0583 PangoAttribute * pango_attr_font_features_new (const char *features);
0584 PANGO_AVAILABLE_IN_1_38
0585 PangoAttribute * pango_attr_foreground_alpha_new (guint16 alpha);
0586 PANGO_AVAILABLE_IN_1_38
0587 PangoAttribute * pango_attr_background_alpha_new (guint16 alpha);
0588 PANGO_AVAILABLE_IN_1_44
0589 PangoAttribute * pango_attr_allow_breaks_new (gboolean allow_breaks);
0590
0591 PANGO_AVAILABLE_IN_1_50
0592 PangoAttribute * pango_attr_word_new (void);
0593 PANGO_AVAILABLE_IN_1_50
0594 PangoAttribute * pango_attr_sentence_new (void);
0595
0596 PANGO_AVAILABLE_IN_1_44
0597 PangoAttribute * pango_attr_insert_hyphens_new (gboolean insert_hyphens);
0598 PANGO_AVAILABLE_IN_1_46
0599 PangoAttribute * pango_attr_overline_new (PangoOverline overline);
0600 PANGO_AVAILABLE_IN_1_46
0601 PangoAttribute * pango_attr_overline_color_new (guint16 red,
0602 guint16 green,
0603 guint16 blue);
0604 PANGO_AVAILABLE_IN_1_44
0605 PangoAttribute * pango_attr_show_new (PangoShowFlags flags);
0606 PANGO_AVAILABLE_IN_1_50
0607 PangoAttribute * pango_attr_line_height_new (double factor);
0608 PANGO_AVAILABLE_IN_1_50
0609 PangoAttribute * pango_attr_line_height_new_absolute (int height);
0610 PANGO_AVAILABLE_IN_1_50
0611 PangoAttribute * pango_attr_text_transform_new (PangoTextTransform transform);
0612
0613 PANGO_AVAILABLE_IN_1_50
0614 PangoAttrString * pango_attribute_as_string (PangoAttribute *attr);
0615 PANGO_AVAILABLE_IN_1_50
0616 PangoAttrLanguage * pango_attribute_as_language (PangoAttribute *attr);
0617 PANGO_AVAILABLE_IN_1_50
0618 PangoAttrInt * pango_attribute_as_int (PangoAttribute *attr);
0619 PANGO_AVAILABLE_IN_1_50
0620 PangoAttrSize * pango_attribute_as_size (PangoAttribute *attr);
0621 PANGO_AVAILABLE_IN_1_50
0622 PangoAttrFloat * pango_attribute_as_float (PangoAttribute *attr);
0623 PANGO_AVAILABLE_IN_1_50
0624 PangoAttrColor * pango_attribute_as_color (PangoAttribute *attr);
0625 PANGO_AVAILABLE_IN_1_50
0626 PangoAttrFontDesc * pango_attribute_as_font_desc (PangoAttribute *attr);
0627 PANGO_AVAILABLE_IN_1_50
0628 PangoAttrShape * pango_attribute_as_shape (PangoAttribute *attr);
0629 PANGO_AVAILABLE_IN_1_50
0630 PangoAttrFontFeatures * pango_attribute_as_font_features (PangoAttribute *attr);
0631
0632
0633
0634 typedef struct _PangoAttrList PangoAttrList;
0635 typedef struct _PangoAttrIterator PangoAttrIterator;
0636
0637 #define PANGO_TYPE_ATTR_LIST pango_attr_list_get_type ()
0638
0639
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651
0652
0653
0654
0655
0656
0657
0658
0659
0660
0661
0662
0663
0664
0665
0666
0667 PANGO_AVAILABLE_IN_ALL
0668 GType pango_attr_list_get_type (void) G_GNUC_CONST;
0669
0670 PANGO_AVAILABLE_IN_ALL
0671 PangoAttrList * pango_attr_list_new (void);
0672 PANGO_AVAILABLE_IN_1_10
0673 PangoAttrList * pango_attr_list_ref (PangoAttrList *list);
0674 PANGO_AVAILABLE_IN_ALL
0675 void pango_attr_list_unref (PangoAttrList *list);
0676 PANGO_AVAILABLE_IN_ALL
0677 PangoAttrList * pango_attr_list_copy (PangoAttrList *list);
0678 PANGO_AVAILABLE_IN_ALL
0679 void pango_attr_list_insert (PangoAttrList *list,
0680 PangoAttribute *attr);
0681 PANGO_AVAILABLE_IN_ALL
0682 void pango_attr_list_insert_before (PangoAttrList *list,
0683 PangoAttribute *attr);
0684 PANGO_AVAILABLE_IN_ALL
0685 void pango_attr_list_change (PangoAttrList *list,
0686 PangoAttribute *attr);
0687 PANGO_AVAILABLE_IN_ALL
0688 void pango_attr_list_splice (PangoAttrList *list,
0689 PangoAttrList *other,
0690 int pos,
0691 int len);
0692 PANGO_AVAILABLE_IN_1_44
0693 void pango_attr_list_update (PangoAttrList *list,
0694 int pos,
0695 int remove,
0696 int add);
0697
0698 PANGO_AVAILABLE_IN_1_2
0699 PangoAttrList * pango_attr_list_filter (PangoAttrList *list,
0700 PangoAttrFilterFunc func,
0701 gpointer data);
0702
0703 PANGO_AVAILABLE_IN_1_44
0704 GSList * pango_attr_list_get_attributes (PangoAttrList *list);
0705
0706 PANGO_AVAILABLE_IN_1_46
0707 gboolean pango_attr_list_equal (PangoAttrList *list,
0708 PangoAttrList *other_list);
0709
0710 PANGO_AVAILABLE_IN_1_50
0711 char * pango_attr_list_to_string (PangoAttrList *list);
0712 PANGO_AVAILABLE_IN_1_50
0713 PangoAttrList * pango_attr_list_from_string (const char *text);
0714
0715 PANGO_AVAILABLE_IN_1_44
0716 GType pango_attr_iterator_get_type (void) G_GNUC_CONST;
0717
0718 PANGO_AVAILABLE_IN_ALL
0719 PangoAttrIterator * pango_attr_list_get_iterator (PangoAttrList *list);
0720
0721 PANGO_AVAILABLE_IN_ALL
0722 void pango_attr_iterator_range (PangoAttrIterator *iterator,
0723 int *start,
0724 int *end);
0725 PANGO_AVAILABLE_IN_ALL
0726 gboolean pango_attr_iterator_next (PangoAttrIterator *iterator);
0727 PANGO_AVAILABLE_IN_ALL
0728 PangoAttrIterator * pango_attr_iterator_copy (PangoAttrIterator *iterator);
0729 PANGO_AVAILABLE_IN_ALL
0730 void pango_attr_iterator_destroy (PangoAttrIterator *iterator);
0731 PANGO_AVAILABLE_IN_ALL
0732 PangoAttribute * pango_attr_iterator_get (PangoAttrIterator *iterator,
0733 PangoAttrType type);
0734 PANGO_AVAILABLE_IN_ALL
0735 void pango_attr_iterator_get_font (PangoAttrIterator *iterator,
0736 PangoFontDescription *desc,
0737 PangoLanguage **language,
0738 GSList **extra_attrs);
0739 PANGO_AVAILABLE_IN_1_2
0740 GSList * pango_attr_iterator_get_attrs (PangoAttrIterator *iterator);
0741
0742 G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttribute, pango_attribute_destroy)
0743 G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttrList, pango_attr_list_unref)
0744 G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoAttrIterator, pango_attr_iterator_destroy)
0745
0746 G_END_DECLS
0747
0748 #endif