Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-18 10:28:15

0001 /* Pango
0002  * pango-layout.h: High-level layout driver
0003  *
0004  * Copyright (C) 2000 Red Hat Software
0005  *
0006  * This library is free software; you can redistribute it and/or
0007  * modify it under the terms of the GNU Library General Public
0008  * License as published by the Free Software Foundation; either
0009  * version 2 of the License, or (at your option) any later version.
0010  *
0011  * This library is distributed in the hope that it will be useful,
0012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
0013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0014  * Library General Public License for more details.
0015  *
0016  * You should have received a copy of the GNU Library General Public
0017  * License along with this library; if not, write to the
0018  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
0019  * Boston, MA 02111-1307, USA.
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  * PangoLayoutRun:
0038  *
0039  * A `PangoLayoutRun` represents a single run within a `PangoLayoutLine`.
0040  *
0041  * It is simply an alternate name for [struct@Pango.GlyphItem].
0042  * See the [struct@Pango.GlyphItem] docs for details on the fields.
0043  */
0044 typedef PangoGlyphItem PangoLayoutRun;
0045 
0046 /**
0047  * PangoAlignment:
0048  * @PANGO_ALIGN_LEFT: Put all available space on the right
0049  * @PANGO_ALIGN_CENTER: Center the line within the available space
0050  * @PANGO_ALIGN_RIGHT: Put all available space on the left
0051  *
0052  * `PangoAlignment` describes how to align the lines of a `PangoLayout`
0053  * within the available space.
0054  *
0055  * If the `PangoLayout` is set to justify using [method@Pango.Layout.set_justify],
0056  * this only affects partial lines.
0057  *
0058  * See [method@Pango.Layout.set_auto_dir] for how text direction affects
0059  * the interpretation of `PangoAlignment` values.
0060  */
0061 typedef enum {
0062   PANGO_ALIGN_LEFT,
0063   PANGO_ALIGN_CENTER,
0064   PANGO_ALIGN_RIGHT
0065 } PangoAlignment;
0066 
0067 /**
0068  * PangoWrapMode:
0069  * @PANGO_WRAP_WORD: wrap lines at word boundaries.
0070  * @PANGO_WRAP_CHAR: wrap lines at character boundaries.
0071  * @PANGO_WRAP_WORD_CHAR: wrap lines at word boundaries, but fall back to
0072  *   character boundaries if there is not enough space for a full word.
0073  *
0074  * `PangoWrapMode` describes how to wrap the lines of a `PangoLayout`
0075  * to the desired width.
0076  *
0077  * For @PANGO_WRAP_WORD, Pango uses break opportunities that are determined
0078  * by the Unicode line breaking algorithm. For @PANGO_WRAP_CHAR, Pango allows
0079  * breaking at grapheme boundaries that are determined by the Unicode text
0080  * segmentation algorithm.
0081  */
0082 typedef enum {
0083   PANGO_WRAP_WORD,
0084   PANGO_WRAP_CHAR,
0085   PANGO_WRAP_WORD_CHAR
0086 } PangoWrapMode;
0087 
0088 /**
0089  * PangoEllipsizeMode:
0090  * @PANGO_ELLIPSIZE_NONE: No ellipsization
0091  * @PANGO_ELLIPSIZE_START: Omit characters at the start of the text
0092  * @PANGO_ELLIPSIZE_MIDDLE: Omit characters in the middle of the text
0093  * @PANGO_ELLIPSIZE_END: Omit characters at the end of the text
0094  *
0095  * `PangoEllipsizeMode` describes what sort of ellipsization
0096  * should be applied to text.
0097  *
0098  * In the ellipsization process characters are removed from the
0099  * text in order to make it fit to a given width and replaced
0100  * with an ellipsis.
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  * PangoLayoutLine:
0111  * @layout: (nullable): the layout this line belongs to, might be %NULL
0112  * @start_index: start of line as byte index into layout->text
0113  * @length: length of line in bytes
0114  * @runs: (nullable) (element-type Pango.LayoutRun): list of runs in the
0115  *   line, from left to right
0116  * @is_paragraph_start: #TRUE if this is the first line of the paragraph
0117  * @resolved_dir: #Resolved PangoDirection of line
0118  *
0119  * A `PangoLayoutLine` represents one of the lines resulting from laying
0120  * out a paragraph via `PangoLayout`.
0121  *
0122  * `PangoLayoutLine` structures are obtained by calling
0123  * [method@Pango.Layout.get_line] and are only valid until the text,
0124  * attributes, or settings of the parent `PangoLayout` are modified.
0125  */
0126 struct _PangoLayoutLine
0127 {
0128   PangoLayout *layout;
0129   gint         start_index;     /* start of line as byte index into layout->text */
0130   gint         length;      /* length of line in bytes */
0131   GSList      *runs;
0132   guint        is_paragraph_start : 1;  /* TRUE if this is the first line of the paragraph */
0133   guint        resolved_dir : 3;  /* Resolved PangoDirection of line */
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 /* The PangoLayout and PangoLayoutClass structs are private; if you
0144  * need to create a subclass of these, file a bug.
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  * PangoLayoutSerializeFlags:
0356  * @PANGO_LAYOUT_SERIALIZE_DEFAULT: Default behavior
0357  * @PANGO_LAYOUT_SERIALIZE_CONTEXT: Include context information
0358  * @PANGO_LAYOUT_SERIALIZE_OUTPUT: Include information about the formatted output
0359  *
0360  * Flags that influence the behavior of [method@Pango.Layout.serialize].
0361  *
0362  * New members may be added to this enumeration over time.
0363  *
0364  * Since: 1.50
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  * PangoLayoutDeserializeError:
0387  * @PANGO_LAYOUT_DESERIALIZE_INVALID: Unspecified error
0388  * @PANGO_LAYOUT_DESERIALIZE_INVALID_VALUE: A JSon value could not be
0389  *   interpreted
0390  * @PANGO_LAYOUT_DESERIALIZE_MISSING_VALUE: A required JSon member was
0391  *   not found
0392  *
0393  * Errors that can be returned by [func@Pango.Layout.deserialize].
0394  *
0395  * Since: 1.50
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  * PangoLayoutDeserializeFlags:
0408  * @PANGO_LAYOUT_DESERIALIZE_DEFAULT: Default behavior
0409  * @PANGO_LAYOUT_DESERIALIZE_CONTEXT: Apply context information
0410  *   from the serialization to the `PangoContext`
0411  *
0412  * Flags that influence the behavior of [func@Pango.Layout.deserialize].
0413  *
0414  * New members may be added to this enumeration over time.
0415  *
0416  * Since: 1.50
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 /* All the yranges meet, unlike the logical_rect's (i.e. the yranges
0532  * assign between-line spacing to the nearest line)
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 /* __PANGO_LAYOUT_H__ */
0554