mirror of https://github.com/CGAL/cgal
68 lines
1.5 KiB
Perl
Executable File
68 lines
1.5 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
BEGIN {
|
|
push(@INC,$ENV{'HOME'}."/local/perl"); #where the SVG.pm file lives
|
|
push(@INC,$ENV{'HOME'}."/local/perl/SVG"); # where the Utils.pm file lives
|
|
}
|
|
|
|
|
|
use strict;
|
|
use SVG;
|
|
|
|
my $height = 140;
|
|
my $width = 220;
|
|
my $shift = 20;
|
|
my $padding_v = 5;
|
|
my $svg=new SVG(width=>$width,height=>$height+30, style=>{'background'=>'lightgrey'});
|
|
|
|
my $file = @ARGV[0];
|
|
if ( -f $file ) {
|
|
open(my $in, $file) || die("Impossible d'ouvrir $file: $!");
|
|
|
|
my @values;
|
|
my $max_value = 0;
|
|
while (<$in>) {
|
|
my $line = $_;
|
|
chomp($line);
|
|
if ( $line > $max_value ) {
|
|
$max_value = $line;
|
|
}
|
|
|
|
push(@values,$line);
|
|
}
|
|
|
|
|
|
# normalize values
|
|
my $min = shift(@values);
|
|
my $max = shift(@values);
|
|
my @norm = map( { $_/$max_value*$height } @values);
|
|
|
|
|
|
# draw
|
|
my $i = 0;
|
|
my $color = "black";
|
|
foreach my $v (@norm) {
|
|
# use red for the isotrop tet
|
|
if ( $i == 71 ) {
|
|
$color = "red";
|
|
}
|
|
|
|
my $tag = $svg->rectangle(x=>$i+$shift, y=>$height-$v+$padding_v,
|
|
width=>1, height=>$v,
|
|
rx=>0, ry=>0,
|
|
id=>"rect_$i",
|
|
style=>{'fill'=>$color});
|
|
$color = "black";
|
|
$i++;
|
|
}
|
|
|
|
$svg->text(id=>'min', x=>5, y=>$height+20)->cdata($min);
|
|
$svg->text(id=>'max', x=>160, y=>$height+20)->cdata($max);
|
|
}
|
|
else {
|
|
$svg->text(id=>'error', x=>$width/2-50, y=>$height/2+20, style=>{'fill'=>'black'})->cdata("No data found...");
|
|
}
|
|
|
|
# now render the SVG object, implicitly use svg namespace
|
|
print $svg->xmlify;
|