pango 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +27 -5
  3. data/ext/pango/depend +2 -2
  4. data/ext/pango/extconf.rb +32 -28
  5. data/ext/pango/pango.def +0 -16
  6. data/ext/pango/rb-pango-attr-list.c +64 -0
  7. data/ext/pango/rb-pango-attribute.c +147 -0
  8. data/ext/pango/rb-pango-context.c +79 -0
  9. data/ext/pango/{rbpangoconversions.h → rb-pango-conversions.h} +4 -6
  10. data/ext/pango/rb-pango-private.h +27 -0
  11. data/ext/pango/rb-pango.c +32 -0
  12. data/ext/pango/rb-pango.h +29 -0
  13. data/extconf.rb +25 -9
  14. data/lib/pango.rb +24 -68
  15. data/lib/pango/cairo-loader.rb +63 -0
  16. data/lib/pango/color.rb +31 -0
  17. data/lib/pango/deprecated.rb +37 -0
  18. data/lib/pango/font-description.rb +29 -0
  19. data/lib/pango/language.rb +29 -0
  20. data/lib/pango/layout.rb +41 -0
  21. data/lib/pango/loader.rb +87 -0
  22. data/lib/pango/markup.rb +31 -0
  23. data/lib/pango/matrix.rb +64 -0
  24. data/lib/pango/rectangle.rb +28 -0
  25. data/lib/pango/version.rb +30 -0
  26. data/test/pango-test-utils.rb +7 -7
  27. data/test/run-test.rb +34 -8
  28. data/test/test-attr-list.rb +28 -0
  29. data/test/test-color.rb +1 -3
  30. data/test/test-context.rb +4 -4
  31. data/test/test-enum.rb +37 -0
  32. data/test/test-font-description.rb +31 -0
  33. data/test/test-language.rb +2 -1
  34. data/test/test-layout.rb +12 -0
  35. data/test/test-markup.rb +30 -0
  36. data/test/test-matrix.rb +131 -5
  37. data/test/test-rectangle.rb +16 -3
  38. metadata +42 -56
  39. data/README +0 -32
  40. data/ext/pango/rbpango.c +0 -356
  41. data/ext/pango/rbpango.h +0 -95
  42. data/ext/pango/rbpangoanalysis.c +0 -218
  43. data/ext/pango/rbpangoattribute.c +0 -506
  44. data/ext/pango/rbpangoattriterator.c +0 -141
  45. data/ext/pango/rbpangoattrlist.c +0 -101
  46. data/ext/pango/rbpangocairo.c +0 -122
  47. data/ext/pango/rbpangocairocontext.c +0 -131
  48. data/ext/pango/rbpangocolor.c +0 -120
  49. data/ext/pango/rbpangocontext.c +0 -344
  50. data/ext/pango/rbpangocoverage.c +0 -106
  51. data/ext/pango/rbpangoengine.c +0 -73
  52. data/ext/pango/rbpangofont.c +0 -110
  53. data/ext/pango/rbpangofontdescription.c +0 -282
  54. data/ext/pango/rbpangofontface.c +0 -73
  55. data/ext/pango/rbpangofontfamily.c +0 -79
  56. data/ext/pango/rbpangofontmap.c +0 -102
  57. data/ext/pango/rbpangofontmetrics.c +0 -85
  58. data/ext/pango/rbpangofontset.c +0 -69
  59. data/ext/pango/rbpangofontsetsimple.c +0 -60
  60. data/ext/pango/rbpangoglyphinfo.c +0 -123
  61. data/ext/pango/rbpangoglyphitem.c +0 -125
  62. data/ext/pango/rbpangoglyphstring.c +0 -151
  63. data/ext/pango/rbpangogravity.c +0 -54
  64. data/ext/pango/rbpangoitem.c +0 -95
  65. data/ext/pango/rbpangolanguage.c +0 -94
  66. data/ext/pango/rbpangolayout.c +0 -583
  67. data/ext/pango/rbpangolayoutiter.c +0 -189
  68. data/ext/pango/rbpangolayoutline.c +0 -243
  69. data/ext/pango/rbpangologattr.c +0 -109
  70. data/ext/pango/rbpangomatrix.c +0 -143
  71. data/ext/pango/rbpangoprivate.h +0 -49
  72. data/ext/pango/rbpangorectangle.c +0 -170
  73. data/ext/pango/rbpangorenderer.c +0 -193
  74. data/ext/pango/rbpangoscript.c +0 -84
  75. data/ext/pango/rbpangoscriptiter.c +0 -92
  76. data/ext/pango/rbpangotabarray.c +0 -128
  77. data/sample/attribute.rb +0 -82
  78. data/sample/break.rb +0 -28
  79. data/sample/gdk_layout.rb +0 -27
  80. data/sample/glyphstring.rb +0 -61
  81. data/sample/item.rb +0 -37
  82. data/sample/label.rb +0 -23
  83. data/sample/layout.rb +0 -102
  84. data/sample/pango_cairo.rb +0 -66
  85. data/sample/parse.rb +0 -33
  86. data/sample/sample.txt +0 -10
  87. data/sample/script.rb +0 -23
