version 1.2, 2001/12/10 15:45:54
|
version 1.3, 2001/12/11 13:47:36
|
Line 80 $htic_every = &grab('htic_every',1.0,\%I
|
Line 80 $htic_every = &grab('htic_every',1.0,\%I
|
my $image = new GD::Image($width,$height); |
my $image = new GD::Image($width,$height); |
|
|
# allocate standard colors |
# allocate standard colors |
my $white = $image->colorAllocate(255,255,255); |
my @BGvalues = split /,/,&grab('bgcolor','255,255,255',\%In); |
my $black = $image->colorAllocate( 0, 0, 0); |
my @FGvalues = split /,/,&grab('fgcolor','0,0,0',\%In); |
|
my $bgcolor = $image->colorAllocate(@BGvalues); |
|
my $fgcolor = $image->colorAllocate(@FGvalues); |
|
|
# Draw a black frame around the picture |
# Draw a fgcolor frame around the picture |
&drawtics($htic_every,$vtic_every) if (exists($In{'drawtics'})); |
&drawtics($htic_every,$vtic_every) if (exists($In{'drawtics'})); |
&drawaxes($axis) if (exists($In{'drawaxis'})); |
&drawaxes($axis) if (exists($In{'drawaxis'})); |
&drawframe(1) if (exists($In{'frame'})); |
&drawframe(1) if (exists($In{'frame'})); |
# make the background transparent if needed (this doesn't work, at least |
# make the background transparent if needed (this doesn't work, at least |
# not for gif images, don't know if it works for png) |
# not for gif images, don't know if it works for png) |
$image->transparent($white) if (exists($In{'transparent'})); |
$image->transparent($bgcolor) if (exists($In{'transparent'})); |
|
|
## Take care of labels and data series |
## Take care of labels and data series |
foreach (keys %In) { |
foreach (keys %In) { |
if (/^label/) { |
if (/^label/) { |
my ($x,$y,$size,$text) = split/,/,$In{$_}; |
my ($x,$y,$size,$text) = split/,/,$In{$_}; |
&drawstring($text,$x,$y,$black,$size); |
&drawstring($text,$x,$y,$fgcolor,$size); |
delete ($In{$_}); |
delete ($In{$_}); |
next; |
next; |
} elsif (/^xseries/) { |
} elsif (/^xseries/) { |
Line 108 foreach (keys %In) {
|
Line 110 foreach (keys %In) {
|
delete ($In{$yname}); |
delete ($In{$yname}); |
if ($#X != $#Y) { |
if ($#X != $#Y) { |
&drawstring("size of $xname and $yname do not match", |
&drawstring("size of $xname and $yname do not match", |
10,10,$black,"giant"); |
10,10,$fgcolor,"giant"); |
next; |
next; |
} |
} |
&drawcurve(\@X,\@Y); |
&drawcurve(\@X,\@Y); |
Line 158 sub transformPoint{
|
Line 160 sub transformPoint{
|
sub drawaxes{ |
sub drawaxes{ |
($x1,$y1) = &transformPoint($axis->{"xmin"},0,$image,$axis); |
($x1,$y1) = &transformPoint($axis->{"xmin"},0,$image,$axis); |
($x2,$y2) = &transformPoint($axis->{"xmax"},0,$image,$axis); |
($x2,$y2) = &transformPoint($axis->{"xmax"},0,$image,$axis); |
$image->line($x1,$y1,$x2,$y2,$black); |
$image->line($x1,$y1,$x2,$y2,$fgcolor); |
($x1,$y1) = &transformPoint(0,$axis->{"ymin"},$image,$axis); |
($x1,$y1) = &transformPoint(0,$axis->{"ymin"},$image,$axis); |
($x2,$y2) = &transformPoint(0,$axis->{"ymax"},$image,$axis); |
($x2,$y2) = &transformPoint(0,$axis->{"ymax"},$image,$axis); |
$image->line($x1,$y1,$x2,$y2,$black); |
$image->line($x1,$y1,$x2,$y2,$fgcolor); |
} |
} |
|
|
sub drawtics{ |
sub drawtics{ |
Line 177 sub drawtics{
|
Line 179 sub drawtics{
|
my ($x2,$y2) = &transformPoint(0,$axis->{"ymin"}+$ntic*$vtic_every); |
my ($x2,$y2) = &transformPoint(0,$axis->{"ymin"}+$ntic*$vtic_every); |
$x1 -= $ticwidth; |
$x1 -= $ticwidth; |
$x2 += $ticwidth; |
$x2 += $ticwidth; |
$image->line($x1,$y1,$x2,$y2,$black); |
$image->line($x1,$y1,$x2,$y2,$fgcolor); |
} |
} |
# Do tics along x-axis |
# Do tics along x-axis |
for ($ntic = 0; $ntic <=int($axis->{"xlen"}/$htic_every); $ntic++){ |
for ($ntic = 0; $ntic <=int($axis->{"xlen"}/$htic_every); $ntic++){ |
Line 185 sub drawtics{
|
Line 187 sub drawtics{
|
my ($x2,$y2) = &transformPoint( $axis->{"xmin"}+$ntic*$htic_every,0); |
my ($x2,$y2) = &transformPoint( $axis->{"xmin"}+$ntic*$htic_every,0); |
$y1 -= $ticheight; |
$y1 -= $ticheight; |
$y2 += $ticheight; |
$y2 += $ticheight; |
$image->line($x1,$y1,$x2,$y2,$black); |
$image->line($x1,$y1,$x2,$y2,$fgcolor); |
} |
} |
} |
} |
|
|
Line 194 sub drawcurve{
|
Line 196 sub drawcurve{
|
for($i=0;$i< (@$X-1);$i++) { |
for($i=0;$i< (@$X-1);$i++) { |
($x1,$y1) = &transformPoint($X->[$i ],$Y->[$i ]); |
($x1,$y1) = &transformPoint($X->[$i ],$Y->[$i ]); |
($x2,$y2) = &transformPoint($X->[$i+1],$Y->[$i+1]); |
($x2,$y2) = &transformPoint($X->[$i+1],$Y->[$i+1]); |
$image->line($x1,$y1,$x2,$y2,$black); |
$image->line($x1,$y1,$x2,$y2,$fgcolor); |
} |
} |
} |
} |
|
|
Line 204 sub drawframe{
|
Line 206 sub drawframe{
|
$xoffset = $xoffset || 1; |
$xoffset = $xoffset || 1; |
$yoffset = $yoffset || $xoffset; |
$yoffset = $yoffset || $xoffset; |
my ($width,$height) = $image->getBounds(); |
my ($width,$height) = $image->getBounds(); |
$image->rectangle($xoffset-1,$yoffset-1,$width-$xoffset,$height-$yoffset,$black); |
$image->rectangle($xoffset-1,$yoffset-1,$width-$xoffset,$height-$yoffset,$fgcolor); |
} |
} |
|
|
sub drawstring{ |
sub drawstring{ |