#!/bin/csh -f # RCSid $Id: fieldcomb.csh,v 2.7 2008/11/10 19:08:19 greg Exp $ # # Combine alternate lines in full frames for field rendering # # Expects numbered frames on command line, as given by ranimate # # If an odd number of frames is provided, the spare frame at the # end is linked to $spare_name for the next run # # Written by Greg Ward for Iebele Abel in August 2005 # set spare_name=spare_fieldcomb_frame.hdr set odd_first=0 while ($#argv > 1) switch ($argv[1]) case -r*: set remove_orig breaksw case -o*: set odd_first=1 breaksw case -e*: set odd_first=0 breaksw case -f*: shift argv set outfile="$argv[1]" breaksw default: if ("$argv[1]" !~ -*) break echo "Unknown option: $argv[1]" exit 1 endsw shift argv end if ($#argv < 2) then echo "Usage: $0 [-e|-o][-r] [-f combined.hdr] field1.hdr field2.hdr .." exit 1 endif if ($?outfile && $#argv > 2) then echo "Cannot use -f option with more than two input files" exit 1 endif set f1=$argv[1]:q set ext=$f1:e set basenm="`echo $f1:q | sed 's/[0-9]*\.'$ext'//'`" set curfi=`echo $f1:q | sed 's/^[^1-9]*\(.[0-9]*\)\.'$ext'$/\1/'` set fields=($argv[*]:q) if (-r $spare_name) then set fields=($spare_name $fields:q) @ curfi-- endif @ curfr = $curfi / 2 set curfi=1 while ($curfi < $#fields) @ nextfi = $curfi + 1 if ($curfr < 10) then set fid=000$curfr else if ($curfr < 100) then set fid=00$curfr else if ($curfr < 1000) then set fid=0$curfr else set fid=$curfr endif set outf="${basenm}C$fid.$ext" if ($?outfile) then set outf=$outfile:q endif pcomb -e 'ro=ri(fld); go=gi(fld); bo=bi(fld)' \ -e 'yd=yres-1-y; odd=.5*yd-floor(.5*yd)-.25' \ -e "fld=if(odd,2-$odd_first,1+$odd_first)" \ $fields[$curfi]:q $fields[$nextfi]:q \ > $outf:q if ($?remove_orig) rm $fields[$curfi]:q $fields[$nextfi]:q @ curfr++ @ curfi = $nextfi + 1 end rm -f $spare_name if ($curfi == $#fields) ln "${basenm}$curfi.$ext" $spare_name