]> git.imager.perl.org - imager.git/blame - samples/combines.pl
and the release date
[imager.git] / samples / combines.pl
CommitLineData
2f0d6a5d
TC
1#!perl -w
2use strict;
3use Imager ':handy';
4use Imager::Fill;
5use Imager::Fountain;
6use HTML::Entities;
7
8my $fountain = Imager::Fountain->new();
9$fountain->add(end=>0.8,
10 c0=>NC(hsv=>[90, 0.5, 0.5], alpha=>64),
11 c1=>NC(hsv=>[90, 1, 0.8], alpha=>192),
12 color=>'hueup');
13$fountain->add(start=>0.8,
14 c0=>NC(hsv=>[90, 1, 0.8], alpha=>192),
15 c1=>NC(255, 255, 255, 128));
16
17unless (-d 'combines') {
18 mkdir 'combines'
19 or die "combines directory does not exist and could not be created: $!";
20}
21
22open HTML, "> combines.html"
23 or die "Cannot create combines.html: $!";
24
25print HTML <<EOS;
26<HTML><HEAD><TITLE>Imager - Combining Modes</TITLE></HEAD><BODY BGCOLOR="FFFFFF">
27
28<CENTER><FONT FACE="Helvetica, Arial" SIZE="6" COLOR="CC0000"><B>
29Combining Modes
30</FONT></B></CENTER>
31<HR WIDTH="65%" NOSHADE>
32<TABLE><TR><TD WIDTH="70%">
33
34<TABLE>
35<TR><TH>Name</TH><TH>Result</TH><TH>Base</TH></TR>
36EOS
37
38# build our base image
39# this is similar to the test image used for some of Imager's tests
40my $green = NC(0, 255, 0);
41my $lblue = NC(128, 128, 255);
42my $dred = NC(128, 64, 64);
43my $base = Imager->new(xsize=>150, ysize=>150);
44$base->box(xmin=>70, ymin=>25, xmax=>130, ymax=>125, color=>$green, filled=>1);
45$base->box(xmin=>20, ymin=>25, xmax=>80, ymax=>125, color=>$lblue, filled=>1);
46$base->arc(r=>30, color=>$dred);
47$base->filter(type=>'conv', coef=>[0.1, 0.2, 0.4, 0.2, 0.1]);
48
49$base->write(file=>"combines/base.jpg", jpegquality=>100)
50 or die "Cannot save combines/base.jpg: ",$base->errstr;
51
52# we fill the top with a fountain fill, and the bottom with a solid color
53my $solid_left = NC(128, 32, 32, 128);
54my $solid_right = NC(128, 32, 32, 255);
55
56for my $combine (Imager::Fill->combines) {
57 my $work = $base->copy();
58 $work->box(ymax=>74,
59 fill=>{ fountain=>'radial',
60 combine=>$combine,
61 segments=>$fountain,
62 xa=>75, ya=>50, xb=>15, yb=>50,
63 repeat=>'sawtooth'
64 })
65 or die $work->errstr;
66 $work->box(ymin=>75, xmax=>74,
67 fill=>{ solid=>$solid_left, combine=>$combine })
68 or die $work->errstr;
69 $work->box(ymin=>75, xmin=>75,
70 fill=>{ solid=>$solid_right, combine=>$combine })
71 or die $work->errstr;
72
73 $work->write(file=>"combines/$combine.jpg", jpegquality=>100)
74 or die "Cannot save combines/$combine.jpg: ",$work->errstr;
75
76 print HTML <<HTML
77<TR>
78 <TD>$combine</TD>
79 <TD><IMG SRC="combines/$combine.jpg" WIDTH="150" HEIGHT="150"></TD>
80 <TD><IMG SRC="combines/base.jpg" WIDTH="150" HEIGHT="150"></TD>
81</TR>
82HTML
83}
84
85print HTML <<EOS;
86</TABLE>
87
88<P>The following code was used to generate this page:</p>
89
90<PRE>
91EOS
92
93open SELF, "< $0"
94 or die "Can't open myself: $!";
95while (<SELF>) {
96 print HTML encode_entities($_);
97}
98close SELF;
99
100print HTML <<EOS;
101</PRE>
102
103<HR WIDTH="75%" NOSHADE ALIGN="LEFT">
104
105Send errors/fixes/suggestions to: <B>tony</B>_at_<B>develop-help.com</B>
106
107</TD></TR></TABLE>
108</BODY>
109</HTML>
110EOS
111
112close HTML;