pango 1.0.3-x86-mingw32 → 1.1.0-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 (140) hide show
  1. data/ext/pango/extconf.rb +3 -0
  2. data/ext/pango/rbpango.c +312 -12
  3. data/ext/pango/rbpango.h +33 -22
  4. data/ext/pango/rbpangoanalysis.c +98 -58
  5. data/ext/pango/rbpangoattribute.c +94 -85
  6. data/ext/pango/rbpangoattriterator.c +39 -28
  7. data/ext/pango/rbpangoattrlist.c +42 -32
  8. data/ext/pango/rbpangocairo.c +38 -172
  9. data/ext/pango/rbpangocairocontext.c +151 -0
  10. data/ext/pango/rbpangocolor.c +49 -38
  11. data/ext/pango/rbpangocontext.c +109 -102
  12. data/ext/pango/rbpangoconversions.h +111 -0
  13. data/ext/pango/rbpangocoverage.c +45 -37
  14. data/ext/pango/rbpangoengine.c +22 -12
  15. data/ext/pango/rbpangofont.c +52 -43
  16. data/ext/pango/rbpangofontdescription.c +102 -91
  17. data/ext/pango/rbpangofontface.c +32 -21
  18. data/ext/pango/rbpangofontfamily.c +31 -20
  19. data/ext/pango/rbpangofontmap.c +44 -36
  20. data/ext/pango/rbpangofontmetrics.c +41 -30
  21. data/ext/pango/rbpangofontset.c +32 -21
  22. data/ext/pango/rbpangofontsetsimple.c +34 -24
  23. data/ext/pango/rbpangoglyphinfo.c +48 -35
  24. data/ext/pango/rbpangoglyphitem.c +43 -33
  25. data/ext/pango/rbpangoglyphstring.c +59 -59
  26. data/ext/pango/rbpangogravity.c +34 -23
  27. data/ext/pango/rbpangoitem.c +43 -34
  28. data/ext/pango/rbpangolanguage.c +44 -34
  29. data/ext/pango/rbpangolayout.c +167 -160
  30. data/ext/pango/rbpangolayoutiter.c +70 -59
  31. data/ext/pango/rbpangolayoutline.c +106 -71
  32. data/ext/pango/rbpangologattr.c +42 -31
  33. data/ext/pango/rbpangomatrix.c +47 -35
  34. data/ext/pango/rbpangoprivate.h +53 -0
  35. data/ext/pango/rbpangorectangle.c +58 -49
  36. data/ext/pango/rbpangorenderer.c +81 -70
  37. data/ext/pango/rbpangoscript.c +37 -27
  38. data/ext/pango/rbpangoscriptiter.c +32 -22
  39. data/ext/pango/rbpangotabarray.c +48 -37
  40. data/lib/1.8/pango.so +0 -0
  41. data/lib/1.9/pango.so +0 -0
  42. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  43. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  44. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  45. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  46. data/vendor/local/bin/pango-querymodules.exe +0 -0
  47. data/vendor/local/bin/pango-view.exe +0 -0
  48. data/vendor/local/etc/pango/pango.modules +1 -1
  49. data/vendor/local/include/pango-1.0/pango/pango-attributes.h +1 -1
  50. data/vendor/local/include/pango-1.0/pango/pango-context.h +3 -3
  51. data/vendor/local/include/pango-1.0/pango/pango-features.h +3 -3
  52. data/vendor/local/include/pango-1.0/pango/pango-font.h +3 -3
  53. data/vendor/local/include/pango-1.0/pango/pango-language.h +3 -3
  54. data/vendor/local/include/pango-1.0/pango/pango-layout.h +6 -1
  55. data/vendor/local/include/pango-1.0/pango/pango-renderer.h +1 -1
  56. data/vendor/local/include/pango-1.0/pango/pango-script.h +6 -6
  57. data/vendor/local/include/pango-1.0/pango/pango-utils.h +6 -6
  58. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  59. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  60. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  61. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  62. data/vendor/local/lib/pango-1.0.def +2 -0
  63. data/vendor/local/lib/pango-1.0.lib +0 -0
  64. data/vendor/local/lib/pangocairo-1.0.lib +0 -0
  65. data/vendor/local/lib/pangoft2-1.0.lib +0 -0
  66. data/vendor/local/lib/pangowin32-1.0.def +1 -1
  67. data/vendor/local/lib/pangowin32-1.0.lib +0 -0
  68. data/vendor/local/lib/pkgconfig/pango.pc +1 -1
  69. data/vendor/local/lib/pkgconfig/pangocairo.pc +1 -1
  70. data/vendor/local/lib/pkgconfig/pangoft2.pc +1 -1
  71. data/vendor/local/lib/pkgconfig/pangowin32.pc +1 -1
  72. data/vendor/local/manifest/{pango-dev_1.28.3-1_win32.mft → pango-dev_1.29.4-1_win32.mft} +5 -5
  73. data/vendor/local/manifest/{pango_1.28.3-1_win32.mft → pango_1.29.4-1_win32.mft} +2 -2
  74. data/vendor/local/share/doc/{pango-1.28.3 → pango-1.29.4}/COPYING +0 -0
  75. data/vendor/local/share/doc/{pango-dev-1.28.3 → pango-dev-1.29.4}/COPYING +0 -0
  76. data/vendor/local/share/gtk-doc/html/pango/PangoEngineLang.html +9 -10
  77. data/vendor/local/share/gtk-doc/html/pango/PangoEngineShape.html +25 -27
  78. data/vendor/local/share/gtk-doc/html/pango/PangoFcDecoder.html +19 -28
  79. data/vendor/local/share/gtk-doc/html/pango/PangoFcFont.html +42 -60
  80. data/vendor/local/share/gtk-doc/html/pango/PangoFcFontMap.html +97 -147
  81. data/vendor/local/share/gtk-doc/html/pango/PangoMarkupFormat.html +6 -6
  82. data/vendor/local/share/gtk-doc/html/pango/index-1.10.html +3 -3
  83. data/vendor/local/share/gtk-doc/html/pango/index-1.12.html +3 -3
  84. data/vendor/local/share/gtk-doc/html/pango/index-1.14.html +3 -3
  85. data/vendor/local/share/gtk-doc/html/pango/index-1.16.html +5 -5
  86. data/vendor/local/share/gtk-doc/html/pango/index-1.18.html +3 -5
  87. data/vendor/local/share/gtk-doc/html/pango/index-1.2.html +3 -3
  88. data/vendor/local/share/gtk-doc/html/pango/index-1.20.html +3 -3
  89. data/vendor/local/share/gtk-doc/html/pango/index-1.22.html +5 -5
  90. data/vendor/local/share/gtk-doc/html/pango/index-1.24.html +3 -3
  91. data/vendor/local/share/gtk-doc/html/pango/index-1.26.html +4 -4
  92. data/vendor/local/share/gtk-doc/html/pango/index-1.28.html +8 -11
  93. data/vendor/local/share/gtk-doc/html/pango/index-1.30.html +38 -0
  94. data/vendor/local/share/gtk-doc/html/pango/index-1.4.html +3 -3
  95. data/vendor/local/share/gtk-doc/html/pango/index-1.6.html +4 -4
  96. data/vendor/local/share/gtk-doc/html/pango/index-1.8.html +4 -4
  97. data/vendor/local/share/gtk-doc/html/pango/index-all.html +38 -40
  98. data/vendor/local/share/gtk-doc/html/pango/index-deprecated.html +3 -3
  99. data/vendor/local/share/gtk-doc/html/pango/index.html +6 -5
  100. data/vendor/local/share/gtk-doc/html/pango/index.sgml +71 -34
  101. data/vendor/local/share/gtk-doc/html/pango/lowlevel.html +3 -3
  102. data/vendor/local/share/gtk-doc/html/pango/pango-ATSUI-Fonts.html +4 -66
  103. data/vendor/local/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +52 -50
  104. data/vendor/local/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +217 -278
  105. data/vendor/local/share/gtk-doc/html/pango/pango-Coverage-Maps.html +40 -41
  106. data/vendor/local/share/gtk-doc/html/pango/pango-Engines.html +37 -49
  107. data/vendor/local/share/gtk-doc/html/pango/pango-Fonts.html +481 -628
  108. data/vendor/local/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +76 -118
  109. data/vendor/local/share/gtk-doc/html/pango/pango-Glyph-Storage.html +302 -452
  110. data/vendor/local/share/gtk-doc/html/pango/pango-Layout-Objects.html +492 -517
  111. data/vendor/local/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +134 -164
  112. data/vendor/local/share/gtk-doc/html/pango/pango-Modules.html +34 -45
  113. data/vendor/local/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +244 -359
  114. data/vendor/local/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +117 -122
  115. data/vendor/local/share/gtk-doc/html/pango/pango-Tab-Stops.html +112 -120
  116. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Attributes.html +394 -523
  117. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Processing.html +269 -364
  118. data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +26 -40
  119. data/vendor/local/share/gtk-doc/html/pango/pango-Vertical-Text.html +72 -75
  120. data/vendor/local/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +97 -145
  121. data/vendor/local/share/gtk-doc/html/pango/pango-X-Fonts-and-Rendering.html +114 -188
  122. data/vendor/local/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +114 -176
  123. data/vendor/local/share/gtk-doc/html/pango/pango-hierarchy.html +42 -8
  124. data/vendor/local/share/gtk-doc/html/pango/pango-pango-renderer.html +106 -150
  125. data/vendor/local/share/gtk-doc/html/pango/pango-querymodules.html +3 -3
  126. data/vendor/local/share/gtk-doc/html/pango/pango.devhelp2 +35 -35
  127. data/vendor/local/share/gtk-doc/html/pango/pango.html +3 -3
  128. data/vendor/local/share/gtk-doc/html/pango/rendering.html +3 -3
  129. data/vendor/local/share/gtk-doc/html/pango/style.css +2 -1
  130. data/vendor/local/share/gtk-doc/html/pango/tools.html +3 -3
  131. data/vendor/local/share/man/man1/pango-querymodules.1 +12 -3
  132. data/vendor/local/share/man/man1/pango-view.1 +2 -2
  133. data/vendor/local/src/dieterv/packaging/pango_1.29.4-1_win32.log +806 -0
  134. data/vendor/local/src/{tml/packaging/pango_1.28.3-1_win32.sh → dieterv/packaging/pango_1.29.4-1_win32.sh} +7 -7
  135. metadata +19 -19
  136. data/ChangeLog +0 -721
  137. data/ext/pango/rbpangoinits.c +0 -72
  138. data/ext/pango/rbpangomain.c +0 -202
  139. data/vendor/local/share/gtk-doc/html/pango/pango.devhelp +0 -799
  140. data/vendor/local/src/tml/packaging/pango_1.28.3-1_win32.log +0 -950
