head 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 98.01.17.12.09.29; author alexis; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @#!/bin/sh PROGNAME=`basename $0` VERSION=`echo '$Id: mtn,v 1.5 1996/10/28 12:41:59 alexis Exp $' | cut -d' ' -f3` PICWIDTH=170 PICHEIGHT=123 TITHEIGHT=29 IDXWIDTH=6 IDXTITWIDTH=984 IDXTITHEIGHT=29 IDXHEIGHT=5 PICBGCOL=black TITBGCOL=white QUALITY=80 TMPDIR=/tmp/$PROGNAME.$$ PATH=$PATH:/big/pbm/bin usage() { echo "Usage: $PROGNAME file ..." >&2 echo " $PROGNAME -V" >&2 exit 2 } error() { echo "$PROGNAME: ERROR $@@" 1>&2 exit 1 } verbose() { echo "$PROGNAME: INFO $@@" 1>&2 } main() { trap "echo 'Aborting ...'; rm -fr $TMPDIR; exit 1" 1 2 15 OUTNAME="index" while [ "X$1" != X ]; do case "$1" in -V) echo "$PROGNAME version $VERSION" exit ;; -*) usage ;; *) break ;; esac shift done [ "X$1" != X ] || usage rm -fr $TMPDIR mkdir $TMPDIR ########################################################################### # # Create blank title and picture of maximum sizes # ########################################################################### verbose "making blank picture ..." pbmmake -$PICBGCOL $PICWIDTH $PICHEIGHT > $TMPDIR/blank-pic.pbm verbose "making blank title ..." pbmmake -$TITBGCOL $PICWIDTH $TITHEIGHT > $TMPDIR/blank-tit.pbm PROCFILES="$*" for FILE in $PROCFILES; do FILEBASE=`basename $FILE` ####################################################################### # # Convert each picture to PNM format # ####################################################################### case $FILE in *.jpg) verbose "$FILE: decoding and scaling ..." djpeg < $FILE ;; *.gif) verbose "$FILE: decoding and scaling ..." giftopnm < $FILE ;; *) error "Unknown file extension" ;; ####################################################################### # # Scale each picture to maximum allowable size without distorting # ####################################################################### esac | pnmscale -xysize $PICWIDTH $PICHEIGHT > $TMPDIR/$FILEBASE-sclpic.pnm ####################################################################### # # Put each picture in the middle of a maximum sized blank thumbnail # ####################################################################### verbose "$FILE: calculating padding offsets for picture ..." set X `pnmfile $TMPDIR/$FILEBASE-sclpic.pnm` X=$5; Y=$7 verbose "$FILE: padding picture ${X}x${Y} to ${PICWIDTH}x${PICHEIGHT} ..." pnmpaste $TMPDIR/$FILEBASE-sclpic.pnm `expr \( $PICWIDTH - $X \) / 2` `expr \( $PICHEIGHT - $Y \) / 2` $TMPDIR/blank-pic.pbm > $TMPDIR/$FILEBASE-pddpic.pnm ####################################################################### # # For each picture generate a title # ####################################################################### verbose "$FILE: generating title ..." pbmtext `echo $FILE | cut -c1-20` > $TMPDIR/$FILEBASE-tit.pbm ####################################################################### # # Put each picture's title in middle of a maximum sized blank title # ####################################################################### verbose "$FILE: calculating padding offsets for title ..." set X `pnmfile $TMPDIR/$FILEBASE-tit.pbm` X=$5; Y=$7 verbose "$FILE: padding title ..." pnmpaste $TMPDIR/$FILEBASE-tit.pbm `expr \( $PICWIDTH - $X \) / 2` `expr \( $TITHEIGHT - $Y \) / 2` $TMPDIR/blank-tit.pbm > $TMPDIR/$FILEBASE-pddtit.pnm done IDXS=0 COLS=0 ROWS=0 ROWPICFILES= ROWTITFILES= IDXFILES= ########################################################################### # # Now combine all the correctly sized titles and thumbnails # ########################################################################### for FILE in $PROCFILES; do verbose "next: $FILE" FILEBASE=`basename $FILE` ROWPICFILES="$ROWPICFILES $TMPDIR/$FILEBASE-pddpic.pnm" ROWTITFILES="$ROWTITFILES $TMPDIR/$FILEBASE-pddtit.pnm" COLS=`expr $COLS + 1` ####################################################################### # # If we have six then combine the titles and thumbnails into a row # ####################################################################### if [ `expr $COLS / $IDXWIDTH` = 1 ]; then verbose "complete row: $ROWPICFILES - creating row $TMPDIR/rowpic-$ROWS.pnm" pnmcat -lr -$PICBGCOL $ROWPICFILES > $TMPDIR/rowpic-$ROWS.pnm ROWPICFILES= pnmcat -lr -$TITBGCOL $ROWTITFILES > $TMPDIR/rowtit-$ROWS.pnm ROWTITFILES= IDXFILES="$IDXFILES $TMPDIR/rowpic-$ROWS.pnm $TMPDIR/rowtit-$ROWS.pnm" ROWS=`expr $ROWS + 1` COLS=0 fi ####################################################################### # # If we have five rows then combine them into an index # ####################################################################### if [ `expr $ROWS / $IDXHEIGHT` = 1 ]; then verbose "complete index: $IDXFILES - creating index $TMPDIR/$OUTNAME$IDXS.pnm" pnmcat -tb $IDXFILES | cjpeg -Q $QUALITY > $OUTNAME$IDXS.jpg IDXFILES= IDXS=`expr $IDXS + 1` ROWS=0 fi done ########################################################################### # # Now combine all outstanding pics that weren't enough to make a row # and pad to the end of the row with blanks # ########################################################################### if [ $COLS != 0 ]; then verbose "incomplete row - padding with blanks ($COLS/$IDXWIDTH)" while [ `expr $COLS / $IDXWIDTH` = 0 ]; do verbose "next: blank" ROWPICFILES="$ROWPICFILES $TMPDIR/blank-pic.pbm" ROWTITFILES="$ROWTITFILES $TMPDIR/blank-tit.pbm" COLS=`expr $COLS + 1` done verbose "padded row: $ROWPICFILES - creating row $TMPDIR/rowpic-$ROWS.pnm" pnmcat -lr -$PICBGCOL $ROWPICFILES > $TMPDIR/rowpic-$ROWS.pnm ROWPICFILES= pnmcat -lr -$TITBGCOL $ROWTITFILES > $TMPDIR/rowtit-$ROWS.pnm ROWTITFILES= IDXFILES="$IDXFILES $TMPDIR/rowpic-$ROWS.pnm $TMPDIR/rowtit-$ROWS.pnm" ROWS=`expr $ROWS + 1` COLS=0 fi ########################################################################### # # Now combine all outstanding rows that weren't enough to make an index # ########################################################################### if [ $ROWS != 0 ]; then verbose "incomplete index (not padding): $IDXFILES - creating index $TMPDIR/$OUTNAME$IDXS.pnm" pnmcat -tb $IDXFILES | cjpeg -Q $QUALITY > $OUTNAME$IDXS.jpg IDXFILES= IDXS=`expr $IDXS + 1` ROWS=0 fi rm -fr $TMPDIR } main "$@@" @