#!/bin/sh

L="`ls /usr/share/doc/*/images/logo.jpg|tail -1`"
P="`ls /usr/share/doc/*/images/granite.png|tail -1`"
W=`identify "$L" | sed 's/.* JPEG \([0-9]*\)x.*/\1/'`
H=`identify "$L" | sed 's/.* JPEG [0-9]*x\([0-9]*\).*/\1/'`

CD="${1:-example}"
CN="${2:-12}"
CW="${3:-640}"
CH="${4:-480}"

_Random() { # [Max]
  echo $((`dd if=/dev/urandom count=2 bs=1 2>/dev/null | od -An -t u4`%${1:-32768}))
}

rm -rf "$CD"
mkdir "$CD"
cd "$CD"

convert "$L" -fuzz 25% -draw "fill white color 0,0 reset fill black stroke black rectangle 75,0 $W,$H rectangle 62,28 $W,$H rectangle 36,36 $W,$H rectangle 36,27 40,$H image screen 0,0 $W,$H '$L'" -matte -depth 24 -fill none -draw "matte 0,0 floodfill" -trim -write spriteR.png -flop spriteL.png

x10=0;y10=`_Random $(($CH-$H))`;x11=$(($CW-$W));y11=`_Random $(($CH-$H))`
x21=0;y21=`_Random $(($CH-$H))`;x20=$(($CW-$W));y20=`_Random $(($CH-$H))`
x30=`_Random $(($CW-$W))`;y30=0;x31=`_Random $(($CW-$W))`;y31=$(($CH-$H))
x41=`_Random $(($CW-$W))`;y41=0;x40=`_Random $(($CW-$W))`;y40=$(($CH-$H))

n=0; while test $n -lt $CN; do
  x1=$((($n*$x11+($CN-1-$n)*$x10)/$CN)); y1=$((($n*$y11+($CN-1-$n)*$y10)/$CN))
  x2=$((($n*$x21+($CN-1-$n)*$x20)/$CN)); y2=$((($n*$y21+($CN-1-$n)*$y20)/$CN))
  x3=$((($n*$x31+($CN-1-$n)*$x30)/$CN)); y3=$((($n*$y31+($CN-1-$n)*$y30)/$CN))
  x4=$((($n*$x41+($CN-1-$n)*$x40)/$CN)); y4=$((($n*$y41+($CN-1-$n)*$y40)/$CN))
  n=$(($n+1))
  convert -depth 24 -size "$CW"x"$CH" tile:"$P" -draw "
  	image src-over $x1,$y1 $W,$H spriteL.png
  	image src-over $x2,$y2 $W,$H spriteR.png
  	image src-over $x3,$y3 $W,$H spriteL.png
  	image src-over $x4,$y4 $W,$H spriteR.png
  " -interlace Plane frame_`printf "%02d" $n`.png
  echo "$n "
done
rm -f sprite*
