gdk_pixbuf2 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,23 +1,33 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /************************************************
3
-
4
- rbgdk-pixbuf-format.c -
5
-
6
- $Author: ggc $
7
- $Date: 2007/07/13 16:07:28 $
8
-
9
- Copyright (C) 2004 Masao Mutoh
10
- ************************************************/
11
-
12
- #include "rbgdk-pixbuf.h"
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2004 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 "rbgdk-pixbuf2private.h"
13
23
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
14
24
 
15
25
  #ifdef HAVE_GDK_PIXBUF_GDK_PIXBUF_IO_H
16
26
  #include <gdk-pixbuf/gdk-pixbuf-io.h>
17
27
  #endif
18
28
 
19
- #define _SELF(r) ((GdkPixbufFormat*)RVAL2BOXED(r, GDK_TYPE_PIXBUF_FORMAT))
20
-
29
+ #define RG_TARGET_NAMESPACE cPixbufFormat
30
+ #define _SELF(r) (RVAL2GDKPIXBUFFORMAT(r))
21
31
 
22
32
  /**********************************/
23
33
  static GdkPixbufFormat*
@@ -51,19 +61,19 @@ GSList* gdk_pixbuf_get_formats (void);
51
61
  */
52
62
 
53
63
  static VALUE
54
- get_name(VALUE self)
64
+ rg_name(VALUE self)
55
65
  {
56
66
  return CSTR2RVAL_FREE(gdk_pixbuf_format_get_name(_SELF(self)));
57
67
  }
58
68
 
59
69
  static VALUE
60
- get_description(VALUE self)
70
+ rg_description(VALUE self)
61
71
  {
62
72
  return CSTR2RVAL_FREE(gdk_pixbuf_format_get_description(_SELF(self)));
63
73
  }
64
-
74
+
65
75
  static VALUE
66
- get_mime_types(VALUE self)
76
+ rg_mime_types(VALUE self)
67
77
  {
68
78
  gint i = 0;
69
79
  gchar** mime_types = gdk_pixbuf_format_get_mime_types(_SELF(self));
@@ -77,7 +87,7 @@ get_mime_types(VALUE self)
77
87
  }
78
88
 
79
89
  static VALUE
80
- get_extensions(VALUE self)
90
+ rg_extensions(VALUE self)
81
91
  {
82
92
  gint i = 0;
83
93
  gchar** extensions = gdk_pixbuf_format_get_extensions(_SELF(self));
@@ -92,20 +102,20 @@ get_extensions(VALUE self)
92
102
  }
93
103
 
94
104
  static VALUE
95
- is_writable(VALUE self)
105
+ rg_writable_p(VALUE self)
96
106
  {
97
107
  return CBOOL2RVAL(gdk_pixbuf_format_is_writable(_SELF(self)));
98
108
  }
99
109
 
100
110
  /* Structure */
101
111
  static VALUE
102
- get_domain(VALUE self)
112
+ rg_domain(VALUE self)
103
113
  {
104
114
  return CSTR2RVAL(_SELF(self)->domain);
105
115
  }
106
116
 
107
117
  static VALUE
108
- get_signature(VALUE self)
118
+ rg_signature(VALUE self)
109
119
  {
110
120
  GdkPixbufModulePattern* signature = _SELF(self)->signature;
111
121
 
@@ -123,23 +133,23 @@ get_signature(VALUE self)
123
133
 
124
134
  #if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
125
135
  static VALUE
126
- is_scalable(VALUE self)
136
+ rg_scalable_p(VALUE self)
127
137
  {
128
138
  return CBOOL2RVAL(gdk_pixbuf_format_is_scalable(_SELF(self)));
129
139
  }
130
140
  static VALUE
131
- is_disabled(VALUE self)
141
+ rg_disabled_p(VALUE self)
132
142
  {
133
143
  return CBOOL2RVAL(gdk_pixbuf_format_is_disabled(_SELF(self)));
134
144
  }
135
145
  static VALUE
136
- set_disabled(VALUE self, VALUE disabled)
146
+ rg_set_disabled(VALUE self, VALUE disabled)
137
147
  {
138
148
  gdk_pixbuf_format_set_disabled(_SELF(self), RVAL2CBOOL(disabled));
139
149
  return self;
140
150
  }
141
151
  static VALUE
142
- get_license(VALUE self)
152
+ rg_license(VALUE self)
143
153
  {
144
154
  return CSTR2RVAL(gdk_pixbuf_format_get_license(_SELF(self)));
145
155
  }
@@ -149,23 +159,22 @@ void
149
159
  Init_gdk_pixbuf_format(VALUE mGdk)
150
160
  {
151
161
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
152
- VALUE format = G_DEF_CLASS(GDK_TYPE_PIXBUF_FORMAT, "PixbufFormat", mGdk);
153
-
154
- rb_define_method(format, "name", get_name, 0);
155
- rb_define_method(format, "description", get_description, 0);
156
- rb_define_method(format, "mime_types", get_mime_types, 0);
157
- rb_define_method(format, "extensions", get_extensions, 0);
158
- rb_define_method(format, "writable?", is_writable, 0);
159
- rb_define_method(format, "domain", get_domain, 0);
160
- rb_define_method(format, "signature", get_signature, 0);
162
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF_FORMAT, "PixbufFormat", mGdk);
163
+
164
+ RG_DEF_METHOD(name, 0);
165
+ RG_DEF_METHOD(description, 0);
166
+ RG_DEF_METHOD(mime_types, 0);
167
+ RG_DEF_METHOD(extensions, 0);
168
+ RG_DEF_METHOD_P(writable, 0);
169
+ RG_DEF_METHOD(domain, 0);
170
+ RG_DEF_METHOD(signature, 0);
161
171
  #if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
162
- rb_define_method(format, "scalable?", is_scalable, 0);
163
- rb_define_method(format, "disabled?", is_disabled, 0);
164
- rb_define_method(format, "set_disabled", set_disabled, 1);
165
- rb_define_method(format, "license", get_license, 0);
172
+ RG_DEF_METHOD_P(scalable, 0);
173
+ RG_DEF_METHOD_P(disabled, 0);
174
+ RG_DEF_METHOD(set_disabled, 1);
175
+ RG_DEF_METHOD(license, 0);
166
176
 
167
177
  #endif
168
- G_DEF_SETTERS(format);
178
+ G_DEF_SETTERS(RG_TARGET_NAMESPACE);
169
179
  #endif
170
180
  }
