#!/bin/bash
# Programa de fer comptes enrere
UnItAtS="D"
PrOgRaM="${0##*/}" ### PrOgRaM="`basename "$0"`"
MiSs="Compte enrere: dies que falten"
function Error_Avortant(){ echo -e "\nERROR a ${PrOgRaM}: ${1}.\nAvortant...\n" ;  exit $2 ; }
function Help(){ echo "
Us: ${PrOgRaM} [opcions] \"data final del compte (format: dia mes any)\"

Les opcions son:

    -m, --missatge: Missatge de la barra de la finestra.
    -d, --dies:     Compta dies.
    -s, --setmanes: Compta setmanes.
    -o, --origen:   Inici del període. Per a determinar el color.

" ; exit 1
}
#
function DiaJulia() {
echo "scale=0; dia=$1; mes=$2; any=$3;
  diaju=dia+1720995; mesc=mes+1; anyc=any;
  if(mes <= 2){anyc=any-1; mesc=mes+13;}

  ddma=365*anyc+anyc/4;
  if(anyc < 0)ddma=(36525*anyc-75)/100;
  ddma=ddma+(306001*mesc)/10000;
  diaju+=ddma;
  # Data es 15/10/1582 o posterior
  if(diaju >= 2299171) diaju=diaju+2-anyc/100+anyc/400;
  diaju;" | bc
}
#
AvUi=$(DiaJulia `date +"%e %m %Y"`) ; FaCtOrCoLoR=0
#
# Processament d'opcions
#
[ $# -eq 0 ] && Help
while [ $# -gt 0 ] ; do
  case "$1" in
    -m | --missatge) shift; MiSs="$(echo "$1" | iconv -f utf8 -t latin1)" ;;
    -d | --dies) UnItAtS="D" ;;
    -s | --setmanes) UnItAtS="S" ;;
    -o | --origen) shift; FaCtOrCoLoR=$( echo "scale=0; (${AvUi} - `DiaJulia $1`);" | bc )
        [ ${FaCtOrCoLoR} -lt 0 ] && Error_Avortant "Origen posterior a la data actual"  5 ;;
    -*) Help ;;
    *) DiStAnCiA=$(echo "scale=0; (`DiaJulia $1` -  ${AvUi});" | bc) ;;
  esac
  shift
done
CoLoR=$(echo "scale=16; a=0.5 + (${DiStAnCiA}*255.0)/(${FaCtOrCoLoR} + ${DiStAnCiA}); scale=0; a/=1; print a,\",\",255-a;" | bc)
FiTxEr="/tmp/${PrOgRaM}-${USER}-${$}.png" ; rm -f "/tmp/${PrOgRaM}-${USER}"-*.png
case "$UnItAtS" in
    D) AmPlAdA=$(echo "scale=0; (`echo ${DiStAnCiA} | wc -c`-1)*350+80;" | bc)
      convert -size "$AmPlAdA"x400 xc:" #ffffbd" -font Bookman-DemiItalic -fill "rgb(${CoLoR},0)"\
       -draw "gravity North font-size 500  stroke magenta text -20,0 '${DiStAnCiA}'" -gaussian 0x1\
       "$FiTxEr"  ;;
    S) SeTmAnEs=$(echo "scale=0; ${DiStAnCiA}/7;"|bc)
       AmPlAdA=$(echo "scale=0; (`echo ${SeTmAnEs} | wc -c`-1)*350+80;" | bc)
      convert -size 780x480 xc:" #ffffbd" -font Bookman-DemiItalic -fill "rgb(${CoLoR},0)"\
       -draw "gravity North font-size 500  stroke magenta text -20,0 '${SeTmAnEs}'" -gaussian 0x1\
       -draw "gravity NorthWest font-size 50 text 0,420 ' (${DiStAnCiA} dies)'"\
       "$FiTxEr"  ;;
esac
display -title "$MiSs" "$FiTxEr" &
#
