pango 3.1.6-x86-mingw32 → 3.1.7-x86-mingw32

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.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/ext/pango/pango.def +1 -0
  4. data/ext/pango/rb-pango-attr-iterator.c +60 -0
  5. data/ext/pango/rb-pango-attr-list.c +10 -0
  6. data/ext/pango/rb-pango-attribute.c +413 -34
  7. data/ext/pango/rb-pango-conversions.h +9 -0
  8. data/ext/pango/rb-pango-private.h +2 -0
  9. data/ext/pango/rb-pango-scale.c +53 -0
  10. data/ext/pango/rb-pango.c +2 -0
  11. data/lib/2.2/pango.so +0 -0
  12. data/lib/2.3/pango.so +0 -0
  13. data/lib/2.4/pango.so +0 -0
  14. data/lib/pango/attr-type.rb +27 -0
  15. data/lib/pango/deprecated.rb +33 -0
  16. data/lib/pango/loader.rb +3 -8
  17. data/test/test-attr-iterator.rb +36 -0
  18. data/vendor/local/bin/derb.exe +0 -0
  19. data/vendor/local/bin/genbrk.exe +0 -0
  20. data/vendor/local/bin/genccode.exe +0 -0
  21. data/vendor/local/bin/gencfu.exe +0 -0
  22. data/vendor/local/bin/gencmn.exe +0 -0
  23. data/vendor/local/bin/gencnval.exe +0 -0
  24. data/vendor/local/bin/gendict.exe +0 -0
  25. data/vendor/local/bin/gennorm2.exe +0 -0
  26. data/vendor/local/bin/genrb.exe +0 -0
  27. data/vendor/local/bin/gensprep.exe +0 -0
  28. data/vendor/local/bin/hb-ot-shape-closure.exe +0 -0
  29. data/vendor/local/bin/hb-shape.exe +0 -0
  30. data/vendor/local/bin/hb-view.exe +0 -0
  31. data/vendor/local/bin/icuinfo.exe +0 -0
  32. data/vendor/local/bin/icupkg.exe +0 -0
  33. data/vendor/local/bin/libgraphene-1.0-0.dll +0 -0
  34. data/vendor/local/bin/libharfbuzz-0.dll +0 -0
  35. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  36. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  37. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  38. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  39. data/vendor/local/bin/makeconv.exe +0 -0
  40. data/vendor/local/bin/pango-view.exe +0 -0
  41. data/vendor/local/bin/pkgdata.exe +0 -0
  42. data/vendor/local/bin/uconv.exe +0 -0
  43. data/vendor/local/include/pango-1.0/pango/pango-features.h +2 -2
  44. data/vendor/local/include/pango-1.0/pango/pango-version-macros.h +135 -128
  45. data/vendor/local/lib/icudt.dll +0 -0
  46. data/vendor/local/lib/icudt58.dll +0 -0
  47. data/vendor/local/lib/icuin.dll +0 -0
  48. data/vendor/local/lib/icuin58.dll +0 -0
  49. data/vendor/local/lib/icuio.dll +0 -0
  50. data/vendor/local/lib/icuio58.dll +0 -0
  51. data/vendor/local/lib/icutest.dll +0 -0
  52. data/vendor/local/lib/icutest58.dll +0 -0
  53. data/vendor/local/lib/icutu.dll +0 -0
  54. data/vendor/local/lib/icutu58.dll +0 -0
  55. data/vendor/local/lib/icuuc.dll +0 -0
  56. data/vendor/local/lib/icuuc58.dll +0 -0
  57. data/vendor/local/lib/libgraphene-1.0.dll.a +0 -0
  58. data/vendor/local/lib/libharfbuzz.dll.a +0 -0
  59. data/vendor/local/lib/libicudt.dll.a +0 -0
  60. data/vendor/local/lib/libicudt58.dll +0 -0
  61. data/vendor/local/lib/libicuin.dll.a +0 -0
  62. data/vendor/local/lib/libicuio.dll.a +0 -0
  63. data/vendor/local/lib/libicutest.dll.a +0 -0
  64. data/vendor/local/lib/libicutu.dll.a +0 -0
  65. data/vendor/local/lib/libicuuc.dll.a +0 -0
  66. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  67. data/vendor/local/lib/libpango-1.0.la +1 -1
  68. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  69. data/vendor/local/lib/libpangocairo-1.0.la +1 -1
  70. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  71. data/vendor/local/lib/libpangoft2-1.0.la +1 -1
  72. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  73. data/vendor/local/lib/libpangowin32-1.0.la +1 -1
  74. data/vendor/local/lib/pkgconfig/pango.pc +1 -1
  75. data/vendor/local/lib/pkgconfig/pangocairo.pc +1 -1
  76. data/vendor/local/lib/pkgconfig/pangoft2.pc +1 -1
  77. data/vendor/local/lib/pkgconfig/pangowin32.pc +1 -1
  78. data/vendor/local/share/gtk-doc/html/pango/PangoRenderer.html +1 -1
  79. data/vendor/local/share/gtk-doc/html/pango/index.html +1 -1
  80. data/vendor/local/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +1 -1
  81. data/vendor/local/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +1 -1
  82. data/vendor/local/share/gtk-doc/html/pango/pango-Coverage-Maps.html +1 -1
  83. data/vendor/local/share/gtk-doc/html/pango/pango-Fonts.html +5 -5
  84. data/vendor/local/share/gtk-doc/html/pango/pango-Glyph-Storage.html +1 -1
  85. data/vendor/local/share/gtk-doc/html/pango/pango-Layout-Objects.html +2 -2
  86. data/vendor/local/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +2 -2
  87. data/vendor/local/share/gtk-doc/html/pango/pango-Tab-Stops.html +2 -2
  88. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Attributes.html +2 -2
  89. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Processing.html +3 -3
  90. data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +2 -2
  91. data/vendor/local/share/gtk-doc/html/pango/pango-Vertical-Text.html +1 -1
  92. data/vendor/local/share/gtk-doc/html/pango/pango-hierarchy.html +4 -4
  93. data/vendor/local/share/man/man1/pango-view.1 +1 -1
  94. metadata +10 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8bb906e738208091972e90dd21e7b56ed355a072