171
-
@@ -1,24 +1,35 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /************************************************
3
-
4
- rbgdk-pixbuf-loader.c -
5
-
6
- $Author: ggc $
7
- $Date: 2007/07/13 14:27:06 $
8
-
9
- Copyright (C) 2004 Masao Mutoh
10
- Copyright (C) 2003 Geoff Youngs
11
- ************************************************/
12
-
13
- #include "rbgdk-pixbuf.h"
14
-
15
- #define _SELF(s) GDK_PIXBUF_LOADER(RVAL2GOBJ(s))
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2004 Masao Mutoh
5
+ * Copyright (C) 2003 Geoff Youngs
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 "rbgdk-pixbuf2private.h"
24
+
25
+ #define RG_TARGET_NAMESPACE cPixbufLoader
26
+ #define _SELF(s) RVAL2GDKPIXBUFLOADER(s)
16
27
 
17
28
  /****************************************************/
18
29
  /* File opening */
19
30
  /* Image Data in Memory */
20
31
  static VALUE
21
- initialize_loader(int argc, VALUE *argv, VALUE self)
32
+ rg_initialize(int argc, VALUE *argv, VALUE self)
22
33
  {
23
34
  GdkPixbufLoader* loader;
24
35
  GError* error = NULL;
@@ -42,25 +53,25 @@ initialize_loader(int argc, VALUE *argv, VALUE self)
42
53
  }
43
54
  if(error) RAISE_GERROR(error);
44
55
  }
45
-
56
+
46
57
  G_INITIALIZE(self, loader);
47
58
  return Qnil;
48
59
  }
49
60
 
50
61
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
51
62
  static VALUE
52
- loader_get_format(VALUE self)
63
+ rg_format(VALUE self)
53
64
  {
54
65
  GdkPixbufFormat* format = gdk_pixbuf_loader_get_format(_SELF(self));
55
- return BOXED2RVAL(format, GDK_TYPE_PIXBUF_FORMAT);
66
+ return GDKPIXBUFFORMAT2RVAL(format);
56
67
  }
57
68
  #endif
58
69
 
59
70
  static VALUE
