Blob Blame History Raw
#==========================================================================
#			   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;