#!/bin/sh
# ==============================================================================
# POV-Ray 3.6 
# render_scene.sh - render a scene with options given in a scene file comment
# ==============================================================================
# written November 2003 by Christoph Hormann
# This file is part of POV-Ray and subject to the POV-Ray licence
# see POVLEGAL.DOC for details
# ------------------------------------------------------------------------------
# calling conventions:
#
#   render_scene.sh [output_directory] [--all] scene_file
#
# output_directory: directory where to write the rendered image 
# scene_file: scene to render
#
# the render options have to be given as a '//' comment within the first
# 50 lines of the file.  There must be a space after the '//' and the first 
# option has to start with '-' or '+'.  If option '--all' is given scenes
# with no options given are rendered, otherwise not.
# ==============================================================================

# --- specify additional render options here ---
POV_OPTIONS=""

if [ ! -z "$1" ] ; then

  if [ ! -z "$2" ] ; then
    case $1 in
      --all )
        RENDER_ALL=--all
        if [ ! -z "$3" ] ; then
          OUTPUT_DIR="$2"
          RENDER_NAME="$3"
        else
          OUTPUT_DIR=`dirname $2`
          RENDER_NAME="$2"
        fi
        ;;
      *)
        OUTPUT_DIR="$1"
        case $2 in
          --all )
            RENDER_ALL=--all
            RENDER_NAME="$3"
            ;;
          *)
            RENDER_NAME="$2"
            ;;
        esac        
        ;;
    esac
  else
    OUTPUT_DIR=`dirname $1`
    RENDER_NAME="$1"
  fi

  head -n 50 "$RENDER_NAME" | grep -E '^//[ ]+[-+]{1}[^ -]' > /dev/null && POV_FILE="$RENDER_NAME"

  SCENE_DIR=`dirname $RENDER_NAME`
  FILE_BASE=`basename $RENDER_NAME .pov`

  if [ ! -z "$POV_FILE" ] ; then
    # -- use first option line --
    OPTIONS=`head -n 50 "$POV_FILE" | grep -E '^//[ ]+[-+]{1}[^ -]' | head -n 1 | sed "s?^//[ ]*??"`
    # -- use last option line --
    #OPTIONS=`head -n 50 "$POV_FILE" | grep -E '^//[ ]+[-+]{1}[^ -]' | tail -n 1 | sed "s?^//[ ]*??"`

    echo "==========================================================================="
    echo "$POV_FILE: $OPTIONS"
    echo "==========================================================================="
    
    povray +L$SCENE_DIR +L$OUTPUT_DIR -i$POV_FILE -o$OUTPUT_DIR/ $OPTIONS $POV_OPTIONS -p
    #echo "povray +L$SCENE_DIR +L$OUTPUT_DIR -i$POV_FILE -o$OUTPUT_DIR/ $OPTIONS $POV_OPTIONS -p"

  else
    if [ ! -z "$RENDER_ALL" ] ; then

      echo "==========================================================================="
      echo "$RENDER_NAME"
      echo "==========================================================================="

      echo "########################"
      povray +L$SCENE_DIR +L$OUTPUT_DIR -i$POV_FILE -o$OUTPUT_DIR/ $POV_OPTIONS -p
      #echo "povray +L$SCENE_DIR +L$OUTPUT_DIR -i$RENDER_NAME -o$OUTPUT_DIR/ $POV_OPTIONS -p"

    fi
  fi

fi