@@ -1,17 +1,28 @@
1
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))
2
+ /*
3
+ * Copyright (C) 2011 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
+ #define RG_TARGET_NAMESPACE cLayoutIter
25
+ #define _SELF(r) (RVAL2PANGOLAYOUTITER(r))
15
26
 
16
27
  /**********************************/
17
28
  #ifndef HAVE_PANGO_LAYOUT_ITER_GET_TYPE
@@ -36,93 +47,93 @@ pango_layout_iter_get_type(void)
36
47
  /**********************************/
37
48
 
38
49
  static VALUE
39
- layout_iter_next_run(VALUE self)
50
+ rg_next_run_bang(VALUE self)
40
51
  {
41
52
  return CBOOL2RVAL(pango_layout_iter_next_run(_SELF(self)));
42
53
  }
43
54
 
44
55
  static VALUE
45
- layout_iter_next_char(VALUE self)
56
+ rg_next_char_bang(VALUE self)
46
57
  {
47
58
  return CBOOL2RVAL(pango_layout_iter_next_char(_SELF(self)));
48
59
  }
49
60
 
50
61
  static VALUE
51
- layout_iter_next_cluster(VALUE self)
62
+ rg_next_cluster_bang(VALUE self)
52
63
  {
53
64
  return CBOOL2RVAL(pango_layout_iter_next_cluster(_SELF(self)));
54
65
  }
