Skip to content
Snippets Groups Projects
msnapper 2.16 KiB
#! /usr/bin/perl

($me = $0) =~ s'.*/'';

$res = "";
$fovy = "";
$asp = "";

sub scanopts {
  while(1) {
    if($ARGV[0] =~ /^-n/) {
	$nowait = shift(@ARGV);

    } elsif($ARGV[0] =~ /^-res/) {
	shift(@ARGV);
	$res = shift(@ARGV) . " " . shift(@ARGV);

    } elsif($ARGV[0] =~ /^-fov/) {
	shift(@ARGV);
	$fovy = shift(@ARGV);

    } elsif($ARGV[0] =~ /^-asp/) {
	shift(@ARGV), shift(@ARGV);

    } elsif($ARGV[0] =~ /^-subcam/) {
	shift(@ARGV);
	@subcams = grep($_ ne "", split(/[\s,]/, shift(@ARGV)));

    } else {
	return;
    }
  }
}

&scanopts();

unless(@ARGV >= 3 && ($ARGV[1].$ARGV[2]) =~ /^\d+$/ && $ARGV[2] >= $ARGV[1]) {
    print STDERR "Usage: $me  stemname  startframe endframe [framestep]  [-res XSIZE YSIZE] [-fovy FOVY]
Command partiview to take snapshots along currently-loaded (rdata) path.
Output images are named stemname.NNNN.sgi unless stemname includes % sign,
in which case it's taken as a printf format string (including suffix).
Use as e.g., in partiview command box,
     async $me  wow  500 600 5
or   async $me  wow.%04d.tif  1 100
";
    exit(1);
}

$stem = shift(@ARGV);
$min = shift(@ARGV);
$max = shift(@ARGV);

$step = ($ARGV[0] =~ /^\d+$/) ? shift(@ARGV) : 1;

$min = 1 if $min <= 0;

&scanopts();

$stem = "$stem.%04d.sgi" unless $stem =~ /%/;
$stem =~ s/\%/\@.\%/ if @subcams && $stem !~ /\@/;

$| = 1;

print "{\nwinsize $res\n}\n" if $res;

$set_fovy = "fovy $fovy" if $fovy;

@subcams = ("") unless(@subcams);

while(@subcams) {