Gtk3-ImageView

 view release on metacpan or  search on metacpan

t/1_basics.t  view on Meta::CPAN

use warnings;
use strict;
use Try::Tiny;
use File::Temp;
use Image::Magick;
use Test::Deep;
use Test::More tests => 38;

BEGIN {
    use Glib qw/TRUE FALSE/;
    use Gtk3 -init;
    use_ok('Gtk3::ImageView');
}

#########################

my $view = Gtk3::ImageView->new;
isa_ok( $view, 'Gtk3::ImageView' );
isa_ok(
    $view->get_tool,
    'Gtk3::ImageView::Tool::Dragger',
    'get_tool() defaults to dragger'
);

my $tmp   = File::Temp->new( SUFFIX => '.png' );
my $image = Image::Magick->new();
my $x     = $image->Read('rose:');
$x = $image->Write( filename => $tmp );
warn "$x" if "$x";
my $signal;
$signal = $view->signal_connect(
    'offset-changed' => sub {
        my ( $widget, $x, $y ) = @_;
        $view->signal_handler_disconnect($signal);
      SKIP: {
            skip "I don't know how offset is supposed to work with HiDPI", 2
              if $view->get('scale-factor') > 1;
            is $x, 0,  'emitted offset-changed signal x';
            is $y, 11, 'emitted offset-changed signal y';
        }
    }
);
$view->set_pixbuf( Gtk3::Gdk::Pixbuf->new_from_file($tmp), TRUE );
SKIP: {
    skip "I don't know how offset is supposed to work with HiDPI", 1
      if $view->get('scale-factor') > 1;
    cmp_deeply(
        $view->get_viewport,
        {
            x      => 0,
            y      => num( -12, 0.001 ),
            width  => num(  70, 0.001 ),
            height => num(  70, 0.001 ),
        },
        'get_viewport'
    );
}

SKIP: {
    skip 'not yet', 2;

    isa_ok( $view->get_draw_rect, 'Gtk3::Gdk::Rectangle' );

    ok( $view->get_check_colors, 'get_check_colors()' );
}

isa_ok( $view->get_pixbuf, 'Gtk3::Gdk::Pixbuf', 'get_pixbuf()' );
is_deeply( $view->get_pixbuf_size, { width => 70, height => 46 },
    'get_pixbuf_size' );
is_deeply( $view->get_allocation, { x => -1, y => -1, width => 1, height => 1 },
    'get_allocation' );

cmp_deeply( $view->get_zoom,
    num( 0.01428 * $view->get('scale-factor'), 0.001 ), 'get_zoom()' );

$signal = $view->signal_connect(
    'zoom-changed' => sub {
        my ( $widget, $zoom ) = @_;
        $view->signal_handler_disconnect($signal);
        is $zoom, 1, 'emitted zoom-changed signal';
    }
);
$view->set_zoom(1);

$signal = $view->signal_connect(
    'selection-changed' => sub {



( run in 1.067 second using v1.01-cache-2.11-cpan-39bf76dae61 )