File indexing completed on 2025-12-18 10:28:15
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef __PANGO_LAYOUT_H__
0023 #define __PANGO_LAYOUT_H__
0024
0025 #include <pango/pango-attributes.h>
0026 #include <pango/pango-context.h>
0027 #include <pango/pango-glyph-item.h>
0028 #include <pango/pango-tabs.h>
0029
0030 G_BEGIN_DECLS
0031
0032 typedef struct _PangoLayout PangoLayout;
0033 typedef struct _PangoLayoutClass PangoLayoutClass;
0034 typedef struct _PangoLayoutLine PangoLayoutLine;
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044 typedef PangoGlyphItem PangoLayoutRun;
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061 typedef enum {
0062 PANGO_ALIGN_LEFT,
0063 PANGO_ALIGN_CENTER,
0064 PANGO_ALIGN_RIGHT
0065 } PangoAlignment;
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075
0076
0077
0078
0079
0080
0081
0082 typedef enum {
0083 PANGO_WRAP_WORD,
0084 PANGO_WRAP_CHAR,
0085 PANGO_WRAP_WORD_CHAR
0086 } PangoWrapMode;
0087
0088
0089
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102 typedef enum {
0103 PANGO_ELLIPSIZE_NONE,
0104 PANGO_ELLIPSIZE_START,
0105 PANGO_ELLIPSIZE_MIDDLE,
0106 PANGO_ELLIPSIZE_END
0107 } PangoEllipsizeMode;
0108
0109
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126 struct _PangoLayoutLine
0127 {
0128 PangoLayout *layout;
0129 gint start_index;
0130 gint length;
0131 GSList *runs;
0132 guint is_paragraph_start : 1;
0133 guint resolved_dir : 3;
0134 };
0135
0136 #define PANGO_TYPE_LAYOUT (pango_layout_get_type ())
0137 #define PANGO_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), PANGO_TYPE_LAYOUT, PangoLayout))
0138 #define PANGO_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PANGO_TYPE_LAYOUT, PangoLayoutClass))
0139 #define PANGO_IS_LAYOUT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), PANGO_TYPE_LAYOUT))
0140 #define PANGO_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_LAYOUT))
0141 #define PANGO_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_LAYOUT, PangoLayoutClass))
0142
0143
0144
0145
0146
0147 PANGO_AVAILABLE_IN_ALL
0148 GType pango_layout_get_type (void) G_GNUC_CONST;
0149 PANGO_AVAILABLE_IN_ALL
0150 PangoLayout *pango_layout_new (PangoContext *context);
0151 PANGO_AVAILABLE_IN_ALL
0152 PangoLayout *pango_layout_copy (PangoLayout *src);
0153
0154 PANGO_AVAILABLE_IN_ALL
0155 PangoContext *pango_layout_get_context (PangoLayout *layout);
0156
0157 PANGO_AVAILABLE_IN_ALL
0158 void pango_layout_set_attributes (PangoLayout *layout,
0159 PangoAttrList *attrs);
0160 PANGO_AVAILABLE_IN_ALL
0161 PangoAttrList *pango_layout_get_attributes (PangoLayout *layout);
0162
0163 PANGO_AVAILABLE_IN_ALL
0164 void pango_layout_set_text (PangoLayout *layout,
0165 const char *text,
0166 int length);
0167 PANGO_AVAILABLE_IN_ALL
0168 const char *pango_layout_get_text (PangoLayout *layout);
0169
0170 PANGO_AVAILABLE_IN_1_30
0171 gint pango_layout_get_character_count (PangoLayout *layout);
0172
0173 PANGO_AVAILABLE_IN_ALL
0174 void pango_layout_set_markup (PangoLayout *layout,
0175 const char *markup,
0176 int length);
0177
0178 PANGO_AVAILABLE_IN_ALL
0179 void pango_layout_set_markup_with_accel (PangoLayout *layout,
0180 const char *markup,
0181 int length,
0182 gunichar accel_marker,
0183 gunichar *accel_char);
0184
0185 PANGO_AVAILABLE_IN_ALL
0186 void pango_layout_set_font_description (PangoLayout *layout,
0187 const PangoFontDescription *desc);
0188
0189 PANGO_AVAILABLE_IN_1_8
0190 const PangoFontDescription *pango_layout_get_font_description (PangoLayout *layout);
0191
0192 PANGO_AVAILABLE_IN_ALL
0193 void pango_layout_set_width (PangoLayout *layout,
0194 int width);
0195 PANGO_AVAILABLE_IN_ALL
0196 int pango_layout_get_width (PangoLayout *layout);
0197 PANGO_AVAILABLE_IN_1_20
0198 void pango_layout_set_height (PangoLayout *layout,
0199 int height);
0200 PANGO_AVAILABLE_IN_1_20
0201 int pango_layout_get_height (PangoLayout *layout);
0202 PANGO_AVAILABLE_IN_ALL
0203 void pango_layout_set_wrap (PangoLayout *layout,
0204 PangoWrapMode wrap);
0205 PANGO_AVAILABLE_IN_ALL
0206 PangoWrapMode pango_layout_get_wrap (PangoLayout *layout);
0207 PANGO_AVAILABLE_IN_1_16
0208 gboolean pango_layout_is_wrapped (PangoLayout *layout);
0209 PANGO_AVAILABLE_IN_ALL
0210 void pango_layout_set_indent (PangoLayout *layout,
0211 int indent);
0212 PANGO_AVAILABLE_IN_ALL
0213 int pango_layout_get_indent (PangoLayout *layout);
0214 PANGO_AVAILABLE_IN_ALL
0215 void pango_layout_set_spacing (PangoLayout *layout,
0216 int spacing);
0217 PANGO_AVAILABLE_IN_ALL
0218 int pango_layout_get_spacing (PangoLayout *layout);
0219 PANGO_AVAILABLE_IN_1_44
0220 void pango_layout_set_line_spacing (PangoLayout *layout,
0221 float factor);
0222 PANGO_AVAILABLE_IN_1_44
0223 float pango_layout_get_line_spacing (PangoLayout *layout);
0224 PANGO_AVAILABLE_IN_ALL
0225 void pango_layout_set_justify (PangoLayout *layout,
0226 gboolean justify);
0227 PANGO_AVAILABLE_IN_ALL
0228 gboolean pango_layout_get_justify (PangoLayout *layout);
0229 PANGO_AVAILABLE_IN_1_50
0230 void pango_layout_set_justify_last_line (PangoLayout *layout,
0231 gboolean justify);
0232 PANGO_AVAILABLE_IN_1_50
0233 gboolean pango_layout_get_justify_last_line (PangoLayout *layout);
0234 PANGO_AVAILABLE_IN_1_4
0235 void pango_layout_set_auto_dir (PangoLayout *layout,
0236 gboolean auto_dir);
0237 PANGO_AVAILABLE_IN_1_4
0238 gboolean pango_layout_get_auto_dir (PangoLayout *layout);
0239 PANGO_AVAILABLE_IN_ALL
0240 void pango_layout_set_alignment (PangoLayout *layout,
0241 PangoAlignment alignment);
0242 PANGO_AVAILABLE_IN_ALL
0243 PangoAlignment pango_layout_get_alignment (PangoLayout *layout);
0244
0245 PANGO_AVAILABLE_IN_ALL
0246 void pango_layout_set_tabs (PangoLayout *layout,
0247 PangoTabArray *tabs);
0248 PANGO_AVAILABLE_IN_ALL
0249 PangoTabArray* pango_layout_get_tabs (PangoLayout *layout);
0250
0251 PANGO_AVAILABLE_IN_ALL
0252 void pango_layout_set_single_paragraph_mode (PangoLayout *layout,
0253 gboolean setting);
0254 PANGO_AVAILABLE_IN_ALL
0255 gboolean pango_layout_get_single_paragraph_mode (PangoLayout *layout);
0256
0257 PANGO_AVAILABLE_IN_1_6
0258 void pango_layout_set_ellipsize (PangoLayout *layout,
0259 PangoEllipsizeMode ellipsize);
0260 PANGO_AVAILABLE_IN_1_6
0261 PangoEllipsizeMode pango_layout_get_ellipsize (PangoLayout *layout);
0262 PANGO_AVAILABLE_IN_1_16
0263 gboolean pango_layout_is_ellipsized (PangoLayout *layout);
0264
0265 PANGO_AVAILABLE_IN_1_16
0266 int pango_layout_get_unknown_glyphs_count (PangoLayout *layout);
0267
0268 PANGO_AVAILABLE_IN_1_46
0269 PangoDirection pango_layout_get_direction (PangoLayout *layout,
0270 int index);
0271
0272 PANGO_AVAILABLE_IN_ALL
0273 void pango_layout_context_changed (PangoLayout *layout);
0274 PANGO_AVAILABLE_IN_1_32
0275 guint pango_layout_get_serial (PangoLayout *layout);
0276
0277 PANGO_AVAILABLE_IN_ALL
0278 void pango_layout_get_log_attrs (PangoLayout *layout,
0279 PangoLogAttr **attrs,
0280 gint *n_attrs);
0281
0282 PANGO_AVAILABLE_IN_1_30
0283 const PangoLogAttr *pango_layout_get_log_attrs_readonly (PangoLayout *layout,
0284 gint *n_attrs);
0285
0286 PANGO_AVAILABLE_IN_ALL
0287 void pango_layout_index_to_pos (PangoLayout *layout,
0288 int index_,
0289 PangoRectangle *pos);
0290 PANGO_AVAILABLE_IN_ALL
0291 void pango_layout_index_to_line_x (PangoLayout *layout,
0292 int index_,
0293 gboolean trailing,
0294 int *line,
0295 int *x_pos);
0296 PANGO_AVAILABLE_IN_ALL
0297 void pango_layout_get_cursor_pos (PangoLayout *layout,
0298 int index_,
0299 PangoRectangle *strong_pos,
0300 PangoRectangle *weak_pos);
0301
0302 PANGO_AVAILABLE_IN_1_50
0303 void pango_layout_get_caret_pos (PangoLayout *layout,
0304 int index_,
0305 PangoRectangle *strong_pos,
0306 PangoRectangle *weak_pos);
0307
0308 PANGO_AVAILABLE_IN_ALL
0309 void pango_layout_move_cursor_visually (PangoLayout *layout,
0310 gboolean strong,
0311 int old_index,
0312 int old_trailing,
0313 int direction,
0314 int *new_index,
0315 int *new_trailing);
0316 PANGO_AVAILABLE_IN_ALL
0317 gboolean pango_layout_xy_to_index (PangoLayout *layout,
0318 int x,
0319 int y,
0320 int *index_,
0321 int *trailing);
0322 PANGO_AVAILABLE_IN_ALL
0323 void pango_layout_get_extents (PangoLayout *layout,
0324 PangoRectangle *ink_rect,
0325 PangoRectangle *logical_rect);
0326 PANGO_AVAILABLE_IN_ALL
0327 void pango_layout_get_pixel_extents (PangoLayout *layout,
0328 PangoRectangle *ink_rect,
0329 PangoRectangle *logical_rect);
0330 PANGO_AVAILABLE_IN_ALL
0331 void pango_layout_get_size (PangoLayout *layout,
0332 int *width,
0333 int *height);
0334 PANGO_AVAILABLE_IN_ALL
0335 void pango_layout_get_pixel_size (PangoLayout *layout,
0336 int *width,
0337 int *height);
0338 PANGO_AVAILABLE_IN_1_22
0339 int pango_layout_get_baseline (PangoLayout *layout);
0340
0341 PANGO_AVAILABLE_IN_ALL
0342 int pango_layout_get_line_count (PangoLayout *layout);
0343 PANGO_AVAILABLE_IN_ALL
0344 PangoLayoutLine *pango_layout_get_line (PangoLayout *layout,
0345 int line);
0346 PANGO_AVAILABLE_IN_1_16
0347 PangoLayoutLine *pango_layout_get_line_readonly (PangoLayout *layout,
0348 int line);
0349 PANGO_AVAILABLE_IN_ALL
0350 GSList * pango_layout_get_lines (PangoLayout *layout);
0351 PANGO_AVAILABLE_IN_1_16
0352 GSList * pango_layout_get_lines_readonly (PangoLayout *layout);
0353
0354
0355
0356
0357
0358
0359
0360
0361
0362
0363
0364
0365
0366 typedef enum {
0367 PANGO_LAYOUT_SERIALIZE_DEFAULT = 0,
0368 PANGO_LAYOUT_SERIALIZE_CONTEXT = 1 << 0,
0369 PANGO_LAYOUT_SERIALIZE_OUTPUT = 1 << 1,
0370 } PangoLayoutSerializeFlags;
0371
0372 PANGO_AVAILABLE_IN_1_50
0373 GBytes * pango_layout_serialize (PangoLayout *layout,
0374 PangoLayoutSerializeFlags flags);
0375
0376 PANGO_AVAILABLE_IN_1_50
0377 gboolean pango_layout_write_to_file (PangoLayout *layout,
0378 PangoLayoutSerializeFlags flags,
0379
0380 const char *filename,
0381 GError **error);
0382
0383 #define PANGO_LAYOUT_DESERIALIZE_ERROR (pango_layout_deserialize_error_quark ())
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395
0396
0397 typedef enum {
0398 PANGO_LAYOUT_DESERIALIZE_INVALID,
0399 PANGO_LAYOUT_DESERIALIZE_INVALID_VALUE,
0400 PANGO_LAYOUT_DESERIALIZE_MISSING_VALUE,
0401 } PangoLayoutDeserializeError;
0402
0403 PANGO_AVAILABLE_IN_1_50
0404 GQuark pango_layout_deserialize_error_quark (void);
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416
0417
0418 typedef enum {
0419 PANGO_LAYOUT_DESERIALIZE_DEFAULT = 0,
0420 PANGO_LAYOUT_DESERIALIZE_CONTEXT = 1 << 0,
0421 } PangoLayoutDeserializeFlags;
0422
0423 PANGO_AVAILABLE_IN_1_50
0424 PangoLayout * pango_layout_deserialize (PangoContext *context,
0425 GBytes *bytes,
0426 PangoLayoutDeserializeFlags flags,
0427 GError **error);
0428
0429
0430 #define PANGO_TYPE_LAYOUT_LINE (pango_layout_line_get_type ())
0431
0432 PANGO_AVAILABLE_IN_ALL
0433 GType pango_layout_line_get_type (void) G_GNUC_CONST;
0434
0435 PANGO_AVAILABLE_IN_1_10
0436 PangoLayoutLine *pango_layout_line_ref (PangoLayoutLine *line);
0437 PANGO_AVAILABLE_IN_ALL
0438 void pango_layout_line_unref (PangoLayoutLine *line);
0439
0440 PANGO_AVAILABLE_IN_1_50
0441 int pango_layout_line_get_start_index (PangoLayoutLine *line);
0442 PANGO_AVAILABLE_IN_1_50
0443 int pango_layout_line_get_length (PangoLayoutLine *line);
0444 PANGO_AVAILABLE_IN_1_50
0445 gboolean pango_layout_line_is_paragraph_start (PangoLayoutLine *line);
0446 PANGO_AVAILABLE_IN_1_50
0447 PangoDirection pango_layout_line_get_resolved_direction (PangoLayoutLine *line);
0448
0449 PANGO_AVAILABLE_IN_ALL
0450 gboolean pango_layout_line_x_to_index (PangoLayoutLine *line,
0451 int x_pos,
0452 int *index_,
0453 int *trailing);
0454 PANGO_AVAILABLE_IN_ALL
0455 void pango_layout_line_index_to_x (PangoLayoutLine *line,
0456 int index_,
0457 gboolean trailing,
0458 int *x_pos);
0459 PANGO_AVAILABLE_IN_ALL
0460 void pango_layout_line_get_x_ranges (PangoLayoutLine *line,
0461 int start_index,
0462 int end_index,
0463 int **ranges,
0464 int *n_ranges);
0465 PANGO_AVAILABLE_IN_ALL
0466 void pango_layout_line_get_extents (PangoLayoutLine *line,
0467 PangoRectangle *ink_rect,
0468 PangoRectangle *logical_rect);
0469 PANGO_AVAILABLE_IN_1_44
0470 void pango_layout_line_get_height (PangoLayoutLine *line,
0471 int *height);
0472
0473 PANGO_AVAILABLE_IN_ALL
0474 void pango_layout_line_get_pixel_extents (PangoLayoutLine *layout_line,
0475 PangoRectangle *ink_rect,
0476 PangoRectangle *logical_rect);
0477
0478 typedef struct _PangoLayoutIter PangoLayoutIter;
0479
0480 #define PANGO_TYPE_LAYOUT_ITER (pango_layout_iter_get_type ())
0481
0482 PANGO_AVAILABLE_IN_ALL
0483 GType pango_layout_iter_get_type (void) G_GNUC_CONST;
0484
0485 PANGO_AVAILABLE_IN_ALL
0486 PangoLayoutIter *pango_layout_get_iter (PangoLayout *layout);
0487 PANGO_AVAILABLE_IN_1_20
0488 PangoLayoutIter *pango_layout_iter_copy (PangoLayoutIter *iter);
0489 PANGO_AVAILABLE_IN_ALL
0490 void pango_layout_iter_free (PangoLayoutIter *iter);
0491
0492 PANGO_AVAILABLE_IN_ALL
0493 int pango_layout_iter_get_index (PangoLayoutIter *iter);
0494 PANGO_AVAILABLE_IN_ALL
0495 PangoLayoutRun *pango_layout_iter_get_run (PangoLayoutIter *iter);
0496 PANGO_AVAILABLE_IN_1_16
0497 PangoLayoutRun *pango_layout_iter_get_run_readonly (PangoLayoutIter *iter);
0498 PANGO_AVAILABLE_IN_ALL
0499 PangoLayoutLine *pango_layout_iter_get_line (PangoLayoutIter *iter);
0500 PANGO_AVAILABLE_IN_1_16
0501 PangoLayoutLine *pango_layout_iter_get_line_readonly (PangoLayoutIter *iter);
0502 PANGO_AVAILABLE_IN_ALL
0503 gboolean pango_layout_iter_at_last_line (PangoLayoutIter *iter);
0504 PANGO_AVAILABLE_IN_1_20
0505 PangoLayout *pango_layout_iter_get_layout (PangoLayoutIter *iter);
0506
0507 PANGO_AVAILABLE_IN_ALL
0508 gboolean pango_layout_iter_next_char (PangoLayoutIter *iter);
0509 PANGO_AVAILABLE_IN_ALL
0510 gboolean pango_layout_iter_next_cluster (PangoLayoutIter *iter);
0511 PANGO_AVAILABLE_IN_ALL
0512 gboolean pango_layout_iter_next_run (PangoLayoutIter *iter);
0513 PANGO_AVAILABLE_IN_ALL
0514 gboolean pango_layout_iter_next_line (PangoLayoutIter *iter);
0515
0516 PANGO_AVAILABLE_IN_ALL
0517 void pango_layout_iter_get_char_extents (PangoLayoutIter *iter,
0518 PangoRectangle *logical_rect);
0519 PANGO_AVAILABLE_IN_ALL
0520 void pango_layout_iter_get_cluster_extents (PangoLayoutIter *iter,
0521 PangoRectangle *ink_rect,
0522 PangoRectangle *logical_rect);
0523 PANGO_AVAILABLE_IN_ALL
0524 void pango_layout_iter_get_run_extents (PangoLayoutIter *iter,
0525 PangoRectangle *ink_rect,
0526 PangoRectangle *logical_rect);
0527 PANGO_AVAILABLE_IN_ALL
0528 void pango_layout_iter_get_line_extents (PangoLayoutIter *iter,
0529 PangoRectangle *ink_rect,
0530 PangoRectangle *logical_rect);
0531
0532
0533
0534 PANGO_AVAILABLE_IN_ALL
0535 void pango_layout_iter_get_line_yrange (PangoLayoutIter *iter,
0536 int *y0_,
0537 int *y1_);
0538 PANGO_AVAILABLE_IN_ALL
0539 void pango_layout_iter_get_layout_extents (PangoLayoutIter *iter,
0540 PangoRectangle *ink_rect,
0541 PangoRectangle *logical_rect);
0542 PANGO_AVAILABLE_IN_ALL
0543 int pango_layout_iter_get_baseline (PangoLayoutIter *iter);
0544 PANGO_AVAILABLE_IN_1_50
0545 int pango_layout_iter_get_run_baseline (PangoLayoutIter *iter);
0546
0547
0548 G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayout, g_object_unref)
0549 G_DEFINE_AUTOPTR_CLEANUP_FUNC(PangoLayoutIter, pango_layout_iter_free)
0550
0551 G_END_DECLS
0552
0553 #endif
0554