4
- data.tar.gz: ab17efdd3701f4bd1ccbc4166dcb88f751d252ab
3
+ metadata.gz: 09eecf69199095cddb034ce1c78dbff686b0a0b3
4
+ data.tar.gz: 10943dde994007419aad460e1ab166f2727a367d
5
5
  SHA512:
6
- metadata.gz: a603764cb18d8421eb9daa7746ab0bd404ed2dd582634195e1510e065e6bee5e72acabb24cc07f8346e4caf9146bf46529c9b434a181a9d9362c00e01fd2d17e
7
- data.tar.gz: 0aa869fc410dfc2e9a4a2e754e911e675c6ad334ff4da39ab83a740f1b21ed600620313a19723681e88d886bb7d998631118198063e76d056b93e78efea97448
6
+ metadata.gz: c045daeeb455464dec62521647d69f8f5d8ad7334a468aaf311ac3101bebc907b25c34d12ee07a740e914143970ac674e3c2738ff33633cbc582d73b9408be77
7
+ data.tar.gz: 5aff39b28dfab1b6f62a3525f8cd9022366d39cb51ec33528fa328608ca1470ce260942d362fdfe3aa4a370b8f77ca9066745dfb25701fb13ca02c60d325f532
data/Rakefile CHANGED
@@ -91,7 +91,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
91
91
  :name => "pango",
92
92
  :download_site => :gnome,
93
93
  :label => "Pango",
94
- :version => "1.40.5",
94
+ :version => "1.40.6",
95
95
  :compression_method => "xz",
