#!/bin/csh -f set my_name = `basename $0` set dst_dir = "slides" set src_list = "" set prefix = "slide" set update_p = 0 set slide_request = "" set targ_width = 1024 set targ_height = 768 set temp1 = `mktemp` set temp2 = `mktemp` set temp3 = `mktemp` while ( "$#argv" != "0" ) set first = `printf "%s\n" "$argv[1]" | cut -c1` if ( "$first" == "-" ) then set second = `printf "%s\n" "$argv[1]" | cut -c2` switch ( "$second" ) case 'h': echo "usage: $my_name [ options ] [ file1.ps [ file2.ps [ ... ] ] ]" echo "options:" echo " -h this help" echo " -d dest-dir set the destination directory" echo " -p prefix set the output image prefix" echo " -u update mode (doesn't delete old output)" echo " -s slide generate only the specified slide" echo " -x WxH specify the dimensions of the output images," echo " in pixels" exit breaksw case 'd': shift set dst_dir = "$argv[1]" breaksw case 'p': shift set prefix = "$argv[1]" breaksw case 'u': set update_p = 1 breaksw case 's': shift set slide_request = "$argv[1]" breaksw case 'x': shift set dim = `echo "$argv[1]" | awk -v FS=x '{printf("%d %d\n",$1,$2);}'` @ targ_width = $dim[1] @ targ_height = $dim[2] breaksw default: echo "$my_name"": unknown option '$argv[1]'; use -h for help" breaksw endsw else if ( "$src_list" == "" ) then set src_list = "$argv[1]" else set src_list = ( $src_list "$argv[1]" ) endif endif shift end if ( "$src_list" == "" ) then echo "$my_name"": no slides passed; use -h for help" exit endif mkdir -p "$dst_dir" if ( "$update_p" == "0" ) then rm -rf "$dst_dir"/"$prefix"-*.png >& /dev/null endif @ seq = 1 @ slide_request_num = "$slide_request" foreach src ( $src_list ) echo "working on '$src'..." rm -f sc*.ppm >& /dev/null echo -n " building raw ppm files... " if ( "$slide_request" == "" ) then set gs_options = "-dStartingSlideNumber=""$seq" else set gs_options = ( "-dStartingSlideNumber=""$seq" "-dSlideRequest=""$slide_request_num" ) endif gs -sDEVICE=ppmraw -sOutputFile=sc%03d.ppm -g3400x2800 -r400x400 -q -dNOPAUSE -dPARANOIDSAFER -dBATCH $gs_options $src > $temp3 echo "done." # okay the slides that were just processed are in $temp3. if we're # in single slide mode, zero or one .ppm files was created. if ( -f sc001.ppm ) then foreach img ( sc*.ppm ) if ( "$slide_request" == "" ) then set seq_str = `printf "%03d" $seq` else set seq_str = `printf "%03d" $slide_request_num` endif set dst = "$prefix"-"$seq_str".png echo -n " building $dst... " (pamcut -left 75 -right -75 -top 160 -bottom -140 $img > $temp1 ) >& /dev/null (pnmscale -width "$targ_width" -height "$targ_height" $temp1 > $temp2) >& /dev/null (pnmtopng $temp2 > "$dst_dir/$dst") >& /dev/null echo "done." @ seq = $seq + 1 end endif @ seq = `tail -1 $temp3` + 1 echo "done." end rm -f sc*.ppm >& /dev/null rm -rf $temp1 $temp1 $temp3