summaryrefslogtreecommitdiff
path: root/pango/pango-line-private.h
blob: 42d25137abcb0d9a6d67fa486ecc3c4a1dd8baa6 (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-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 _PangoLine
{
  PangoContext *context;
  LineData *data;

  int start_index;
  int length;
  int start_offset;
  int n_chars;
  GSList *runs;
  PangoRun **run_array;
  int n_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;
};

PangoLine * pango_line_new       (PangoContext       *context,
                                  LineData           *data);

void        pango_line_ellipsize (PangoLine          *line,
                                  PangoContext       *context,
                                  PangoEllipsizeMode  ellipsize,
                                  int                 goal_width);

void        pango_line_index_to_run (PangoLine  *line,
                                     int         idx,
                                     PangoRun  **run);

void        pango_line_get_empty_extents (PangoLine        *line,
                                          PangoLeadingTrim  trim,
                                          PangoRectangle   *logical_rect);

void        pango_line_check_invariants (PangoLine *line);