96
96
  :windows => {
97
97
  :configure_args => [
data/ext/pango/pango.def CHANGED
@@ -1,2 +1,3 @@
1
1
  EXPORTS
2
2
  Init_pango
3
+ pango_attr_list_get_type
@@ -0,0 +1,60 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2017 Ruby-GNOME2 Project Team
4
+ *
5
+ * This library is free software; you can redistribute it and/or
6
+ * modify it under the terms of the GNU Lesser General Public
7
+ * License as published by the Free Software Foundation; either
8
+ * version 2.1 of the License, or (at your option) any later version.
9
+ *
10
+ * This library is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ * Lesser General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Lesser General Public
16
+ * License along with this library; if not, write to the Free Software
17
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
+ * MA 02110-1301 USA
19
+ */
20
+
21
+ #include "rb-pango-private.h"
22
+
23
+ #define RG_TARGET_NAMESPACE cAttrIterator
24
+ #define _SELF(self) (RVAL2PANGOATTRITERATOR(self))
25
+
26
+ G_DEFINE_BOXED_TYPE(PangoAttrIterator,
27
+ pango_attr_iterator,
28
+ pango_attr_iterator_copy,
29
+ pango_attr_iterator_destroy);
30
+
31
+ static VALUE
32
+ rg_attrs(VALUE self)
33
+ {
34
+ GSList *attrs;
35
+ GSList *node;
36
+ VALUE rb_attrs;
37
+
38
+ attrs = pango_attr_iterator_get_attrs(_SELF(self));
39
+ rb_attrs = rb_ary_new();
40
+ for (node = attrs; node; node = g_slist_next(node)) {
41
+ PangoAttribute *attr = node->data;
42
+ VALUE rb_attr;
43
+
44
+ rb_attr = rbpango_attribute_to_ruby(attr);
45
+ rb_ary_push(rb_attrs, rb_attr);
46
+ }
47
+ g_slist_free(attrs);
48
+
49
+ return rb_attrs;
50
+ }
51
+
52
+ void
53
+ rbpango_attr_iterator_init(VALUE mPango)
54
+ {
55
+ VALUE RG_TARGET_NAMESPACE;
56
+
57
+ RG_TARGET_NAMESPACE =
58
+ G_DEF_CLASS(PANGO_TYPE_ATTR_ITERATOR, "AttrIterator", mPango);
59
+ RG_DEF_METHOD(attrs, 0);
60
+ }
@@ -52,6 +52,15 @@ rg_insert_before(VALUE self, VALUE rb_attribute)
52
52
  return self;
53
53
  }
54
54
 
55
+ static VALUE
56
+ rg_iterator(VALUE self)
57
+ {
58
+ PangoAttrIterator *iterator;
59
+
60
+ iterator = pango_attr_list_get_iterator(RVAL2PANGOATTRLIST(self));
61
+ return PANGOATTRITERATOR2RVAL(iterator);
62
+ }
63
+
55
64
  void
56
65
  rbpango_attr_list_init(VALUE mPango)
57
66
  {
@@ -61,4 +70,5 @@ rbpango_attr_list_init(VALUE mPango)
61
70
 
62
71
  RG_DEF_METHOD(insert, 1);
63
72
  RG_DEF_METHOD(insert_before, 1);
73
+ RG_DEF_METHOD(iterator, 0);
64
74
  }
@@ -20,12 +20,150 @@
20
20
 
21
21
  #include "rb-pango-private.h"
22
22
 
23
+ VALUE
24
+ rbpango_attribute_to_ruby(PangoAttribute *attribute)
25
+ {
26
+ VALUE rb_attr_type;
27
+ ID id_to_class;
28
+ VALUE klass;
29
+
30
+ rb_attr_type = GENUM2RVAL(attribute->klass->type, PANGO_TYPE_ATTR_TYPE);
31
+ CONST_ID(id_to_class, "to_class");
32
+ klass = rb_funcall(rb_attr_type, id_to_class, 0);
33
+ return Data_Wrap_Struct(klass,
34
+ NULL,
35
+ pango_attribute_destroy,
36
+ pango_attribute_copy(attribute));
37
+ }
38
+
39
+ PangoAttribute *
40
+ rbpango_attribute_from_ruby(VALUE rb_attribute)
41
+ {
42
+ PangoAttribute *attribute;
43
+
44
+ Data_Get_Struct(rb_attribute, PangoAttribute, attribute);
45
+
46
+ return attribute;
47
+ }
48
+
23
49
  static VALUE
24
50
  rbpango_attribute_allocate(VALUE klass)
25
51
  {
26
52
  return Data_Wrap_Struct(klass, NULL, pango_attribute_destroy, 0);
27
53
  }
28
54
 
55
+ static VALUE
56
+ rbpango_attr_bool_get_value(VALUE self)
57
+ {
58
+ PangoAttribute *attribute;
59
+
60
+ attribute = rbpango_attribute_from_ruby(self);
61
+
62
+ return CBOOL2RVAL(((PangoAttrInt *)attribute)->value);
63
+ }
64
+
65
+ static VALUE
66
+ rbpango_attr_language_initialize(VALUE self, VALUE rb_language)
67
+ {
68
+ PangoLanguage *language;
69
+
70
+ language = RVAL2PANGOLANGUAGE(rb_language);
71
+ DATA_PTR(self) = pango_attr_language_new(language);
72
+
73
+ return Qnil;
74
+ }
75
+
76
+ static VALUE
77
+ rbpango_attr_family_initialize(VALUE self, VALUE rb_family)
78
+ {
79
+ DATA_PTR(self) = pango_attr_family_new(RVAL2CSTR(rb_family));
80
+
81
+ return Qnil;
82
+ }
83
+
84
+ static VALUE
85
+ rbpango_attr_style_initialize(VALUE self, VALUE rb_style)
86
+ {
87
+ DATA_PTR(self) = pango_attr_style_new(RVAL2PANGOSTYLE(rb_style));
88
+
89
+ return Qnil;
90
+ }
91
+
92
+ static VALUE
93
+ rbpango_attr_style_get_value(VALUE self)
94
+ {
95
+ PangoAttribute *attribute;
96
+
97
+ attribute = rbpango_attribute_from_ruby(self);
98
+
99
+ return PANGOSTYLE2RVAL(((PangoAttrInt *)attribute)->value);
100
+ }
101
+
102
+ static VALUE
103
+ rbpango_attr_weight_initialize(VALUE self, VALUE rb_weight)
104
+ {
105
+ DATA_PTR(self) = pango_attr_weight_new(RVAL2PANGOWEIGHT(rb_weight));
106
+
107
+ return Qnil;
108
+ }
109
+
110
+ static VALUE
111
+ rbpango_attr_weight_get_value(VALUE self)
112
+ {
113
+ PangoAttribute *attribute;
114
+
115
+ attribute = rbpango_attribute_from_ruby(self);
116
+
117
+ return PANGOWEIGHT2RVAL(((PangoAttrInt *)attribute)->value);
118
+ }
119
+
120
+ static VALUE
121
+ rbpango_attr_variant_initialize(VALUE self, VALUE rb_variant)
122
+ {
123
+ DATA_PTR(self) = pango_attr_variant_new(RVAL2PANGOVARIANT(rb_variant));
124
+
125
+ return Qnil;
126
+ }
127
+
128
+ static VALUE
129
+ rbpango_attr_variant_get_value(VALUE self)
130
+ {
131
+ PangoAttribute *attribute;
132
+
133
+ attribute = rbpango_attribute_from_ruby(self);
134
+
135
+ return PANGOVARIANT2RVAL(((PangoAttrInt *)attribute)->value);
136
+ }
137
+
138
+ static VALUE
139
+ rbpango_attr_stretch_initialize(VALUE self, VALUE rb_stretch)
140
+ {
141
+ DATA_PTR(self) = pango_attr_stretch_new(RVAL2PANGOSTRETCH(rb_stretch));
142
+
143
+ return Qnil;
144
+ }
145
+
146
+ static VALUE
147
+ rbpango_attr_stretch_get_value(VALUE self)
148
+ {
149
+ PangoAttribute *attribute;
150
+
151
+ attribute = rbpango_attribute_from_ruby(self);
152
+
153
+ return PANGOSTRETCH2RVAL(((PangoAttrInt *)attribute)->value);
154
+ }
155
+
156
+ static VALUE
157
+ rbpango_attr_size_initialize(VALUE self, VALUE rb_size)
158
+ {
159
+ gint size;
160
+
161
+ size = NUM2INT(rb_size);
162
+ DATA_PTR(self) = pango_attr_size_new(size);
163
+
164
+ return Qnil;
165
+ }
166
+
29
167
  static VALUE
30
168
  rbpango_attr_font_desc_initialize(VALUE self, VALUE rb_font_desc)
31
169
  {
@@ -48,20 +186,61 @@ rbpango_attr_font_desc_initialize(VALUE self, VALUE rb_font_desc)
48
186
  }
49
187
 
50
188
  static VALUE
51
- rbpango_attr_font_features_initialize(VALUE self, VALUE rb_font_features)
189
+ rbpango_attr_foregound_initialize(VALUE self,
190
+ VALUE rb_red,
191
+ VALUE rb_green,
192
+ VALUE rb_blue)
52
193
  {
53
- DATA_PTR(self) = pango_attr_font_features_new(RVAL2CSTR(rb_font_features));
194
+ DATA_PTR(self) = pango_attr_foreground_new(NUM2UINT(rb_red),
195
+ NUM2UINT(rb_green),
196
+ NUM2UINT(rb_blue));
54
197
 
55
198
  return Qnil;
56
199
  }
57
200
 
58
201
  static VALUE
59
- rbpango_attr_language_initialize(VALUE self, VALUE rb_language)
202
+ rbpango_attr_background_initialize(VALUE self,
203
+ VALUE rb_red,
204
+ VALUE rb_green,
205
+ VALUE rb_blue)
60
206
  {
61
- PangoLanguage *language;
207
+ DATA_PTR(self) = pango_attr_background_new(NUM2UINT(rb_red),
208
+ NUM2UINT(rb_green),
209
+ NUM2UINT(rb_blue));
62
210
 
63
- language = RVAL2PANGOLANGUAGE(rb_language);
64
- DATA_PTR(self) = pango_attr_language_new(language);
211
+ return Qnil;
212
+ }
213
+
214
+ static VALUE
215
+ rbpango_attr_underline_initialize(VALUE self, VALUE rb_underline)
216
+ {
217
+ DATA_PTR(self) = pango_attr_underline_new(RVAL2PANGOUNDERLINE(rb_underline));
218
+
219
+ return Qnil;
220
+ }
221
+
222
+ static VALUE
223
+ rbpango_attr_underline_get_value(VALUE self)
224
+ {
225
+ PangoAttribute *attribute;
226
+
227
+ attribute = rbpango_attribute_from_ruby(self);
228
+
229
+ return PANGOUNDERLINE2RVAL(((PangoAttrInt *)attribute)->value);
230
+ }
231
+
232
+ static VALUE
233
+ rbpango_attr_strikethrough_initialize(VALUE self, VALUE rb_strikethrough)
234
+ {
235
+ DATA_PTR(self) = pango_attr_strikethrough_new(RVAL2CBOOL(rb_strikethrough));
236
+
237
+ return Qnil;
238
+ }
239
+
240
+ static VALUE
241
+ rbpango_attr_rise_initialize(VALUE self, VALUE rb_rise)
242
+ {
243
+ DATA_PTR(self) = pango_attr_rise_new(NUM2INT(rb_rise));
65
244
 
66
245
  return Qnil;
67
246
  }
@@ -102,17 +281,126 @@ rbpango_attr_shape_get_data(VALUE self)
102
281
 
103
282
  Data_Get_Struct(self, PangoAttrShape, attr_shape);
104
283
  rb_data = (VALUE)(attr_shape->data);
105
- rb_p(rb_data);
106
284
  return rb_data;
107
285
  }
