Added methods gsresolution and finalresolution to adjust intermediate

and final resolution of pixmap output.
This commit is contained in:
hjp 2005-02-23 14:05:06 +00:00
parent a23fcb5862
commit e231f5e307
1 changed files with 54 additions and 6 deletions

View File

@ -27,7 +27,7 @@ use Data::Dumper;
use HTTP::Date qw(parse_date); use HTTP::Date qw(parse_date);
use Time::Local qw(timegm_nocheck); use Time::Local qw(timegm_nocheck);
$VERSION = do { my @r=(q$Revision: 1.9 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r}; $VERSION = do { my @r=(q$Revision: 1.10 $=~/\d+/g);sprintf "%d."."%02d"x$#r,@r};
=head2 new(%opts) =head2 new(%opts)
@ -64,8 +64,10 @@ sub new {
bless ($self, $class); bless ($self, $class);
$self->{data} = []; $self->{data} = [];
$self->{style} = "lines"; $self->{style} = $opts{style} || "lines";
$self->{output_format} = "png"; $self->{output_format} = $opts{output_format} || "png";
$self->{gsresolution} = $opts{gsresolution} || 150;
$self->finalresolution($opts{finalresolution} || 75);
return $self; return $self;
} }
@ -191,6 +193,50 @@ sub output_format {
return $oldoutput_format; return $oldoutput_format;
} }
=head2 gsresolution([$gsresolution])
Sets the resolution of the ghostscript output when plotting to a pixmap
format. The previous resolution is returned.
See new() for details about output formats.
=cut
sub gsresolution {
my ($self, $gsresolution) = @_;
my $oldgsresolution = $self->{gsresolution};
$self->{gsresolution} = $gsresolution if ($gsresolution);
return $oldgsresolution;
}
=head2 finalresolution([$finalresolution])
Sets the resolution when plotting to a pixmap
format. The previous resolution is returned.
If this resolution is higher than the gsresolution, gsresolution is set
the same value. If it is higher than half of the gsresolution then the
gsresolution is set to twice the finalresolution.
See new() for details about output formats.
=cut
sub finalresolution {
my ($self, $finalresolution) = @_;
my $oldfinalresolution = $self->{finalresolution};
if (defined($finalresolution)) {
$self->{finalresolution} = $finalresolution if ($finalresolution);
if ($finalresolution >= $self->{gsresolution}) {
$self->{gsresolution} = $finalresolution;
} elsif ($finalresolution >= $self->{gsresolution} / 2) {
$self->{gsresolution} = $finalresolution * 2;
}
}
return $oldfinalresolution;
}
=head2 dstcorr $time [, $period] =head2 dstcorr $time [, $period]
@ -453,9 +499,11 @@ sub plot {
if ($self->{output_format} eq "ps") { if ($self->{output_format} eq "ps") {
$pipe = "< $psfn"; $pipe = "< $psfn";
} else { } else {
$pipe = $pipe = "gs -sDEVICE=ppmraw -r" . $self->{gsresolution} . " -dBATCH -sOutputFile=- -q - < $psfn |";
"gs -sDEVICE=ppmraw -r150 -dBATCH -sOutputFile=- -q - < $psfn |" . if ($self->{gsresolution} != $self->{finalresolution}) {
"pnmscale 0.5 |" . $pipe .= "pnmscale " . ($self->{finalresolution} / $self->{gsresolution}) . " |";
}
$pipe .=
"pnmflip -cw |" . "pnmflip -cw |" .
"pnmcrop 2> /dev/null |"; "pnmcrop 2> /dev/null |";
} }