@@ -1,120 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002,2003 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbpangoprivate.h"
23
-
24
- #define RG_TARGET_NAMESPACE cColor
25
- #define _SELF(self) (RVAL2PANGOCOLOR(self))
26
-
27
- static VALUE
28
- rg_initialize(VALUE self, VALUE red, VALUE green, VALUE blue)
29
- {
30
- PangoColor color;
31
-
32
- color.red = NUM2UINT(red);
33
- color.green = NUM2UINT(green);
34
- color.blue = NUM2UINT(blue);
35
-
36
- G_INITIALIZE(self, g_boxed_copy(PANGO_TYPE_COLOR, &color));
37
- return Qnil;
38
- }
39
-
40
- static VALUE
41
- rg_parse(VALUE self, VALUE spec)
42
- {
43
- return CBOOL2RVAL(pango_color_parse(_SELF(self), RVAL2CSTR(spec)));
44
- }
45
-
46
- static VALUE
47
- rg_red(VALUE self)
48
- {
49
- return UINT2NUM(_SELF(self)->red);
50
- }
51
-
52
- static VALUE
53
- rg_set_red(VALUE self, VALUE red)
54
- {
55
- _SELF(self)->red = NUM2UINT(red);
56
- return self;
57
- }
58
-
59
- static VALUE
60
- rg_green(VALUE self)
61
- {
62
- return UINT2NUM(_SELF(self)->green);
63
- }
64
-
65
- static VALUE
66
- rg_set_green(VALUE self, VALUE green)
67
- {
68
- _SELF(self)->green = NUM2UINT(green);
69
- return self;
70
- }
71
-
72
- static VALUE
73
- rg_blue(VALUE self)
74
- {
75
- return UINT2NUM(_SELF(self)->blue);
76
- }
77
-
78
- static VALUE
79
- rg_set_blue(VALUE self, VALUE blue)
80
- {
81
- _SELF(self)->blue = NUM2UINT(blue);
82
- return self;
83
- }
84
-
85
- static VALUE
86
- rg_to_a(VALUE self)
87
- {
88
- PangoColor *c = _SELF(self);
89
- return rb_ary_new3(3,
90
- UINT2NUM(c->red),
91
- UINT2NUM(c->green),
92
- UINT2NUM(c->blue));
93
- }
94
-
95
- static VALUE
96
- rg_operator_color_equal(VALUE self, VALUE other)
97
- {
98
- PangoColor* c1 = _SELF(self);
99
- PangoColor* c2 = _SELF(other);
100
-
101
- return CBOOL2RVAL((c1->red == c2->red) && (c1->green == c2->green) &&
102
- (c1->blue == c2->blue));
103
- }
104
-
105
- void
106
- Init_pango_color(VALUE mPango)
107
- {
108
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_COLOR, "Color", mPango);
109
-
110
- RG_DEF_METHOD(initialize, 3);
111
- RG_DEF_METHOD(parse, 1);
112
- RG_DEF_METHOD(red, 0);
113
- RG_DEF_METHOD(set_red, 1);
114
- RG_DEF_METHOD(green, 0);
115
- RG_DEF_METHOD(set_green, 1);
116
- RG_DEF_METHOD(blue, 0);
117
- RG_DEF_METHOD(set_blue, 1);
118
- RG_DEF_METHOD(to_a, 0);
119
- RG_DEF_METHOD_OPERATOR("==", color_equal, 1);
120
- }
@@ -1,344 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011-2016 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002-2005 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbpangoprivate.h"
23
-
24
- static ID id_call;
25
-
26
- #define RG_TARGET_NAMESPACE cContext
27
- #define _SELF(self) (RVAL2PANGOCONTEXT(self))
28
-
29
- static VALUE
30
- rg_itemize(int argc, VALUE *argv, VALUE self)
31
- {
32
- VALUE arg1, arg2, arg3, arg4, arg5, arg6;
33
- GList* list;
34
-
35
- rb_scan_args(argc, argv, "42", &arg1, &arg2, &arg3, &arg4, &arg5, &arg6);
36
-
37
- if (TYPE(arg1) == T_STRING) {
38
- list = pango_itemize(_SELF(self),
39
- RVAL2CSTR(arg1), /* text */
40
- NUM2INT(arg2), /* start_index */
41
- NUM2INT(arg3), /* length */
42
- RVAL2PANGOATTRLIST(arg4), /* attrs */
43
- NIL_P(arg5) ? NULL : RVAL2PANGOATTRITERATOR(arg5)); /* cached_iter */
44
- } else {
45
- #ifdef HAVE_PANGO_ITEMIZE_WITH_BASE_DIR
46
- list = pango_itemize_with_base_dir(_SELF(self),
47
- RVAL2PANGODIRECTION(arg1), /* base_dir */
48
- RVAL2CSTR(arg2), /* text */
49
- NUM2INT(arg3), /* start_index */
50
- NUM2INT(arg4), /* length */
51
- RVAL2PANGOATTRLIST(arg5), /* attrs */
52
- NIL_P(arg6) ? NULL : RVAL2PANGOATTRITERATOR(arg6)); /* cached_iter */
53
- #else
54
- rb_warn("Pango::Context#itemize(base_dir, text, start_index, length, attrs, cached_iter) isn't supported on this environment.");
55
- list = pango_itemize(_SELF(self),
56
- RVAL2CSTR(arg1), /* text */
57
- NUM2INT(arg2), /* start_index */
58
- NUM2INT(arg3), /* length */
59
- RVAL2PANGOATTRLIST(arg4), /* attrs */
60
- NIL_P(arg5) ? NULL : RVAL2PANGOATTRITERATOR(arg5)); /* cached_iter */
61
- #endif
62
- }
63
- return GLIST2ARY2F(list, PANGO_TYPE_ITEM);
64
- }
65
-
66
- /* Move to Pango module (rbpangomain.c)
67
- GList* pango_reorder_items (GList *logical_items);
68
- */
69
-
70
- #ifdef PANGO_ENABLE_BACKEND
71
- static VALUE
72
- rg_initialize(VALUE self)
73
- {
74
- G_INITIALIZE(self, pango_context_new());
75
- return Qnil;
76
- }
77
-
78
- static VALUE
79
- rg_set_font_map(VALUE self, VALUE font_map)
80
- {
81
- pango_context_set_font_map(_SELF(self), RVAL2PANGOFONTMAP(font_map));
82
- return self;
83
- }
84
-
85
- static VALUE
86
- rg_font_map(VALUE self)
87
- {
88
- return GOBJ2RVAL(pango_context_get_font_map(_SELF(self)));
89
- }
90
- #endif /* PANGO_ENABLE_BACKEND */
91
-
92
- static VALUE
93
- rg_font_description(VALUE self)
94
- {
95
- PangoFontDescription* ret = pango_context_get_font_description(_SELF(self));
96
- return PANGOFONTDESCRIPTION2RVAL(ret);
97
- }
98
-
99
- static VALUE
100
- rg_set_font_description(VALUE self, VALUE desc)
101
- {
102
- pango_context_set_font_description(_SELF(self), RVAL2PANGOFONTDESCRIPTION(desc));
103
- return self;
104
- }
105
-
106
- static VALUE
107
- rg_language(VALUE self)
108
- {
109
- PangoLanguage* ret = pango_context_get_language(_SELF(self));
110
- return PANGOLANGUAGE2RVAL(ret);
111
- }
112
-
113
- static VALUE
114
- rg_set_language(VALUE self, VALUE lang)
115
- {
116
- pango_context_set_language(_SELF(self),
117
- RVAL2PANGOLANGUAGE(lang));
118
- return self;
119
- }
120
-
121
- static VALUE
122
- rg_base_dir(VALUE self)
123
- {
124
- return PANGODIRECTION2RVAL(pango_context_get_base_dir(_SELF(self)));
125
- }
126
-
127
- static VALUE
128
- rg_set_base_dir(VALUE self, VALUE direction)
129
- {
130
- pango_context_set_base_dir(_SELF(self), RVAL2PANGODIRECTION(direction));
131
- return self;
132
- }
133
-
134
- #if PANGO_VERSION_CHECK(1,16,0)
135
- static VALUE
136
- rg_base_gravity(VALUE self)
137
- {
138
- return PANGOGRAVITY2RVAL(pango_context_get_base_gravity(_SELF(self)));
139
- }
140
-
141
- static VALUE
142
- rg_set_base_gravity(VALUE self, VALUE gravity)
143
- {
144
- pango_context_set_base_gravity(_SELF(self), RVAL2PANGOGRAVITY(gravity));
145
- return self;
146
- }
147
-
148
- static VALUE
149
- rg_gravity_hint(VALUE self)
150
- {
151
- return PANGOGRAVITYHINT2RVAL(pango_context_get_gravity_hint(_SELF(self)));
152
- }
153
-
154
- static VALUE
155
- rg_set_gravity_hint(VALUE self, VALUE gravity_hint)
156
- {
157
- pango_context_set_gravity_hint(_SELF(self), RVAL2PANGOGRAVITYHINT(gravity_hint));
158
- return self;
159
- }
160
- #endif
161
-
162
- static VALUE
163
- rg_matrix(VALUE self)
164
- {
165
- const PangoMatrix* matrix = pango_context_get_matrix(_SELF(self));
166
- return PANGOMATRIX2RVAL((PangoMatrix*)matrix);
167
- }
168
-
169
- static VALUE
170
- rg_set_matrix(VALUE self, VALUE matrix)
171
- {
172
- pango_context_set_matrix(_SELF(self),
173
- RVAL2PANGOMATRIX(matrix));
174
- return self;
175
- }
176
-
177
- static VALUE
178
- rg_load_font(VALUE self, VALUE desc)
179
- {
180
- return GOBJ2RVAL(pango_context_load_font(_SELF(self), RVAL2PANGOFONTDESCRIPTION(desc)));
181
- }
182
-
183
- static VALUE
184
- rg_load_fontset(VALUE self, VALUE desc, VALUE lang)
185
- {
186
- return GOBJ2RVAL(pango_context_load_fontset(_SELF(self),
187
- RVAL2PANGOFONTDESCRIPTION(desc), RVAL2PANGOLANGUAGE(lang)));
188
- }
189
-
190
- static VALUE
191
- rg_get_metrics(int argc, VALUE *argv, VALUE self)
192
- {
193
- VALUE desc, lang;
194
-
195
- rb_scan_args(argc, argv, "11", &desc, &lang);
196
-
197
- return PANGOFONTMETRICS2RVAL(pango_context_get_metrics(_SELF(self),
198
- RVAL2PANGOFONTDESCRIPTION(desc),
199
- NIL_P(lang) ? NULL : RVAL2PANGOLANGUAGE(lang)));
200
- }
201
-
202
- static VALUE
203
- rg_families(VALUE self)
204
- {
205
- int n_families;
206
- PangoFontFamily** families;
207
- int i;
208
- VALUE result;
209
-
210
- pango_context_list_families(_SELF(self),
211
- &families,
212
- &n_families);
213
-
214
- result = rb_ary_new2(n_families);
215
- for (i = 0; i < n_families; i++)
216
- rb_ary_store(result, i, GOBJ2RVAL(families[i]));
217
-
218
- g_free(families);
219
-
220
- return result;
221
- }
222
-
223
- #ifdef HAVE_RB_CAIRO_H
224
- static VALUE
225
- rg_set_font_options(VALUE self, VALUE options)
226
- {
227
- if (NIL_P(options))
228
- pango_cairo_context_set_font_options(_SELF(self), NULL);
229
- else
230
- pango_cairo_context_set_font_options(_SELF(self),
231
- RVAL2CRFONTOPTIONS(options));
232
- return self;
233
- }
234
-
235
- static VALUE
236
- rg_font_options(VALUE self)
237
- {
238
- const cairo_font_options_t *options;
239
- options = pango_cairo_context_get_font_options(_SELF(self));
240
- if (options)
241
- return CRFONTOPTIONS2RVAL(cairo_font_options_copy(options));
242
- else
243
- return Qnil;
244
- }
245
-
246
- static VALUE
247
- rg_set_resolution(VALUE self, VALUE dpi)
248
- {
249
- pango_cairo_context_set_resolution(_SELF(self), NUM2DBL(dpi));
250
- return self;
251
- }
252
-
253
- static VALUE
254
- rg_resolution(VALUE self)
255
- {
256
- return rb_float_new(pango_cairo_context_get_resolution(_SELF(self)));
257
- }
258
-
259
- static void
260
- shape_renderer_callback(cairo_t *cr,
261
- PangoAttrShape *attr,
262
- gboolean do_path,
263
- gpointer data)
264
- {
265
- VALUE rb_cr;
266
- VALUE rb_attr;
267
- VALUE rb_do_path;
268
- VALUE rb_callback;
269
-
270
- rb_cr = CRCONTEXT2RVAL(cr);
271
- rb_attr = ATTR2RVAL((PangoAttribute *)attr);
272
- rb_do_path = CBOOL2RVAL(do_path);
273
- rb_callback = (VALUE)data;
274
- rb_funcall(rb_callback, id_call, 3, rb_cr, rb_attr, rb_do_path);
275
- }
276
-
277
- static VALUE
278
- rg_set_shape_renderer(VALUE self)
279
- {
280
- VALUE func = rb_block_proc();
281
- rb_iv_set(self, "@shape_renderer", func);
282
- pango_cairo_context_set_shape_renderer(_SELF(self),
283
- shape_renderer_callback,
284
- (gpointer)func,
285
- NULL);
286
- return self;
287
- }
288
- #endif
289
-
290
- static VALUE
291
- rg_list_families(VALUE self)
292
- {
293
- rb_warn("Deprecated. Use Pango::Context#families instead.");
294
- return rg_families(self);
295
- }
296
-
297
- void
298
- Init_pango_context(VALUE mPango)
299
- {
300
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_CONTEXT, "Context", mPango);
301
-
302
- id_call = rb_intern("call");
303
-
304
- RG_DEF_METHOD(itemize, -1);
305
-
306
- #ifdef PANGO_ENABLE_BACKEND
307
- RG_DEF_METHOD(initialize, 0);
308
- RG_DEF_METHOD(set_font_map, 1);
309
- RG_DEF_METHOD(font_map, 0);
310
- #endif /* PANGO_ENABLE_BACKEND */
311
- RG_DEF_METHOD(font_description, 0);
312
- RG_DEF_METHOD(set_font_description, 1);
313
- RG_DEF_METHOD(language, 0);
314
- RG_DEF_METHOD(set_language, 1);
315
- RG_DEF_METHOD(base_dir, 0);
316
- RG_DEF_METHOD(set_base_dir, 1);
317
- #if PANGO_VERSION_CHECK(1,16,0)
318
- RG_DEF_METHOD(base_gravity, 0);
319
- RG_DEF_METHOD(set_base_gravity, 1);
320
- RG_DEF_METHOD(gravity_hint, 0);
321
- RG_DEF_METHOD(set_gravity_hint, 1);
322
- #endif
323
- RG_DEF_METHOD(matrix, 0);
324
- RG_DEF_METHOD(set_matrix, 1);
325
- RG_DEF_METHOD(load_font, 1);
326
- RG_DEF_METHOD(load_fontset, 2);
327
- RG_DEF_METHOD(get_metrics, -1);
328
- RG_DEF_METHOD(families, 0);
329
-
330
- #ifdef HAVE_RB_CAIRO_H
331
- RG_DEF_METHOD(set_font_options, 1);
332
- RG_DEF_METHOD(font_options, 0);
333
- RG_DEF_METHOD(set_resolution, 1);
334
- RG_DEF_METHOD(resolution, 0);
335
- RG_DEF_METHOD(set_shape_renderer, 0);
336
- #endif
337
-
338
- /* This will remove 2 or 3 releases later since 0.14.0. */
339
- RG_DEF_METHOD(list_families, 0);
340
-
341
- /* PangoDirection */
342
- G_DEF_CLASS(PANGO_TYPE_DIRECTION, "Direction", RG_TARGET_NAMESPACE);
343
- G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, PANGO_TYPE_DIRECTION, "PANGO_");
344
- }