55
66
 
56
67
  static VALUE
57
- layout_iter_next_line(VALUE self)
68
+ rg_next_line_bang(VALUE self)
58
69
  {
59
70
  return CBOOL2RVAL(pango_layout_iter_next_line(_SELF(self)));
60
71
  }
61
72
 
62
73
  static VALUE
63
- layout_iter_at_last_line(VALUE self)
74
+ rg_at_last_line_p(VALUE self)
64
75
  {
65
76
  return CBOOL2RVAL(pango_layout_iter_at_last_line(_SELF(self)));
66
77
  }
67
78
 
68
79
  static VALUE
69
- layout_iter_get_index(VALUE self)
80
+ rg_index(VALUE self)
70
81
  {
71
82
  return INT2NUM(pango_layout_iter_get_index(_SELF(self)));
72
83
  }
73
84
 
74
85
  static VALUE
75
- layout_iter_get_baseline(VALUE self)
86
+ rg_baseline(VALUE self)
76
87
  {
77
88
  return INT2NUM(pango_layout_iter_get_baseline(_SELF(self)));
78
89
  }
79
90
 
80
91
  static VALUE
81
- layout_iter_get_run(VALUE self)
92
+ rg_run(VALUE self)
82
93
  {
83
94
  PangoLayoutRun* run = pango_layout_iter_get_run(_SELF(self));
84
- return BOXED2RVAL(run, PANGO_TYPE_GLYPH_ITEM);
95
+ return PANGOGLYPHITEM2RVAL(run);
85
96
  }
