|
Packit |
78deda |
#!/bin/sh
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# pcdovtoppm - generate a single PPM file from a PCD overview file
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# Based on pnmindex (PBMPLUS), which was written by Jef Poskanzer,
|
|
Packit |
78deda |
# this script makes also use of hpcdtoppm, written by Hadmut Danisch.
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# Formerly called Pcdindex.
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# A similar result can be achieved by using "hpcdtoppm -Overview"
|
|
Packit |
78deda |
# followed by "pnmindex -black" on the generated PPM images.
|
|
Packit |
78deda |
# This shell just makes it more convenient and transparent to
|
|
Packit |
78deda |
# convert from one PCD to one PPM overview file.
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# Additional options (compared to pnmindex) are -maxwidth and
|
|
Packit |
78deda |
# -font <font>. See "man pbmtext" on how to create your own font.
|
|
Packit |
78deda |
#
|
|
Packit |
78deda |
# Pieter S. van der Meulen, 1992.
|
|
Packit |
78deda |
# Rewritten in sh by Steve McIntyre <93sam@debian.org>, 2001
|
|
Packit |
78deda |
|
|
Packit |
78deda |
# You may want to change the default values in the next 6 lines:
|
|
Packit |
78deda |
maxwidth=1152 # maximum width of the index image
|
|
Packit |
78deda |
size=192 # make the images about this big
|
|
Packit |
78deda |
across=6 # show this many images per row
|
|
Packit |
78deda |
colors="noquant" # maximum amount of colors or noquant (no quantization)
|
|
Packit |
78deda |
back="-black" # default background color
|
|
Packit |
78deda |
font=" " # default font or none (pbmtext's internal font)
|
|
Packit |
78deda |
|
|
Packit |
78deda |
usage ()
|
|
Packit |
78deda |
{
|
|
Packit |
78deda |
echo "Usage: $0 [-m W] [-s S] [-a A] [-c N|n] [-f F] [-b|-w] <overview.pcd>"
|
|
Packit |
78deda |
echo " with"
|
|
Packit |
78deda |
echo " W = maximum width of the result image (default: $maxwidth)"
|
|
Packit |
78deda |
echo " S = maximum size of each of the images (default: $size)"
|
|
Packit |
78deda |
echo " A = maximum number of images across (default: $across)"
|
|
Packit |
78deda |
echo " N = maximum number of colors or noquant (default: $colors)"
|
|
Packit |
78deda |
echo -n " F = font to be used for annotation (default: "
|
|
Packit |
78deda |
if [ "$font" = " " ] ; then
|
|
Packit |
78deda |
echo "internal font)"
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
echo "$font)"
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
echo " -b/-w = black/white background color (default: $back)"
|
|
Packit |
78deda |
echo " "
|
|
Packit |
78deda |
echo " e.g.: $0 -m 768 -s 96 -f smallfont.pbm overview.pcd > overview.ppm"
|
|
Packit |
78deda |
echo " or : $0 /cdrom/photo_cd/overview.pcd | ppmtojpeg > overview.jpg"
|
|
Packit |
78deda |
exit 1
|
|
Packit |
78deda |
}
|
|
Packit |
78deda |
|
|
Packit |
78deda |
# Parse the options
|
|
Packit |
78deda |
while :; do
|
|
Packit |
78deda |
case "$1" in
|
|
Packit |
78deda |
-m*)
|
|
Packit |
78deda |
if [ $# -lt 2 ] ; then usage; fi
|
|
Packit |
78deda |
maxwidth="$2"
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
shift
|
|
Packit |
78deda |
;;
|
|
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 |
-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 |
-f*)
|
|
Packit |
78deda |
if [ $# -lt 2 ] ; then usage; fi
|
|
Packit |
78deda |
font="-font $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 |
-*)
|
|
Packit |
78deda |
echo "$0 : Unknown option $1"
|
|
Packit |
78deda |
echo " "
|
|
Packit |
78deda |
usage
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
*)
|
|
Packit |
78deda |
break
|
|
Packit |
78deda |
;;
|
|
Packit |
78deda |
|
|
Packit |
78deda |
esac
|
|
Packit |
78deda |
done
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $# = 0 ]; then
|
|
Packit |
78deda |
usage
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
tmpfile=`tempfile -p pi -m 600`
|
|
Packit |
78deda |
|
|
Packit |
78deda |
rowfiles=()
|
|
Packit |
78deda |
imagefiles=()
|
|
Packit |
78deda |
row=1
|
|
Packit |
78deda |
col=1
|
|
Packit |
78deda |
width=$size
|
|
Packit |
78deda |
|
|
Packit |
78deda |
# Convert the PCD overview file to many PPM images
|
|
Packit |
78deda |
if [ -f $1 ] ; then
|
|
Packit |
78deda |
hpcdtoppm -Overview $1 $tmpfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
echo "$0 : Could not access $1"
|
|
Packit |
78deda |
echo " "
|
|
Packit |
78deda |
usage
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
for i in "$tmpfile"*
|
|
Packit |
78deda |
do
|
|
Packit |
78deda |
if [ -f $i ] ; then
|
|
Packit |
78deda |
description=`pnmfile $i`
|
|
Packit |
78deda |
if [ "${description[4]}" -le $size -a \
|
|
Packit |
78deda |
"${description[6]}" -le $size ] ; then
|
|
Packit |
78deda |
cat $i > $tmpfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
if [ "$colors" = "n" ] ; then
|
|
Packit |
78deda |
pnmscale -quiet -xysize $size $size $i > $tmpfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmscale -quiet -xysize $size $size $i | \
|
|
Packit |
78deda |
ppmquant -quiet $colors > $tmpfile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
imagefile=pi.${row}.${col}.$$
|
|
Packit |
78deda |
rm -f $imagefile
|
|
Packit |
78deda |
ttext="$i:t"
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ "$back" = "-white" ] ; then
|
|
Packit |
78deda |
pbmtext $font "$ttext" | pnmcrop -quiet | pnmmargin -white 2| \
|
|
Packit |
78deda |
pnmcat $back -tb $tmpfile - > $imagefile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pbmtext $font "$ttext" | pnmcrop -quiet | pnmmargin -white 2 | \
|
|
Packit |
78deda |
pnminvert | pnmcat $back -tb $tmpfile - > $imagefile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
rm -f $tmpfile
|
|
Packit |
78deda |
description=`pnmfile $imagefile`
|
|
Packit |
78deda |
width=$(( $width + ${description[4]} ))
|
|
Packit |
78deda |
imagefiles="$imagefiles $imagefile"
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ $col -ge $across -o $width -gt $maxwidth ] ; then
|
|
Packit |
78deda |
rowfile=pi.${row}.$$
|
|
Packit |
78deda |
rm -f $rowfile
|
|
Packit |
78deda |
if [ "$colors" = "n" ] ; then
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom $imagefiles > $rowfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom $imagefiles | \
|
|
Packit |
78deda |
ppmquant -quiet $colors > $rowfile
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
rm -f $imagefiles
|
|
Packit |
78deda |
imagefiles=()
|
|
Packit |
78deda |
rowfiles="$rowfiles $rowfile"
|
|
Packit |
78deda |
col=1
|
|
Packit |
78deda |
row=$(( $row + 1 ))
|
|
Packit |
78deda |
width=$size
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
col=$(( $col + 1 ))
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
done
|
|
Packit |
78deda |
|
|
Packit |
78deda |
if [ ${#imagefiles[*]} -gt 0 ] ; then
|
|
Packit |
78deda |
rowfile=pi.${row}.$$
|
|
Packit |
78deda |
rm -f $rowfile
|
|
Packit |
78deda |
if [ "$colors" = "n" ] ; then
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom $imagefiles > $rowfile
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmcat $back -lr -jbottom $imagefiles | \
|
|
Packit |
78deda |
ppmquant -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[*]} = 1 ]; then
|
|
Packit |
78deda |
cat $rowfiles
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
if [ "$colors" = "n" ] ; then
|
|
Packit |
78deda |
pnmcat $back -tb $rowfiles
|
|
Packit |
78deda |
else
|
|
Packit |
78deda |
pnmcat $back -tb $rowfiles | ppmquant -quiet $colors
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
fi
|
|
Packit |
78deda |
|
|
Packit |
78deda |
rm -f $rowfiles
|
|
Packit |
78deda |
|
|
Packit |
78deda |
exit 0
|
|
Packit |
78deda |
|
|
Packit |
78deda |
|
|
Packit |
78deda |
|
|
Packit |
78deda |
|