mirror of
https://github.com/aseprite/aseprite.git
synced 2025-01-14 03:40:55 +00:00
120 lines
2.4 KiB
Bash
120 lines
2.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
# gifcompose --- a GIF compositor
|
|
#
|
|
# This script composes a GIF from a series of overlays described in an input
|
|
# text file.
|
|
#
|
|
if [ "$1" = "-v" ]
|
|
then
|
|
echo=echo
|
|
else
|
|
echo=:
|
|
fi
|
|
|
|
trap "rm -fr comp$$ tmp$$ btmp$$; exit 0" 0 1 2 15
|
|
|
|
mkdir comp$$;
|
|
|
|
gen="x"
|
|
while read line
|
|
do
|
|
set -- $line
|
|
postproc='n'
|
|
name=$2
|
|
case $1 in
|
|
gif)
|
|
$echo "Pasting GIF file $2.gif" 1>&2;
|
|
cat $2.gif >tmp$$
|
|
shift; shift; postproc='y' ;;
|
|
raw)
|
|
$echo "Pasting raw file $2" 1>&2;
|
|
raw2gif -s $3 $4 <$2 >tmp$$
|
|
shift; shift; shift; shift; postproc='y' ;;
|
|
rgb)
|
|
$echo "Pasting RGB file $2" 1>&2;
|
|
rgb2gif -s $3 $4 <$2 >tmp$$
|
|
shift; shift; shift; shift; postproc='y' ;;
|
|
rle)
|
|
$echo "Pasting RLE file $2" 1>&2;
|
|
rle2gif $2 >tmp$$
|
|
shift; shift; postproc='y' ;;
|
|
text)
|
|
$echo "Generating text \`$2'" 1>&2;
|
|
case "$3" in
|
|
foreground)
|
|
text2gif -t "$2" -f $4 >tmp$$;
|
|
shift; shift;;
|
|
background)
|
|
text2gif -t "$2" -c $4 $5 $6 >tmp$$;
|
|
shift; shift; shift; shift;;
|
|
*)
|
|
text2gif -t "$2" >tmp$$;;
|
|
esac
|
|
shift; shift; postproc='y' ;;
|
|
screen)
|
|
case $2 in
|
|
size) resize="$3 $4";;
|
|
position) reposition="$3 $4";;
|
|
*) echo "Unknown screen operation" 1>&2
|
|
esac;;
|
|
esac
|
|
|
|
if [ $postproc = 'y' ]
|
|
then
|
|
while [ $# != 0 ]
|
|
do
|
|
case "$1" in
|
|
at)
|
|
$echo "Positioning \`$name' at $2 $3" 1>&2
|
|
gifpos -i $2 $3 <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
shift; shift; shift;;
|
|
clip)
|
|
$echo "Clipping \`$name' to size $2 $3 $4 $5" 1>&2
|
|
gifclip -i $2 $3 $4 $5 <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
shift; shift; shift; shift; shift;;
|
|
xflip)
|
|
$echo "Flipping \`$name' around the X axis" 1>&2;
|
|
gifflip -x <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
shift;;
|
|
yflip)
|
|
$echo "Flipping \`$name' around the Y axis" 1>&2;
|
|
gifflip -y <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
shift;;
|
|
left)
|
|
$echo "Rotating \`$name' left (counterclockwise)" 1>&2;
|
|
gifflip -l <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
shift;;
|
|
right)
|
|
$echo "Rotating \`$name' right (clockwise)" 1>&2;
|
|
gifflip -r <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
shift;;
|
|
''|\#*)
|
|
break;;
|
|
*)
|
|
echo "Unknown operator \`$1'" 1>&2
|
|
shift;;
|
|
esac
|
|
done
|
|
|
|
mv tmp$$ comp$$/${gen}.gif
|
|
fi
|
|
|
|
gen="${gen}x";
|
|
done
|
|
|
|
gifasm comp$$/*.gif | gifovly -t 0 >tmp$$
|
|
if [ "$resize" ]
|
|
then
|
|
gifpos -s $resize <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
fi
|
|
if [ "$reposition" ]
|
|
then
|
|
gifpos -n $reposition <tmp$$ >btmp$$; mv btmp$$ tmp$$;
|
|
fi
|
|
cat tmp$$
|
|
|
|
$echo "Done."
|
|
|
|
# script ends here
|