#!/bin/sh
#------------------------------------------------------------------------------
#$Author: andrius $
#$Date: 2016-04-28 10:10:47 +0300 (Thu, 28 Apr 2016) $
#$Revision: 594 $
#$URL: svn://saulius.grazulis.lt/scripts/jmol-draw $
#------------------------------------------------------------------------------
#*
# Draw a simple molecule picture using Jmol.
#**

set -ue

FILES=""
FORMAT=""
LOGO=off
COLOR=chain
ANTIALIAS_IMAGES=on

#** USAGE:
#**    $0 input.pdb output.png
while [ $# -gt 0 ]
do
  case $1 in
      -f|--format|--forma|--form|--for|--fo|--f)
            FORMAT="$2"
            shift
            ;;
      --logo|--log|--lo|--l)
            LOGO=on
            ;;
      --no-logo|--no-lo|--no-l)
            LOGO=off
            ;;
      --cpk)
            COLOR=cpk
            ;;
      --no-antialias)
            ANTIALIAS_IMAGES=off
            ;;
      --help|--hel|--he|--h)
            awk '/#\*/,/#\*\*/{sub("^ *#[*]?[*]?", ""); print $0}' $0
            exit
            ;;
      -*) echo "`basename $0`: unknown option $1" >&2 ; exit 1 ;;
      *)  FILES="$FILES '$1'" ;;
    esac
    shift
done

eval set -- "${FILES}"

INPUT_FILE="$1"
OUTPUT_FILE="$2"

if [ -z "${FORMAT}" ]
then
    FORMAT=$(echo ${OUTPUT_FILE} | sed 's/\./\//g' | xargs basename)
fi

# Check whether we can create the output file, and die if we can not:
touch "${OUTPUT_FILE}"

# Create a picture with JMol:
jmol \
    --nodisplay \
    --script - <<EOF
load ${INPUT_FILE}
select all
wireframe off
cpk 200
color ${COLOR}
frank ${LOGO}
set antialiasImages ${ANTIALIAS_IMAGES}
write ${FORMAT} "${OUTPUT_FILE}"
EOF
