File Coverage

blib/lib/Test/Image/Plugin/Imlib2.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package Test::Image::Plugin::Imlib2;
2              
3 12     12   64 use strict;
  12         24  
  12         378  
4 12     12   125 use warnings;
  12         20  
  12         341  
5              
6 12     12   63 use Scalar::Util qw( blessed );
  12         27  
  12         1366  
7 12     12   5820 use Image::Imlib2;
  0            
  0            
8              
9             our $VERSION = "0.01";
10              
11             =head1 NAME
12              
13             Test::Image::Plugin::Imlib2 - Test real images using Imlib2
14              
15             =head1 DESCRIPTION
16              
17              
18             =over
19              
20             =item new
21              
22             =item width
23              
24             =item height
25              
26             =item color_at($x,$y)
27              
28             =back
29              
30             See L for more details of what these should do.
31              
32             =cut
33              
34             sub new {
35             my $class = shift;
36             my $image = shift;
37             my $imlib;
38            
39             if (blessed $image and $image->isa("Image::Imlib2") ){
40             $imlib = $image;
41             } elsif (-f $image) {
42             $imlib = Image::Imlib2->load( $image );
43             } else {
44             # TODO - this API is annoying. Dieing here is _wrong_, because if
45             # this plugin is installed there's no fallback strategy for the other
46             # plugins, but how else am I supposed to indicate errors? The thing
47             # should fail silently until you get everything right?
48             die "Can't deal with image $image";
49             }
50             return bless { image => $imlib }, $class;
51             }
52              
53             sub width {
54             my $self = shift;
55             return $self->{image}->get_width();
56             }
57              
58             sub height {
59             my $self = shift;
60             return $self->{image}->get_height();
61             }
62              
63             sub color_at {
64             my ($self, $x, $y) = @_;
65             return undef if $x >= $self->width or $y >= $self->height or $x < 0 or $y < 0;
66             return $self->{image}->query_pixel($x, $y);;
67             }
68              
69             =head1 BUGS
70              
71             None known.
72              
73             Please report any bugs you find via the CPAN RT system.
74             L
75              
76             =head1 AUTHOR
77              
78             Written by Mark Fowler, Emark@twoshortplanks.comE. Please see
79             L for details of how to contact me.
80              
81             Copyright Fotango 2006. All rights reserved.
82              
83             This module is free software; you can redistribute it and/or modify it under
84             the same terms as Perl itself.
85              
86             =head1 SEE ALSO
87              
88              
89              
90             =cut
91              
92             1;
93