|
Packit |
78deda |
#!/bin/sh
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# pnmindex - build a visual index of a bunch of PNM images
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# Copyright (C) 1991 by Jef Poskanzer.
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# Permission to use, copy, modify, and distribute this software and its
|
|
Packit |
78deda |
# documentation for any purpose and without fee is hereby granted, provided
|
|
Packit |
78deda |
# that the above copyright notice appear in all copies and that both that
|
|
Packit |
78deda |
# copyright notice and this permission notice appear in supporting
|
|
Packit |
78deda |
# documentation. This software is provided "as is" without express or
|
|
Packit |
78deda |
# implied warranty.
|
|
Packit |
78deda |
|
|
Packit |
78deda |
size=100 # make the images about this big
|
|
Packit |
78deda |
across=6 # show this many images per row
|
|
Packit |
78deda |
colors=256 # quantize results to this many colors
|
|
Packit |
78deda |
back="-white" # default background color
|
|
Packit |
78deda |
doquant=true # quantize or not
|
|
Packit |
78deda |
title="" # default title (none)
|
|
Packit |
78deda |
|
|
Packit |
78deda |
usage ()
|
|
Packit |
78deda |
{
|
|
Packit |
78deda |
echo "usage: $0 [-size N] [-across N] [-colors N] [-black] pnmfile ..."
|
|
Packit |
78deda |
exit 1
|
|
Packit |
78deda |
}
|
|
Packit |
78deda |
|
|
Packit |
78deda |
while :; do
|
|
Packit |
78deda |
case "$1" in
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-s*)
|
|
Packit |
78deda |
if [ $# -lt 2 ]; then usage; fi
|
|
Packit |
78deda |
size="$2"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-a*)
|
|
Packit |
78deda |
if [ $# -lt 2 ]; then usage; fi
|
|
Packit |
78deda |
across="$2"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-t*)
|
|
Packit |
78deda |
if [ $# -lt 2 ]; then usage; fi
|
|
Packit |
78deda |
title="$2"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-c*)
|
|
Packit |
78deda |
if [ $# -lt 2 ]; then usage; fi
|
|
Packit |
78deda |
colors="$2"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-b*)
|
|
Packit |
78deda |
back="-black"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-w*)
|
|
Packit |
78deda |
back="-white"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-noq*)
|
|
Packit |
78deda |
doquant=false
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-q*)
|
|
Packit |
78deda |
doquant=true
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
-*)
|
|
Packit |
78deda |
usage
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
*)
|
|
Packit |
78deda |
break
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
esac
|
|
Packit |
78deda |
done
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $# -eq 0 ]; then
|
|
Packit |
78deda |
usage
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
tempdir="${TMPDIR-/tmp}/pnmindex.$$"
|
|
Packit |
78deda |
mkdir -m 0700 $tempdir || \
|
|
Packit |
78deda |
{ echo "Could not create temporary file. Exiting."; exit 1;}
|
|
Packit |
78deda |
trap 'rm -rf $tempdir' 0 1 3 15
|
|
Packit |
78deda |
|
|
Packit |
78deda |
tmpfile=$tempdir/pi.tmp
|
|
Packit |
78deda |
maxformat=PBM
|
|
Packit |
78deda |
|
|
Packit |
78deda |
rowfiles=()
|
|
Packit |
78deda |
imagefiles=()
|
|
Packit |
78deda |
row=1
|
|
Packit |
78deda |
col=1
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ "$title"x != ""x ] ; then
|
|
Packit |
78deda |
# rowfile=`tempfile -p pirow -m 600`
|
|
Packit |
78deda |
rowfile=$tempdir/pi.${row}
|
|
Packit |
78deda |
pbmtext "$title" > $rowfile
|
|
Packit |
78deda |
rowfiles=(${rowfiles[*]} $rowfile )
|
|
Packit |
78deda |
row=$(($row + 1))
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
for i in "$@"; do
|
|
Packit |
78deda |
|
|
Packit |
78deda |
description=(`pnmfile $i`)
|
|
Packit |
78deda |
|
|
Packit |
78deda |
format=${description[1]}
|
|
Packit |
78deda |
width=${description[3]}
|
|
Packit |
78deda |
height=${description[5]}
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $? -ne 0 ]; then
|
|
Packit |
78deda |
echo pnmfile returned an error
|
|
Packit |
78deda |
exit $?
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $width -le $size ] && \
|
|
Packit |
78deda |
[ $height -le $size ]; then
|
|
Packit |
78deda |
cat $i > $tmpfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
case $format in
|
|
Packit |
78deda |
|
|
Packit |
78deda |
PBM)
|
|
Packit |
78deda |
pamscale -quiet -xysize $size $size $i | pgmtopbm > $tmpfile
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
PGM)
|
|
Packit |
78deda |
pamscale -quiet -xysize $size $size $i > $tmpfile
|
|
Packit |
78deda |
if [ $maxformat = PBM ]; then
|
|
Packit |
78deda |
maxformat=PGM
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
*)
|
|
Packit |
78deda |
if [ "$doquant" = "true" ] ; then
|
|
Packit |
78deda |
pamscale -quiet -xysize $size $size $i | \
|
|
Packit |
78deda |
pnmquant -quiet $colors > $tmpfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pamscale -quiet -xysize $size $size $i > $tmpfile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
maxformat=PPM
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
esac
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
imagefile=$tempdir/pi.${row}.${col}
|
|
Packit |
78deda |
rm -f $imagefile
|
|
Packit |
78deda |
if [ "$back" = "-white" ]; then
|
|
Packit |
78deda |
pbmtext "$i" | pnmcat $back -tb $tmpfile - > $imagefile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pbmtext "$i" | pnminvert | pnmcat $back -tb $tmpfile - > $imagefile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
imagefiles=( ${imagefiles[*]} $imagefile )
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $col -ge $across ]; then
|
|
Packit |
78deda |
rowfile=$tempdir/pi.${row}
|
|
Packit |
78deda |
rm -f $rowfile
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $maxformat != PPM -o "$doquant" = "false" ]; then
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom ${imagefiles[*]} > $rowfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom ${imagefiles[*]} | \
|
|
Packit |
78deda |
pnmquant -quiet $colors > $rowfile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
rm -f ${imagefiles[*]}
|
|
Packit |
78deda |
unset imagefiles
|
|
Packit |
78deda |
imagefiles=()
|
|
Packit |
78deda |
rowfiles=( ${rowfiles[*]} $rowfile )
|
|
Packit |
78deda |
col=1
|
|
Packit |
78deda |
row=$(($row + 1))
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
col=$(($col + 1))
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
done
|
|
Packit |
78deda |
|
|
Packit |
78deda |
# All the full rows have been put in row files.
|
|
Packit |
78deda |
# Now put the final partial row in its row file.
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ ${#imagefiles[*]} -gt 0 ]; then
|
|
Packit |
78deda |
rowfile=$tempdir/pi.${row}
|
|
Packit |
78deda |
rm -f $rowfile
|
|
Packit |
78deda |
if [ $maxformat != PPM -o "$doquant" = "false" ]; then
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom ${imagefiles[*]} > $rowfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom ${imagefiles[*]} | \
|
|
Packit |
78deda |
pnmquant -quiet $colors > $rowfile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
rm -f ${imagefiles[*]}
|
|
Packit |
78deda |
rowfiles=( ${rowfiles[*]} $rowfile )
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ ${#rowfiles[*]} -eq 1 ]; then
|
|
Packit |
78deda |
cat $rowfiles
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
if [ $maxformat != PPM -o "$doquant" = "false" ]; then
|
|
Packit |
78deda |
pnmcat $back -tb ${rowfiles[*]}
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmcat $back -tb ${rowfiles[*]} | pnmquant -quiet $colors
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
rm -f ${rowfiles[*]}
|
|
Packit |
78deda |
|
|
Packit |
78deda |
exit 0
|
|
Packit |
78deda |
|