summaryrefslogtreecommitdiff
path: root/pango/pango-layout-line-private.h
blob: 0132401f88611ec8e84954ccf44f58422b3daefb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#pragma once

#include "pango-layout-line.h"
#include "pango-break.h"
#include "pango-attributes.h"
#include "pango-glyph-item.h"

typedef struct _LineData LineData;
struct _LineData {
  char *text;
  int length;
  int n_chars;
  PangoDirection direction;

  PangoAttrList *attrs;
  PangoLogAttr *log_attrs;
};

LineData *      line_data_new           (void);
LineData *      line_data_ref           (LineData *data);
void            line_data_unref         (LineData *data);
void            line_data_clear         (LineData *data);

struct _PangoLayoutLine
{
  GObject parent_instance;

  PangoContext *context;
  LineData *data;

  int start_index;
  int length;
  int start_offset;
  int n_chars;
  GSList *runs;

  guint wrapped             : 1;
  guint ellipsized          : 1;
  guint hyphenated          : 1;
  guint justified           : 1;
  guint starts_paragraph    : 1;
  guint ends_paragraph      : 1;
  guint has_extents         : 1;

  PangoDirection direction;

  PangoRectangle ink_rect;
  PangoRectangle logical_rect;
};

PangoLayoutLine * pango_layout_line_new       (PangoContext       *context,
                                               LineData           *data);

void              pango_layout_line_ellipsize (PangoLayoutLine    *line,
                                               PangoContext       *context,
                                               PangoEllipsizeMode  ellipsize,
                                               int                 goal_width);

void              pango_layout_line_index_to_run (PangoLayoutLine  *line,
                                                  int              idx,
                                                  PangoLayoutRun **run);

void              pango_layout_line_get_empty_extents (PangoLayoutLine  *line,
                                                       PangoLeadingTrim  trim,
                                                       PangoRectangle   *logical_rect);

void              pango_layout_line_check_invariants (PangoLayoutLine *line);