gdk_pixbuf2 3.0.8 → 3.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/lib/gdk_pixbuf2.rb +11 -69
  4. data/lib/gdk_pixbuf2/deprecated.rb +160 -0
  5. data/lib/gdk_pixbuf2/loader.rb +51 -0
  6. data/lib/gdk_pixbuf2/pixbuf-loader.rb +24 -0
  7. data/lib/gdk_pixbuf2/pixbuf.rb +282 -0
  8. data/lib/gdk_pixbuf2/version.rb +33 -0
  9. data/sample/anim.rb +2 -2
  10. data/sample/composite.rb +41 -11
  11. data/sample/flip.rb +2 -2
  12. data/sample/format.rb +2 -4
  13. data/sample/loader.rb +3 -3
  14. data/sample/rotate.rb +4 -4
  15. data/sample/save.rb +3 -3
  16. data/sample/scale.rb +14 -6
  17. data/sample/simpleanim.rb +10 -4
  18. data/sample/utils.rb +7 -4
  19. data/sample/xpm.rb +9 -9
  20. data/test/fixture/floppybuddy.gif +0 -0
  21. data/test/fixture/gnome-logo-icon.png +0 -0
  22. data/test/fixture/image.gresource +0 -0
  23. data/test/fixture/image.gresource.xml +6 -0
  24. data/test/gdk_pixbuf2-test-utils.rb +11 -0
  25. data/test/run-test.rb +6 -3
  26. data/test/test-animation.rb +30 -0
  27. data/test/test-loader.rb +31 -0
  28. data/test/test-pixbuf.rb +334 -0
  29. metadata +18 -25
  30. data/README +0 -29
  31. data/ext/gdk_pixbuf2/depend +0 -11
  32. data/ext/gdk_pixbuf2/extconf.rb +0 -68
  33. data/ext/gdk_pixbuf2/gdk_pixbuf2.def +0 -2
  34. data/ext/gdk_pixbuf2/rbgdk-pixbuf-format.c +0 -179
  35. data/ext/gdk_pixbuf2/rbgdk-pixbuf-loader.c +0 -164
  36. data/ext/gdk_pixbuf2/rbgdk-pixbuf.c +0 -737
  37. data/ext/gdk_pixbuf2/rbgdk-pixbuf.h +0 -41
  38. data/ext/gdk_pixbuf2/rbgdk-pixbuf2conversions.h +0 -42
  39. data/ext/gdk_pixbuf2/rbgdk-pixbuf2private.h +0 -35
  40. data/ext/gdk_pixbuf2/rbgdk-pixbufanimation.c +0 -93
  41. data/ext/gdk_pixbuf2/rbgdk-pixbufanimationiter.c +0 -71
  42. data/ext/gdk_pixbuf2/rbgdk-pixbufsimpleanim.c +0 -53
  43. data/ext/gdk_pixbuf2/rbgdk-pixdata.c +0 -213
  44. data/extconf.rb +0 -49
  45. data/sample/inline.rb +0 -37
  46. data/sample/pixdata.rb +0 -39
  47. data/test/test-version.rb +0 -47
