#!/bin/bash
#set -e

patchsize=64
marginsize=8

tmp_text_txt=`mktemp /tmp/$p/text.txt.XXXXXX` || exit 1
tmp_text_pbm=`mktemp /tmp/$p/text.pbm.XXXXXX` || exit 1
tmp_composite_map=`mktemp /tmp/$p/composite.map.XXXXXX` || exit 1
tmp_composite_ppm=`mktemp /tmp/$p/composite.ppm.XXXXXX` || exit 1
tmp_newcomposite_ppm=`mktemp /tmp/$p/newcomposite.ppm.XXXXXX` || exit 1
tmp_patch_pnm=`mktemp /tmp/$p/patch.pnm.XXXXXX` || exit 1

source=$1
dest=$2

titles=$(cat filelist)

count=0

for foo in $titles ; do
  cat $source/$foo.ttl >> $tmp_text_txt
  count=$[count+1]
done

pbmtext < $tmp_text_txt > $tmp_text_pbm

textwidth=$(pnmfile $tmp_text_pbm | awk '{print $4}')

horiz=5

hsize=$[horiz*patchsize+(horiz+3)*marginsize+textwidth]
vsize=$[count*patchsize+(count+2)*marginsize]

echo "base http://feghoot.ml.org/jade-warrior/covers/" > $tmp_composite_map

echo Making background, $hsize by $vsize

ppmmake rgb:0/0/0 $hsize $vsize > $tmp_composite_ppm

voffset=$marginsize

for foo in $titles ; do
  hoffset=$[textwidth+2*marginsize]
  pbmtext < $source/$foo.ttl | pnminvert > $tmp_text_pbm
  textheight=$(pnmfile $tmp_text_pbm | awk '{print $6}')
  insertvert=$[voffset+(patchsize-textheight)/2]
  pnmpaste -replace $tmp_text_pbm $marginsize $insertvert $tmp_composite_ppm > $tmp_newcomposite_ppm
  # dont want to remove $tmp_newcomposite_ppm or we will have to reuse mktemp
  cp $tmp_newcomposite_ppm $tmp_composite_ppm
  for bar in A B C D E; do
    echo Processing $foo-$bar
    hlimit=$[hoffset+patchsize]
    vlimit=$[voffset+patchsize]
    if [ -f $source/$foo-$bar.tif ] ; then
      tifftopnm $source/$foo-$bar.tif | \
        pnmscale -xysize $patchsize $patchsize > $tmp_patch_pnm
      pnmpaste -replace $tmp_patch_pnm $hoffset $voffset $tmp_composite_ppm > \
        $tmp_newcomposite_ppm
      mv $tmp_newcomposite_ppm $tmp_composite_ppm
      if [ -f $dest/$foo-$bar.jpg -a $dest/$foo-$bar.jpg -nt $source/$foo-$bar.tif ] ; then
	 echo $dest/$foo-$bar.jpg exists, no need to rebuild
      else
         echo Building $dest/$foo-$bar.jpg
         tifftopnm $source/$foo-$bar.tif | \
           cjpeg -quality 90 > $dest/$foo-$bar.jpg
      fi
      echo "rect $foo-$bar.jpg $hoffset,$voffset $hlimit,$vlimit" >> $tmp_composite_map
    elif [ -f $source/$foo-$bar.gif ] ; then
      giftoppm $source/$foo-$bar.gif | \
        pnmscale -xysize $patchsize $patchsize > $tmp_patch_pnm
      pnmpaste -replace $tmp_patch_pnm $hoffset $voffset $tmp_composite_ppm > \
        $tmp_newcomposite_ppm
      mv $tmp_newcomposite_ppm $tmp_composite_ppm
      cp $source/$foo-$bar.gif $dest
      echo "rect $foo-$bar.gif $hoffset,$voffset $hlimit,$vlimit" >> $tmp_composite_map
    elif [ -f $source/$foo-$bar.jpg ] ; then
    	djpeg $source/$foo-$bar.jpg |  \
        pnmscale -xysize $patchsize $patchsize > $tmp_patch_pnm
      pnmpaste -replace $tmp_patch_pnm $hoffset $voffset $tmp_composite_ppm > \
        $tmp_newcomposite_ppm
      mv $tmp_newcomposite_ppm $tmp_composite_ppm
      cp $source/$foo-$bar.jpg $dest
      echo "rect $foo-$bar.jpg $hoffset,$voffset $hlimit,$vlimit" >> $tmp_composite_map
    else
      echo "No file available"
    fi
    hoffset=$[hoffset+patchsize+marginsize]
  done
  voffset=$[voffset+patchsize+marginsize]
done

cjpeg < $tmp_composite_ppm > $dest/composite.jpg
cp $tmp_composite_map $dest/composite.map

rm -f $tmp_text_txt
rm -f $tmp_text_pbm
rm -f $tmp_composite_map
rm -f $tmp_composite_ppm
rm -f $tmp_newcomposite_ppm
rm -f $tmp_patch_pnm