60
- loader_write(VALUE self, VALUE data)
71
+ rg_write(VALUE self, VALUE data)
61
72
  {
62
73
  GError *error = NULL;
63
-
74
+
64
75
  StringValue(data);
65
76
  if (!gdk_pixbuf_loader_write(_SELF(self),
66
77
  (const guchar *)RSTRING_PTR(data),
@@ -72,7 +83,7 @@ loader_write(VALUE self, VALUE data)
72
83
  }
73
84
 
74
85
  static VALUE
75
- last_write(VALUE self, VALUE data)
86
+ rg_last_write(VALUE self, VALUE data)
76
87
  {
77
88
  GError *error = NULL;
78
89
 
@@ -91,7 +102,7 @@ last_write(VALUE self, VALUE data)
91
102
 
92
103
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
93
104
  static VALUE
94
- loader_set_size(VALUE self, VALUE width, VALUE height)
105
+ rg_set_size(VALUE self, VALUE width, VALUE height)
95
106
  {
96
107
  gdk_pixbuf_loader_set_size(_SELF(self), NUM2INT(width), NUM2INT(height));
97
108
  return self;
@@ -99,56 +110,55 @@ loader_set_size(VALUE self, VALUE width, VALUE height)
99
110
  #endif
100
111
 
101
112
  static VALUE
102
- loader_close(VALUE self)
113
+ rg_close(VALUE self)
103
114
  {
104
115
  GError *error = NULL;
105
116
  gboolean res;
106
-
117
+
107
118
  res = gdk_pixbuf_loader_close(_SELF(self), &error);
108
119
  if(error)
109
120
  RAISE_GERROR(error);
110
-
121
+
111
122
  return CBOOL2RVAL(res);
112
123
  }
113
124
 
114
125
  /****************************************************/
115
126
  /* Creating image */
116
127
  static VALUE
117
- get_pixbuf(VALUE self)
128
+ rg_pixbuf(VALUE self)
118
129
  {
119
130
  return GOBJ2RVAL(gdk_pixbuf_loader_get_pixbuf(_SELF(self)));
120
131
  }
121
132
 
122
133
  /* Creating animation */
123
134
  static VALUE
124
- get_animation(VALUE self)
135
+ rg_animation(VALUE self)
125
136
  {
126
137
  return GOBJ2RVAL(gdk_pixbuf_loader_get_animation(_SELF(self)));
127
138
  }
128
139
 
129
-
130
140
  void
131
141
  Init_gdk_pixbuf_loader(VALUE mGdk)
132
142
  {
133
- VALUE gdkPixbufLoader;
143
+ VALUE RG_TARGET_NAMESPACE;
134
144
  /* initialize it */
135
- gdkPixbufLoader = G_DEF_CLASS(GDK_TYPE_PIXBUF_LOADER, "PixbufLoader", mGdk);
145
+ RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF_LOADER, "PixbufLoader", mGdk);
136
146
 
137
147
  /*
138
148
  * File Loading, Image Data in Memory
139
149
  */
140
- rb_define_method(gdkPixbufLoader, "initialize", initialize_loader, -1);
150
+ RG_DEF_METHOD(initialize, -1);
141
151
 
142
- rb_undef_method(gdkPixbufLoader, "dup");
152
+ rb_undef_method(RG_TARGET_NAMESPACE, "dup");
143
153
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
144
- rb_define_method(gdkPixbufLoader, "format", loader_get_format, 0);
154
+ RG_DEF_METHOD(format, 0);
145
155
  #endif
146
- rb_define_method(gdkPixbufLoader, "write", loader_write, 1);
147
- rb_define_method(gdkPixbufLoader, "last_write", last_write, 1);
156
+ RG_DEF_METHOD(write, 1);
157
+ RG_DEF_METHOD(last_write, 1);
148
158
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
149
- rb_define_method(gdkPixbufLoader, "set_size", loader_set_size, 2);
159
+ RG_DEF_METHOD(set_size, 2);
150
160
  #endif
151
- rb_define_method(gdkPixbufLoader, "close", loader_close, 0);
152
- rb_define_method(gdkPixbufLoader, "pixbuf", get_pixbuf, 0);
153
- rb_define_method(gdkPixbufLoader, "animation", get_animation, 0);
154
- }
161
+ RG_DEF_METHOD(close, 0);
162
+ RG_DEF_METHOD(pixbuf, 0);
163
+ RG_DEF_METHOD(animation, 0);
164
+ }
@@ -1,16 +1,26 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /************************************************
3
-
4
- rbgdk-pixbuf.c -
5
-
6
- $Author: ggc $
7
- $Date: 2007/07/13 16:07:28 $
8
-
9
- Copyright (C) 2002-2004 Masao Mutoh
10
- Copyright (C) 2000 Yasushi Shoji
11
- ************************************************/
12
-
13
- #include "rbgdk-pixbuf.h"
2
+ /*
3
+ * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
+ * Copyright (C) 2002-2004 Masao Mutoh
5
+ * Copyright (C) 2000 Yasushi Shoji
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 "rbgdk-pixbuf2private.h"
14
24
  #include <string.h>
15
25
 
16
26
  #ifdef HAVE_GDK_PIXBUF_GDK_PIXBUF_IO_H
@@ -18,7 +28,8 @@
18
28
  #include <gdk-pixbuf/gdk-pixbuf-io.h>
19
29
  #endif
20
30
 
21
- #define _SELF(s) GDK_PIXBUF(RVAL2GOBJ(s))
31
+ #define RG_TARGET_NAMESPACE cPixbuf
32
+ #define _SELF(s) RVAL2GDKPIXBUF(s)
22
33
 
23
34
  #define NOMEM_ERROR(error) g_set_error(error,\
24
35
  GDK_PIXBUF_ERROR,\
@@ -55,7 +66,7 @@ get_pixels(VALUE self)
55
66
  }
56
67
 
57
68
  static VALUE
58
- set_pixels(VALUE self, VALUE pixels)
69
+ rg_operator_set_pixels(VALUE self, VALUE pixels)
59
70
  {
60
71
  GdkPixbuf *pixbuf = _SELF(self);
61
72
  int size;
@@ -79,7 +90,7 @@ set_pixels(VALUE self, VALUE pixels)
79
90
  }
80
91
 
81
92
  static VALUE
82
- get_option(VALUE self, VALUE key)
93
+ rg_get_option(VALUE self, VALUE key)
83
94
  {
84
95
  const gchar* ret = gdk_pixbuf_get_option(_SELF(self), RVAL2CSTR(key));
85
96
  return ret ? CSTR2RVAL(ret) : Qnil;
@@ -88,30 +99,125 @@ get_option(VALUE self, VALUE key)
88
99
  /****************************************************/
89
100
  /* File opening */
90
101
  /* Image Data in Memory */
91
- static VALUE
92
- initialize(int argc, VALUE *argv, VALUE self)
102
+ static GdkPixbuf *
103
+ pixbuf_initialize_by_hash(VALUE self, VALUE arg, GError **error)
93
104
  {
94
- GdkPixbuf* buf;
95
- GError* error = NULL;
96
- VALUE arg1, arg2, arg3, arg4, arg5, arg6, arg7;
105
+ GdkPixbuf *buf = NULL;
106
+
107
+ VALUE rb_colorspace, rb_has_alpha, rb_bits_per_sample, rb_width, rb_height,
108
+ rb_data, rb_rowstride, rb_xpm, rb_inline, rb_copy_pixels,
109
+ rb_src_pixbuf, rb_src_x, rb_src_y,
110
+ rb_file, rb_scale_width, rb_scale_height, rb_preserve_aspect_ratio;
111
+ rbg_scan_options(arg,
112
+ "colorspace", &rb_colorspace,
113
+ "has_alpha", &rb_has_alpha,
114
+ "bits_per_sample", &rb_bits_per_sample,
115
+ "width", &rb_width,
116
+ "height", &rb_height,
117
+ "data", &rb_data,
118
+ "rowstride", &rb_rowstride,
119
+ "xpm", &rb_xpm,
120
+ "inline", &rb_inline,
121
+ "copy_pixels", &rb_copy_pixels,
122
+ "src_pixbuf", &rb_src_pixbuf,
123
+ "src_x", &rb_src_x,
124
+ "src_y", &rb_src_y,
125
+ "file", &rb_file,
126
+ "scale_width", &rb_scale_width,
127
+ "scale_height", &rb_scale_height,
128
+ "preserve_aspect_ratio", &rb_preserve_aspect_ratio,
129
+ NULL);
130
+
131
+ if (!NIL_P(rb_data)) {
132
+ buf = gdk_pixbuf_new_from_data((const guchar*)RVAL2CSTR(rb_data),
133
+ NIL_P(rb_colorspace) ? GDK_COLORSPACE_RGB : RVAL2GDKCOLORSPACE(rb_colorspace),
134
+ RVAL2CBOOL(rb_has_alpha),
135
+ NIL_P(rb_bits_per_sample) ? 8 : NUM2INT(rb_bits_per_sample),
136
+ NUM2INT(rb_width),
137
+ NUM2INT(rb_height),
138
+ NUM2INT(rb_rowstride),
139
+ NULL, NULL);
140
+ if (buf == NULL)
141
+ NOMEM_ERROR(error);
142
+ // Save a reference to the string because the pixbuf doesn't copy it.
143
+ G_RELATIVE(self, rb_data);
144
+ } else if (!NIL_P(rb_xpm)) {
145
+ const gchar **data = RVAL2STRV(rb_xpm);
146
+ buf = gdk_pixbuf_new_from_xpm_data(data);
147
+ g_free(data);
148
+ if (buf == NULL)
149
+ NOMEM_ERROR(error);
150
+ } else if (!NIL_P(rb_inline)) {
151
+ /* TODO: Is this really up to the caller to decide? */
152
+ long n;
153
+ guint8 *data = RVAL2GUINT8S(rb_inline, n);
154
+ buf = gdk_pixbuf_new_from_inline(n, data, RVAL2CBOOL(rb_copy_pixels), error);
155
+ /* need to manage the returned value */
156
+ rb_ivar_set(self, id_pixdata, Data_Wrap_Struct(rb_cData, NULL, g_free, data));
157
+ } else if (!NIL_P(rb_src_pixbuf)) {
158
+ buf = gdk_pixbuf_new_subpixbuf(_SELF(rb_src_pixbuf),
159
+ NUM2INT(rb_src_x),
160
+ NUM2INT(rb_src_y),
161
+ NUM2INT(rb_width),
162
+ NUM2INT(rb_height));
163
+ if (buf == NULL)
164
+ NOMEM_ERROR(error);
165
+ } else if (!NIL_P(rb_file)) {
166
+ if (!NIL_P(rb_width)) {
167
+ #if RBGDK_PIXBUF_CHECK_VERSION(2,4,0)
168
+ buf = gdk_pixbuf_new_from_file_at_size(RVAL2CSTR(rb_file),
169
+ NUM2INT(rb_width),
170
+ NUM2INT(rb_height),
171
+ error);
172
+ #else
173
+ rb_warning("Sizing on load not supported in GTK+ < 2.4.0");
174
+ buf = gdk_pixbuf_new_from_file(RVAL2CSTR(rb_file), error);
175
+ #endif
176
+ } else if (!NIL_P(rb_scale_width)) {
177
+ #if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
178
+ int width = NUM2INT(rb_scale_width);
179
+ int height = NUM2INT(rb_scale_height);
180
+ #if !RBGDK_PIXBUF_CHECK_VERSION(2,8,0)
181
+ if (width < 0 || height < 0)
182
+ rb_warning("For scaling on load, a negative value for width or height are not supported in GTK+ < 2.8.0");
183
+ #endif
184
+ buf = gdk_pixbuf_new_from_file_at_scale(RVAL2CSTR(rb_file),
185
+ width, height,
186
+ NIL_P(rb_preserve_aspect_ratio) ? TRUE : RVAL2CBOOL(rb_preserve_aspect_ratio),
187
+ error);
188
+ #else
189
+ rb_warning("Scaling on load not supported in GTK+ < 2.6.0");
190
+ buf = gdk_pixbuf_new_from_file(RVAL2CSTR(rb_file), error);
191
+ #endif
192
+ } else {
193
+ buf = gdk_pixbuf_new_from_file(RVAL2CSTR(rb_file), error);
194
+ }
195
+ } else {
196
+ buf = gdk_pixbuf_new(NIL_P(rb_colorspace) ? GDK_COLORSPACE_RGB : RVAL2GDKCOLORSPACE(rb_colorspace),
197
+ RVAL2CBOOL(rb_has_alpha),
198
+ NIL_P(rb_bits_per_sample) ? 8 : NUM2INT(rb_bits_per_sample),
199
+ NUM2INT(rb_width),
200
+ NUM2INT(rb_height));
201
+ if (buf == NULL)
202
+ NOMEM_ERROR(error);
203
+ }
97
204
 
98
- rb_scan_args(argc, argv, "16", &arg1, &arg2, &arg3, &arg4, &arg5, &arg6, &arg7);
205
+ return buf;
206
+ }
207
+
208
+ /* TODO: make deprecated */
209
+ static GdkPixbuf *
210
+ pixbuf_initialize(VALUE self, int argc, VALUE arg1, VALUE arg2, VALUE arg3, VALUE arg4, VALUE arg5, VALUE arg6, VALUE arg7, GError **error)
211
+ {
212
+ GdkPixbuf* buf;
99
213
 
100
214
  if (argc == 7){
101
215
  buf = gdk_pixbuf_new_from_data((const guchar*)RVAL2CSTR(arg1),
102
- RVAL2GENUM(arg2, GDK_TYPE_COLORSPACE),
216
+ RVAL2GDKCOLORSPACE(arg2),
103
217
  RVAL2CBOOL(arg3), NUM2INT(arg4),
104
218
  NUM2INT(arg5), NUM2INT(arg6),
105
219
  NUM2INT(arg7), NULL, NULL);
106
- if (buf == NULL){
107
- rb_gc();
108
- buf = gdk_pixbuf_new_from_data((const guchar*)RVAL2CSTR(arg1),
109
- RVAL2GENUM(arg2, GDK_TYPE_COLORSPACE),
110
- RVAL2CBOOL(arg3), NUM2INT(arg4),
111
- NUM2INT(arg5), NUM2INT(arg6),
112
- NUM2INT(arg7), NULL, NULL);
113
- if (buf == NULL) NOMEM_ERROR(&error);
114
- }
220
+ if (buf == NULL) NOMEM_ERROR(error);
115
221
  // Save a reference to the string because the pixbuf doesn't copy it.
116
222
  G_RELATIVE(self, arg1);
117
223
  } else if (argc == 5){
@@ -119,24 +225,12 @@ initialize(int argc, VALUE *argv, VALUE self)
119
225
  buf = gdk_pixbuf_new_subpixbuf(_SELF(arg1),
120
226
  NUM2INT(arg2), NUM2INT(arg3),
121
227
  NUM2INT(arg4), NUM2INT(arg5));
122
- if (buf == NULL){
123
- rb_gc();
124
- buf = gdk_pixbuf_new_subpixbuf(_SELF(arg1),
125
- NUM2INT(arg2), NUM2INT(arg3),
126
- NUM2INT(arg4), NUM2INT(arg5));
127
- if (buf == NULL) NOMEM_ERROR(&error);
128
- }
228
+ if (buf == NULL) NOMEM_ERROR(error);
129
229
  } else if (rb_obj_is_kind_of(arg1, GTYPE2CLASS(GDK_TYPE_COLORSPACE))){
130
- buf = gdk_pixbuf_new(RVAL2GENUM(arg1, GDK_TYPE_COLORSPACE),
230
+ buf = gdk_pixbuf_new(RVAL2GDKCOLORSPACE(arg1),
131
231
  RVAL2CBOOL(arg2), NUM2INT(arg3),
132
232
  NUM2INT(arg4), NUM2INT(arg5));
133
- if (buf == NULL){
134
- rb_gc();
135
- buf = gdk_pixbuf_new(RVAL2GENUM(arg1, GDK_TYPE_COLORSPACE),
136
- RVAL2CBOOL(arg2), NUM2INT(arg3),
137
- NUM2INT(arg4), NUM2INT(arg5));
138
- if (buf == NULL) NOMEM_ERROR(&error);
139
- }
233
+ if (buf == NULL) NOMEM_ERROR(error);
140
234
  } else {
141
235
  rb_raise(rb_eArgError, "Wrong type of 1st argument or wrong number of arguments");
142
236
  }
@@ -150,75 +244,38 @@ initialize(int argc, VALUE *argv, VALUE self)
150
244
  #endif
151
245
  buf = gdk_pixbuf_new_from_file_at_scale(RVAL2CSTR(arg1),
152
246
  width, height,
153
- RVAL2CBOOL(arg4), &error);
154
- if (buf == NULL){
155
- rb_gc();
156
- error = NULL;
157
- buf = gdk_pixbuf_new_from_file_at_scale(RVAL2CSTR(arg1),
158
- NUM2INT(arg2), NUM2INT(arg3),
159
- RVAL2CBOOL(arg4), &error);
160
- }
247
+ RVAL2CBOOL(arg4), error);
161
248
  #else
162
249
  rb_warning("Scaling on load not supported in GTK+ < 2.6.0");
163
- buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), &error);
164
- if (buf == NULL){
165
- error = NULL;
166
- rb_gc();
167
- buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), &error);
168
- }
250
+ buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), error);
169
251
  #endif