86
97
 
87
98
  static VALUE
88
- layout_iter_get_line(VALUE self)
99
+ rg_line(VALUE self)
89
100
  {
90
- return BOXED2RVAL(pango_layout_iter_get_line(_SELF(self)), PANGO_TYPE_LAYOUT_LINE);
101
+ return PANGOLAYOUTLINE2RVAL(pango_layout_iter_get_line(_SELF(self)));
91
102
  }
92
103
 
93
104
  static VALUE
94
- layout_iter_get_char_extents(VALUE self)
105
+ rg_char_extents(VALUE self)
95
106
  {
96
107
  PangoRectangle logical_rect;
97
-
108
+
98
109
  pango_layout_iter_get_char_extents(_SELF(self), &logical_rect);
99
- return BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE);
110
+ return PANGORECTANGLE2RVAL(&logical_rect);
100
111
  }
101
112
 
102
113
  static VALUE
103
- layout_iter_get_cluster_extents(VALUE self)
114
+ rg_cluster_extents(VALUE self)
104
115
  {
105
116
  PangoRectangle ink_rect, logical_rect;
106
117
 
107
118
  pango_layout_iter_get_cluster_extents(_SELF(self), &ink_rect, &logical_rect);
108
119
 
109
- return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
110
- BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
120
+ return rb_assoc_new(PANGORECTANGLE2RVAL(&ink_rect),
121
+ PANGORECTANGLE2RVAL(&logical_rect));
111
122
  }
112
123
 
113
124
  static VALUE
114
- layout_iter_get_run_extents(VALUE self)
125
+ rg_run_extents(VALUE self)
115
126
  {
116
127
  PangoRectangle ink_rect, logical_rect;
117
128
 
118
129
  pango_layout_iter_get_run_extents(_SELF(self), &ink_rect, &logical_rect);
119
130
 
120
- return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
121
- BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
131
+ return rb_assoc_new(PANGORECTANGLE2RVAL(&ink_rect),
132
+ PANGORECTANGLE2RVAL(&logical_rect));
122
133
  }
123
134
 
124
135
  static VALUE
125
- layout_iter_get_line_yrange(VALUE self)
136
+ rg_line_yrange(VALUE self)
126
137
  {
127
138
  int y0, y1;
128
139
  pango_layout_iter_get_line_yrange(_SELF(self), &y0, &y1);
@@ -130,49 +141,49 @@ layout_iter_get_line_yrange(VALUE self)
130
141
  }
131
142
 
132
143
  static VALUE
133
- layout_iter_get_line_extents(VALUE self)
144
+ rg_line_extents(VALUE self)
134
145
  {
135
146
  PangoRectangle ink_rect, logical_rect;
136
147
 
137
148
  pango_layout_iter_get_line_extents(_SELF(self), &ink_rect, &logical_rect);
138
149
 
139
- return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
140
- BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
150
+ return rb_assoc_new(PANGORECTANGLE2RVAL(&ink_rect),
151
+ PANGORECTANGLE2RVAL(&logical_rect));
141
152
  }
