Image-Base-GD
view release on metacpan or search on metacpan
t/MyTestImageBase.pm view on Meta::CPAN
[1,1, 2,2], # 2x2
[5,6, 7,8],
[1,1, 18,8], # big
);
sub check_xy {
my ($image, %options) = @_;
### check_xy() ...
my $big_fetch_expect = $options{'big_fetch_expect'};
my $big_fetch_is_undefined = $options{'big_fetch_is_undefined'};
{
my $big_negative = -2**16 + 2;
### $big_negative
# exercise some negatives
$image->xy ($big_negative,0, $white);
$image->xy (0,$big_negative, $white);
$image->xy ($big_negative,$big_negative, $white);
unless ($big_fetch_is_undefined) {
is (scalar($image->xy($big_negative,$big_negative)), $big_fetch_expect,
'xy() negative fetch');
is (scalar($image->xy(0,$big_negative)), $big_fetch_expect,
'xy() negative fetch');
is (scalar($image->xy($big_negative,0)), $big_fetch_expect,
'xy() negative fetch');
}
}
{
my $big_positive = 2**16 + 2;
### $big_positive
$image->xy ($big_positive,$big_positive, $white);
$image->xy (0,$big_positive, $white);
$image->xy ($big_positive,0, $white);
unless ($big_fetch_is_undefined) {
is (scalar($image->xy(0,$big_positive)), $big_fetch_expect,
'xy() big positive fetch');
is (scalar($image->xy($big_positive,0)), $big_fetch_expect,
'xy() big positive fetch');
is (scalar($image->xy($big_positive,$big_positive)), $big_fetch_expect,
'xy() big positive fetch');
}
}
}
sub check_line {
my ($image, %options) = @_;
my ($width, $height) = $image->get('-width','-height');
my $image_clear_func = $options{'image_clear_func'};
my $elem;
foreach $elem (@sizes) {
my ($x1,$y1, $x2,$y2) = @$elem;
{
my $name = "line $x1,$y1 $x2,$y2";
&$image_clear_func();
$image->line ($x1,$y1, $x2,$y2, $white);
my $bad = (
# endpoints
is_pixel ($image, $x1,$y1, $white, $name)
+ is_pixel ($image, $x2,$y2, $white, $name)
# nothing in surrounding rectangle
+ is_rect ($image, $x1-1,$y1-1, $x2+1,$y2+1, $black, $name));
if ($bad) {
dump_image ($image);
}
}
{
my $name = "line $x2,$y2 $x1,$y1, reversal";
&$image_clear_func();
$image->line ($x2,$y2, $x1,$y1, $white);
my $bad = (
# endpoints
is_pixel ($image, $x1,$y1, $white, $name)
+ is_pixel ($image, $x2,$y2, $white, $name)
# nothing in surrounding rectangle
+ is_rect ($image, $x1-1,$y1-1, $x2+1,$y2+1, $black, $name));
if ($bad) {
dump_image ($image);
}
}
}
}
sub rect_using_Other {
my ($image, $x1, $y1, $x2, $y2, $colour, $fill) = @_;
$image->Image_Base_Other_rectangles ($colour, $fill, $x1, $y1, $x2, $y2);
}
sub check_rectangle {
my ($image, %options) = @_;
my ($width, $height) = $image->get('-width','-height');
my $image_clear_func = $options{'image_clear_func'};
my $method;
foreach $method ('rectangle',
($image->can('Image_Base_Other_rectangles')
? ('MyTestImageBase::rect_using_Other')
: ())) {
# exercise some negatives
foreach my $fill (0,1) {
$image->$method (-100,-100,-10,-10, $white, $fill);
$image->$method (-100,-100,5,5, $white, $fill);
$image->$method (5,5,200,200, $white, $fill);
}
my $elem;
foreach $elem (@sizes) {
my ($x1,$y1, $x2,$y2) = @$elem;
{
my $name = "$method unfilled $x1,$y1, $x2,$y2";
my $fill = undef;
&$image_clear_func();
my @args = ($x1,$y1, $x2,$y2, $white, $fill);
if ($method eq 'Image_Base_Other_rectangles') {
unshift @args, splice @args, -2, 2;
}
$image->$method (@args);
my $bad
= (is_rect ($image, $x1,$y1, $x2,$y2, $white_expect, $name)
# outside
+ is_rect ($image, $x1-1,$y1-1, $x2+1,$y2+1, $black, $name)
# inside
+ is_rect ($image, $x1+1,$y1+1, $x2-1,$y2-1, $black, $name));
if ($bad) { dump_image($image); }
}
{
( run in 2.454 seconds using v1.01-cache-2.11-cpan-524268b4103 )