#!/usr/bin/ksh93

#
# This file is a part of the NsCDE - Not so Common Desktop Environment
# Author: Hegel3DReloaded
# Licence: GPLv3
#

cmdargstack=""
imgfilenamestr=""
imgdirstr=""
pass=0
typeset -a mback=(${2//+/ })

echo "$1" | sed 's/\+/\n/g' | while IFS="+" read mstring
do
   echo $mstring | while IFS="/" read mondata mdesk mbackinfo
   do
      typeset -a moninfo=(${mondata//_/ })
      mname="${moninfo[0]}"
      mwidth="${moninfo[1]}"
      mheight="${moninfo[2]}"
      mposx="${moninfo[3]}"
      mposy="${moninfo[4]}"
      if [[ $mname != *infostore.monitor*.name* ]]; then
        case ${mbackinfo%_*} in
        TILED)
           cmdargstack="$cmdargstack \\( -size ${mwidth}x${mheight} tile:${FVWM_USERDIR}/backer/${mback[$pass]} -repage +${mposx}+${mposy} \\)"
        ;;
        ASPECT)
           cmdargstack="$cmdargstack \\( -resize ${mwidth}x${mheight}\! ${FVWM_USERDIR}/backer/${mback[$pass]} -repage +${mposx}+${mposy} \\)"
        ;;
        ASIS)
           cmdargstack="$cmdargstack \\( -resize ${mwidth}x${mheight} -gravity center -extent ${mwidth}x${mheight} -background \"${mbackinfo##*_}\" ${FVWM_USERDIR}/backer/${mback[$pass]} -repage +${mposx}+${mposy} \\)"
        ;;
        esac
        if (($pass == 0)); then
           export imgfilenamestr="${mback[$pass]}"
           export imgdirstr="${mname}_${mwidth}_${mheight}_${mposx}_${mposy}/${mdesk}/${mbackinfo}"
        else
           export imgfilenamestr="${imgfilenamestr}+${mback[$pass]}"
           export imgdirstr="${imgdirstr}+${mname}_${mwidth}_${mheight}_${mposx}_${mposy}/${mdesk}/${mbackinfo}"
        fi
        ((pass = pass + 1))
      fi
   done
done

finalcmd="convert $cmdargstack -layers merge ${FVWM_USERDIR}/backer/bgcache/${imgdirstr}/${imgfilenamestr}.png"
# echo "$finalcmd" > /tmp/finalcmd.debug

if [ ! -f "${FVWM_USERDIR}/backer/bgcache/${imgdirstr}/${imgfilenamestr}.png" ]; then
   if [ ! -d "${imgdirstr}" ]; then
      mkdir -p "${FVWM_USERDIR}/backer/bgcache/${imgdirstr}"
   fi
   eval $finalcmd
fi

fvwm-root -r ${FVWM_USERDIR}/backer/bgcache/${imgdirstr}/${imgfilenamestr}.png

