added OO interfaces for some filters
[imager.git] / t / t61filters.t
1 #!perl -w
2 use strict;
3 use Imager qw(:handy);
4
5 # meant for testing the filters themselves
6 my $imbase = Imager->new;
7 $imbase->open(file=>'testout/t104.ppm') or die;
8 my $im_other = Imager->new(xsize=>150, ysize=>150);
9 $im_other->box(xmin=>30, ymin=>60, xmax=>120, ymax=>90, filled=>1);
10
11 print "1..26\n";
12
13 test($imbase, 1, {type=>'autolevels'}, 'testout/t61_autolev.ppm');
14
15 test($imbase, 3, {type=>'contrast', intensity=>0.5}, 
16      'testout/t61_contrast.ppm');
17
18 # this one's kind of cool
19 test($imbase, 5, {type=>'conv', coef=>[ -0.5, 1, -0.5, ], },
20      'testout/t61_conv.ppm');
21
22 test($imbase, 7, {type=>'gaussian', stddev=>5 },
23      'testout/t61_gaussian.ppm');
24
25 test($imbase, 9, { type=>'gradgen', dist=>1,
26                    xo=>[ 10,  10, 120 ],
27                    yo=>[ 10, 140,  60 ],
28                    colors=> [ NC('#FF0000'), NC('#FFFF00'), NC('#00FFFF') ]},
29      'testout/t61_gradgen.ppm');
30
31 test($imbase, 11, {type=>'mosaic', size=>8}, 'testout/t61_mosaic.ppm');
32
33 test($imbase, 13, {type=>'hardinvert'}, 'testout/t61_hardinvert.ppm');
34
35 test($imbase, 15, {type=>'noise'}, 'testout/t61_noise.ppm');
36
37 test($imbase, 17, {type=>'radnoise'}, 'testout/t61_radnoise.ppm');
38
39 test($imbase, 19, {type=>'turbnoise'}, 'testout/t61_turbnoise.ppm');
40
41 test($imbase, 21, {type=>'bumpmap', bump=>$im_other, lightx=>30, lighty=>30},
42      'testout/t61_bumpmap.ppm');
43
44 test($imbase, 23, {type=>'postlevels', levels=>3}, 'testout/t61_postlevels.ppm');
45
46 test($imbase, 25, {type=>'watermark', wmark=>$im_other },
47      'testout/t61_watermark.ppm');
48
49 sub test {
50   my ($in, $num, $params, $out) = @_;
51   
52   my $copy = $in->copy;
53   if ($copy->filter(%$params)) {
54     print "ok $num\n";
55     if ($copy->write(file=>$out)) {
56       print "ok ",$num+1,"\n";
57     }
58     else {
59       print "not ok ",$num+1," # ",$copy->errstr,"\n";
60     }
61   }
62   else {
63     print "not ok $num # ",$copy->errstr,"\n";
64     print "ok ",$num+1," # skipped\n";
65   }
66 }