/usr/share/perl5/GD/Graph/area.pm is in libgd-graph-perl 1.48-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | #==========================================================================
# Copyright (c) 1995-2000 Martien Verbruggen
#--------------------------------------------------------------------------
#
# Name:
# GD::Graph::area.pm
#
# $Id: area.pm,v 1.17 2007/04/26 03:16:09 ben Exp $
#
#==========================================================================
package GD::Graph::area;
($GD::Graph::area::VERSION) = '$Revision: 1.17 $' =~ /\s([\d.]+)/;
use strict;
use GD::Graph::axestype;
@GD::Graph::area::ISA = qw( GD::Graph::axestype );
# PRIVATE
sub draw_data_set
{
my $self = shift; # object reference
my $ds = shift; # number of the data set
my @values = $self->{_data}->y_values($ds) or
return $self->_set_error("Impossible illegal data set: $ds",
$self->{_data}->error);
# Select a data colour
my $dsci = $self->set_clr($self->pick_data_clr($ds));
my $brci = $self->set_clr($self->pick_border_clr($ds));
# Create a new polygon
my $poly = GD::Polygon->new();
my (@top,@bottom);
# Add the data points
for (my $i = 0; $i < @values; $i++)
{
my $value = $values[$i];
next unless defined $value;
my $bottom = $self->_get_bottom($ds, $i);
$value = $self->{_data}->get_y_cumulative($ds, $i)
if $self->{cumulate};
my ($x, $y) = $self->val_to_pixel($i + 1, $value, $ds);
push @top, [$x, $y];
# Need to keep track of this stuff for hotspots, and because
# it's the only reliable way of closing the polygon, without
# making odd assumptions.
push @bottom, [$x, $bottom];
# Hotspot stuff
# XXX needs fixing. Not used at the moment.
next unless defined $self->{_hotspots}->[$ds]->[$i];
if ($i == 0)
{
$self->{_hotspots}->[$ds]->[$i] = ["poly",
$x, $y,
$x , $bottom,
$x - 1, $bottom,
$x - 1, $y,
$x, $y];
}
else
{
$self->{_hotspots}->[$ds]->[$i] = ["poly",
$poly->getPt($i),
@{$bottom[$i]},
@{$bottom[$i-1]},
$poly->getPt($i-1),
$poly->getPt($i)];
}
}
foreach my $pair (@top, reverse @bottom)
{
$poly->addPt( @$pair );
}
# Draw a filled and a line polygon
$self->{graph}->filledPolygon($poly, $dsci)
if defined $dsci;
$self->{graph}->polygon($poly, $brci)
if defined $brci;
# Draw the accent lines
if (defined $brci &&
($self->{right} - $self->{left})/@values > $self->{accent_treshold})
{
for my $i ( 0 .. $#top )
{
my ($x, $y) = @{$top[$i]};
my $bottom = $bottom[$i]->[1];
$self->{graph}->dashedLine($x, $y, $x, $bottom, $brci);
}
}
return $ds
}
"Just another true value";
|