108
286
 
109
287
  static VALUE
110
- rbpango_attr_size_initialize(VALUE self, VALUE rb_size)
288
+ rbpango_attr_scale_initialize(VALUE self, VALUE rb_scale)
111
289
  {
112
- gint size;
290
+ DATA_PTR(self) = pango_attr_scale_new(NUM2DBL(rb_scale));
113
291
 
114
- size = NUM2INT(rb_size);
115
- DATA_PTR(self) = pango_attr_size_new(size);
292
+ return Qnil;
293
+ }
294
+
295
+ static VALUE
296
+ rbpango_attr_fallback_initialize(VALUE self, VALUE rb_enable_fallback)
297
+ {
298
+ DATA_PTR(self) = pango_attr_fallback_new(RVAL2CBOOL(rb_enable_fallback));
299
+
300
+ return Qnil;
301
+ }
302
+
303
+ static VALUE
304
+ rbpango_attr_letter_spacing_initialize(VALUE self, VALUE rb_letter_spacing)
305
+ {
306
+ DATA_PTR(self) = pango_attr_letter_spacing_new(NUM2INT(rb_letter_spacing));
307
+
308
+ return Qnil;
309
+ }
310
+
311
+ static VALUE
312
+ rbpango_attr_underline_color_initialize(VALUE self,
313
+ VALUE rb_red,
314
+ VALUE rb_green,
315
+ VALUE rb_blue)
316
+ {
317
+ DATA_PTR(self) = pango_attr_underline_color_new(NUM2UINT(rb_red),
318
+ NUM2UINT(rb_green),
319
+ NUM2UINT(rb_blue));
320
+
321
+ return Qnil;
322
+ }
323
+
324
+ static VALUE
325
+ rbpango_attr_strikethrough_color_initialize(VALUE self,
326
+ VALUE rb_red,
327
+ VALUE rb_green,
328
+ VALUE rb_blue)
329
+ {
330
+ DATA_PTR(self) = pango_attr_strikethrough_color_new(NUM2UINT(rb_red),
331
+ NUM2UINT(rb_green),
332
+ NUM2UINT(rb_blue));
333
+
334
+ return Qnil;
335
+ }
336
+
337
+ static VALUE
338
+ rbpango_attr_absolute_size_initialize(VALUE self, VALUE rb_absolute_size)
339
+ {
340
+ DATA_PTR(self) = pango_attr_size_new_absolute(NUM2INT(rb_absolute_size));
341
+
342
+ return Qnil;
343
+ }
344
+
345
+ static VALUE
346
+ rbpango_attr_gravity_initialize(VALUE self, VALUE rb_gravity)
347
+ {
348
+ DATA_PTR(self) = pango_attr_gravity_new(RVAL2PANGOGRAVITY(rb_gravity));
349
+
350
+ return Qnil;
351
+ }
352
+
353
+ static VALUE
354
+ rbpango_attr_gravity_get_value(VALUE self)
355
+ {
356
+ PangoAttribute *attribute;
357
+
358
+ attribute = rbpango_attribute_from_ruby(self);
359
+
360
+ return PANGOGRAVITY2RVAL(((PangoAttrInt *)attribute)->value);
361
+ }
362
+
363
+ static VALUE
364
+ rbpango_attr_gravity_hint_initialize(VALUE self, VALUE rb_gravity_hint)
365
+ {
366
+ PangoGravityHint hint;
367
+
368
+ hint = RVAL2PANGOGRAVITYHINT(rb_gravity_hint);
369
+ DATA_PTR(self) = pango_attr_gravity_hint_new(hint);
370
+
371
+ return Qnil;
372
+ }
373
+
374
+ static VALUE
375
+ rbpango_attr_gravity_hint_get_value(VALUE self)
376
+ {
377
+ PangoAttribute *attribute;
378
+
379
+ attribute = rbpango_attribute_from_ruby(self);
380
+
381
+ return PANGOGRAVITYHINT2RVAL(((PangoAttrInt *)attribute)->value);
382
+ }
383
+
384
+ static VALUE
385
+ rbpango_attr_font_features_initialize(VALUE self, VALUE rb_font_features)
386
+ {
387
+ DATA_PTR(self) = pango_attr_font_features_new(RVAL2CSTR(rb_font_features));
388
+
389
+ return Qnil;
390
+ }
391
+
392
+ static VALUE
393
+ rbpango_attr_foreground_alpha_initialize(VALUE self, VALUE rb_alpha)
394
+ {
395
+ DATA_PTR(self) = pango_attr_foreground_alpha_new(NUM2UINT(rb_alpha));
396
+
397
+ return Qnil;
398
+ }
399
+
400
+ static VALUE
401
+ rbpango_attr_background_alpha_initialize(VALUE self, VALUE rb_alpha)
402
+ {
403
+ DATA_PTR(self) = pango_attr_background_alpha_new(NUM2UINT(rb_alpha));
116
404
 
117
405
  return Qnil;
118
406
  }
