pango 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +662 -0
- data/README +33 -0
- data/Rakefile +86 -0
- data/extconf.rb +68 -0
- data/sample/attribute.rb +82 -0
- data/sample/break.rb +26 -0
- data/sample/gdk_layout.rb +27 -0
- data/sample/glyphstring.rb +61 -0
- data/sample/item.rb +35 -0
- data/sample/label.rb +23 -0
- data/sample/layout.rb +102 -0
- data/sample/pango_cairo.rb +66 -0
- data/sample/parse.rb +33 -0
- data/sample/sample.txt +10 -0
- data/sample/script.rb +21 -0
- data/src/lib/pango.rb +60 -0
- data/src/makeinits.rb +48 -0
- data/src/rbpango.c +27 -0
- data/src/rbpango.h +97 -0
- data/src/rbpangoanalysis.c +197 -0
- data/src/rbpangoattribute.c +557 -0
- data/src/rbpangoattriterator.c +137 -0
- data/src/rbpangoattrlist.c +104 -0
- data/src/rbpangocairo.c +229 -0
- data/src/rbpangocolor.c +121 -0
- data/src/rbpangocontext.c +341 -0
- data/src/rbpangocoverage.c +104 -0
- data/src/rbpangoengine.c +65 -0
- data/src/rbpangofont.c +123 -0
- data/src/rbpangofontdescription.c +300 -0
- data/src/rbpangofontface.c +71 -0
- data/src/rbpangofontfamily.c +74 -0
- data/src/rbpangofontmap.c +104 -0
- data/src/rbpangofontmetrics.c +85 -0
- data/src/rbpangofontset.c +68 -0
- data/src/rbpangofontsetsimple.c +53 -0
- data/src/rbpangoglyphinfo.c +119 -0
- data/src/rbpangoglyphitem.c +129 -0
- data/src/rbpangoglyphstring.c +162 -0
- data/src/rbpangogravity.c +43 -0
- data/src/rbpangoinits.c +71 -0
- data/src/rbpangoitem.c +110 -0
- data/src/rbpangolanguage.c +88 -0
- data/src/rbpangolayout.c +593 -0
- data/src/rbpangolayoutiter.c +202 -0
- data/src/rbpangolayoutline.c +256 -0
- data/src/rbpangologattr.c +107 -0
- data/src/rbpangomain.c +213 -0
- data/src/rbpangomatrix.c +155 -0
- data/src/rbpangorectangle.c +178 -0
- data/src/rbpangorenderer.c +204 -0
- data/src/rbpangoscript.c +80 -0
- data/src/rbpangoscriptiter.c +91 -0
- data/src/rbpangotabarray.c +128 -0
- data/src/rbpangoversion.h +24 -0
- data/test/pango-test-utils.rb +9 -0
- data/test/run-test.rb +27 -0
- data/test/test-attribute.rb +19 -0
- data/test/test-language.rb +7 -0
- data/test/test_layout.rb +20 -0
- metadata +158 -0
@@ -0,0 +1,202 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbpangolayoutiter.c -
|
5
|
+
|
6
|
+
$Author: ggc $
|
7
|
+
$Date: 2006/06/22 19:52:54 $
|
8
|
+
|
9
|
+
Copyright (C) 2002-2005 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbpango.h"
|
13
|
+
|
14
|
+
#define _SELF(r) ((PangoLayoutIter*)RVAL2BOXED(r, PANGO_TYPE_LAYOUT_ITER))
|
15
|
+
|
16
|
+
/**********************************/
|
17
|
+
#ifndef HAVE_PANGO_LAYOUT_ITER_GET_TYPE
|
18
|
+
static PangoLayoutIter*
|
19
|
+
layout_iter_copy(ref)
|
20
|
+
const PangoLayoutIter* ref;
|
21
|
+
{
|
22
|
+
#if PANGO_CHECK_VERSION(1,6,0)
|
23
|
+
PangoLayoutIter* new_ref;
|
24
|
+
g_return_val_if_fail (ref != NULL, NULL);
|
25
|
+
/* This may be broken on pango-1.2.x, but
|
26
|
+
for backward compatibility. */
|
27
|
+
new_ref = g_new(PangoLayoutIter, 1);
|
28
|
+
*new_ref = *ref;
|
29
|
+
return new_ref;
|
30
|
+
#else
|
31
|
+
return (PangoLayoutIter*)ref;
|
32
|
+
#endif
|
33
|
+
}
|
34
|
+
|
35
|
+
GType
|
36
|
+
pango_layout_iter_get_type(void)
|
37
|
+
{
|
38
|
+
static GType our_type = 0;
|
39
|
+
|
40
|
+
if (our_type == 0)
|
41
|
+
our_type = g_boxed_type_register_static ("PangoLayoutIter",
|
42
|
+
(GBoxedCopyFunc)layout_iter_copy,
|
43
|
+
(GBoxedFreeFunc)pango_layout_iter_free);
|
44
|
+
return our_type;
|
45
|
+
}
|
46
|
+
#endif
|
47
|
+
/**********************************/
|
48
|
+
|
49
|
+
static VALUE
|
50
|
+
layout_iter_next_run(self)
|
51
|
+
VALUE self;
|
52
|
+
{
|
53
|
+
return CBOOL2RVAL(pango_layout_iter_next_run(_SELF(self)));
|
54
|
+
}
|
55
|
+
|
56
|
+
static VALUE
|
57
|
+
layout_iter_next_char(self)
|
58
|
+
VALUE self;
|
59
|
+
{
|
60
|
+
return CBOOL2RVAL(pango_layout_iter_next_char(_SELF(self)));
|
61
|
+
}
|
62
|
+
|
63
|
+
static VALUE
|
64
|
+
layout_iter_next_cluster(self)
|
65
|
+
VALUE self;
|
66
|
+
{
|
67
|
+
return CBOOL2RVAL(pango_layout_iter_next_cluster(_SELF(self)));
|
68
|
+
}
|
69
|
+
|
70
|
+
static VALUE
|
71
|
+
layout_iter_next_line(self)
|
72
|
+
VALUE self;
|
73
|
+
{
|
74
|
+
return CBOOL2RVAL(pango_layout_iter_next_line(_SELF(self)));
|
75
|
+
}
|
76
|
+
|
77
|
+
static VALUE
|
78
|
+
layout_iter_at_last_line(self)
|
79
|
+
VALUE self;
|
80
|
+
{
|
81
|
+
return CBOOL2RVAL(pango_layout_iter_at_last_line(_SELF(self)));
|
82
|
+
}
|
83
|
+
|
84
|
+
static VALUE
|
85
|
+
layout_iter_get_index(self)
|
86
|
+
VALUE self;
|
87
|
+
{
|
88
|
+
return INT2NUM(pango_layout_iter_get_index(_SELF(self)));
|
89
|
+
}
|
90
|
+
|
91
|
+
static VALUE
|
92
|
+
layout_iter_get_baseline(self)
|
93
|
+
VALUE self;
|
94
|
+
{
|
95
|
+
return INT2NUM(pango_layout_iter_get_baseline(_SELF(self)));
|
96
|
+
}
|
97
|
+
|
98
|
+
static VALUE
|
99
|
+
layout_iter_get_run(self)
|
100
|
+
VALUE self;
|
101
|
+
{
|
102
|
+
PangoLayoutRun* run = pango_layout_iter_get_run(_SELF(self));
|
103
|
+
return BOXED2RVAL(run, PANGO_TYPE_GLYPH_ITEM);
|
104
|
+
}
|
105
|
+
|
106
|
+
static VALUE
|
107
|
+
layout_iter_get_line(self)
|
108
|
+
VALUE self;
|
109
|
+
{
|
110
|
+
return BOXED2RVAL(pango_layout_iter_get_line(_SELF(self)), PANGO_TYPE_LAYOUT_LINE);
|
111
|
+
}
|
112
|
+
|
113
|
+
static VALUE
|
114
|
+
layout_iter_get_char_extents(self)
|
115
|
+
VALUE self;
|
116
|
+
{
|
117
|
+
PangoRectangle logical_rect;
|
118
|
+
|
119
|
+
pango_layout_iter_get_char_extents(_SELF(self), &logical_rect);
|
120
|
+
return BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE);
|
121
|
+
}
|
122
|
+
|
123
|
+
static VALUE
|
124
|
+
layout_iter_get_cluster_extents(self)
|
125
|
+
VALUE self;
|
126
|
+
{
|
127
|
+
PangoRectangle ink_rect, logical_rect;
|
128
|
+
|
129
|
+
pango_layout_iter_get_cluster_extents(_SELF(self), &ink_rect, &logical_rect);
|
130
|
+
|
131
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
132
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
133
|
+
}
|
134
|
+
|
135
|
+
static VALUE
|
136
|
+
layout_iter_get_run_extents(self)
|
137
|
+
VALUE self;
|
138
|
+
{
|
139
|
+
PangoRectangle ink_rect, logical_rect;
|
140
|
+
|
141
|
+
pango_layout_iter_get_run_extents(_SELF(self), &ink_rect, &logical_rect);
|
142
|
+
|
143
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
144
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
145
|
+
}
|
146
|
+
|
147
|
+
static VALUE
|
148
|
+
layout_iter_get_line_yrange(self)
|
149
|
+
VALUE self;
|
150
|
+
{
|
151
|
+
int y0, y1;
|
152
|
+
pango_layout_iter_get_line_yrange(_SELF(self), &y0, &y1);
|
153
|
+
return rb_assoc_new(INT2NUM(y0), INT2NUM(y1));
|
154
|
+
}
|
155
|
+
|
156
|
+
static VALUE
|
157
|
+
layout_iter_get_line_extents(self)
|
158
|
+
VALUE self;
|
159
|
+
{
|
160
|
+
PangoRectangle ink_rect, logical_rect;
|
161
|
+
|
162
|
+
pango_layout_iter_get_line_extents(_SELF(self), &ink_rect, &logical_rect);
|
163
|
+
|
164
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
165
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
166
|
+
}
|
167
|
+
static VALUE
|
168
|
+
layout_iter_get_layout_extents(self)
|
169
|
+
VALUE self;
|
170
|
+
{
|
171
|
+
PangoRectangle ink_rect, logical_rect;
|
172
|
+
|
173
|
+
pango_layout_iter_get_layout_extents(_SELF(self), &ink_rect, &logical_rect);
|
174
|
+
|
175
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
176
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
177
|
+
}
|
178
|
+
|
179
|
+
void
|
180
|
+
Init_pango_layout_iter()
|
181
|
+
{
|
182
|
+
VALUE pIter = G_DEF_CLASS(PANGO_TYPE_LAYOUT_ITER, "LayoutIter", mPango);
|
183
|
+
|
184
|
+
rbgobj_boxed_not_copy_obj(PANGO_TYPE_LAYOUT_ITER);
|
185
|
+
|
186
|
+
rb_define_method(pIter, "next_run!", layout_iter_next_run, 0);
|
187
|
+
rb_define_method(pIter, "next_char!", layout_iter_next_char, 0);
|
188
|
+
rb_define_method(pIter, "next_cluster!", layout_iter_next_cluster, 0);
|
189
|
+
rb_define_method(pIter, "next_line!", layout_iter_next_line, 0);
|
190
|
+
rb_define_method(pIter, "at_last_line!", layout_iter_at_last_line, 0);
|
191
|
+
rb_define_method(pIter, "index", layout_iter_get_index, 0);
|
192
|
+
rb_define_method(pIter, "baseline", layout_iter_get_baseline, 0);
|
193
|
+
rb_define_method(pIter, "run", layout_iter_get_run, 0);
|
194
|
+
rb_define_method(pIter, "line", layout_iter_get_line, 0);
|
195
|
+
rb_define_method(pIter, "char_extents", layout_iter_get_char_extents, 0);
|
196
|
+
rb_define_method(pIter, "cluster_extents", layout_iter_get_cluster_extents, 0);
|
197
|
+
rb_define_method(pIter, "run_extents", layout_iter_get_run_extents, 0);
|
198
|
+
rb_define_method(pIter, "line_yrange", layout_iter_get_line_yrange, 0);
|
199
|
+
rb_define_method(pIter, "line_extents", layout_iter_get_line_extents, 0);
|
200
|
+
rb_define_method(pIter, "layout_extents", layout_iter_get_layout_extents, 0);
|
201
|
+
|
202
|
+
}
|
@@ -0,0 +1,256 @@
|
|
1
|
+
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
|
+
/************************************************
|
3
|
+
|
4
|
+
rbpangolayoutline.c -
|
5
|
+
|
6
|
+
$Author: ggc $
|
7
|
+
$Date: 2007/07/13 16:07:33 $
|
8
|
+
|
9
|
+
Copyright (C) 2002-2005 Masao Mutoh
|
10
|
+
************************************************/
|
11
|
+
|
12
|
+
#include "rbpango.h"
|
13
|
+
|
14
|
+
|
15
|
+
#define _SELF(r) ((PangoLayoutLine*)RVAL2BOXED(r, PANGO_TYPE_LAYOUT_LINE))
|
16
|
+
|
17
|
+
/**********************************/
|
18
|
+
#if !PANGO_CHECK_VERSION(1,9,0)
|
19
|
+
static PangoLayoutLine*
|
20
|
+
layout_line_copy(ref)
|
21
|
+
PangoLayoutLine* ref;
|
22
|
+
{
|
23
|
+
g_return_val_if_fail (ref != NULL, NULL);
|
24
|
+
pango_layout_line_ref(ref);
|
25
|
+
return ref;
|
26
|
+
}
|
27
|
+
|
28
|
+
GType
|
29
|
+
pango_layout_line_get_type(void)
|
30
|
+
{
|
31
|
+
static GType our_type = 0;
|
32
|
+
|
33
|
+
if (our_type == 0)
|
34
|
+
our_type = g_boxed_type_register_static ("PangoLayoutLine",
|
35
|
+
(GBoxedCopyFunc)layout_line_copy,
|
36
|
+
(GBoxedFreeFunc)pango_layout_line_unref);
|
37
|
+
return our_type;
|
38
|
+
}
|
39
|
+
#endif
|
40
|
+
/**********************************/
|
41
|
+
|
42
|
+
static VALUE
|
43
|
+
layout_line_get_extents(self)
|
44
|
+
VALUE self;
|
45
|
+
{
|
46
|
+
PangoRectangle ink_rect, logical_rect;
|
47
|
+
|
48
|
+
pango_layout_line_get_extents(_SELF(self), &ink_rect, &logical_rect);
|
49
|
+
|
50
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
51
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
52
|
+
}
|
53
|
+
|
54
|
+
static VALUE
|
55
|
+
layout_line_get_pixel_extents(self)
|
56
|
+
VALUE self;
|
57
|
+
{
|
58
|
+
PangoRectangle ink_rect, logical_rect;
|
59
|
+
|
60
|
+
pango_layout_line_get_pixel_extents(_SELF(self), &ink_rect, &logical_rect);
|
61
|
+
|
62
|
+
return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
|
63
|
+
BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
|
64
|
+
}
|
65
|
+
|
66
|
+
static VALUE
|
67
|
+
layout_line_index_to_x(self, index, trailing)
|
68
|
+
VALUE self, index, trailing;
|
69
|
+
{
|
70
|
+
int x_pos;
|
71
|
+
pango_layout_line_index_to_x(_SELF(self), NUM2INT(index),
|
72
|
+
RVAL2CBOOL(trailing), &x_pos);
|
73
|
+
return INT2NUM(x_pos);
|
74
|
+
}
|
75
|
+
|
76
|
+
static VALUE
|
77
|
+
layout_line_x_to_index(self, x_pos)
|
78
|
+
VALUE self, x_pos;
|
79
|
+
{
|
80
|
+
int index, trailing;
|
81
|
+
|
82
|
+
gboolean ret = pango_layout_line_x_to_index(_SELF(self), NUM2INT(x_pos),
|
83
|
+
&index, &trailing);
|
84
|
+
return rb_ary_new3(CBOOL2RVAL(ret), INT2NUM(index), INT2NUM(trailing));
|
85
|
+
}
|
86
|
+
|
87
|
+
static VALUE
|
88
|
+
layout_line_get_x_ranges(self, start_index, end_index)
|
89
|
+
VALUE self, start_index, end_index;
|
90
|
+
{
|
91
|
+
int* ranges;
|
92
|
+
int i, n_ranges;
|
93
|
+
VALUE ary;
|
94
|
+
|
95
|
+
pango_layout_line_get_x_ranges(_SELF(self), NUM2INT(start_index),
|
96
|
+
NUM2INT(end_index), &ranges, &n_ranges);
|
97
|
+
|
98
|
+
ary = rb_ary_new();
|
99
|
+
for (i = 0; i < n_ranges; i++) {
|
100
|
+
rb_ary_push(ary, INT2NUM(ranges[i]));
|
101
|
+
}
|
102
|
+
|
103
|
+
g_free(ranges);
|
104
|
+
return ary;
|
105
|
+
}
|
106
|
+
|
107
|
+
/* Structure members */
|
108
|
+
static VALUE
|
109
|
+
layout_line_get_layout(self)
|
110
|
+
VALUE self;
|
111
|
+
{
|
112
|
+
return GOBJ2RVAL(_SELF(self)->layout);
|
113
|
+
}
|
114
|
+
|
115
|
+
static VALUE
|
116
|
+
layout_line_set_layout(self, val)
|
117
|
+
VALUE self, val;
|
118
|
+
{
|
119
|
+
_SELF(self)->layout = PANGO_LAYOUT(RVAL2GOBJ(val));
|
120
|
+
return self;
|
121
|
+
}
|
122
|
+
|
123
|
+
static VALUE
|
124
|
+
layout_line_get_start_index(self)
|
125
|
+
VALUE self;
|
126
|
+
{
|
127
|
+
return INT2NUM(_SELF(self)->start_index);
|
128
|
+
}
|
129
|
+
|
130
|
+
static VALUE
|
131
|
+
layout_line_set_start_index(self, val)
|
132
|
+
VALUE self, val;
|
133
|
+
{
|
134
|
+
_SELF(self)->start_index = NUM2INT(val);
|
135
|
+
return self;
|
136
|
+
}
|
137
|
+
|
138
|
+
static VALUE
|
139
|
+
layout_line_get_length(self)
|
140
|
+
VALUE self;
|
141
|
+
{
|
142
|
+
return INT2NUM(_SELF(self)->length);
|
143
|
+
}
|
144
|
+
|
145
|
+
static VALUE
|
146
|
+
layout_line_set_length(self, val)
|
147
|
+
VALUE self, val;
|
148
|
+
{
|
149
|
+
_SELF(self)->length = NUM2INT(val);
|
150
|
+
return self;
|
151
|
+
}
|
152
|
+
|
153
|
+
#if PANGO_CHECK_VERSION(1,2,0)
|
154
|
+
static VALUE
|
155
|
+
layout_line_get_runs(self)
|
156
|
+
VALUE self;
|
157
|
+
{
|
158
|
+
GSList* list = _SELF(self)->runs;
|
159
|
+
VALUE ary = rb_ary_new();
|
160
|
+
while (list) {
|
161
|
+
PangoGlyphItem* old_item = (PangoGlyphItem*)list->data;
|
162
|
+
PangoGlyphItem new_item;
|
163
|
+
|
164
|
+
new_item.item = pango_item_copy(old_item->item);
|
165
|
+
new_item.glyphs = pango_glyph_string_copy(old_item->glyphs);
|
166
|
+
|
167
|
+
rb_ary_push(ary, BOXED2RVAL(&new_item, PANGO_TYPE_GLYPH_ITEM));
|
168
|
+
list = list->next;
|
169
|
+
}
|
170
|
+
return ary;
|
171
|
+
}
|
172
|
+
#endif
|
173
|
+
|
174
|
+
static VALUE
|
175
|
+
layout_line_set_runs(self, ary)
|
176
|
+
VALUE self, ary;
|
177
|
+
{
|
178
|
+
int i, len;
|
179
|
+
GSList* list = NULL;
|
180
|
+
|
181
|
+
len = RARRAY_LEN(ary);
|
182
|
+
|
183
|
+
for (i = 0; i < len; i++) {
|
184
|
+
list = g_slist_append(list, RVAL2BOXED(RARRAY_PTR(ary)[i],
|
185
|
+
PANGO_TYPE_GLYPH_ITEM));
|
186
|
+
}
|
187
|
+
|
188
|
+
if (_SELF(self)->runs) {
|
189
|
+
g_slist_free(_SELF(self)->runs);
|
190
|
+
}
|
191
|
+
_SELF(self)->runs = list;
|
192
|
+
|
193
|
+
return self;
|
194
|
+
}
|
195
|
+
|
196
|
+
#if PANGO_CHECK_VERSION(1,4,0)
|
197
|
+
static VALUE
|
198
|
+
layout_line_is_paragraph_start(self)
|
199
|
+
VALUE self;
|
200
|
+
{
|
201
|
+
return CBOOL2RVAL(_SELF(self)->is_paragraph_start);
|
202
|
+
}
|
203
|
+
|
204
|
+
static VALUE
|
205
|
+
layout_line_set_paragraph_start(self, val)
|
206
|
+
VALUE self, val;
|
207
|
+
{
|
208
|
+
_SELF(self)->is_paragraph_start = RVAL2CBOOL(val);
|
209
|
+
return self;
|
210
|
+
}
|
211
|
+
|
212
|
+
static VALUE
|
213
|
+
layout_line_get_resolved_dir(self)
|
214
|
+
VALUE self;
|
215
|
+
{
|
216
|
+
return UINT2NUM(_SELF(self)->resolved_dir);
|
217
|
+
}
|
218
|
+
|
219
|
+
static VALUE
|
220
|
+
layout_line_set_resolved_dir(self, val)
|
221
|
+
VALUE self, val;
|
222
|
+
{
|
223
|
+
_SELF(self)->resolved_dir = NUM2UINT(val);
|
224
|
+
return self;
|
225
|
+
}
|
226
|
+
#endif
|
227
|
+
|
228
|
+
void
|
229
|
+
Init_pango_layout_line()
|
230
|
+
{
|
231
|
+
VALUE pLine = G_DEF_CLASS(PANGO_TYPE_LAYOUT_LINE, "LayoutLine", mPango);
|
232
|
+
|
233
|
+
rb_define_method(pLine, "extents", layout_line_get_extents, 0);
|
234
|
+
rb_define_method(pLine, "pixel_extents", layout_line_get_pixel_extents, 0);
|
235
|
+
rb_define_method(pLine, "index_to_x", layout_line_index_to_x, 2);
|
236
|
+
rb_define_method(pLine, "x_to_index", layout_line_x_to_index, 1);
|
237
|
+
rb_define_method(pLine, "get_x_ranges", layout_line_get_x_ranges, 2);
|
238
|
+
rb_define_method(pLine, "layout", layout_line_get_layout, 0);
|
239
|
+
rb_define_method(pLine, "set_layout", layout_line_set_layout, 1);
|
240
|
+
rb_define_method(pLine, "start_index", layout_line_get_start_index, 0);
|
241
|
+
rb_define_method(pLine, "set_start_index", layout_line_set_start_index, 1);
|
242
|
+
rb_define_method(pLine, "length", layout_line_get_length, 0);
|
243
|
+
rb_define_method(pLine, "set_length", layout_line_set_length, 1);
|
244
|
+
#if PANGO_CHECK_VERSION(1,2,0)
|
245
|
+
rb_define_method(pLine, "runs", layout_line_get_runs, 0);
|
246
|
+
#endif
|
247
|
+
rb_define_method(pLine, "set_runs", layout_line_set_runs, 1);
|
248
|
+
|
249
|
+
#if PANGO_CHECK_VERSION(1,4,0)
|
250
|
+
rb_define_method(pLine, "paragraph_start?", layout_line_is_paragraph_start, 0);
|
251
|
+
rb_define_method(pLine, "set_paragraph_start", layout_line_set_paragraph_start, 1);
|
252
|
+
rb_define_method(pLine, "resolved_dir", layout_line_get_resolved_dir, 0);
|
253
|
+
rb_define_method(pLine, "set_resolved_dir", layout_line_set_resolved_dir, 1);
|
254
|
+
#endif
|
255
|
+
G_DEF_SETTERS(pLine);
|
256
|
+
}
|