#========================================================================== # Copyright (c) 1995-1998 Martien Verbruggen #-------------------------------------------------------------------------- # # Name: # GIFgraph::area.pm # # $Id: area.pm,v 1.1.1.1 2002/02/26 10:16:37 oetiker Exp $ # #========================================================================== package GIFgraph::area; use strict qw(vars refs subs); use GIFgraph::axestype; @GIFgraph::area::ISA = qw( GIFgraph::axestype ); { # PRIVATE sub draw_data_set($$$) # GD::Image, \@data, $ds { my $s = shift; # object reference my $g = shift; # gd object reference my $d = shift; # reference to data set my $ds = shift; # number of the data set my $num = 0; # Select a data colour my $dsci = $s->set_clr( $g, $s->pick_data_clr($ds) ); # Create a new polygon my $poly = new GD::Polygon(); # Add the first 'zero' point my ($x, $y) = $s->val_to_pixel(1, 0, $ds); $poly->addPt($x, $y); # Add the data points my $i; for $i (0 .. $s->{numpoints}) { next unless (defined $d->[$i]); ($x, $y) = $s->val_to_pixel($i + 1, $d->[$i], $ds); $poly->addPt($x, $y); $num = $i; } # Add the last zero point ($x, $y) = $s->val_to_pixel($num + 1, 0, $ds); $poly->addPt($x, $y); # Draw a filled and a line polygon $g->filledPolygon($poly, $dsci); $g->polygon($poly, $s->{acci}); # Draw the accent lines for $i (1 .. ($s->{numpoints} - 1)) { next unless (defined $d->[$i]); ($x, $y) = $s->val_to_pixel($i + 1, $d->[$i], $ds); $g->dashedLine( $x, $y, $x, $s->{zeropoint}, $s->{acci} ); } } } # End of package GIFgraph::area 1;