[perl-Gtk3] Make Gtk3::Gdk::Pixbuf::save, save_to_buffer and save_to_callback usable
- From: Torsten SchÃnfeld <tsch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [perl-Gtk3] Make Gtk3::Gdk::Pixbuf::save, save_to_buffer and save_to_callback usable
- Date: Sat, 9 Feb 2013 22:09:35 +0000 (UTC)
commit cc292710ce4188eacf81923784a7d55c324fc2c3
Author: Torsten SchÃnfeld <kaffeetisch gmx de>
Date: Sat Feb 9 23:08:20 2013 +0100
Make Gtk3::Gdk::Pixbuf::save, save_to_buffer and save_to_callback usable
lib/Gtk3.pm | 9 ++++++---
t/overrides.t | 40 +++++++++++++++++++++++++++++-----------
2 files changed, 35 insertions(+), 14 deletions(-)
---
diff --git a/lib/Gtk3.pm b/lib/Gtk3.pm
index 4c91cfc..cd1aeba 100644
--- a/lib/Gtk3.pm
+++ b/lib/Gtk3.pm
@@ -1277,6 +1277,9 @@ sub Gtk3::Gdk::Pixbuf::new_from_xpm_data {
$class, $real_data);
}
+# The next three subs might have to change when
+# <https://bugzilla.gnome.org/show_bug.cgi?id=670372> is accepted.
+
sub Gtk3::Gdk::Pixbuf::save {
my ($pixbuf, $filename, $type, @rest) = @_;
my ($keys, $values) = _unpack_keys_and_values (\ rest);
@@ -1285,7 +1288,7 @@ sub Gtk3::Gdk::Pixbuf::save {
" -or-: $pixbuf->save (\$filename, \$type, \$key1 => \$value1, ...)");
}
Glib::Object::Introspection->invoke (
- $_GDK_PIXBUF_BASENAME, 'Pixbuf', 'save',
+ $_GDK_PIXBUF_BASENAME, 'Pixbuf', 'savev',
$pixbuf, $filename, $type, $keys, $values);
}
@@ -1298,7 +1301,7 @@ sub Gtk3::Gdk::Pixbuf::save_to_buffer {
}
my (undef, $buffer) =
Glib::Object::Introspection->invoke (
- $_GDK_PIXBUF_BASENAME, 'Pixbuf', 'save_to_buffer',
+ $_GDK_PIXBUF_BASENAME, 'Pixbuf', 'save_to_bufferv',
$pixbuf, $type, $keys, $values);
return $buffer;
}
@@ -1311,7 +1314,7 @@ sub Gtk3::Gdk::Pixbuf::save_to_callback {
" -or-: $pixbuf->save_to_callback (\$save_func, \$user_data, \$type, \$key1 => \$value1, ...)");
}
Glib::Object::Introspection->invoke (
- $_GDK_PIXBUF_BASENAME, 'Pixbuf', 'save_to_callback',
+ $_GDK_PIXBUF_BASENAME, 'Pixbuf', 'save_to_callbackv',
$pixbuf, $save_func, $user_data, $type, $keys, $values);
}
diff --git a/t/overrides.t b/t/overrides.t
index 54d6cdb..b5ccc55 100644
--- a/t/overrides.t
+++ b/t/overrides.t
@@ -7,7 +7,7 @@ use warnings;
use utf8;
use Encode;
-plan tests => 139;
+plan tests => 145;
# Gtk3::CHECK_VERSION and check_version
{
@@ -552,17 +552,30 @@ SKIP: {
isa_ok (ref $formats[0], 'Gtk3::Gdk::PixbufFormat');
}
-# Gtk3::Gdk::Pixbuf::save, save_to_buffer, save_to_callback
+# Gtk3::Gdk::Pixbuf::new_from_data
SKIP: {
- # FIXME: https://bugzilla.gnome.org/show_bug.cgi?id=670372
- skip 'Gtk3::Gdk::Pixbuf; save & save_to_buffer annotations missing', 7;
+ skip 'Gtk3::Gdk::Pixbuf; new_from_data has incorrect annotations', 2;
my ($width, $height) = (45, 89);
- my $data = pack "C*", map { int rand 255 } 0..(3*$width*$height);
+ my ($r, $g, $b) = (255, 0, 255);
+ my $data = pack 'C*', (($r, $g, $b) x ($width*$height));
my $pixbuf = Gtk3::Gdk::Pixbuf->new_from_data
($data, 'rgb', Glib::FALSE, 8, $width, $height, $width*3);
+ is ($pixbuf->get_byte_length, 3*$width*$height);
+ is ($pixbuf->get_pixels, $data);
+}
+
+# Gtk3::Gdk::Pixbuf::save, save_to_buffer, save_to_callback
+SKIP: {
+ #skip 'Gtk3::Gdk::Pixbuf; save & save_to_buffer annotations missing', 11;
+
+ my ($width, $height) = (10, 5);
+ my $pixbuf = Gtk3::Gdk::Pixbuf->new ('rgb', Glib::TRUE, 8, $width, $height);
+ $pixbuf->fill (hex '0xFF000000');
+ my $expected_pixels = $pixbuf->get_pixels;
my $filename = 'testsave.png';
+ END { unlink $filename; }
eval {
$pixbuf->save ($filename, 'png',
'key_arg_without_value_arg');
@@ -577,13 +590,13 @@ SKIP: {
isa_ok ($new_pixbuf, 'Gtk3::Gdk::Pixbuf', 'new_from_file');
is ($new_pixbuf->get_option ('tEXt::Description'), $desc);
is ($new_pixbuf->get_option ('tEXt::Thumb::MTime'), $mtime);
- unlink $filename;
+ is ($new_pixbuf->get_width, $width);
+ is ($new_pixbuf->get_height, $height);
+ is ($new_pixbuf->get_pixels, $expected_pixels);
my $buffer = eval {
- $pixbuf->save_to_buffer ('jpeg', [qw/quality/], [0.75]);
- $pixbuf->save_to_buffer ('jpeg', quality => 0.75);
- } || eval {
- $pixbuf->save_to_buffer ('png'); # fallback if jpeg not supported
+ $pixbuf->save_to_buffer ('png', [qw/compression/], [9]);
+ $pixbuf->save_to_buffer ('png', compression => 9);
};
ok (defined $buffer, 'save_to_buffer');
my $loader = Gtk3::Gdk::PixbufLoader->new;
@@ -592,7 +605,12 @@ SKIP: {
$new_pixbuf = $loader->get_pixbuf;
is ($new_pixbuf->get_width, $width);
is ($new_pixbuf->get_height, $height);
+ is ($new_pixbuf->get_pixels, $expected_pixels);
# FIXME: callbacks with automatic args not supported yet.
- # $pixbuf->save_to_callback (sub { warn @_; return Glib::TRUE; }, 'data', 'png');
+ #$pixbuf->save_to_callback (sub {
+ # my ($pixels, $length, $data) = @_;
+ # warn join ', ', @$pixels;
+ # return Glib::TRUE, undef;
+ #}, 'data', 'png');
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]