0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner#!/bin/ksh
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerUsage() {
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner printf 'Usage: %s [-p] [-n] [-h] [image_dir]
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner Options:
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner -p .. Combine straight to PNG. Otherwise first pics are combined into a
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner GIF and than converted to PNG.
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner -n .. No action, i.e. show what would be done without actually doing it.
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner -h .. Print this help and exit.
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner Combines several images into a sprite named combined.png and prints out
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner the required CSS infos. E.g.:
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner %s web/offwhite/img
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner' "$(basename $0)" "$(basename $0)"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner}
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerGIF="gif"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerECHO=""
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerwhile getopts "h(help)n(dry)p(png)" option ; do
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner case "$option" in
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner h) Usage ; exit 0 ;;
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner p) GIF="png" ;;
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner n) ECHO="echo" ;;
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner esac
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerdone
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerIDX=$(($OPTIND-1))
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknershift $IDX
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerif [ -n "$1" ]; then
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner cd "$1"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner [ $? -eq 0 ] || exit 1
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerfi
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerF_NAV="h.gif l.gif w.gif"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerF_LST="d.gif p.gif"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerF_MISC="Logo.png servedby.png rss.png q.gif" # q.gif must be the last
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerFILES="$F_MISC $F_LST $F_NAV"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerFILES="$F_NAV $F_LST $F_MISC"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens ElknerOUT="combined"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner# concat to GIF (results in smaller pics than to PNG directly)
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner$ECHO montage -background Transparent -tile x1 -mode Concatenate $FILES ${OUT}.$GIF
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerif [ "$GIF" = "gif" ]; then
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner# convert to PNG (transparent pics are rendered badly by FF on none-transparent
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner# BGs)
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner$ECHO convert ${OUT}.$GIF ${OUT}.png
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerfi
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerinteger X=0
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner[ -n "$ECHO" ] && $ECHO "identify -format '%f %w %h\\\n' $FILES $OUT.png"
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkneridentify -format "%f %w %h\n" $FILES $OUT.png | while read F W H T; do
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner [ -z "$F" ] && continue
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner printf "%s background-position: -%dpx %dpx; width: %dpx; height: %dpx;\n" \
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner "$F" $X 0 $W $H
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elkner X=$((X+$W))
0d5726dcc9be45e973199da40ef22307ba7e6c84Jens Elknerdone