#!/bin/sh 
#
# Compresses an image with EZW algorithm


usage() {
    echo "megawave_fezw [-h] [-R Rate] [-b1 BiFilt1] [-b2 BiFilt2] [-o OrthoFilt] [-e EdgeFilt] image"
    echo "input:  the image to be compressed, the wavelet filters"
    echo "output: the quantized image, the compressed file"
    exit
}

if [ $# -le 0 ]; then
    usage
    exit
fi


DATA=/usr/share/megawave/data

# option to compute rate distortion curve
RDOPT="-d"

# Default wavelet filters
WAVELETFILTER=$DATA/wave/biortho/h/sd07.ir
WAVELETFILTER2=$DATA/wave/biortho/htilde/sd09.ir
WAVELETOPT="-b $DATA/wave/biortho/htilde/sd09.ir"
WAVELETEDGEFILTER="no filter"

while [ ! "$1" = "" ]; do
    case "$1" in
        # Help
	-h)
	    usage
	    exit
	    ;;
	
        # Compress with a target rate 
	-R)
	    shift
	    RATE="$1"
	    RDOPT="-R $1"
	    ;;
	
        # Use customized wavelet filters
	-b1)
            shift
	    WAVELETFILTER="$1"
	    ;;
	
	-b2)
            shift
	    WAVELETOPT="-b $1"
	    ;;

	-o)
            shift
	    WAVELETFILTER="$1"
	    ;;

	-e)
            shift
	    WAVELETOPT="-e $1"
	    ;;
	
        # Input image
	[!-]*)
	    IMAGE=$1
	    PREFIMAGE='basename $1'
	    break
	    ;;

        # Error
	*)
	    echo "Unrecognized option $1"
	    exit 1
	    ;;
    esac
    shift
done



# Check that wavelet filters are available

if [ ! -f $WAVELETFILTER ]; then
    echo "Cannot find $WAVELETFILTER in MegaWave data directories!"
    exit 1
fi

if [ "$WAVELETEDGEFILTER" = "no filter" ]; then
    if [ "$WAVELETFILTER2" != "" ] && \
	[ ! -f $WAVELETFILTER2 ]; then
	echo "Cannot find $WAVELETFILTER2 in MegaWave data directories!"
	exit 1
    fi
else
    if [ ! -f $WAVELETEDGEFILTER ]; then
	echo "Cannot find $WAVELETEDGEFILTER in MegaWave data directories!"
	exit 1
    fi
fi

# Check if compressed file and quantized image are needed
if [ "$RDOPT" != "-d" ]; then
  COMPRESSFILE=`basename $IMAGE`
  PREFIX=`echo "$COMPRESSFILE" | cut -f3 -d.`
  if [ "$COMPRESSFILE" = "$IMAGE" ]; then
    PREFIX=""
  fi
  NGROUP=1
  while [ "$PREFIX" != "" ]
  do
    NGROUP=`echo "$NGROUP 1 + p" | dc`
    NGSUFFIX=`echo "$NGROUP 2 + p" | dc`
    PREFIX=`echo "$COMPRESSFILE" | cut -f"$NGSUFFIX" -d.`
  done
  PREFIX=`echo "${COMPRESSFILE}" | cut -f1-"$NGROUP" -d.`
  COMPRESSOPT="-o ${PREFIX}_${RATE}c.comp"
  QUANTIZEARG="${PREFIX}_${RATE}q.rim"
else
  COMPRESSOPT=""
  QUANTIZEARG=""
fi

# Make compression
megawave fezw $RDOPT $WAVELETOPT $COMPRESSOPT $IMAGE $WAVELETFILTER $QUANTIZEARG
	