142
153
  static VALUE
143
- layout_iter_get_layout_extents(VALUE self)
154
+ rg_layout_extents(VALUE self)
144
155
  {
145
156
  PangoRectangle ink_rect, logical_rect;
146
157
 
147
158
  pango_layout_iter_get_layout_extents(_SELF(self), &ink_rect, &logical_rect);
148
159
 
149
- return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
150
- BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
160
+ return rb_assoc_new(PANGORECTANGLE2RVAL(&ink_rect),
161
+ PANGORECTANGLE2RVAL(&logical_rect));
151
162
  }
152
163
 
153
164
  void
154
- Init_pango_layout_iter()
165
+ Init_pango_layout_iter(VALUE mPango)
155
166
  {
156
- VALUE pIter = G_DEF_CLASS(PANGO_TYPE_LAYOUT_ITER, "LayoutIter", mPango);
167
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_LAYOUT_ITER, "LayoutIter", mPango);
157
168
 
158
169
  rbgobj_boxed_not_copy_obj(PANGO_TYPE_LAYOUT_ITER);
159
170
 
160
- rb_define_method(pIter, "next_run!", layout_iter_next_run, 0);
161
- rb_define_method(pIter, "next_char!", layout_iter_next_char, 0);
162
- rb_define_method(pIter, "next_cluster!", layout_iter_next_cluster, 0);
163
- rb_define_method(pIter, "next_line!", layout_iter_next_line, 0);
164
- rb_define_method(pIter, "at_last_line?", layout_iter_at_last_line, 0);
171
+ RG_DEF_METHOD_BANG(next_run, 0);
172
+ RG_DEF_METHOD_BANG(next_char, 0);
173
+ RG_DEF_METHOD_BANG(next_cluster, 0);
174
+ RG_DEF_METHOD_BANG(next_line, 0);
175
+ RG_DEF_METHOD_P(at_last_line, 0);
165
176
  /* for backword compatibility. :< */
166
- rb_define_alias(pIter, "at_last_line!", "at_last_line?");
167
- rb_define_method(pIter, "index", layout_iter_get_index, 0);
168
- rb_define_method(pIter, "baseline", layout_iter_get_baseline, 0);
169
- rb_define_method(pIter, "run", layout_iter_get_run, 0);
170
- rb_define_method(pIter, "line", layout_iter_get_line, 0);
171
- rb_define_method(pIter, "char_extents", layout_iter_get_char_extents, 0);
172
- rb_define_method(pIter, "cluster_extents", layout_iter_get_cluster_extents, 0);
173
- rb_define_method(pIter, "run_extents", layout_iter_get_run_extents, 0);
174
- rb_define_method(pIter, "line_yrange", layout_iter_get_line_yrange, 0);
175
- rb_define_method(pIter, "line_extents", layout_iter_get_line_extents, 0);
176
- rb_define_method(pIter, "layout_extents", layout_iter_get_layout_extents, 0);
177
-
177
+ RG_DEF_ALIAS("at_last_line!", "at_last_line?");
178
+ RG_DEF_METHOD(index, 0);
179
+ RG_DEF_METHOD(baseline, 0);
180
+ RG_DEF_METHOD(run, 0);
181
+ RG_DEF_METHOD(line, 0);
182
+ RG_DEF_METHOD(char_extents, 0);
183
+ RG_DEF_METHOD(cluster_extents, 0);
184
+ RG_DEF_METHOD(run_extents, 0);
185
+ RG_DEF_METHOD(line_yrange, 0);
186
+ RG_DEF_METHOD(line_extents, 0);
187
+ RG_DEF_METHOD(layout_extents, 0);
188
+
178
189
  }
@@ -1,18 +1,28 @@
1
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))
2
+ /*
3
+ * Copyright (C) 2011 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
+ #define RG_TARGET_NAMESPACE cLayoutLine
25
+ #define _SELF(r) (RVAL2PANGOLAYOUTLINE(r))
16
26
 
17
27
  /**********************************/
18
28
  #if !PANGO_CHECK_VERSION(1,9,0)
@@ -39,29 +49,29 @@ pango_layout_line_get_type(void)
39
49
  /**********************************/
40
50
 
