#!/bin/bash
# Skrypt frameit umożliwiający łatwe dodawanie ramki wokół obrazu
# za pomocą pakietu ImageMagick.

usage()
{
cat << EOF
Użycie: $(basename $0) -b obwódka -c kolor nazwa_obrazu
    lub $(basename $0) -f ramka -m kolor nazwa_obrazu

W pierwszym przypadku podaj rozmiary obwódki w formacie wielkość x wielkość
lub procent x procent, oraz jej kolor (kod RGB lub nazwa).
W drugim przypadku podaj rozmiary ramki, odstęp i kolor.

PRZYKŁADY:
   $(basename $0) -b 15x15 -c black nazwa_obrazu
   $(basename $0) -b 10%x10% -c grey nazwa_obrazu

   $(basename $0) -f 10x10+10+0 nazwa_obrazu
   $(basename $0) -f 6x6+2+2 -m tomato nazwa_obrazu
EOF
exit 1
}

#### GŁÓWNA CZĘŚĆ KODU
# Większość kodu analizuje podane argumenty.

while getopts "b:c:f:m:" opt; do
  case $opt in
   b ) border="$OPTARG";                ;;
   c ) bordercolor="$OPTARG";           ;;
   f ) frame="$OPTARG";                 ;;
   m ) mattecolor="$OPTARG";            ;;
   ? ) usage;                           ;;
  esac
done
shift $(($OPTIND - 1))  # Usunięcie przeanalizowanych argumentów.

if [ $# -eq 0 ] ; then     # Nie została podana nazwa obrazu?
  usage
fi

# Podane zostały parametry obwódki czy ramki?
 
if [ ! -z "$bordercolor" -a ! -z "$mattecolor" ] ; then
  echo "$(basename $0): nie można jednocześnie określić koloru głównego i matowego." >&2
  exit 1
fi

if [ ! -z "$frame" -a ! -z "$border" ] ; then
  echo "$(basename $0): nie można jednocześnie określać obwódki i ramki." >&2
  exit 1
fi

if [ ! -z "$border" ] ; then
  args="-bordercolor $bordercolor -border $border"
else
  args="-mattecolor $mattecolor -frame $frame"
fi

for name
do
  suffix="$(echo $name | rev | cut -d. -f1 | rev)"
  prefix="$(echo $name | rev | cut -d. -f2- | rev)"
  newname="$prefix+r.$suffix"
  echo "Dodanie ramki do obrazu $name i zapisanie jako $newname."
  convert $name $args $newname
done

exit 0
