#!/bin/bash

#-------------------------------------------------------------
#Program zamienia BoundingBoxa i scaluje caly rysunek
#
#%%BoundingBox: 18 144 592 718
#
#na (gdy x2)
#%%BoundingBox: 36 288 1184 1436
#2.00 dup scale
#
#-------------------------------------------------------------


if [ $# -lt 2 ]
then
  echo
  echo "Usage:"
  echo "    $0 plik.eps 1024"
  echo "stworzy plik.1024.eps i plik.1024.png o szerokosci 1024 px"
  echo
  echo "Skaluje pliki .eps które zostaly wygenerowane przez Super Mongo poprzez uzycie uzadzenia 'device postencap'. Drugi argument zawiera zadana szerokosc wykresu."
  echo
  echo "Reklama:"
  echo "  Nowe uzadzenia do Super Mongo !"
  echo "  EPS o stosunkach 1:2 2:1 1:3 3:1 !"
  echo "Patrz http://astrouw.edu.pl/~jskowron/sm_i_eps/"
  echo
  exit 1
fi

#init

PLIK=$1
X_WIDTH=$2
NEW_PLIK_EPS=${PLIK%.eps}.$X_WIDTH.eps
NEW_PLIK_PNG=${PLIK%.eps}.$X_WIDTH.png


#awk
echo "skaluje $PLIK --> $NEW_PLIK_EPS"

awk '
BEGIN {
X_WIDTH='$X_WIDTH'
}

{
  if(match($0,"%%BoundingBox: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)",BBOX)) {
    DLUG=(BBOX[3]-BBOX[1]);
    FACTOR=X_WIDTH/DLUG;
    printf "%%%%BoundingBox: %.0f %.0f %.0f %.0f\n",BBOX[1]*FACTOR,BBOX[2]*FACTOR,BBOX[3]*FACTOR,BBOX[4]*FACTOR;
  } else if($0=="%%EndComments") {
    printf "%%EndComments\n";
    printf "%f dup scale\n",FACTOR;
  } else {
    print;
  };

}

END{
  printf "DLUG=%f\n",DLUG > "/dev/stderr";
  printf "FACTOR=%f\n",FACTOR > "/dev/stderr";
}' $PLIK > $NEW_PLIK_EPS

#convert

convert $NEW_PLIK_EPS -verbose $NEW_PLIK_PNG

#koniec
