#!/bin/sh

# Script to run ipdisp program.

# Re-written from the original csh, Dave Love <d.love@dl.ac.uk>.
# Copyright 2000, CLRC Daresbury Laboratory.
# The CCP4 licence applies to this file.

CAL="$CCP4/x-windows/ipdisp/"
SPDROOT="$CCP4/x-windows/ipdisp/spdfil."

case "$1" in
    -h | --help)
	echo "\
Usage: $0 <spd spec> [ -s <spd file> ] [ -f <image file> ] \\
   [ -t <image template> ] [ -i <image increment> ] [ -d <distance> ] \\
   [ -a <swing angle theta> ] [ -w <wavelength> ]

 Where <spd spec> is an spd file name or one of:
  -ab [AB]  2x2 ADSC scanned binned mode
  -a  [A]   2x2 ADSC scanned
  -e  [EM]  EMBL scanner (prototype)
  -m  [MA]  MAR scanner
  -mc [MC]  MAR CCD scanner 130mm
  -md [MD]  MAR CCD scanner 165mm
  -M  [BM]  Big Mar scanner (squashed)
  -Mo [BO]  Big Mar scanner, original format with overflow
  -V  [BV]  Big Mar scanner on Vax
  -v  [MV]  Mar scanner on Vax
  -r  [R]   RAXIS 2
  -rc [RC]  RAXIS 2 coarse scan
  -r4 [R4]  RAXIS 4 (100 micron scan)
  -g  [GE]  GEL
  -o  [OL]  for LMB Optronics scanner
  -O  [OO]  for LMB Optronics scanner, original file
  -y  [YL]  for LMB Molecular Dynamics scanner, 700x700 pixel scan
  -Y  [BY]  for LMB Molecular Dynamics scanner,1400x1400 pixel scan
  -z  [ZL]  for LMB Molecular Dynamics scanner, 512x456 pixel scan
  -i2 [TI]  TIFF translated from GEL file
  -pf [PF]  Photon Factory Weissenberg plates
  -px [PX]  Oxford PX210 CCD detector
  -c  [C]   Mac Science 2500x2500
  -d3 [D3]  MAC Science DIP2030
  -d4 [D4]  MAC Science DIP2040
  -dc [DC]  D2AM CCD scanner
"
	exit ;;
esac

case "$1" in
    "" ) spdfilename="${SPDROOT}mar" ;;
    *.mar* )
        # Accept just "name".marXXXX as single argument
        filename="$1"
	shift
        filename_spec="-f $filename" ;;

    # Set the "spd" filename for ipdisp, which is a file
    #  defining the record length, number of records etc.
    # This is defined by the first argument.
    -ab | -AB ) spdfilename="${SPDROOT}adsc_binned"; shift ;;
    -a | -A )   spdfilename="${SPDROOT}adsc_unbinned"; shift ;;
    -mc | -MC ) spdfilename="${SPDROOT}marccd"; shift ;;
    -md | -MD ) spdfilename="${SPDROOT}marccd165"; shift ;;
    -e | -EM )  spdfilename="${SPDROOT}lmb"; shift ;;
    -m | -MA )  spdfilename="${SPDROOT}mar"; shift ;;
    -Mo | -BO ) spdfilename="${SPDROOT}Sbigmar"; shift ;;
    -M | -BM )  spdfilename="${SPDROOT}bigmar"; shift ;;
    -V | -BV )  spdfilename="${SPDROOT}bigvax"; shift ;;
    -v | -MV )  spdfilename="${SPDROOT}marvax"; shift ;;
    -r | -R )   spdfilename="${SPDROOT}rax"; shift ;;
    -rc | -RC ) spdfilename="${SPDROOT}raxc"; shift ;;
    -r4 | -R4 ) spdfilename="${SPDROOT}rax4100"; shift ;;
    -g | -GE )  spdfilename="${SPDROOT}gel"; shift ;;
    -o | -OL )  spdfilename="${SPDROOT}film"; shift ;;
    -O | -OO )  spdfilename="${SPDROOT}film2560"; shift ;;
    -y | -YL )  spdfilename="${SPDROOT}mld"; shift ;;
    -Y | -BY )  spdfilename="${SPDROOT}Mld"; shift ;;
    -z | -ZL )  spdfilename="${SPDROOT}Smld"; shift ;;
    -i2 | -TI ) spdfilename="${SPDROOT}lcl"; shift ;;
    -pf | -PF ) spdfilename="${SPDROOT}pf"; shift ;;
    -px | -PX ) spdfilename="${SPDROOT}px210"; shift ;;
    -c | -C )   spdfilename="${SPDROOT}mcs"; shift ;;
    -d3 | -D3 ) spdfilename="${SPDROOT}dip2030"; shift ;;
    -d4 | -D4 ) spdfilename="${SPDROOT}dip2040"; shift ;;
    -dc | -DC ) spdfilename="${SPDROOT}d2amccd"; shift ;;

    -* ) spdfilename="${SPDROOT}mar" ;;

    *) spdfilename="$1"; shift ;;
esac

# Check rest of args.
rest=`getopt a:d:i:f:s:t:w "$@"` || exit 1

args="$@"
while [ $# -gt 0 ]; do
    case "$1" in
	# Grab args of image specs.
	-f | -t) shift; filename="$1" ;;
    esac
    shift
done
set -- $args

if [ "$filename" ]; then
    #  get extension if present
    ext=`expr //"$filename" : '.*\.\([^.]*\)'`
    #  Setup things for spdfil automatically for Mar345 files
    #  depending on extension.
    case "$ext" in
    mar2300 | mar2000 | mar1600 | mar1200 | mar3450 | \
    mar3000 | mar2400 | mar1800)
        spdfilename="${SPDROOT}$ext" ;;
    esac
fi

exec "$CBIN/ipdisp.exe" -s "$spdfilename" $filename_spec "$@"