41
51
  static VALUE
42
- layout_line_get_extents(VALUE self)
52
+ rg_extents(VALUE self)
43
53
  {
44
54
  PangoRectangle ink_rect, logical_rect;
45
55
 
46
56
  pango_layout_line_get_extents(_SELF(self), &ink_rect, &logical_rect);
47
57
 
48
- return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
49
- BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
58
+ return rb_assoc_new(PANGORECTANGLE2RVAL(&ink_rect),
59
+ PANGORECTANGLE2RVAL(&logical_rect));
50
60
  }
51
61
 
52
62
  static VALUE
53
- layout_line_get_pixel_extents(VALUE self)
63
+ rg_pixel_extents(VALUE self)
54
64
  {
55
65
  PangoRectangle ink_rect, logical_rect;
56
66
 
57
67
  pango_layout_line_get_pixel_extents(_SELF(self), &ink_rect, &logical_rect);
58
68
 
59
- return rb_assoc_new(BOXED2RVAL(&ink_rect, PANGO_TYPE_RECTANGLE),
60
- BOXED2RVAL(&logical_rect, PANGO_TYPE_RECTANGLE));
69
+ return rb_assoc_new(PANGORECTANGLE2RVAL(&ink_rect),
70
+ PANGORECTANGLE2RVAL(&logical_rect));
61
71
  }
62
72
 
63
73
  static VALUE