@@ -121,45 +409,136 @@ void
121
409
  rbpango_attribute_init(VALUE mPango)
122
410
  {
123
411
  VALUE cAttribute;
412
+ VALUE cAttrString;
413
+ VALUE cAttrColor;
414
+ VALUE cAttrInt;
415
+ VALUE cAttrBool;
416
+ VALUE cAttrFloat;
417
+ VALUE cAttrLanguage;
418
+ VALUE cAttrFamily;
419
+ VALUE cAttrStyle;
420
+ VALUE cAttrWeight;
421
+ VALUE cAttrVariant;
422
+ VALUE cAttrStretch;
423
+ VALUE cAttrSize;
424
+ VALUE cAttrFontDesc;
425
+ VALUE cAttrForeground;
426
+ VALUE cAttrBackground;
427
+ VALUE cAttrUnderline;
428
+ VALUE cAttrStrikethrough;
429
+ VALUE cAttrRise;
430
+ VALUE cAttrShape;
431
+ VALUE cAttrScale;
432
+ VALUE cAttrFallback;
433
+ VALUE cAttrLetterSpacing;
434
+ VALUE cAttrUnderlineColor;
435
+ VALUE cAttrStrikethroughColor;
436
+ VALUE cAttrAbsoluteSize;
437
+ VALUE cAttrGravity;
438
+ VALUE cAttrGravityHint;
439
+ VALUE cAttrFontFeatures;
440
+ VALUE cAttrForegroundAlpha;
441
+ VALUE cAttrBackgroundAlpha;
124
442
 
125
443
  cAttribute = rb_define_class_under(mPango, "Attribute", rb_cData);
126
444
  rb_define_alloc_func(cAttribute, rbpango_attribute_allocate);
127
445
 
128
- #define DEFINE_ABSTRACT_ATTRIBUTE(ClassName) \
129
- do { \
130
- rb_define_class_under(mPango, \
131
- #ClassName, \
132
- cAttribute); \
446
+ #define DEFINE_ABSTRACT_ATTRIBUTE_BEGIN(ClassName, parent) do { \
447
+ c ## ClassName = rb_define_class_under(mPango, \
448
+ #ClassName, \
449
+ parent);
450
+
451
+ #define DEFINE_ABSTRACT_ATTRIBUTE_END() \
133
452
  } while (FALSE)