170
252
  } else if (argc == 3) {
171
253
  #if RBGDK_PIXBUF_CHECK_VERSION(2,4,0)
172
254
  buf = gdk_pixbuf_new_from_file_at_size(RVAL2CSTR(arg1),
173
- NUM2INT(arg2), NUM2INT(arg3), &error);
174
- if (buf == NULL){
175
- rb_gc();
176
- error = NULL;
177
- buf = gdk_pixbuf_new_from_file_at_size(RVAL2CSTR(arg1),
178
- NUM2INT(arg2), NUM2INT(arg3), &error);
179
- }
255
+ NUM2INT(arg2), NUM2INT(arg3), error);
180
256
  #else
181
257
  rb_warning("Sizing on load not supported in GTK+ < 2.4.0");
182
- buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), &error);
183
- if (buf == NULL){
184
- error = NULL;
185
- rb_gc();
186
- buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), &error);
187
- }
258
+ buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), error);
188
259
  #endif
189
- } else if (argc == 2){
190
- int i;
191
- int len = RARRAY_LEN(arg1);
192
- guint8 *gstream = g_new(guint8, len);
193
- for (i = 0; i < len; i++){
194
- gstream[i] = (guint8)NUM2UINT(RARRAY_PTR(arg1)[i]);
195
- }
196
- buf = gdk_pixbuf_new_from_inline(len, gstream, RVAL2CBOOL(arg2), &error);
197
- if (buf == NULL){
198
- rb_gc();
199
- error = NULL;
200
- buf = gdk_pixbuf_new_from_inline(len, gstream, RVAL2CBOOL(arg2), &error);
201
- }
260
+ } else if (argc == 2) {
261
+ /* TODO: Is this really up to the caller to decide? */
262
+ gboolean copy_pixels = RVAL2CBOOL(arg2);
263
+ long n;
264
+ guint8 *data = RVAL2GUINT8S(arg1, n);
265
+ buf = gdk_pixbuf_new_from_inline(n, data, copy_pixels, error);
202
266
  /* need to manage the returned value */
203
- rb_ivar_set(self, id_pixdata, Data_Wrap_Struct(rb_cData, NULL, g_free, gstream));
267
+ rb_ivar_set(self, id_pixdata, Data_Wrap_Struct(rb_cData, NULL, g_free, data));
204
268
  } else if (argc == 1){
205
269
  if (TYPE(arg1) == T_STRING) {
206
- buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), &error);
207
- if (buf == NULL){
208
- rb_gc();
209
- error = NULL;
210
- buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), &error);
211
- }
270
+ buf = gdk_pixbuf_new_from_file(RVAL2CSTR(arg1), error);
212
271
  } else if (TYPE(arg1) == T_ARRAY) {
213
272
  const gchar **data = RVAL2STRV(arg1);
214
273
  buf = gdk_pixbuf_new_from_xpm_data(data);
215
- if (buf == NULL) {
216
- rb_gc();
217
- buf = gdk_pixbuf_new_from_xpm_data(data);
218
- }
219
274
  g_free(data);
220
275
  if (buf == NULL)
221
- NOMEM_ERROR(&error);
276
+ NOMEM_ERROR(error);
277
+ } else if (TYPE(arg1) == T_HASH) {
278
+ buf = pixbuf_initialize_by_hash(self, arg1, error);
222
279
  } else {
223
280
  rb_raise(rb_eArgError, "Wrong type of 1st argument or wrong number of arguments");
224
281
  }