64
- layout_line_index_to_x(VALUE self, VALUE index, VALUE trailing)
74
+ rg_index_to_x(VALUE self, VALUE index, VALUE trailing)
65
75
  {
66
76
  int x_pos;
67
77
  pango_layout_line_index_to_x(_SELF(self), NUM2INT(index),
@@ -70,17 +80,17 @@ layout_line_index_to_x(VALUE self, VALUE index, VALUE trailing)
70
80
  }
71
81
 
72
82
  static VALUE
73
- layout_line_x_to_index(VALUE self, VALUE x_pos)
83
+ rg_x_to_index(VALUE self, VALUE x_pos)
74
84
  {
75
85
  int index, trailing;
76
-
86
+
77
87
  gboolean ret = pango_layout_line_x_to_index(_SELF(self), NUM2INT(x_pos),
78
88
  &index, &trailing);
79
89
  return rb_ary_new3(CBOOL2RVAL(ret), INT2NUM(index), INT2NUM(trailing));
80
90
  }
81
91
 
82
92
  static VALUE
83
- layout_line_get_x_ranges(VALUE self, VALUE start_index, VALUE end_index)
93
+ rg_get_x_ranges(VALUE self, VALUE start_index, VALUE end_index)
84
94
  {
85
95
  int* ranges;
86
96
  int i, n_ranges;
@@ -100,39 +110,39 @@ layout_line_get_x_ranges(VALUE self, VALUE start_index, VALUE end_index)
100
110
 
101
111
  /* Structure members */
102
112
  static VALUE
103
- layout_line_get_layout(VALUE self)
113
+ rg_layout(VALUE self)
104
114
  {
105
115
  return GOBJ2RVAL(_SELF(self)->layout);
106
116
  }
107
117
 
108
118
  static VALUE
109
- layout_line_set_layout(VALUE self, VALUE val)
119
+ rg_set_layout(VALUE self, VALUE val)
110
120
  {
111
- _SELF(self)->layout = PANGO_LAYOUT(RVAL2GOBJ(val));
121
+ _SELF(self)->layout = RVAL2PANGOLAYOUT(val);
112
122
  return self;
113
123
  }
114
124
 
115
125
  static VALUE
116
- layout_line_get_start_index(VALUE self)
126
+ rg_start_index(VALUE self)
117
127
  {
118
128
  return INT2NUM(_SELF(self)->start_index);
119
129
  }
120
130
 
121
131
  static VALUE
122
- layout_line_set_start_index(VALUE self, VALUE val)
132
+ rg_set_start_index(VALUE self, VALUE val)
123
133
  {
124
134
  _SELF(self)->start_index = NUM2INT(val);
125
135
  return self;
126
136
  }
127
137
 
128
138
  static VALUE
129
- layout_line_get_length(VALUE self)
139
+ rg_length(VALUE self)
130
140
  {
131
141
  return INT2NUM(_SELF(self)->length);
132
142
  }
133
143
 
134
144
  static VALUE
135
- layout_line_set_length(VALUE self, VALUE val)
145
+ rg_set_length(VALUE self, VALUE val)
136
146
  {
137
147
  _SELF(self)->length = NUM2INT(val);
138
148
  return self;
@@ -140,7 +150,7 @@ layout_line_set_length(VALUE self, VALUE val)
140
150
 
141
151
  #if PANGO_CHECK_VERSION(1,2,0)
142
152
  static VALUE
143
- layout_line_get_runs(VALUE self)
153
+ rg_runs(VALUE self)
144
154
  {
145
155
  GSList* list = _SELF(self)->runs;
146
156
  VALUE ary = rb_ary_new();
@@ -151,56 +161,81 @@ layout_line_get_runs(VALUE self)
151
161
  new_item.item = pango_item_copy(old_item->item);
152
162
  new_item.glyphs = pango_glyph_string_copy(old_item->glyphs);
153
163
 
154
- rb_ary_push(ary, BOXED2RVAL(&new_item, PANGO_TYPE_GLYPH_ITEM));
164
+ rb_ary_push(ary, PANGOGLYPHITEM2RVAL(&new_item));
155
165
  list = list->next;
156
166
  }
157
167
  return ary;
158
168
  }
159
169
  #endif
160
170
 
171
+ struct layout_line_set_runs_args {
172
+ PangoLayoutLine *line;
173
+ VALUE ary;
174
+ long n;
175
+ GSList *result;
176
+ };
177
+
161
178
  static VALUE
162
- layout_line_set_runs(VALUE self, VALUE ary)
179
+ layout_line_set_runs_body(VALUE value)
163
180
  {
164
- int i, len;
165
- GSList* list = NULL;
181
+ struct layout_line_set_runs_args *args = (struct layout_line_set_runs_args *)value;
182
+ long i;
166
183
 
167
- len = RARRAY_LEN(ary);
184
+ for (i = 0; i < args->n; i++)
185
+ args->result = g_slist_append(args->result,
186
+ RVAL2PANGOGLYPHITEM(RARRAY_PTR(args->ary)[i]));
168
187
 
169
- for (i = 0; i < len; i++) {
170
- list = g_slist_append(list, RVAL2BOXED(RARRAY_PTR(ary)[i],
171
- PANGO_TYPE_GLYPH_ITEM));
172
- }
188
+ g_slist_free(args->line->runs);
189
+ args->line->runs = args->result;
173
190
 
174
- if (_SELF(self)->runs) {
175
- g_slist_free(_SELF(self)->runs);
176
- }
177
- _SELF(self)->runs = list;
191
+ return Qnil;
192
+ }
193
+
194
+ static G_GNUC_NORETURN VALUE
195
+ layout_line_set_runs_rescue(VALUE value)
196
+ {
197
+ g_slist_free(((struct layout_line_set_runs_args *)value)->result);
198
+
199
+ rb_exc_raise(rb_errinfo());
200
+ }
201
+
202
+ static VALUE
203
+ rg_set_runs(VALUE self, VALUE attrs)
204
+ {
205
+ struct layout_line_set_runs_args args;
206
+ args.line = _SELF(self);
207
+ args.ary = rb_ary_to_ary(attrs);
208
+ args.n = RARRAY_LEN(args.ary);
209
+ args.result = NULL;
210
+
211
+ rb_rescue(layout_line_set_runs_body, (VALUE)&args,
212
+ layout_line_set_runs_rescue, (VALUE)&args);
178
213
 
179
214
  return self;
180
215
  }
181
216
 
182
217
  #if PANGO_CHECK_VERSION(1,4,0)
183
218
  static VALUE
184
- layout_line_is_paragraph_start(VALUE self)
219
+ rg_paragraph_start_p(VALUE self)
185
220
  {
186
221
  return CBOOL2RVAL(_SELF(self)->is_paragraph_start);
187
222
  }
188
223
 
189
224
  static VALUE
190
- layout_line_set_paragraph_start(VALUE self, VALUE val)
225
+ rg_set_paragraph_start(VALUE self, VALUE val)
191
226
  {
192
227
  _SELF(self)->is_paragraph_start = RVAL2CBOOL(val);
193
228
  return self;
194
229
  }
195
230
 
196
231
  static VALUE
197
- layout_line_get_resolved_dir(VALUE self)
232
+ rg_resolved_dir(VALUE self)
198
233
  {
199
234
  return UINT2NUM(_SELF(self)->resolved_dir);
200
235
  }
201
236
 
202
237
  static VALUE
203
- layout_line_set_resolved_dir(VALUE self, VALUE val)
238
+ rg_set_resolved_dir(VALUE self, VALUE val)
204
239
  {
205
240
  _SELF(self)->resolved_dir = NUM2UINT(val);
206
241
  return self;
@@ -208,31 +243,31 @@ layout_line_set_resolved_dir(VALUE self, VALUE val)
208
243
  #endif
209
244
 
210
245
  void
211
- Init_pango_layout_line()
212
- {
213
- VALUE pLine = G_DEF_CLASS(PANGO_TYPE_LAYOUT_LINE, "LayoutLine", mPango);
214
-
215
- rb_define_method(pLine, "extents", layout_line_get_extents, 0);
216
- rb_define_method(pLine, "pixel_extents", layout_line_get_pixel_extents, 0);
217
- rb_define_method(pLine, "index_to_x", layout_line_index_to_x, 2);
218
- rb_define_method(pLine, "x_to_index", layout_line_x_to_index, 1);
219
- rb_define_method(pLine, "get_x_ranges", layout_line_get_x_ranges, 2);
220
- rb_define_method(pLine, "layout", layout_line_get_layout, 0);
221
- rb_define_method(pLine, "set_layout", layout_line_set_layout, 1);
222
- rb_define_method(pLine, "start_index", layout_line_get_start_index, 0);
223
- rb_define_method(pLine, "set_start_index", layout_line_set_start_index, 1);
224
- rb_define_method(pLine, "length", layout_line_get_length, 0);
225
- rb_define_method(pLine, "set_length", layout_line_set_length, 1);
246
+ Init_pango_layout_line(VALUE mPango)
247
+ {
248
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(PANGO_TYPE_LAYOUT_LINE, "LayoutLine", mPango);
249
+
250
+ RG_DEF_METHOD(extents, 0);
251
+ RG_DEF_METHOD(pixel_extents, 0);
252
+ RG_DEF_METHOD(index_to_x, 2);
253
+ RG_DEF_METHOD(x_to_index, 1);
254
+ RG_DEF_METHOD(get_x_ranges, 2);
255
+ RG_DEF_METHOD(layout, 0);
256
+ RG_DEF_METHOD(set_layout, 1);
257
+ RG_DEF_METHOD(start_index, 0);
258
+ RG_DEF_METHOD(set_start_index, 1);
259
+ RG_DEF_METHOD(length, 0);
260
+ RG_DEF_METHOD(set_length, 1);
226
261
  #if PANGO_CHECK_VERSION(1,2,0)
227
- rb_define_method(pLine, "runs", layout_line_get_runs, 0);
262
+ RG_DEF_METHOD(runs, 0);
228
263
  #endif
229
- rb_define_method(pLine, "set_runs", layout_line_set_runs, 1);
264
+ RG_DEF_METHOD(set_runs, 1);
230
265
 
231
266
  #if PANGO_CHECK_VERSION(1,4,0)
232
- rb_define_method(pLine, "paragraph_start?", layout_line_is_paragraph_start, 0);
233
- rb_define_method(pLine, "set_paragraph_start", layout_line_set_paragraph_start, 1);
234
- rb_define_method(pLine, "resolved_dir", layout_line_get_resolved_dir, 0);
235
- rb_define_method(pLine, "set_resolved_dir", layout_line_set_resolved_dir, 1);
267
+ RG_DEF_METHOD_P(paragraph_start, 0);
268
+ RG_DEF_METHOD(set_paragraph_start, 1);
269
+ RG_DEF_METHOD(resolved_dir, 0);
270
+ RG_DEF_METHOD(set_resolved_dir, 1);
236
271
  #endif
237
- G_DEF_SETTERS(pLine);
272
+ G_DEF_SETTERS(RG_TARGET_NAMESPACE);
238
273
  }