#!/bin/sh
#
# converteps
#
# Konvertiere EPS-Files nach Bitmap.
#   Nutzt "convert". Aufgabe: Berechnung des optimalen
#   Wertes für "density".
# 
# 12.05.1999, Winfried.Beer@dlr.de; feel free to use it
# 
#

if [ $# -lt 4 ]; then
  echo `basename $0`' [-geom widthxheight] [-other convert options] <file.eps[.gz]> <file.gif>'
  exit 1
fi

# -- Auswertung der Parameter
argv="$*"
file=""
fileout=""
geom="200x100"
while [ $# -gt 0 ]; do
  case "$1" in
  -geom*)
    geom=$2
    gwidth=`echo $geom | sed -e 's/-.*$//' -e 's/[^0-9x]//g' | awk '{FS="x";print $1}'`
    gheight=`echo $geom | sed -e 's/-.*$//' -e 's/[^0-9x]//g' | awk '{FS="x";print $2}'`
    shift
    shift;;
  *)
    file=$fileout
    fileout=$1
    shift;;
  esac
done

# -- Ermittlung der Dateinamen
base=$file
suff=`echo $base | grep '^.*\..*$' | sed -e 's/^.*\(\.[^\.]*\)$/\1/'`
base=`echo $base | sed -e 's/\.[^\.]*$//'`

# komprimiert mit gzip?
suffcpr=""
zcat="cat"
if [ "$suff" = ".gz" ]; then
  suffcpr=$suff
  zcat="gunzip -c"
  suff=`echo $base | grep '^.*\..*$' | sed -e 's/^.*\(\.[^\.]*\)$/\1/'`
  base=`echo $base | sed -e 's/\.[^\.]*$//'`
fi

if [ "$suff" != ".eps" -a "$suff" != ".epsi" -a "$suff" != ".ps" ]; then
  echo "$file has no PostScript suffix."
  exit 1
fi


# -- get BoundingBox
bb=`$zcat <$file | tr '\r' '\n' | egrep '^%%BoundingBox: |^PageBoundingBox: ' | head -1`
if [ "$bb" = "" -o "$suff" = ".ps" ]; then  # DIN A4
  bb='%%BoundingBox: 0 0 595 842'
fi

# -- page option for PostScript
page=""
if [ "$suff" = ".ps" ]; then  # DIN A4
  page="-page 595!x842!+0+0"
  argv=`echo "$argv" | awk '{$NF="GIF87:"$NF; print}'`
fi

# -- get Orientation (only plain PostScript)
rotate=""
if [ "$suff" = ".ps" ]; then
  a=`$zcat < $file | tr '\r' '\n' | head -20 | grep '^%DVIPS'`
  if [ "$a" != "" ]; then # LaTeX-Folien
    a=`$zcat $file | head -20 | grep -s '^%%Orientation: Landscape'` 
    if [ "$a" != "" ]; then # LaTeX-Querformat
      rotate="-rotate 270"
      t="$gwidth"
      gwidth="$gheight"
      gheight="$t"
    fi
  else
    a=`$zcat $file | dd bs=1024 count=50 2>&- | grep -s '^/mysetup ' | head -1 | awk '{if($3==0){print 90}}'`
    if [ "$a" != "" ]; then # Microsoft-PS-Querformat
      rotate="-rotate $a"
      t="$gwidth"
      gwidth="$gheight"
      gheight="$t"
    fi
  fi
fi


# -- compute density
den=`(echo $gwidth"x"$gheight | sed -e 's/-.*$//' -e 's/[^0-9x]//g' ; echo $bb) | awk '
NR==1 {oldfs=FS;FS="x"; gw=$1; gh=$2; 
       if (gw=="") {gw=10000};
       if (gh=="") {gh=10000}; FS=oldfs}
NR==2 {w=$4-$2+1; h=$5-$3+1;
       if ((w/h)>(gw/gh)) { den=gw/w*72; }else{ den=gh/h*72; }
       print den; }'`

#echo "convert $page $rotate -density $den $argv"
convert $page $rotate -density $den $argv


