rsvg2 2.2.4-x64-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. checksums.yaml +7 -0
  2. data/README +35 -0
  3. data/Rakefile +69 -0
  4. data/ext/rsvg2/depend +6 -0
  5. data/ext/rsvg2/extconf.rb +89 -0
  6. data/ext/rsvg2/rbrsvg.c +206 -0
  7. data/ext/rsvg2/rbrsvgdimensiondata.c +194 -0
  8. data/ext/rsvg2/rbrsvghandle.c +496 -0
  9. data/ext/rsvg2/rsvg2.def +2 -0
  10. data/ext/rsvg2/rsvg2.h +70 -0
  11. data/extconf.rb +49 -0
  12. data/lib/2.0/rsvg2.so +0 -0
  13. data/lib/2.1/rsvg2.so +0 -0
  14. data/lib/2.2/rsvg2.so +0 -0
  15. data/lib/rsvg2.rb +33 -0
  16. data/sample/svg-viewer.rb +44 -0
  17. data/sample/svg2.rb +60 -0
  18. data/test/rsvg2-test-utils.rb +23 -0
  19. data/test/run-test.rb +49 -0
  20. data/test/test-handle.rb +91 -0
  21. data/vendor/local/bin/croco-0.6-config +87 -0
  22. data/vendor/local/bin/csslint-0.6.exe +0 -0
  23. data/vendor/local/bin/libcroco-0.6-3.dll +0 -0
  24. data/vendor/local/bin/librsvg-2-2.dll +0 -0
  25. data/vendor/local/bin/rsvg-convert.exe +0 -0
  26. data/vendor/local/include/libcroco-0.6/libcroco/cr-additional-sel.h +98 -0
  27. data/vendor/local/include/libcroco-0.6/libcroco/cr-attr-sel.h +74 -0
  28. data/vendor/local/include/libcroco-0.6/libcroco/cr-cascade.h +74 -0
  29. data/vendor/local/include/libcroco-0.6/libcroco/cr-declaration.h +136 -0
  30. data/vendor/local/include/libcroco-0.6/libcroco/cr-doc-handler.h +298 -0
  31. data/vendor/local/include/libcroco-0.6/libcroco/cr-enc-handler.h +94 -0
  32. data/vendor/local/include/libcroco-0.6/libcroco/cr-fonts.h +315 -0
  33. data/vendor/local/include/libcroco-0.6/libcroco/cr-input.h +174 -0
  34. data/vendor/local/include/libcroco-0.6/libcroco/cr-num.h +127 -0
  35. data/vendor/local/include/libcroco-0.6/libcroco/cr-om-parser.h +98 -0
  36. data/vendor/local/include/libcroco-0.6/libcroco/cr-parser.h +128 -0
  37. data/vendor/local/include/libcroco-0.6/libcroco/cr-parsing-location.h +70 -0
  38. data/vendor/local/include/libcroco-0.6/libcroco/cr-prop-list.h +80 -0
  39. data/vendor/local/include/libcroco-0.6/libcroco/cr-pseudo.h +64 -0
  40. data/vendor/local/include/libcroco-0.6/libcroco/cr-rgb.h +94 -0
  41. data/vendor/local/include/libcroco-0.6/libcroco/cr-sel-eng.h +110 -0
  42. data/vendor/local/include/libcroco-0.6/libcroco/cr-selector.h +95 -0
  43. data/vendor/local/include/libcroco-0.6/libcroco/cr-simple-sel.h +130 -0
  44. data/vendor/local/include/libcroco-0.6/libcroco/cr-statement.h +440 -0
  45. data/vendor/local/include/libcroco-0.6/libcroco/cr-string.h +76 -0
  46. data/vendor/local/include/libcroco-0.6/libcroco/cr-style.h +339 -0
  47. data/vendor/local/include/libcroco-0.6/libcroco/cr-stylesheet.h +102 -0
  48. data/vendor/local/include/libcroco-0.6/libcroco/cr-term.h +190 -0
  49. data/vendor/local/include/libcroco-0.6/libcroco/cr-tknzr.h +115 -0
  50. data/vendor/local/include/libcroco-0.6/libcroco/cr-token.h +212 -0
  51. data/vendor/local/include/libcroco-0.6/libcroco/cr-utils.h +246 -0
  52. data/vendor/local/include/libcroco-0.6/libcroco/libcroco-config.h +17 -0
  53. data/vendor/local/include/libcroco-0.6/libcroco/libcroco.h +44 -0
  54. data/vendor/local/include/librsvg-2.0/librsvg/librsvg-enum-types.h +24 -0
  55. data/vendor/local/include/librsvg-2.0/librsvg/librsvg-features.h +28 -0
  56. data/vendor/local/include/librsvg-2.0/librsvg/rsvg-cairo.h +42 -0
  57. data/vendor/local/include/librsvg-2.0/librsvg/rsvg.h +264 -0
  58. data/vendor/local/lib/girepository-1.0/Rsvg-2.0.typelib +0 -0
  59. data/vendor/local/lib/libcroco-0.6.a +0 -0
  60. data/vendor/local/lib/libcroco-0.6.dll.a +0 -0
  61. data/vendor/local/lib/libcroco-0.6.la +41 -0
  62. data/vendor/local/lib/librsvg-2.a +0 -0
  63. data/vendor/local/lib/librsvg-2.dll.a +0 -0
  64. data/vendor/local/lib/librsvg-2.la +41 -0
  65. data/vendor/local/lib/pkgconfig/libcroco-0.6.pc +11 -0
  66. data/vendor/local/lib/pkgconfig/librsvg-2.0.pc +15 -0
  67. data/vendor/local/share/gir-1.0/Rsvg-2.0.gir +754 -0
  68. data/vendor/local/share/gtk-doc/html/libcroco/ch01.html +113 -0
  69. data/vendor/local/share/gtk-doc/html/libcroco/home.png +0 -0
  70. data/vendor/local/share/gtk-doc/html/libcroco/index.html +109 -0
  71. data/vendor/local/share/gtk-doc/html/libcroco/index.sgml +582 -0
  72. data/vendor/local/share/gtk-doc/html/libcroco/left.png +0 -0
  73. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-additional-sel.html +337 -0
  74. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-attr-sel.html +203 -0
  75. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-cascade.html +240 -0
  76. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-declaration.html +642 -0
  77. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-doc-handler.html +517 -0
  78. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-enc-handler.html +164 -0
  79. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-fonts.html +670 -0
  80. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-input.html +1102 -0
  81. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-num.html +265 -0
  82. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-om-parser.html +380 -0
  83. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-parser.html +913 -0
  84. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-parsing-location.html +205 -0
  85. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-prop-list.html +421 -0
  86. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-pseudo.html +141 -0
  87. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-rgb.html +503 -0
  88. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-sel-eng.html +346 -0
  89. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-selector.html +246 -0
  90. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-simple-sel.html +240 -0
  91. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-statement.html +1408 -0
  92. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-string.html +137 -0
  93. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-style.html +384 -0
  94. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-stylesheet.html +158 -0
  95. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-term.html +304 -0
  96. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-tknzr.html +312 -0
  97. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-token.html +428 -0
  98. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-cr-utils.html +334 -0
  99. data/vendor/local/share/gtk-doc/html/libcroco/libcroco-libcroco-config.html +80 -0
  100. data/vendor/local/share/gtk-doc/html/libcroco/libcroco.devhelp2 +511 -0
  101. data/vendor/local/share/gtk-doc/html/libcroco/right.png +0 -0
  102. data/vendor/local/share/gtk-doc/html/libcroco/style.css +266 -0
  103. data/vendor/local/share/gtk-doc/html/libcroco/up.png +0 -0
  104. data/vendor/local/share/gtk-doc/html/rsvg-2.0/RsvgHandle.html +1420 -0
  105. data/vendor/local/share/gtk-doc/html/rsvg-2.0/annotation-glossary.html +55 -0
  106. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-14.html +55 -0
  107. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-22.html +43 -0
  108. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-32.html +47 -0
  109. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-36.html +46 -0
  110. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-4.html +39 -0
  111. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-8.html +54 -0
  112. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-2-9.html +53 -0
  113. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-deprecated.html +100 -0
  114. data/vendor/local/share/gtk-doc/html/rsvg-2.0/api-index-full.html +323 -0
  115. data/vendor/local/share/gtk-doc/html/rsvg-2.0/home.png +0 -0
  116. data/vendor/local/share/gtk-doc/html/rsvg-2.0/index.html +88 -0
  117. data/vendor/local/share/gtk-doc/html/rsvg-2.0/index.sgml +106 -0
  118. data/vendor/local/share/gtk-doc/html/rsvg-2.0/left-insensitive.png +0 -0
  119. data/vendor/local/share/gtk-doc/html/rsvg-2.0/left.png +0 -0
  120. data/vendor/local/share/gtk-doc/html/rsvg-2.0/licence.html +57 -0
  121. data/vendor/local/share/gtk-doc/html/rsvg-2.0/object-tree.html +38 -0
  122. data/vendor/local/share/gtk-doc/html/rsvg-2.0/right-insensitive.png +0 -0
  123. data/vendor/local/share/gtk-doc/html/rsvg-2.0/right.png +0 -0
  124. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-2.0.devhelp2 +94 -0
  125. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-GIO.html +360 -0
  126. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-GdkPixbuf.html +484 -0
  127. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Using-RSVG-with-cairo.html +154 -0
  128. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg-Version-check-and-feature-tests.html +142 -0
  129. data/vendor/local/share/gtk-doc/html/rsvg-2.0/rsvg.html +57 -0
  130. data/vendor/local/share/gtk-doc/html/rsvg-2.0/style.css +476 -0
  131. data/vendor/local/share/gtk-doc/html/rsvg-2.0/up-insensitive.png +0 -0
  132. data/vendor/local/share/gtk-doc/html/rsvg-2.0/up.png +0 -0
  133. data/vendor/local/share/license/libcroco/AUTHORS +13 -0
  134. data/vendor/local/share/license/libcroco/COPYING +481 -0
  135. data/vendor/local/share/license/libcroco/COPYING.LIB +481 -0
  136. data/vendor/local/share/license/librsvg/AUTHORS +1 -0
  137. data/vendor/local/share/license/librsvg/COPYING +340 -0
  138. data/vendor/local/share/license/librsvg/COPYING.LIB +482 -0
  139. data/vendor/local/share/man/man1/rsvg-convert.1 +55 -0
  140. metadata +209 -0
