Blame converter/ppm/hpcdtoppm/pcdovtoppm

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