134
453
 
135
- #define DEFINE_ATTRIBUTE_BEGIN(ClassName, method_name, n_initialize_args) \
136
- VALUE c ## ClassName; \
454
+ #define DEFINE_ABSTRACT_ATTRIBUTE(ClassName, parent) \
455
+ DEFINE_ABSTRACT_ATTRIBUTE_BEGIN(ClassName, parent) { \
456
+ } DEFINE_ABSTRACT_ATTRIBUTE_END()
457
+
458
+ #define DEFINE_ATTRIBUTE_BEGIN(ClassName, \
459
+ parent, \
460
+ method_name, \
461
+ n_initialize_args) do { \
137
462
  c ## ClassName = rb_define_class_under(mPango, \
138
463
  #ClassName, \
139
- cAttribute); \
464
+ parent); \
140
465
  rb_define_method(c ## ClassName, "initialize", \
141
466
  rbpango_ ## method_name ## _initialize, \
142
467
  n_initialize_args); \
143
468
 
144
- #define DEFINE_ATTRIBUTE_END \
469
+ #define DEFINE_ATTRIBUTE_END() \
470
+ } while (FALSE)
471
+
472
+ #define DEFINE_ATTRIBUTE(ClassName, \
473
+ parent, \
474
+ method_name, \
475
+ n_initialize_args) \
476
+ DEFINE_ATTRIBUTE_BEGIN(ClassName, \
477
+ parent, \
478
+ method_name, \
479
+ n_initialize_args) { \
480
+ } DEFINE_ATTRIBUTE_END();
145
481
 
