home *** CD-ROM | disk | FTP | other *** search
- #!/bin/csh -f
- #
- # pnmindex - build a visual index of a bunch of anymaps
- #
- # Copyright (C) 1991 by Jef Poskanzer.
- #
- # Permission to use, copy, modify, and distribute this software and its
- # documentation for any purpose and without fee is hereby granted, provided
- # that the above copyright notice appear in all copies and that both that
- # copyright notice and this permission notice appear in supporting
- # documentation. This software is provided "as is" without express or
- # implied warranty.
-
- set size=100 # make the images about this big
- set across=6 # show this many images per row
- set colors=256 # quantize results to this many colors
- set back="-white" # default background color
-
- while ( 1 )
- switch ( "$1" )
-
- case -s*:
- if ( $#argv < 2 ) goto usage
- set size="$2"
- shift
- shift
- breaksw
-
- case -a*:
- if ( $#argv < 2 ) goto usage
- set across="$2"
- shift
- shift
- breaksw
-
- case -c*:
- set colors="$2"
- shift
- shift
- breaksw
-
- case -b*:
- set back="-black"
- shift
- breaksw
-
- case -w*:
- set back="-white"
- shift
- breaksw
-
- case -*:
- goto usage
- breaksw
-
- default:
- break
- breaksw
-
- endsw
- end
-
- if ( $#argv == 0 ) then
- goto usage
- endif
-
- set tmpfile=/tmp/pi.tmp.$$
- rm -f $tmpfile
- set maxformat=PBM
-
- set rowfiles=()
- set imagefiles=()
- @ row = 1
- @ col = 1
-
- foreach i ( $argv )
-
- set description=`pnmfile $i`
- if ( $description[4] <= $size && $description[6] <= $size ) then
- cat $i > $tmpfile
- else
- switch ( $description[2] )
- case PBM:
- pnmscale -quiet -xysize $size $size $i | pgmtopbm > $tmpfile
- breaksw
-
- case PGM:
- pnmscale -quiet -xysize $size $size $i > $tmpfile
- if ( $maxformat == PBM ) then
- set maxformat=PGM
- endif
- breaksw
-
- default:
- pnmscale -quiet -xysize $size $size $i | ppmquant -quiet $colors > $tmpfile
- set maxformat=PPM
- breaksw
- endsw
- endif
- set imagefile=/tmp/pi.${row}.${col}.$$
- rm -f $imagefile
- if ( "$back" == "-white" ) then
- pbmtext "$i" | pnmcat $back -tb $tmpfile - > $imagefile
- else
- pbmtext "$i" | pnminvert | pnmcat $back -tb $tmpfile - > $imagefile
- endif
- rm -f $tmpfile
- set imagefiles=( $imagefiles $imagefile )
-
- if ( $col >= $across ) then
- set rowfile=/tmp/pi.${row}.$$
- rm -f $rowfile
- if ( $maxformat != PPM ) then
- pnmcat $back -lr -jbottom $imagefiles > $rowfile
- else
- pnmcat $back -lr -jbottom $imagefiles | ppmquant -quiet $colors > $rowfile
- endif
- rm -f $imagefiles
- set imagefiles=()
- set rowfiles=( $rowfiles $rowfile )
- @ col = 1
- @ row += 1
- else
- @ col += 1
- endif
-
- end
-
- if ( $#imagefiles > 0 ) then
- set rowfile=/tmp/pi.${row}.$$
- rm -f $rowfile
- if ( $maxformat != PPM ) then
- pnmcat $back -lr -jbottom $imagefiles > $rowfile
- else
- pnmcat $back -lr -jbottom $imagefiles | ppmquant -quiet $colors > $rowfile
- endif
- rm -f $imagefiles
- set rowfiles=( $rowfiles $rowfile )
- endif
-
- if ( $#rowfiles == 1 ) then
- cat $rowfiles
- else
- if ( $maxformat != PPM ) then
- pnmcat $back -tb $rowfiles
- else
- pnmcat $back -tb $rowfiles | ppmquant -quiet $colors
- endif
- endif
- rm -f $rowfiles
-
- exit 0
-
- usage:
- echo "usage: $0 [-size N] [-across N] [-colors N] [-black] pnmfile ..."
- exit 1
-