@@ -0,0 +1,496 @@
1
+ /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2005-2006 Ruby-GNOME2 Project Team
5
+ * Copyright (C) 2004 Kouhei Sutou <kou@cozmixng.org>
6
+ *
7
+ * This library is free software; you can redistribute it and/or
8
+ * modify it under the terms of the GNU Lesser General Public
9
+ * License as published by the Free Software Foundation; either
10
+ * version 2.1 of the License, or (at your option) any later version.
11
+ *
12
+ * This library is distributed in the hope that it will be useful,
13
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
+ * Lesser General Public License for more details.
16
+ *
17
+ * You should have received a copy of the GNU Lesser General Public
18
+ * License along with this library; if not, write to the Free Software
19
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ * MA 02110-1301 USA
21
+ */
22
+
23
+ #include "rsvg2.h"
24
+
25
+ #define RG_TARGET_NAMESPACE cHandle
26
+ #ifdef RSVG_TYPE_HANDLE
27
+ # define _SELF(self) (RSVG_HANDLE(RVAL2GOBJ(self)))
28
+ #else
29
+ # define _SELF(self) ((RsvgHandle *)DATA_PTR(self))
30
+ #endif
31
+
32
+ static VALUE RG_TARGET_NAMESPACE;
33
+
34
+ static ID id_call;
35
+ static ID id_callback;
36
+ static ID id_closed;
37
+
38
+ static void
39
+ exec_callback(gint *width, gint *height, gpointer self)
40
+ {
41
+ VALUE result;
42
+ result = rb_funcall(rb_ivar_get((VALUE)self, id_callback),
43
+ id_call, 2, INT2NUM(*width), INT2NUM(*height));
44
+ if (T_ARRAY == TYPE(result)) {
45
+ VALUE w, h;
46
+ w = rb_ary_entry(result, 0);
47
+ h = rb_ary_entry(result, 1);
48
+ if (!NIL_P(w)) {
49
+ *width = NUM2INT(w);
50
+ }
51
+ if (!NIL_P(h)) {
52
+ *height = NUM2INT(h);
53
+ }
54
+ }
55
+ }
56
+
57
+ static VALUE
58
+ rg_set_dpi(VALUE self, VALUE dpi)
59
+ {
60
+ #ifdef HAVE_RSVG_HANDLE_SET_DPI
61
+ rsvg_handle_set_dpi(_SELF(self), NUM2DBL(dpi));
62
+ #else
63
+ rb_warning("rsvg_handle_set_dpi isn't supported in your librsvg");
64
+ #endif
65
+ return self;
66
+ }
67
+
68
+ static VALUE
69
+ rg_set_dpi_x_y(VALUE self, VALUE dpi_x, VALUE dpi_y)
70
+ {
71
+ #ifdef HAVE_RSVG_HANDLE_SET_DPI_X_Y
72
+ rsvg_handle_set_dpi_x_y(_SELF(self), NUM2DBL(dpi_x), NUM2DBL(dpi_y));
73
+ #else
74
+ rb_warning("rsvg_handle_set_dpi_x_y isn't supported in your librsvg");
75
+ #endif
76
+ return self;
77
+ }
78
+
79
+ #ifndef RSVG_TYPE_HANDLE
80
+ static void
81
+ rb_rsvg_handle_free(RsvgHandle *handle)
82
+ {
83
+ if (handle) {
84
+ rsvg_handle_free(handle);
85
+ }
86
+ }
87
+
88
+ static VALUE
89
+ rb_rsvg_handle_alloc(VALUE klass)
90
+ {
91
+ return Data_Wrap_Struct(klass, 0, rb_rsvg_handle_free, 0);
92
+ }
93
+ #endif
94
+
95
+ #if LIBRSVG_CHECK_VERSION(2, 14, 0)
96
+ static VALUE
97
+ rg_s_new_from_data(G_GNUC_UNUSED VALUE self, VALUE data)
98
+ {
99
+ GError *error = NULL;
100
+ RsvgHandle *handle;
101
+
102
+ handle = rsvg_handle_new_from_data((const guint8 *)RVAL2CSTR(data),
103
+ RSTRING_LEN(data), &error);
104
+
105
+ if (error)
106
+ RAISE_GERROR(error);
107
+
108
+ return GOBJ2RVAL(handle);
109
+ }
110
+
111
+ static VALUE
112
+ rg_s_new_from_file(int argc, VALUE *argv, VALUE self)
113
+ {
114
+ VALUE rb_file_path, rb_options, rb_flags;
115
+ GError *error = NULL;
116
+ RsvgHandle *handle;
117
+
118
+ rb_scan_args(argc, argv, "11", &rb_file_path, &rb_options);
119
+ rbg_scan_options(rb_options,
120
+ "flags", &rb_flags,
121
+ NULL);
122
+
123
+ #if LIBRSVG_CHECK_VERSION(2, 40, 3)
124
+ {
125
+ GFile *file;
126
+ GCancellable *cancellable = NULL;
127
+ RsvgHandleFlags flags = RSVG_HANDLE_FLAGS_NONE;
128
+
129
+ if (!NIL_P(rb_flags)) {
130
+ flags = RVAL2GFLAGS(rb_flags, RSVG_TYPE_HANDLE_FLAGS);
131
+ }
132
+
133
+ file = g_file_new_for_path((const char *)RVAL2CSTR(rb_file_path));
134
+ handle = rsvg_handle_new_from_gfile_sync(file, flags,
135
+ cancellable,
136
+ &error);
137
+ g_object_unref(file);
138
+ }
139
+ #else
140
+ if (!NIL_P(rb_flags)) {
141
+ rb_raise(rb_eArgError,
142
+ "librsvg 2.40.3 or later is required for :flags: <%d.%d.%d>",
143
+ LIBRSVG_MAJOR_VERSION,
144
+ LIBRSVG_MINOR_VERSION,
145
+ LIBRSVG_MICRO_VERSION);
146
+ }
147
+ handle = rsvg_handle_new_from_file((const gchar *)RVAL2CSTR(rb_file_path),
148
+ &error);
149
+ #endif
150
+
151
+ if (error)
152
+ RAISE_GERROR(error);
153
+
154
+ return GOBJ2RVAL(handle);
155
+ }
156
+ #endif
157
+
158
+ static VALUE
159
+ rg_initialize(int argc, VALUE *argv, VALUE self)
160
+ {
161
+ RsvgHandle *handle;
162
+ VALUE gz;
163
+ rb_scan_args(argc, argv, "01", &gz);
164
+
165
+ #if LIBRSVG_CHECK_VERSION(2, 11, 0)
166
+ handle = rsvg_handle_new();
167
+ #else
168
+ if (RVAL2CBOOL(gz)) {
169
+ # ifdef HAVE_LIBRSVG_RSVG_GZ_H
170
+ handle = rsvg_handle_new_gz();
171
+ # else
172
+ rb_warning("gz handling is not supported in your librsvg");
173
+ handle = rsvg_handle_new();
174
+ # endif
175
+ } else {
176
+ handle = rsvg_handle_new();
177
+ }
178
+ #endif
179
+
180
+ #ifdef RSVG_TYPE_HANDLE
181
+ G_INITIALIZE(self, handle);
182
+ #else
183
+ DATA_PTR(self) = handle;
184
+ #endif
185
+
186
+ rb_ivar_set(self, id_closed, Qfalse);
187
+ return Qnil;
188
+ }
189
+
190
+ static VALUE
191
+ rg_set_size_callback(VALUE self)
192
+ {
193
+ rb_ivar_set(self, id_callback, rb_block_proc());
194
+ rsvg_handle_set_size_callback(_SELF(self), exec_callback,
195
+ (gpointer)self, NULL);
196
+ return self;
197
+ }
198
+
199
+ static VALUE
200
+ rg_write(VALUE self, VALUE buf)
201
+ {
202
+ gboolean result;
203
+ GError *error = NULL;
204
+
205
+ result = rsvg_handle_write(_SELF(self), (const guchar*)RVAL2CSTR(buf),
206
+ RSTRING_LEN(buf), &error);
207
+
208
+ if (!result) RAISE_GERROR(error);
209
+
210
+ return CBOOL2RVAL(result);
211
+ }
212
+
213
+ static VALUE
214
+ rg_close(VALUE self)
215
+ {
216
+ gboolean result;
217
+ GError *error = NULL;
218
+
219
+ if (RVAL2CBOOL(rb_ivar_get(self, id_closed))) {
220
+ return Qnil;
221
+ }
222
+
223
+ result = rsvg_handle_close(_SELF(self), &error);
224
+
225
+ if (result) {
226
+ rb_ivar_set(self, id_closed, Qtrue);
227
+ } else {
228
+ RAISE_GERROR(error);
229
+ }
230
+
231
+ return CBOOL2RVAL(result);
232
+ }
233
+
234
+ static VALUE
235
+ rg_closed_p(VALUE self)
236
+ {
237
+ return rb_ivar_get(self, id_closed);
238
+ }
239
+
240
+ static VALUE
241
+ rg_pixbuf(int argc, VALUE *argv, VALUE self)
242
+ {
243
+ VALUE id;
244
+ VALUE rb_pixbuf;
245
+ GdkPixbuf *pixbuf = NULL;
246
+
247
+ rb_scan_args(argc, argv, "01", &id);
248
+ if (NIL_P(id)) {
249
+ pixbuf = rsvg_handle_get_pixbuf(_SELF(self));
250
+ } else {
251
+ #ifdef HAVE_RSVG_HANDLE_GET_PIXBUF_SUB
252
+ pixbuf = rsvg_handle_get_pixbuf_sub(_SELF(self),
253
+ (const char *)RVAL2CSTR(id));
254
+ #else
255
+ rb_warning("rsvg_handle_get_pixbuf_sub isn't "
256
+ "supported in your librsvg");
257
+ #endif
258
+ }
259
+
260
+ rb_pixbuf = GOBJ2RVAL(pixbuf);
261
+ if (pixbuf)
262
+ g_object_unref(pixbuf);
263
+ return rb_pixbuf;
264
+ }
265
+
266
+ #ifdef HAVE_TYPE_RSVGDIMENSIONDATA
267
+ static VALUE
268
+ rg_dimensions(VALUE self)
269
+ {
270
+ RsvgDimensionData dim;
271
+ VALUE args[4];
272
+ VALUE cDimensionData = rb_const_get(rb_const_get(rb_cObject,
273
+ rb_intern("RSVG")), rb_intern("DimensionData"));
274
+
275
+ rsvg_handle_get_dimensions(_SELF(self), &dim);
276
+ args[0] = INT2NUM(dim.width);
277
+ args[1] = INT2NUM(dim.height);
278
+ args[2] = rb_float_new(dim.em);
279
+ args[3] = rb_float_new(dim.ex);
280
+ return rb_class_new_instance(sizeof(args) / sizeof(VALUE),
281
+ args, cDimensionData);
282
+ }
283
+ #endif
284
+
285
+ #if !LIBRSVG_CHECK_VERSION(2, 36, 0)
286
+ /* Accessibility API */
287
+ static VALUE
288
+ rg_title(VALUE self)
289
+ {
290
+ return CSTR2RVAL(rsvg_handle_get_title(_SELF(self)));
291
+ }
292
+
293
+ static VALUE
294
+ rg_desc(VALUE self)
295
+ {
296
+ return CSTR2RVAL(rsvg_handle_get_desc(_SELF(self)));
297
+ }
298
+
299
+ # ifdef HAVE_RSVG_HANDLE_GET_METADATA
300
+ static VALUE
301
+ rg_metadata(VALUE self)
302
+ {
303
+ return CSTR2RVAL(rsvg_handle_get_metadata(_SELF(self)));
304
+ }
305
+ # endif
306
+ #endif
307
+
308
+ #if !LIBRSVG_CHECK_VERSION(2, 11, 0)
309
+ /* Extended Convenience API */
310
+ static VALUE
311
+ rg_pixbuf_from_file_at_size(VALUE self, VALUE file_name,
312
+ VALUE width, VALUE height)
313
+ {
314
+ VALUE rb_pixbuf;
315
+ GdkPixbuf *pixbuf;
316
+ GError *error = NULL;
317
+
318
+ pixbuf = rsvg_pixbuf_from_file_at_size_ex(_SELF(self),
319
+ RVAL2CSTR(file_name),
320
+ NUM2INT(width),
321
+ NUM2INT(height),
322
+ &error);
323
+
324
+ if (error) RAISE_GERROR(error);
325
+
326
+ rb_pixbuf = GOBJ2RVAL(pixbuf);
327
+ g_object_unref(pixbuf);
328
+ return rb_pixbuf;
329
+ }
330
+
331
+ static VALUE
332
+ rg_pixbuf_from_file(VALUE self, VALUE file_name)
333
+ {
334
+ VALUE rb_pixbuf;
335
+ GdkPixbuf *pixbuf;
336
+ GError *error = NULL;
337
+
338
+ pixbuf = rsvg_pixbuf_from_file_ex(_SELF(self),
339
+ RVAL2CSTR(file_name),
340
+ &error);
341
+
342
+ if (error) RAISE_GERROR(error);
343
+
344
+ rb_pixbuf = GOBJ2RVAL(pixbuf);
345
+ g_object_unref(pixbuf);
346
+ return rb_pixbuf;
347
+ }
348
+
349
+ static VALUE
350
+ rg_pixbuf_from_file_at_zoom(VALUE self, VALUE file_name,
351
+ VALUE x_zoom, VALUE y_zoom)
352
+ {
353
+ VALUE rb_pixbuf;
354
+ GdkPixbuf *pixbuf;
355
+ GError *error = NULL;
356
+
357
+ pixbuf = rsvg_pixbuf_from_file_at_zoom_ex(_SELF(self),
358
+ RVAL2CSTR(file_name),
359
+ NUM2DBL(x_zoom),
360
+ NUM2DBL(y_zoom),
361
+ &error);
362
+
363
+ if (error) RAISE_GERROR(error);
364
+
365
+ rb_pixbuf = GOBJ2RVAL(pixbuf);
366
+ g_object_unref(pixbuf);
367
+ return rb_pixbuf;
368
+ }
369
+
370
+ static VALUE
371
+ rg_pixbuf_from_file_at_max_size(VALUE self, VALUE file_name,
372
+ VALUE max_width, VALUE max_height)
373
+ {
374
+ VALUE rb_pixbuf;
375
+ GdkPixbuf *pixbuf;
376
+ GError *error = NULL;
377
+
378
+ pixbuf = rsvg_pixbuf_from_file_at_max_size_ex(_SELF(self),
379
+ RVAL2CSTR(file_name),
380
+ NUM2INT(max_width),
381
+ NUM2INT(max_height),
382
+ &error);
383
+
384
+ if (error) RAISE_GERROR(error);
385
+
386
+ rb_pixbuf = GOBJ2RVAL(pixbuf);
387
+ g_object_unref(pixbuf);
388
+ return rb_pixbuf;
389
+ }
390
+
391
+ static VALUE
392
+ rg_pixbuf_from_file_at_zoom_with_max(VALUE self,
393
+ VALUE file_name,
394
+ VALUE x_zoom,
395
+ VALUE y_zoom,
396
+ VALUE max_width,
397
+ VALUE max_height)
398
+ {
399
+ VALUE rb_pixbuf;
400
+ GdkPixbuf *pixbuf;
401
+ GError *error = NULL;
402
+
403
+ pixbuf = rsvg_pixbuf_from_file_at_zoom_with_max_ex(_SELF(self),
404
+ RVAL2CSTR(file_name),
405
+ NUM2DBL(x_zoom),
406
+ NUM2DBL(y_zoom),
407
+ NUM2INT(max_width),
408
+ NUM2INT(max_height),
409
+ &error);
410
+
411
+ if (error) RAISE_GERROR(error);
412
+
413
+ rb_pixbuf = GOBJ2RVAL(pixbuf);
414
+ g_object_unref(pixbuf);
415
+ return rb_pixbuf;
416
+ }
417
+ #endif
418
+
419
+ #ifdef HAVE_LIBRSVG_RSVG_CAIRO_H
420
+ static VALUE
421
+ rg_render_cairo(int argc, VALUE *argv, VALUE self)
422
+ {
423
+ VALUE cr, id;
424
+ rb_scan_args(argc, argv, "11", &cr, &id);
425
+
426
+ if (NIL_P(id)) {
427
+ rsvg_handle_render_cairo( _SELF(self), RVAL2CRCONTEXT(cr));
428
+ } else {
429
+ rsvg_handle_render_cairo_sub( _SELF(self), RVAL2CRCONTEXT(cr),
430
+ (const char *)RVAL2CSTR(id));
431
+ }
432
+
433
+ return Qnil;
434
+ }
435
+ #endif
436
+
437
+ void
438
+ Init_rsvg_handle(VALUE mRSVG)
439
+ {
440
+ id_call = rb_intern("call");
441
+ id_callback = rb_intern("callback");
442
+ id_closed = rb_intern("closed");
443
+
444
+ #ifdef RSVG_TYPE_HANDLE
445
+ RG_TARGET_NAMESPACE = G_DEF_CLASS(RSVG_TYPE_HANDLE, "Handle", mRSVG);
446
+ #else
447
+ RG_TARGET_NAMESPACE = rb_define_class_under(mRSVG, "Handle", rb_cObject);
448
+ rb_define_alloc_func(RG_TARGET_NAMESPACE, rb_rsvg_handle_alloc);
449
+ #endif
450
+
451
+ #if LIBRSVG_CHECK_VERSION(2, 14, 0)
452
+ RG_DEF_SMETHOD(new_from_data, 1);
453
+ RG_DEF_SMETHOD(new_from_file, -1);
454
+ #endif
455
+
456
+ RG_DEF_METHOD(initialize, -1);
457
+ RG_DEF_METHOD(set_size_callback, 0);
458
+ RG_DEF_METHOD(set_dpi, 1);
459
+ RG_DEF_METHOD(set_dpi_x_y, 2);
460
+ RG_DEF_METHOD(write, 1);
461
+ RG_DEF_METHOD(close, 0);
462
+ RG_DEF_METHOD_P(closed, 0);
463
+ RG_DEF_METHOD(pixbuf, -1);
464
+
465
+ #ifdef HAVE_TYPE_RSVGDIMENSIONDATA
466
+ RG_DEF_METHOD(dimensions, 0);
467
+ #endif
468
+
469
+ #if !LIBRSVG_CHECK_VERSION(2, 36, 0)
470
+ /* Accessibility API */
471
+ RG_DEF_METHOD(title, 0);
472
+ RG_DEF_METHOD(desc, 0);
473
+ # ifdef HAVE_RSVG_HANDLE_GET_METADATA
474
+ RG_DEF_METHOD(metadata, 0);
475
+ # endif
476
+ #endif
477
+
478
+ #if !LIBRSVG_CHECK_VERSION(2, 11, 0)
479
+ /* Extended Convenience API */
480
+ RG_DEF_METHOD(pixbuf_from_file_at_size, 3);
481
+ RG_DEF_METHOD(pixbuf_from_file, 1);
482
+ RG_DEF_METHOD(pixbuf_from_file_at_zoom, 3);
483
+ RG_DEF_METHOD(pixbuf_from_file_at_max_size, 3);
484
+ RG_DEF_METHOD(pixbuf_from_file_at_zoom_with_max, 5);
485
+ #endif
486
+
487
+ #ifdef HAVE_LIBRSVG_RSVG_CAIRO_H
488
+ RG_DEF_METHOD(render_cairo, -1);
489
+ #endif
490
+
491
+ #if LIBRSVG_CHECK_VERSION(2, 40, 3)
492
+ /* RsvgHandleFlags */
493
+ G_DEF_CLASS(RSVG_TYPE_HANDLE_FLAGS, "Flags", RG_TARGET_NAMESPACE);
494
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, RSVG_TYPE_HANDLE_FLAGS, "RSVG_HANDLE_");
495
+ #endif
496
+ }