@@ -226,14 +283,33 @@ initialize(int argc, VALUE *argv, VALUE self)
226
283
  rb_raise(rb_eArgError, "Wrong number of arguments");
227
284
  }
228
285
 
229
- if (error || ! buf) RAISE_GERROR(error);
230
-
286
+ return buf;
287
+ }
288
+
289
+ static VALUE
290
+ rg_initialize(int argc, VALUE *argv, VALUE self)
291
+ {
292
+ VALUE arg1, arg2, arg3, arg4, arg5, arg6, arg7;
293
+ GdkPixbuf *buf;
294
+ GError *error = NULL;
295
+
296
+ rb_scan_args(argc, argv, "16", &arg1, &arg2, &arg3, &arg4, &arg5, &arg6, &arg7);
297
+ buf = pixbuf_initialize(self, argc, arg1, arg2, arg3, arg4, arg5, arg6, arg7, &error);
298
+ if (buf == NULL) {
299
+ rb_gc();
300
+ g_error_free(error);
301
+ error = NULL;
302
+ buf = pixbuf_initialize(self, argc, arg1, arg2, arg3, arg4, arg5, arg6, arg7, &error);
303
+ }
304
+ if (error || !buf)
305
+ RAISE_GERROR(error);
306
+
231
307
  G_INITIALIZE(self, buf);
232
308
  return Qnil;
233
309
  }
234
310
 
235
311
  static VALUE