@@ -1,41 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002-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
- #ifndef __RBGDK_PIXBUF_H__
23
- #define __RBGDK_PIXBUF_H__
24
-
25
- #define GDK_PIXBUF_ENABLE_BACKEND
26
- #include <gdk-pixbuf/gdk-pixbuf.h>
27
- #include <gdk-pixbuf/gdk-pixdata.h>
28
- #include "rbgobject.h"
29
- #include "rbgdk-pixbuf2conversions.h"
30
-
31
- extern GType gdk_pixbuf_format_get_type(void);
32
-
33
- #define RBGDK_PIXBUF_CHECK_VERSION(major,minor,micro) \
34
- (GDK_PIXBUF_MAJOR > (major) || \
35
- (GDK_PIXBUF_MAJOR == (major) && GDK_PIXBUF_MINOR > (minor)) || \
36
- (GDK_PIXBUF_MAJOR == (major) && GDK_PIXBUF_MINOR == (minor) && \
37
- GDK_PIXBUF_MICRO >= (micro)))
38
-
39
- #define GDK_TYPE_PIXBUF_FORMAT (gdk_pixbuf_format_get_type())
40
-
41
- #endif /* __RBGDK_PIXBUF_H__ */
@@ -1,42 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 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
- #ifndef __RBGDK_PIXBUF2CONVERSIONS_H__
22
- #define __RBGDK_PIXBUF2CONVERSIONS_H__
23
-
24
- #define RVAL2GDKPIXBUF(o) (GDK_PIXBUF(RVAL2GOBJ(o)))
25
- #define RVAL2GDKPIXBUFANIMATION(o) (GDK_PIXBUF_ANIMATION(RVAL2GOBJ(o)))
26
- #define RVAL2GDKPIXBUFANIMATIONITER(o) (GDK_PIXBUF_ANIMATION_ITER(RVAL2GOBJ(o)))
27
- #define RVAL2GDKPIXBUFLOADER(o) (GDK_PIXBUF_LOADER(RVAL2GOBJ(o)))
28
- #define RVAL2GDKPIXBUFSIMPLEANIM(o) (GDK_PIXBUF_SIMPLE_ANIM(RVAL2GOBJ(o)))
29
-
30
- #define RVAL2GDKPIXBUFFORMAT(o) ((GdkPixbufFormat*)RVAL2BOXED(o, GDK_TYPE_PIXBUF_FORMAT))
31
- #define GDKPIXBUFFORMAT2RVAL(o) (BOXED2RVAL(o, GDK_TYPE_PIXBUF_FORMAT))
32
- #define RVAL2GDKPIXDATA(o) ((GdkPixdata*)RVAL2BOXED(o, GDK_TYPE_PIXDATA))
33
- #define GDKPIXDATA2RVAL(o) (BOXED2RVAL(o, GDK_TYPE_PIXDATA))
34
-
35
- #define RVAL2GDKCOLORSPACE(o) (RVAL2GENUM(o, GDK_TYPE_COLORSPACE))
36
- #define GDKCOLORSPACE2RVAL(o) (GENUM2RVAL(o, GDK_TYPE_COLORSPACE))
37
- #define RVAL2GDKINTERPTYPE(o) (RVAL2GENUM(o, GDK_TYPE_INTERP_TYPE))
38
- #define GDKINTERPTYPE2RVAL(o) (GENUM2RVAL(o, GDK_TYPE_INTERP_TYPE))
39
- #define RVAL2GDKPIXBUFROTATION(o) (RVAL2GENUM(o, GDK_TYPE_PIXBUF_ROTATION))
40
- #define GDKPIXBUFROTATION2RVAL(o) (GENUM2RVAL(o, GDK_TYPE_PIXBUF_ROTATION))
41
-
42
- #endif /* __RBGDK_PIXBUF2CONVERSIONS_H__ */
@@ -1,35 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 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
- #ifndef __RBGDK_PIXBUF2PRIVATE_H__
22
- #define __RBGDK_PIXBUF2PRIVATE_H__
23
-
24
- #include "rbgdk-pixbuf.h"
25
-
26
- G_GNUC_INTERNAL void Init_gdk_pixbuf_animation(VALUE mGLib);
27
- G_GNUC_INTERNAL void Init_gdk_pixbuf_animation_iter(VALUE mGLib);
28
- G_GNUC_INTERNAL void Init_gdk_pixbuf_format(VALUE mGLib);
29
- G_GNUC_INTERNAL void Init_gdk_pixbuf_loader(VALUE mGLib);
30
- #if RBGDK_PIXBUF_CHECK_VERSION(2,8,0)
31
- G_GNUC_INTERNAL void Init_gdk_pixbuf_simpleanim(VALUE mGLib);
32
- #endif
33
- G_GNUC_INTERNAL void Init_gdk_pixdata(VALUE mGLib);
34
-
35
- #endif /* __RBGDK_PIXBUF2PRIVATE_H__ */
@@ -1,93 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002,2003 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbgdk-pixbuf2private.h"
23
-
24
- #define RG_TARGET_NAMESPACE cPixbufAnimation
25
- #define _SELF(s) (RVAL2GDKPIXBUFANIMATION(s))
26
-
27
- static VALUE
28
- rg_initialize(VALUE self, VALUE filename)
29
- {
30
- GdkPixbufAnimation* ret;
31
- GError* error = NULL;
32
-
33
- ret = gdk_pixbuf_animation_new_from_file(RVAL2CSTR(filename), &error);
34
- if (ret == NULL)
35
- RAISE_GERROR(error);
36
-
37
- G_INITIALIZE(self, ret);
38
- return Qnil;
39
- }
40
-
41
- static VALUE
42
- rg_width(VALUE self)
43
- {
44
- return INT2NUM(gdk_pixbuf_animation_get_width(_SELF(self)));
45
- }
46
-
47
- static VALUE
48
- rg_height(VALUE self)
49
- {
50
- return INT2NUM(gdk_pixbuf_animation_get_height(_SELF(self)));
51
- }
52
-
53
- static VALUE
54
- rg_get_iter(int argc, VALUE *argv, VALUE self)
55
- {
56
- VALUE start_time_sec, start_time_usec;
57
- GTimeVal start_time;
58
-
59
- rb_scan_args(argc, argv, "02", &start_time_sec, &start_time_usec);
60
-
61
- if (NIL_P(start_time_sec))
62
- return GOBJ2RVAL(gdk_pixbuf_animation_get_iter(_SELF(self), NULL));
63
-
64
- start_time.tv_sec = NUM2LONG(start_time_sec);
65
- start_time.tv_usec = NIL_P(start_time_usec) ? 0 : NUM2LONG(start_time_usec);
66
-
67
- return GOBJ2RVAL(gdk_pixbuf_animation_get_iter(_SELF(self), &start_time));
68
- }
69
-
70
- static VALUE
71
- rg_static_image_p(VALUE self)
72
- {
73
- return CBOOL2RVAL(gdk_pixbuf_animation_is_static_image(_SELF(self)));
74
- }
75
-
76
- static VALUE
77
- rg_static_image(VALUE self)
78
- {
79
- return GOBJ2RVAL(gdk_pixbuf_animation_get_static_image(_SELF(self)));
80
- }
81
-
82
- void
83
- Init_gdk_pixbuf_animation(VALUE mGdk)
84
- {
85
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF_ANIMATION, "PixbufAnimation", mGdk);
86
-
87
- RG_DEF_METHOD(initialize, 1);
88
- RG_DEF_METHOD(width, 0);
89
- RG_DEF_METHOD(height, 0);
90
- RG_DEF_METHOD(get_iter, -1);
91
- RG_DEF_METHOD_P(static_image, 0);
92
- RG_DEF_METHOD(static_image, 0);
93
- }
@@ -1,71 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002,2003 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbgdk-pixbuf2private.h"
23
-
24
- #define RG_TARGET_NAMESPACE cPixbufAnimationIter
25
- #define _SELF(i) (RVAL2GDKPIXBUFANIMATIONITER(i))
26
-
27
- static VALUE
28
- rg_advance(int argc, VALUE *argv, VALUE self)
29
- {
30
- VALUE current_time_sec, current_time_usec;
31
- GTimeVal current_time;
32
-
33
- rb_scan_args(argc, argv, "02", &current_time_sec, &current_time_usec);
34
-
35
- if (NIL_P(current_time_sec))
36
- return CBOOL2RVAL(gdk_pixbuf_animation_iter_advance(_SELF(self), NULL));
37
-
38
- current_time.tv_sec = NUM2LONG(current_time_sec);
39
- current_time.tv_usec = NIL_P(current_time_usec) ? 0 : NUM2LONG(current_time_usec);
40
-
41
- return CBOOL2RVAL(gdk_pixbuf_animation_iter_advance(_SELF(self), &current_time));
42
- }
43
-
44
- static VALUE
45
- rg_delay_time(VALUE self)
46
- {
47
- return INT2NUM(gdk_pixbuf_animation_iter_get_delay_time(_SELF(self)));
48
- }
49
-
50
- static VALUE
51
- rg_on_currently_loading_frame_p(VALUE self)
52
- {
53
- return CBOOL2RVAL(gdk_pixbuf_animation_iter_on_currently_loading_frame(_SELF(self)));
54
- }
55
-
56
- static VALUE
57
- rg_pixbuf(VALUE self)
58
- {
59
- return GOBJ2RVAL(gdk_pixbuf_animation_iter_get_pixbuf(_SELF(self)));
60
- }
61
-
62
- void
63
- Init_gdk_pixbuf_animation_iter(VALUE mGdk)
64
- {
65
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF_ANIMATION_ITER, "PixbufAnimationIter", mGdk);
66
-
67
- RG_DEF_METHOD(advance, -1);
68
- RG_DEF_METHOD(delay_time, 0);
69
- RG_DEF_METHOD_P(on_currently_loading_frame, 0);
70
- RG_DEF_METHOD(pixbuf, 0);
71
- }
@@ -1,53 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002,2003 the ruby-gnome2 project
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"
23
-
24
- #if RBGDK_PIXBUF_CHECK_VERSION(2,8,0)
25
- #define RG_TARGET_NAMESPACE cPixbufSimpleAnim
26
- #define _SELF(s) (RVAL2GDKPIXBUFSIMPLEANIM(s))
27
-
28
- static VALUE
29
- rg_initialize(VALUE self, VALUE width, VALUE height, VALUE rate)
30
- {
31
- GdkPixbufSimpleAnim* ret = gdk_pixbuf_simple_anim_new(NUM2INT(width), NUM2INT(height), NUM2DBL(rate));
32
- G_INITIALIZE(self, ret);
33
- return Qnil;
34
- }
35
-
36
- static VALUE
37
- rg_add_frame(VALUE self, VALUE pixbuf)
38
- {
39
- gdk_pixbuf_simple_anim_add_frame(_SELF(self), RVAL2GDKPIXBUF(pixbuf));
40
- return self;
41
- }
42
- #endif
43
-
44
- void
45
- Init_gdk_pixbuf_simpleanim(VALUE mGdk)
46
- {
47
- #if RBGDK_PIXBUF_CHECK_VERSION(2,8,0)
48
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXBUF_SIMPLE_ANIM, "PixbufSimpleAnim", mGdk);
49
-
50
- RG_DEF_METHOD(initialize, 3);
51
- RG_DEF_METHOD(add_frame, 1);
52
- #endif
53
- }
@@ -1,213 +0,0 @@
1
- /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
- /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
4
- * Copyright (C) 2002,2003 Masao Mutoh
5
- *
6
- * This library is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU Lesser General Public
8
- * License as published by the Free Software Foundation; either
9
- * version 2.1 of the License, or (at your option) any later version.
10
- *
11
- * This library is distributed in the hope that it will be useful,
12
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
- * Lesser General Public License for more details.
15
- *
16
- * You should have received a copy of the GNU Lesser General Public
17
- * License along with this library; if not, write to the Free Software
18
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
- * MA 02110-1301 USA
20
- */
21
-
22
- #include "rbgdk-pixbuf2private.h"
23
-
24
- #define GDK_TYPE_PIXDATA (gdk_pixdata_get_type())
25
- #define RG_TARGET_NAMESPACE cPixdata
26
- #define _SELF(s) (RVAL2GDKPIXDATA(s))
27
-
28
- static ID id_pixdata;
29
-
30
- /*****************************************/
31
- static GdkPixdata *
32
- gdk_pixdata_copy(const GdkPixdata* src)
33
- {
34
- GdkPixdata* data;
35
- g_return_val_if_fail (src != NULL, NULL);
36
- data = g_new(GdkPixdata, 1);
37
- *data = *src;
38
- return data;
39
- }
40
-
41
- static GType
42
- gdk_pixdata_get_type(void)
43
- {
44
- static GType our_type = 0;
45
- if (our_type == 0)
46
- our_type = g_boxed_type_register_static ("GdkPixdata",
47
- (GBoxedCopyFunc)gdk_pixdata_copy,
48
- (GBoxedFreeFunc)g_free);
49
- return our_type;
50
- }
51
- /*****************************************/
52
- static VALUE
53
- rg_s_from_pixbuf(G_GNUC_UNUSED VALUE self, VALUE pixbuf, VALUE use_rle)
54
- {
55
- GdkPixdata pixdata;
56
- gpointer rle_data = gdk_pixdata_from_pixbuf(&pixdata, RVAL2GDKPIXBUF(pixbuf), RVAL2CBOOL(use_rle));
57
- VALUE ret = GDKPIXDATA2RVAL(&pixdata);
58
- if (use_rle){
59
- /* need to manage the returned value */
60
- rb_ivar_set(ret, id_pixdata, Data_Wrap_Struct(rb_cData, NULL, g_free, rle_data));
61
- }
62
- return ret;
63
- }
64
-
65
- static VALUE
66
- rg_to_pixbuf(VALUE self, VALUE copy_pixels)
67
- {
68
- GError* error = NULL;
69
- GdkPixbuf* ret = gdk_pixbuf_from_pixdata(_SELF(self), RVAL2CBOOL(copy_pixels), &error);
70
- if (error)
71
- RAISE_GERROR(error);
72
- return GOBJ2RVAL(ret);
73
- }
74
-
75
- static VALUE
76
- rg_serialize(VALUE self)
77
- {
78
- guint stream_length;
79
- guint i;
80
- guint8* ret = gdk_pixdata_serialize(_SELF(self), &stream_length);
81
- VALUE ary = rb_ary_new2(stream_length);
82
- for (i = 0; i < stream_length; i++) {
83
- rb_ary_push(ary, UINT2NUM(ret[i]));
84
- }
85
- return ary;
86
- }
87
-
88
- static VALUE
89
- rg_s_deserialize(VALUE self, VALUE rbstream)
90
- {
91
- GdkPixdata pixdata;
92
- long n;
93
- guint8 *stream = RVAL2GUINT8S(rbstream, n);
94
- GError *error = NULL;
95
-
96
- /* TODO: Should we really be creating a new array here? As far as I can
97
- tell, the data is copied. */
98
- if (!gdk_pixdata_deserialize(&pixdata, n, stream, &error))
99
- RAISE_GERROR(error);
100
-
101
- /* need to manage the returned value */
102
- rb_ivar_set(self, id_pixdata, Data_Wrap_Struct(rb_cData, NULL, g_free, stream));
103
-
104
- return GDKPIXDATA2RVAL(&pixdata);
105
- }
106
-
107
- static VALUE
108
- rg_to_csource(VALUE self, VALUE name, VALUE dump_type)
109
- {
110
- GString* str = gdk_pixdata_to_csource(_SELF(self), RVAL2CSTR(name), FIX2INT(dump_type));
111
- VALUE ret = CSTR2RVAL(str->str);
112
- g_string_free(str, TRUE);
113
- return ret;
114
- }
115
-
116
- /* GdkPixdata */
117
- static VALUE
118
- rg_magic(VALUE self)
119
- {
120
- return UINT2NUM(_SELF(self)->magic);
121
- }
122
-
123
- static VALUE
124
- rg_length(VALUE self)
125
- {
126
- gint32 length = _SELF(self)->length;
127
-
128
- if(length > 0)
129
- length -= GDK_PIXDATA_HEADER_LENGTH;
130
- return INT2NUM(length);
131
- }
132
-
133
- static VALUE
134
- rg_pixdata_type(VALUE self)
135
- {
136
- return UINT2NUM(_SELF(self)->pixdata_type);
137
- }
138
-
139
- static VALUE
140
- rg_rowstride(VALUE self)
141
- {
142
- return INT2NUM(_SELF(self)->rowstride);
143
- }
144
-
145
- static VALUE
146
- rg_width(VALUE self)
147
- {
148
- return INT2NUM(_SELF(self)->width);
149
- }
150
-
151
- static VALUE
152
- rg_height(VALUE self)
153
- {
154
- return INT2NUM(_SELF(self)->height);
155
- }
156
-
157
- static VALUE
158
- rg_pixel_data(VALUE self)
159
- {
160
- gint i;
161
- guint8* ret = _SELF(self)->pixel_data;
162
- gint32 length = _SELF(self)->length - GDK_PIXDATA_HEADER_LENGTH;
163
-
164
- VALUE ary = rb_ary_new2(length);
165
- for (i = 0; i < length; i++) {
166
- rb_ary_push(ary, UINT2NUM(ret[i]));
167
- }
168
- return ary;
169
- }
170
-
171
- void
172
- Init_gdk_pixdata(VALUE mGdk)
173
- {
174
- VALUE RG_TARGET_NAMESPACE = G_DEF_CLASS(GDK_TYPE_PIXDATA, "Pixdata", mGdk);
175
-
176
- id_pixdata = rb_intern("pixdata");
177
-
178
- RG_DEF_SMETHOD(from_pixbuf, 2);
179
- RG_DEF_SMETHOD(deserialize, 1);
180
- RG_DEF_METHOD(to_pixbuf, 1);
181
- RG_DEF_METHOD(serialize, 0);
182
- RG_DEF_METHOD(to_csource, 2);
183
- RG_DEF_METHOD(magic, 0);
184
- RG_DEF_METHOD(length, 0);
185
- RG_DEF_METHOD(pixdata_type, 0);
186
- RG_DEF_METHOD(rowstride, 0);
187
- RG_DEF_METHOD(width, 0);
188
- RG_DEF_METHOD(height, 0);
189
- RG_DEF_METHOD(pixel_data, 0);
190
-
191
- rb_define_const(RG_TARGET_NAMESPACE, "PIXBUF_MAGIC_NUMBER", INT2NUM(GDK_PIXBUF_MAGIC_NUMBER));
192
- rb_define_const(RG_TARGET_NAMESPACE, "HEADER_LENGTH", INT2NUM(GDK_PIXDATA_HEADER_LENGTH));
193
-
194
- /* GdkPixdataType */
195
- rb_define_const(RG_TARGET_NAMESPACE, "COLOR_TYPE_RGB", INT2FIX(GDK_PIXDATA_COLOR_TYPE_RGB));
196
- rb_define_const(RG_TARGET_NAMESPACE, "COLOR_TYPE_RGBA", INT2FIX(GDK_PIXDATA_COLOR_TYPE_RGBA));
197
- rb_define_const(RG_TARGET_NAMESPACE, "COLOR_TYPE_MASK", INT2FIX(GDK_PIXDATA_COLOR_TYPE_MASK));
198
- rb_define_const(RG_TARGET_NAMESPACE, "SAMPLE_WIDTH_8", INT2FIX(GDK_PIXDATA_SAMPLE_WIDTH_8));
199
- rb_define_const(RG_TARGET_NAMESPACE, "SAMPLE_WIDTH_MASK", INT2FIX(GDK_PIXDATA_SAMPLE_WIDTH_MASK));
200
- rb_define_const(RG_TARGET_NAMESPACE, "ENCODING_RAW", INT2FIX(GDK_PIXDATA_ENCODING_RAW));
201
- rb_define_const(RG_TARGET_NAMESPACE, "ENCODING_RLE", INT2FIX(GDK_PIXDATA_ENCODING_RLE));
202
- rb_define_const(RG_TARGET_NAMESPACE, "ENCODING_MASK", INT2FIX(GDK_PIXDATA_ENCODING_MASK));
203
-
204
- /* GdkPixdataDumpType */
205
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_PIXDATA_STREAM", INT2FIX(GDK_PIXDATA_DUMP_PIXDATA_STREAM));
206
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_PIXDATA_STRUCT", INT2FIX(GDK_PIXDATA_DUMP_PIXDATA_STRUCT));
207
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_MACROS", INT2FIX(GDK_PIXDATA_DUMP_MACROS));
208
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_GTYPES", INT2FIX(GDK_PIXDATA_DUMP_GTYPES));
209
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_CTYPES", INT2FIX(GDK_PIXDATA_DUMP_CTYPES));
210
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_STATIC", INT2FIX(GDK_PIXDATA_DUMP_STATIC));
211
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_CONST", INT2FIX(GDK_PIXDATA_DUMP_CONST));
212
- rb_define_const(RG_TARGET_NAMESPACE, "DUMP_RLE_DECODER", INT2FIX(GDK_PIXDATA_DUMP_RLE_DECODER));
213
- }