146
- #define DEFINE_ATTRIBUTE(ClassName, method_name, n_initialize_args) \
147
- DEFINE_ATTRIBUTE_BEGIN(ClassName, method_name, n_initialize_args) { \
148
- } DEFINE_ATTRIBUTE_END;
482
+ DEFINE_ABSTRACT_ATTRIBUTE(AttrString, cAttribute);
483
+ DEFINE_ABSTRACT_ATTRIBUTE(AttrColor, cAttribute);
484
+ DEFINE_ABSTRACT_ATTRIBUTE(AttrInt, cAttribute);
485
+ DEFINE_ABSTRACT_ATTRIBUTE_BEGIN(AttrBool, cAttrInt) {
486
+ rb_define_method(cAttrBool, "value", rbpango_attr_bool_get_value, 0);
487
+ } DEFINE_ABSTRACT_ATTRIBUTE_END();
488
+ DEFINE_ABSTRACT_ATTRIBUTE(AttrFloat, cAttribute);
149
489
 
150
- DEFINE_ABSTRACT_ATTRIBUTE(AttrBool);
151
- DEFINE_ABSTRACT_ATTRIBUTE(AttrColor);
152
- DEFINE_ABSTRACT_ATTRIBUTE(AttrFloat);
153
- DEFINE_ATTRIBUTE(AttrFontDesc, attr_font_desc, 1);
154
- DEFINE_ATTRIBUTE(AttrFontFeatures, attr_font_features, 1);
155
- DEFINE_ABSTRACT_ATTRIBUTE(AttrInt);
156
- DEFINE_ATTRIBUTE(AttrLanguage, attr_language, 1);
157
- DEFINE_ATTRIBUTE_BEGIN(AttrShape, attr_shape, -1) {
490
+ DEFINE_ATTRIBUTE(AttrLanguage, cAttribute, attr_language, 1);
491
+ DEFINE_ATTRIBUTE(AttrFamily, cAttrString, attr_family, 1);
492
+ DEFINE_ATTRIBUTE_BEGIN(AttrStyle, cAttrInt, attr_style, 1) {
493
+ rb_define_method(cAttrStyle, "value", rbpango_attr_style_get_value, 0);
494
+ } DEFINE_ATTRIBUTE_END();
495
+ DEFINE_ATTRIBUTE_BEGIN(AttrWeight, cAttrInt, attr_weight, 1) {
496
+ rb_define_method(cAttrWeight, "value", rbpango_attr_weight_get_value, 0);
497
+ } DEFINE_ATTRIBUTE_END();
498
+ DEFINE_ATTRIBUTE_BEGIN(AttrVariant, cAttrInt, attr_variant, 1) {
499
+ rb_define_method(cAttrVariant,
500
+ "value", rbpango_attr_variant_get_value, 0);
501
+ } DEFINE_ATTRIBUTE_END();
502
+ DEFINE_ATTRIBUTE_BEGIN(AttrStretch, cAttrInt, attr_stretch, 1) {
503
+ rb_define_method(cAttrStretch,
504
+ "value", rbpango_attr_stretch_get_value, 0);
505
+ } DEFINE_ATTRIBUTE_END();
506
+ DEFINE_ATTRIBUTE(AttrSize, cAttribute, attr_size, 1);
507
+ DEFINE_ATTRIBUTE(AttrFontDesc, cAttribute, attr_font_desc, 1);
508
+ DEFINE_ATTRIBUTE(AttrForeground, cAttrColor, attr_foregound, 3);
509
+ DEFINE_ATTRIBUTE(AttrBackground, cAttrColor, attr_background, 3);
510
+ DEFINE_ATTRIBUTE_BEGIN(AttrUnderline, cAttrInt, attr_underline, 1) {
511
+ rb_define_method(cAttrUnderline,
512
+ "value", rbpango_attr_underline_get_value, 0);
513
+ } DEFINE_ATTRIBUTE_END();
514
+ DEFINE_ATTRIBUTE(AttrStrikethrough, cAttrBool, attr_strikethrough, 1);
515
+ DEFINE_ATTRIBUTE(AttrRise, cAttrInt, attr_rise, 1);
516
+ DEFINE_ATTRIBUTE_BEGIN(AttrShape, cAttribute, attr_shape, -1) {
158
517
  rb_define_method(cAttrShape, "data", rbpango_attr_shape_get_data, 0);
159
- } DEFINE_ATTRIBUTE_END;
160
- DEFINE_ATTRIBUTE(AttrSize, attr_size, 1);
161
- DEFINE_ABSTRACT_ATTRIBUTE(AttrString);
518
+ } DEFINE_ATTRIBUTE_END();
519
+ DEFINE_ATTRIBUTE(AttrScale, cAttrFloat, attr_scale, 1);
520
+ DEFINE_ATTRIBUTE(AttrFallback, cAttrBool, attr_fallback, 1);
521
+ DEFINE_ATTRIBUTE(AttrLetterSpacing, cAttrInt, attr_letter_spacing, 1);
522
+ DEFINE_ATTRIBUTE(AttrUnderlineColor, cAttrColor, attr_underline_color, 3);
523
+ DEFINE_ATTRIBUTE(AttrStrikethroughColor, cAttrColor,
524
+ attr_strikethrough_color, 3);
525
+ DEFINE_ATTRIBUTE(AttrAbsoluteSize, cAttrSize, attr_absolute_size, 1);
526
+ DEFINE_ATTRIBUTE_BEGIN(AttrGravity, cAttrInt, attr_gravity, 1) {
527
+ rb_define_method(cAttrGravity,
528
+ "value", rbpango_attr_gravity_get_value, 0);
529
+ } DEFINE_ATTRIBUTE_END();
530
+ DEFINE_ATTRIBUTE_BEGIN(AttrGravityHint, cAttrInt, attr_gravity_hint, 1) {
531
+ rb_define_method(cAttrGravityHint,
532
+ "value", rbpango_attr_gravity_hint_get_value, 0);
533
+ } DEFINE_ATTRIBUTE_END();
534
+ DEFINE_ATTRIBUTE(AttrFontFeatures, cAttrString, attr_font_features, 1);
535
+ DEFINE_ATTRIBUTE(AttrForegroundAlpha, cAttrInt, attr_foreground_alpha, 1);
536
+ DEFINE_ATTRIBUTE(AttrBackgroundAlpha, cAttrInt, attr_background_alpha, 1);
162
537
 
163
538
  #undef DEFINE_ABSTRACT_ATTRIBUTE
539
+ #undef DEFINE_ABSTRACT_ATTRIBUTE_BEGIN
540
+ #undef DEFINE_ABSTRACT_ATTRIBUTE_END
164
541
  #undef DEFINE_ATTRIBUTE
542
+ #undef DEFINE_ATTRIBUTE_BEGIN
543
+ #undef DEFINE_ATTRIBUTE_END
165
544
  }