236
- copy(VALUE self)
312
+ rg_dup(VALUE self)
237
313
  {
238
314
  VALUE ret;
239
315
  GdkPixbuf* dest = gdk_pixbuf_copy(_SELF(self));
@@ -246,13 +322,13 @@ copy(VALUE self)
246
322
 
247
323
  #if RBGDK_PIXBUF_CHECK_VERSION(2,4,0)
248
324
  static VALUE
249
- get_file_info(VALUE self, VALUE filename)
325
+ rg_s_get_file_info(G_GNUC_UNUSED VALUE self, VALUE filename)
250
326
  {
251
327
  gint width, height;
252
328
 
253
329
  GdkPixbufFormat* format = gdk_pixbuf_get_file_info(RVAL2CSTR(filename),
254
330
  &width, &height);
255
- return format ? rb_ary_new3(3, BOXED2RVAL(format, GDK_TYPE_PIXBUF_FORMAT), INT2NUM(width), INT2NUM(height)) : Qnil;
331
+ return format ? rb_ary_new3(3, GDKPIXBUFFORMAT2RVAL(format), INT2NUM(width), INT2NUM(height)) : Qnil;
256
332
  }
257
333
 
258
334
  #endif
@@ -315,7 +391,7 @@ save_to(VALUE self, const gchar *filename, const gchar *type, VALUE options)
315
391
  /****************************************************/
316
392
  /* File saving */
317
393
  static VALUE
318
- save(int argc, VALUE *argv, VALUE self)
394
+ rg_save(int argc, VALUE *argv, VALUE self)
319
395
  {
320
396
  VALUE filename, type, options;
321
397
 
@@ -336,7 +412,7 @@ gboolean gdk_pixbuf_save_to_callbackv (GdkPixbuf *pixbuf,
336
412
  */
337
413
 
338
414
  static VALUE
339
- save_to_buffer(int argc, VALUE *argv, VALUE self)
415
+ rg_save_to_buffer(int argc, VALUE *argv, VALUE self)
340
416
  {
341
417
  VALUE type, options;
342
418
 
@@ -349,7 +425,7 @@ save_to_buffer(int argc, VALUE *argv, VALUE self)
349
425
  /****************************************************/
350
426
  /* Scaling */
351
427
  static VALUE
352
- scale_simple(int argc, VALUE *argv, VALUE self)
428
+ rg_scale(int argc, VALUE *argv, VALUE self)
353
429
  {
354
430
  GdkPixbuf* dest;
355
431
  VALUE dest_width, dest_height, interp_type, ret;
@@ -359,8 +435,8 @@ scale_simple(int argc, VALUE *argv, VALUE self)
359
435
  &interp_type);
360
436
 
361
437
  if (!NIL_P(interp_type))
362
- type = RVAL2GENUM(interp_type, GDK_TYPE_INTERP_TYPE);
363
-
438
+ type = RVAL2GDKINTERPTYPE(interp_type);
439
+
364
440
  dest = gdk_pixbuf_scale_simple(_SELF(self),
365
441
  NUM2INT(dest_width),
366
442
  NUM2INT(dest_height),
@@ -374,7 +450,7 @@ scale_simple(int argc, VALUE *argv, VALUE self)
374
450
  }
375
451
 
376
452
  static VALUE
377
- scale(int argc, VALUE *argv, VALUE self)
453
+ rg_scale_bang(int argc, VALUE *argv, VALUE self)
378
454
  {
379
455
  GdkInterpType type = GDK_INTERP_BILINEAR;
380
456
 
@@ -386,7 +462,7 @@ scale(int argc, VALUE *argv, VALUE self)
386
462
  &scale_x, &scale_y, &interp_type);
387
463
 
388
464
  if (!NIL_P(interp_type))
389
- type = RVAL2GENUM(interp_type, GDK_TYPE_INTERP_TYPE);
465
+ type = RVAL2GDKINTERPTYPE(interp_type);
390
466
 
391
467
  gdk_pixbuf_scale(_SELF(src), _SELF(self),
392
468
  NUM2INT(src_x), NUM2INT(src_y),
@@ -397,14 +473,14 @@ scale(int argc, VALUE *argv, VALUE self)
397
473
  }
398
474
 
399
475
  static VALUE
400
- composite_simple(VALUE self, VALUE dest_width, VALUE dest_height, VALUE interp_type, VALUE overall_alpha, VALUE check_size, VALUE color1, VALUE color2)
476
+ rg_composite(VALUE self, VALUE dest_width, VALUE dest_height, VALUE interp_type, VALUE overall_alpha, VALUE check_size, VALUE color1, VALUE color2)
401
477
  {
402
478
  GdkPixbuf* dest;
403
479
  VALUE ret;
404
480
  GdkInterpType type = GDK_INTERP_BILINEAR;
405
481
 
406
482
  if (!NIL_P(interp_type))
407
- type = RVAL2GENUM(interp_type, GDK_TYPE_INTERP_TYPE);
483
+ type = RVAL2GDKINTERPTYPE(interp_type);
408
484
 
409
485
  dest = gdk_pixbuf_composite_color_simple(
410
486
  _SELF(self), NUM2INT(dest_width), NUM2INT(dest_height),
@@ -420,7 +496,7 @@ composite_simple(VALUE self, VALUE dest_width, VALUE dest_height, VALUE interp_t
420
496
  }
421
497
 
422
498
  static VALUE
423
- composite(int argc, VALUE *argv, VALUE self)
499
+ rg_composite_bang(int argc, VALUE *argv, VALUE self)
424
500
  {
425
501
  VALUE ret;
426
502
  VALUE args[16];
@@ -434,8 +510,8 @@ composite(int argc, VALUE *argv, VALUE self)
434
510
 
435
511
  switch (argc) {
436
512
  case 11:
437
- if (!NIL_P(args[9]))
438
- interp_type = RVAL2GENUM(args[9], GDK_TYPE_INTERP_TYPE);
513
+ if (!NIL_P(args[9]))
514
+ interp_type = RVAL2GDKINTERPTYPE(args[9]);
439
515
 
440
516
  gdk_pixbuf_composite(_SELF(args[0]), _SELF(self),
441
517
  NUM2INT(args[1]), NUM2INT(args[2]),
@@ -446,8 +522,8 @@ composite(int argc, VALUE *argv, VALUE self)
446
522
  ret = self;
447
523
  break;
448
524
  case 16:
449
- if (!NIL_P(args[9]))
450
- interp_type = RVAL2GENUM(args[9], GDK_TYPE_INTERP_TYPE);
525
+ if (!NIL_P(args[9]))
526
+ interp_type = RVAL2GDKINTERPTYPE(args[9]);
451
527
 
452
528
  gdk_pixbuf_composite_color(_SELF(args[0]), _SELF(self),
453
529
  NUM2INT(args[1]), NUM2INT(args[2]),
@@ -461,18 +537,18 @@ composite(int argc, VALUE *argv, VALUE self)
461
537
  ret = self;
462
538
  break;
463
539
  default:
464
- rb_raise(rb_eArgError, "Wrong number of arguments: %d", argc);
465
- break;
540
+ rb_raise(rb_eArgError, "Wrong number of arguments: %d", argc);
541
+ break;
466
542
  }
467
543
  return ret;
468
544
  }
469
545
 
470
546
  #if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
471
547
  static VALUE
472
- rotate_simple(VALUE self, VALUE angle)
548
+ rg_rotate(VALUE self, VALUE angle)
473
549
  {
474
550
  VALUE ret;
475
- GdkPixbuf* dest = gdk_pixbuf_rotate_simple(_SELF(self), RVAL2GENUM(angle, GDK_TYPE_PIXBUF_ROTATION));
551
+ GdkPixbuf* dest = gdk_pixbuf_rotate_simple(_SELF(self), RVAL2GDKPIXBUFROTATION(angle));
476
552
  if (dest == NULL)
477
553
  return Qnil;
478
554
  ret = GOBJ2RVAL(dest);
@@ -481,7 +557,7 @@ rotate_simple(VALUE self, VALUE angle)
481
557
  }
482
558
 
483
559
  static VALUE
484
- flip(VALUE self, VALUE horizontal)
560
+ rg_flip(VALUE self, VALUE horizontal)
485
561
  {
486
562
  VALUE ret;
487
563
  GdkPixbuf* dest = gdk_pixbuf_flip(_SELF(self), RVAL2CBOOL(horizontal));
@@ -494,7 +570,7 @@ flip(VALUE self, VALUE horizontal)
494
570
  #endif
495
571
 
496
572
  static VALUE
497
- add_alpha(VALUE self, VALUE substitute_color, VALUE r, VALUE g, VALUE b)
573
+ rg_add_alpha(VALUE self, VALUE substitute_color, VALUE r, VALUE g, VALUE b)
498
574
  {
499
575
  VALUE ret;
500
576
  GdkPixbuf* dest = gdk_pixbuf_add_alpha(_SELF(self),
@@ -508,7 +584,7 @@ add_alpha(VALUE self, VALUE substitute_color, VALUE r, VALUE g, VALUE b)
508
584
  }
509
585
 
510
586
  static VALUE
511
- copy_area(VALUE self, VALUE src_x, VALUE src_y, VALUE width, VALUE height, VALUE dest, VALUE dest_x, VALUE dest_y)
587
+ rg_copy_area(VALUE self, VALUE src_x, VALUE src_y, VALUE width, VALUE height, VALUE dest, VALUE dest_x, VALUE dest_y)
512
588
  {
513
589
  gdk_pixbuf_copy_area(_SELF(self), NUM2INT(src_x), NUM2INT(src_y),
514
590
  NUM2INT(width), NUM2INT(height),
@@ -517,7 +593,7 @@ copy_area(VALUE self, VALUE src_x, VALUE src_y, VALUE width, VALUE height, VALUE
517
593
  }
518
594
 
519
595
  static VALUE
520
- saturate_and_pixelate(VALUE self, VALUE staturation, VALUE pixelate)
596
+ rg_saturate_and_pixelate(VALUE self, VALUE staturation, VALUE pixelate)
521
597
  {
522
598
  GdkPixbuf* dest = gdk_pixbuf_copy(_SELF(self));
523
599
  gdk_pixbuf_saturate_and_pixelate(_SELF(self), dest,
@@ -526,7 +602,7 @@ saturate_and_pixelate(VALUE self, VALUE staturation, VALUE pixelate)
526
602
  }
527
603
 
528
604
  static VALUE
529
- fill(VALUE self, VALUE pixel)
605
+ rg_fill_bang(VALUE self, VALUE pixel)
530
606
  {
531
607
  gdk_pixbuf_fill(_SELF(self), NUM2UINT(pixel));
532
608
  return self;
@@ -535,35 +611,40 @@ fill(VALUE self, VALUE pixel)
535
611
  /* From Module Interface */
536
612
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
537
613
  static VALUE
538
- get_formats(VALUE self)
614
+ rg_s_formats(G_GNUC_UNUSED VALUE self)
539
615
  {
540
616
  return GSLIST2ARY2(gdk_pixbuf_get_formats(), GDK_TYPE_PIXBUF_FORMAT);
541
617
  }
542
618
 
619
+ #ifdef HAVE_GDK_PIXBUF_SET_OPTION
543
620
  static VALUE
544
- set_option(VALUE self, VALUE key, VALUE value)
621
+ rg_set_option(VALUE self, VALUE key, VALUE value)
545
622
  {
546
- #if HAVE_GDK_PIXBUF_SET_OPTION
547
- return CBOOL2RVAL(gdk_pixbuf_set_option(_SELF(self),
623
+ return CBOOL2RVAL(gdk_pixbuf_set_option(_SELF(self),
548
624
  RVAL2CSTR(key), RVAL2CSTR(value)));
625
+ }
549
626
  #else
627
+ static VALUE
628
+ set_option(G_GNUC_UNUSED VALUE self, G_GNUC_UNUSED VALUE key, G_GNUC_UNUSED VALUE value)
629
+ {
550
630
  rb_warning("not supported in this version of GTK+");
551
631
  return Qfalse;
552
- #endif
553
632
  }
554
633
  #endif
634
+ #endif
635
+
636
+ extern void Init_gdk_pixbuf2(void);
555
637
 
556
- void
557
- Init_gdk_pixbuf2()
638
+ void
639
+ Init_gdk_pixbuf2(void)
558
640
  {
559
641
  VALUE mGdk = rb_define_module("Gdk");
560
- VALUE gdkPixbuf = G_DEF_CLASS(GDK_TYPE_PIXBUF, "Pixbuf", mGdk);
642
+ VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF, "Pixbuf", mGdk);
561
643
 
562
644
  id_pixdata = rb_intern("pixdata");
563
-
645
+
564
646
  /*
565
647
  gdk_rgb_init();*/ /* initialize it anyway */
566
-
567
648
 
568
649
  /*
569
650
  * Initialization and Versions
@@ -571,86 +652,87 @@ Init_gdk_pixbuf2()
571
652
  /* Removed. This crashes Ruby/GTK on Windows + GTK+-2.4.x.
572
653
  Pointed out by Laurent.
573
654
  #ifdef HAVE_GDK_PIXBUF_VERSION
574
- rb_define_const(gdkPixbuf, "VERSION", CSTR2RVAL(gdk_pixbuf_version));
655
+ rb_define_const(RG_TARGET_NAMESPACE, "VERSION", CSTR2RVAL(gdk_pixbuf_version));
575
656
  #endif
576
657
  */
577
- rb_define_const(gdkPixbuf, "MAJOR", INT2FIX(GDK_PIXBUF_MAJOR));
578
- rb_define_const(gdkPixbuf, "MINOR", INT2FIX(GDK_PIXBUF_MINOR));
579
- rb_define_const(gdkPixbuf, "MICRO", INT2FIX(GDK_PIXBUF_MICRO));
658
+ rb_define_const(RG_TARGET_NAMESPACE, "MAJOR", INT2FIX(GDK_PIXBUF_MAJOR));
659
+ rb_define_const(RG_TARGET_NAMESPACE, "MINOR", INT2FIX(GDK_PIXBUF_MINOR));
660
+ rb_define_const(RG_TARGET_NAMESPACE, "MICRO", INT2FIX(GDK_PIXBUF_MICRO));
580
661
 
581
662
  /*
582
663
  * The GdkPixbuf Structure
583
664
  */
584
- G_REPLACE_GET_PROPERTY(gdkPixbuf, "pixels", get_pixels, 0);
585
- rb_define_method(gdkPixbuf, "pixels=", set_pixels, 1);
586
- rb_define_method(gdkPixbuf, "get_option", get_option, 1);
665
+ G_REPLACE_GET_PROPERTY(RG_TARGET_NAMESPACE, "pixels", get_pixels, 0);
666
+ RG_DEF_METHOD_OPERATOR("pixels=", set_pixels, 1);
667
+ RG_DEF_METHOD(get_option, 1);
587
668
 
588
669
  /* GdkPixbufError */
589
670
  G_DEF_ERROR(GDK_PIXBUF_ERROR, "PixbufError", mGdk, rb_eRuntimeError, GDK_TYPE_PIXBUF_ERROR);
590
671
 
591
672
  /* GdkColorspace */
592
- G_DEF_CLASS(GDK_TYPE_COLORSPACE, "ColorSpace", gdkPixbuf);
593
- G_DEF_CONSTANTS(gdkPixbuf, GDK_TYPE_COLORSPACE, "GDK_");
673
+ G_DEF_CLASS(GDK_TYPE_COLORSPACE, "ColorSpace", RG_TARGET_NAMESPACE);
674
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GDK_TYPE_COLORSPACE, "GDK_");
594
675
 
595
676
  /* GdkPixbufAlphaMode */
596
- G_DEF_CLASS(GDK_TYPE_PIXBUF_ALPHA_MODE, "AlphaMode", gdkPixbuf);
597
- G_DEF_CONSTANTS(gdkPixbuf, GDK_TYPE_PIXBUF_ALPHA_MODE, "GDK_PIXBUF_");
677
+ G_DEF_CLASS(GDK_TYPE_PIXBUF_ALPHA_MODE, "AlphaMode", RG_TARGET_NAMESPACE);
678
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GDK_TYPE_PIXBUF_ALPHA_MODE, "GDK_PIXBUF_");
598
679
 
599
680
  /*
600
681
  * File Loading, Image Data in Memory
601
682
  */
602
- rb_define_method(gdkPixbuf, "initialize", initialize, -1);
603
- rb_define_method(gdkPixbuf, "dup", copy, 0);
683
+ RG_DEF_METHOD(initialize, -1);
684
+ RG_DEF_METHOD(dup, 0);
604
685
  #if RBGDK_PIXBUF_CHECK_VERSION(2,4,0)
605
- rb_define_singleton_method(gdkPixbuf, "get_file_info", get_file_info, 1);
686
+ RG_DEF_SMETHOD(get_file_info, 1);
606
687
  #endif
607
688
 
608
689
  /*
609
690
  * File saving
610
691
  */
611
- rb_define_method(gdkPixbuf, "save", save, -1);
692
+ RG_DEF_METHOD(save, -1);
612
693
  #if RBGDK_PIXBUF_CHECK_VERSION(2,4,0)
613
- rb_define_method(gdkPixbuf, "save_to_buffer", save_to_buffer, -1);
694
+ RG_DEF_METHOD(save_to_buffer, -1);
614
695
  #endif
615
696
 
616
697
  /*
617
698
  * Scaling
618
699
  */
619
- rb_define_method(gdkPixbuf, "scale", scale_simple, -1);
620
- rb_define_method(gdkPixbuf, "scale!", scale, -1);
621
- rb_define_method(gdkPixbuf, "composite", composite_simple, 7);
622
- rb_define_method(gdkPixbuf, "composite!", composite, -1);
700
+ RG_DEF_METHOD(scale, -1);
701
+ RG_DEF_METHOD_BANG(scale, -1);
702
+ RG_DEF_METHOD(composite, 7);
703
+ RG_DEF_METHOD_BANG(composite, -1);
623
704
  #if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
624
- rb_define_method(gdkPixbuf, "rotate", rotate_simple, 1);
625
- rb_define_method(gdkPixbuf, "flip", flip, 1);
705
+ RG_DEF_METHOD(rotate, 1);
706
+ RG_DEF_METHOD(flip, 1);
626
707
  #endif
627
708
 
628
709
  /* GdkInterpType */
629
- G_DEF_CLASS(GDK_TYPE_INTERP_TYPE, "InterpType", gdkPixbuf);
630
- G_DEF_CONSTANTS(gdkPixbuf, GDK_TYPE_INTERP_TYPE, "GDK_");
710
+ G_DEF_CLASS(GDK_TYPE_INTERP_TYPE, "InterpType", RG_TARGET_NAMESPACE);
711
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GDK_TYPE_INTERP_TYPE, "GDK_");
631
712
 
632
713
  #if RBGDK_PIXBUF_CHECK_VERSION(2,6,0)
633
714
  /* GdkPixbufRotation */
634
- G_DEF_CLASS(GDK_TYPE_PIXBUF_ROTATION, "GdkPixbufRotation", gdkPixbuf);
635
- G_DEF_CONSTANTS(gdkPixbuf, GDK_TYPE_PIXBUF_ROTATION, "GDK_PIXBUF_");
715
+ G_DEF_CLASS(GDK_TYPE_PIXBUF_ROTATION, "GdkPixbufRotation", RG_TARGET_NAMESPACE);
716
+ G_DEF_CONSTANTS(RG_TARGET_NAMESPACE, GDK_TYPE_PIXBUF_ROTATION, "GDK_PIXBUF_");
636
717
  #endif
637
718
  /*
638
719
  * Utilities
639
720
  */
640
- rb_define_method(gdkPixbuf, "add_alpha", add_alpha, 4);
641
- rb_define_method(gdkPixbuf, "copy_area", copy_area, 7);
642
- rb_define_method(gdkPixbuf, "saturate_and_pixelate", saturate_and_pixelate, 2);
643
- rb_define_method(gdkPixbuf, "fill!", fill, 1);
721
+ RG_DEF_METHOD(add_alpha, 4);
722
+ RG_DEF_METHOD(copy_area, 7);
723
+ RG_DEF_METHOD(saturate_and_pixelate, 2);
724
+ RG_DEF_METHOD_BANG(fill, 1);
644
725
 
645
726
  /*
646
727
  * Module Interface
647
728
  */
648
729
  #if RBGDK_PIXBUF_CHECK_VERSION(2,2,0)
649
- rb_define_singleton_method(gdkPixbuf, "formats", get_formats, 0);
650
- rb_define_method(gdkPixbuf, "set_option", set_option, 2);
730
+ RG_DEF_SMETHOD(formats, 0);
731
+ RG_DEF_METHOD(set_option, 2);
651
732
  #endif
652
733
 
653
734
  Init_gdk_pixbuf_animation(mGdk);
735
+ Init_gdk_pixbuf_animation_iter(mGdk);
654
736
  #if RBGDK_PIXBUF_CHECK_VERSION(2,8,0)
655
737
  Init_gdk_pixbuf_simpleanim(mGdk);
656
738
  #endif