RSS Git Download  Clone
Raw Blame History
package ChartMaker;

use lib (
    '/home/raj/perl5/lib/perl5',
    '/home/raj/perl-lib/ChartDirector',
);

use FindBin; # warn $FindBin::Bin;
use Modern::Perl qw(2012); # 5.14

use perlchartdir;
use autodie;

use Moo;
use MooX::Types::MooseLike::Base qw(HashRef Str);

has $_ => ( is => 'ro', isa => Str, required => 1)
    for qw(data_title chart_title x_title y_title);
has data => ( is => 'ro', isa => HashRef, required => 1);

sub make_chart {
    my $self = shift;

    my $x_label  = $self->x_title;
    my $y_label  = $self->y_title;
    my $header   = $self->chart_title;
    my $data     = $self->data; # href of x & y

    my $img_name = $self->data_title;
    $img_name =~ s/\.vcf\Z//i; # remove vcf suffix if exists

    my $filename = sprintf '%s/vcf/%s.png', $FindBin::Bin, $img_name ;
    
	my $c = new XYChart(650, 420);

	$c->setPlotArea(75, 65, 550, 300, -1, -1, 0xc0c0c0, 0xc0c0c0, -1);

	$c->addTitle($header, 'timesbi.ttf', 18);

	$c->xAxis()->setTitle($x_label, 'arialbi.ttf', 12);
	$c->yAxis()->setTitle($y_label, 'arialbi.ttf', 12);

	$c->xAxis()->setWidth(2);
	$c->yAxis()->setWidth(2);

	$c->addScatterLayer($data->{x}, $data->{y}, undef, # data label not required
		$perlchartdir::CircleShape, 4, 0xff0000);

	$c->makeChart($filename);
}

1;