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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/lib/gdk_pixbuf2.rb +11 -69
- data/lib/gdk_pixbuf2/deprecated.rb +160 -0
- data/lib/gdk_pixbuf2/loader.rb +51 -0
- data/lib/gdk_pixbuf2/pixbuf-loader.rb +24 -0
- data/lib/gdk_pixbuf2/pixbuf.rb +282 -0
- data/lib/gdk_pixbuf2/version.rb +33 -0
- data/sample/anim.rb +2 -2
- data/sample/composite.rb +41 -11
- data/sample/flip.rb +2 -2
- data/sample/format.rb +2 -4
- data/sample/loader.rb +3 -3
- data/sample/rotate.rb +4 -4
- data/sample/save.rb +3 -3
- data/sample/scale.rb +14 -6
- data/sample/simpleanim.rb +10 -4
- data/sample/utils.rb +7 -4
- data/sample/xpm.rb +9 -9
- data/test/fixture/floppybuddy.gif +0 -0
- data/test/fixture/gnome-logo-icon.png +0 -0
- data/test/fixture/image.gresource +0 -0
- data/test/fixture/image.gresource.xml +6 -0
- data/test/gdk_pixbuf2-test-utils.rb +11 -0
- data/test/run-test.rb +6 -3
- data/test/test-animation.rb +30 -0
- data/test/test-loader.rb +31 -0
- data/test/test-pixbuf.rb +334 -0
- metadata +18 -25
- data/README +0 -29
- data/ext/gdk_pixbuf2/depend +0 -11
- data/ext/gdk_pixbuf2/extconf.rb +0 -68
- data/ext/gdk_pixbuf2/gdk_pixbuf2.def +0 -2
- data/ext/gdk_pixbuf2/rbgdk-pixbuf-format.c +0 -179
- data/ext/gdk_pixbuf2/rbgdk-pixbuf-loader.c +0 -164
- data/ext/gdk_pixbuf2/rbgdk-pixbuf.c +0 -737
- data/ext/gdk_pixbuf2/rbgdk-pixbuf.h +0 -41
- data/ext/gdk_pixbuf2/rbgdk-pixbuf2conversions.h +0 -42
- data/ext/gdk_pixbuf2/rbgdk-pixbuf2private.h +0 -35
- data/ext/gdk_pixbuf2/rbgdk-pixbufanimation.c +0 -93
- data/ext/gdk_pixbuf2/rbgdk-pixbufanimationiter.c +0 -71
- data/ext/gdk_pixbuf2/rbgdk-pixbufsimpleanim.c +0 -53
- data/ext/gdk_pixbuf2/rbgdk-pixdata.c +0 -213
- data/extconf.rb +0 -49
- data/sample/inline.rb +0 -37
- data/sample/pixdata.rb +0 -39
- 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", ¤t_time_sec, ¤t_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), ¤t_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
|
-
}
|