#!/bin/bash -
####################################
#
# create template for bookcover
# depending on size of bookblock
# call libreoffice draw for Cover
# doublesided to get cutmarks on back of Page.
#
# created: 18.10.2015 (based on auto-dvd.sh created 14.12.2008)
# changed: 18.10.2015 ga
#
####################################
#exec 2>/dev/null
function usage() {
[ -z "$PS1" ] && {
zenity --info --text="Building Template for Bookcover using libreoffice draw\nParameters:\nBOOKBLOCK_WIDTH BOOKBLOCK_HEIGHT BOOKBLOCK_THICKNESS\nBOOKBLOCK_TITLE BOOKBLOCK_FRONTPICTURE\nBOOKBLOCK_BACKPICTURE,BOOKBLOCK_SPLINEPICTURE\nMAIN_BACKGROUND_COLOR,TITLE_BACKGROUND_COLOR\nOUTLINE_COLOR,HELPLINE_COLOR\nTEXT_COLOR,BONDLINE_COLOR\n\nParameters must be given like:\n\"BOOKBLOCK_WIDTH=200\"\n\nAll mesurements must be given in mm.\n\n$*" 2>/dev/null
} || {
cat <<-EOT
Usage $(basename $0)
Building Template for Bookcover using libreoffice draw
Parameters:
BOOKBLOCK_WIDTH BOOKBLOCK_HEIGHT BOOKBLOCK_THICKNESS
BOOKBLOCK_TITLE BOOKBLOCK_FRONTPICTURE
BOOKBLOCK_BACKPICTURE BOOKBLOCK_SPLINEPICTURE
MAIN_BACKGROUND_COLOR TITLE_BACKGROUND_COLOR
OUTLINE_COLOR HELPLINE_COLOR
TEXT_COLOR BONDLINE_COLOR
Parameters must be given like:
"BOOKBLOCK_WIDTH=200"
All mesurements must be given in mm.
$*
EOT
}
exit 0
}
function calc() {
local localtempvalue
# echo "$1" >&2
# Berechnungen mit Genauigkeit für SCG-tiny erstellen
[ -z "$1" ] && echo "0" && return 0
localtempvalue=$(echo "scale=100;(($1)+0.00005)*10000" | bc -l)
[ "${localtempvalue:0:1}" = "." ] && localtempvalue=0${localtempvalue}
localtempvalue=${localtempvalue/\.*}
[ "$localtempvalue" -gt "327679999" ] && localtempvalue="327679999"
[ "$localtempvalue" -lt "-327679999" ] && localtempvalue="-327679999"
echo -n ${localtempvalue%????}.${localtempvalue: -4}
[ -z ${localtempvalue: -4} ] && echo -n "0000"
}
which libreoffice >/dev/null 2>&1 || usage "Error: libreoffice does not exist\n Install libreoffice-draw first"
which base64 >/dev/null 2>&1 || usage "Error: base64 does not exist\n Install coreutils first"
which bc >/dev/null 2>&1 || usage "Error: bc does not exist\n Install bc first"
which zenity >/dev/null 2>&1 || usage "Error: zenity does not exist\n Install zenity first"
which yad >/dev/null 2>&1 || usage "Error: yad does not exist\n Install yad first"
which awk >/dev/null 2>&1 || usage "Error: awk does not exist\n Install awk (gawk) first"
#for test
# A4 = 21cm x 29.7cm
#TEST="true"
BOOKBLOCK_THICKNESS="28"
BOOKBLOCK_HEIGHT="190"
BOOKBLOCK_WIDTH="125"
BOOKBLOCK_TITLE="Ein blödsinniger Titel"
BOOKBLOCK_FRONTPICTURE='~/Bilder/front.png'
BOOKBLOCK_BACKPICTURE='~/Bilder/back.png'
BOOKBLOCK_SPLINEPICTURE='~/Bilder/spline.png'
HINGE_WIDTH="8"
CARDBOARD_THICKNESS="1.5"
BOOKLET_OVERSIZE="5"
CUT_MARGIN="15"
TITLE_OFSET="10"
BONDLINE_THICKNESS="2"
MAIN_BACKGROUND_COLOR="#bbbbbb"
TITLE_BACKGROUND_COLOR="#000000"
OUTLINE_COLOR="#00000f"
HELPLINE_COLOR="#0f0000"
TEXT_COLOR="#ababab"
BONDLINE_COLOR="#999999"
A4_HEIGHT="297"
A4_WIDTH="210"
X_PRINTER_DOUBLESIDED_OFSET_BACK="0"
Y_PRINTER_DOUBLESIDED_OFSET_BACK="0"
X_PRINTER_DOUBLESIDED_OFSET_FRONT="0"
Y_PRINTER_DOUBLESIDED_OFSET_FRONT="0"
[ -z "$TEST" ] && {
# never mind checking values more. it will only generate opendokument to show it in libreoffice.
# process parameters if given
while [ -n "${1}" ]; do
case "${1^^}" in
-H|--HELP)
usage
;;
-D|--DEBUG)
set -x
;;
BOOKBLOCK_THICKNESS=*)
BOOKBLOCK_THICKNESS="${1/*=}"
;;
BOOKBLOCK_HEIGHT=*)
BOOKBLOCK_HEIGHT="${1/*=}"
;;
BOOKBLOCK_WIDTH=*)
BOOKBLOCK_WIDTH="${1/*=}"
;;
BOOKBLOCK_TITLE=*)
BOOKBLOCK_TITLE="${1/*=}"
;;
BOOKBLOCK_FRONTPICTURE=*)
BOOKBLOCK_FRONTPICTURE="${1/*=}"
;;
BOOKBLOCK_BACKPICTURE=*)
BOOKBLOCK_BACKPICTURE="${1/*=}"
;;
BOOKBLOCK_SPLINEPICTURE=*)
BOOKBLOCK_SPLINEPICTURE="${1/*=}"
;;
CARDBOARD_THICKNESS=*)
CARDBOARD_THICKNESS="${1/*=}"
;;
MAIN_BACKGROUND_COLOR=*)
MAIN_BACKGROUND_COLOR="${1/*=}"
;;
TITLE_BACKGROUND_COLOR=*)
TITLE_BACKGROUND_COLOR="${1/*=}"
;;
OUTLINE_COLOR=*)
OUTLINE_COLOR="${1/*=}"
;;
HELPLINE_COLOR=*)
HELPLINE_COLOR="${1/*=}"
;;
TEXT_COLOR=*)
TEXT_COLOR="${1/*=}"
;;
BONDLINE_COLOR=*)
BONDLINE_COLOR="${1/*=}"
;;
esac
shift
done
REQUESTER_TITLE="Bitte die Werte Eingeben"
REQUESTER_ICON="gtk-dialog-question"
while [ -z "$TEST" ] ; do
TEST="false"
export IFS="|"
read -r BOOKBLOCK_TITLE blup bla BOOKBLOCK_HEIGHT BOOKBLOCK_WIDTH BOOKBLOCK_THICKNESS CARDBOARD_THICKNESS bla BOOKBLOCK_FRONTPICTURE BOOKBLOCK_BACKPICTURE BOOKBLOCK_SPLINEPICTURE bla MAIN_BACKGROUND_COLOR TITLE_BACKGROUND_COLOR OUTLINE_COLOR HELPLINE_COLOR TEXT_COLOR BONDLINE_COLOR <<<"$(
yad --mouse --borders=10 --window-icon="gtk-dialog-question" --image=gtk-dialog-question --title="$REQUESTER_TITLE" --add-preview --form \
--field="Titel des Buches":TXT \
--field=:LBL \
--field="Alle Angaben in mm":LBL \
--field="Hoehe des Buchblocks:":- \
--field="Breite des Buchblocks:":- \
--field="Dicke des Buchblocks:":- \
--field="Kartonstaerke:":- \
--field=:LBL \
--field="Bild fuer die Vorderseite:":SFL \
--field="Bild fuer die Rueckseite:":SFL \
--field="Bild fuer den Buchruecken:":SFL \
--field=:LBL \
--field="Hintergrundfarbe Flaeche:":CLR \
--field="Hintergrundfarbe Titel:":CLR \
--field="Randfarbe:":CLR \
--field="Hilfslinienfarbe:":CLR \
--field="Textfarbe:":CLR \
--field="Farbe der Verzierung":CLR \
"${BOOKBLOCK_TITLE}" \
"" \
"" \
"$BOOKBLOCK_HEIGHT" \
"$BOOKBLOCK_WIDTH" \
"$BOOKBLOCK_THICKNESS" \
"$CARDBOARD_THICKNESS" \
"" \
"${BOOKBLOCK_FRONTPICTURE}" \
"${BOOKBLOCK_BACKPICTURE}" \
"${BOOKBLOCK_SPLINEPICTURE}" \
"" \
"${MAIN_BACKGROUND_COLOR}" \
"${TITLE_BACKGROUND_COLOR}" \
"${OUTLINE_COLOR}" \
"${HELPLINE_COLOR}" \
"${TEXT_COLOR}" \
"${BONDLINE_COLOR}" \
2>/dev/null|| echo "Abbruch|Abbruch"
)"
[ "$BOOKBLOCK_TITLE" = "Abbruch" ] && [ "$blup" = "Abbruch" ] && break
unset IFS
[ -z "${BOOKBLOCK_THICKNESS//[^0-9.,]}" ] && BOOKBLOCK_THICKNESS="${BOOKBLOCK_THICKNESS//[^0-9.,]}" && REQUESTER_TITLE="Werte pruefen!" && unset TEST
[ -z "${BOOKBLOCK_HEIGHT//[^0-9.,]}" ] && BOOKBLOCK_HEIGHT="${BOOKBLOCK_HEIGHT//[^0-9.,]}" && REQUESTER_TITLE="Werte pruefen!" && unset TEST
[ -z "${BOOKBLOCK_WIDTH//[^0-9.,]}" ] && BOOKBLOCK_WIDTH="${BOOKBLOCK_WIDTH//[^0-9.,]}" && REQUESTER_TITLE="Werte pruefen!" && unset TEST
[ -z "${BOOKBLOCK_TITLE// /_}" ] && REQUESTER_TITLE="Werte pruefen!" && unset TEST
[ $((${BOOKBLOCK_HEIGHT//\.*}+(${CARDBOARD_THICKNESS//\.*}*2)+(${CUT_MARGIN//\.*}*2))) -gt $A4_HEIGHT ] && BOOKBLOCK_HEIGHT="$A4_HEIGHT" && REQUESTER_TITLE="Werte pruefen!" && unset TEST
[ $((${BOOKBLOCK_WIDTH//\.*}+(${CARDBOARD_THICKNESS//\.*}*2)+(${CUT_MARGIN//\.*}*2))) -gt $A4_WIDTH ] && BOOKBLOCK_WIDTH="$A4_WIDTH" && REQUESTER_TITLE="Werte pruefen!" && unset TEST
done
[ "$BOOKBLOCK_TITLE" = "Abbruch" ] && [ "$blup" = "Abbruch" ] && usage "Abbruch durch den Benutzer"
}
# change colorvalues to match opendocument needs
[ "${#MAIN_BACKGROUND_COLOR}" -gt 9 ] && MAIN_BACKGROUND_COLOR=${MAIN_BACKGROUND_COLOR:0:3}${MAIN_BACKGROUND_COLOR:5:2}${MAIN_BACKGROUND_COLOR:9:2}${MAIN_BACKGROUND_COLOR:13:2}
[ "${#TITLE_BACKGROUND_COLOR}" -gt 9 ] && TITLE_BACKGROUND_COLOR=${TITLE_BACKGROUND_COLOR:0:3}${TITLE_BACKGROUND_COLOR:5:2}${TITLE_BACKGROUND_COLOR:9:2}${TITLE_BACKGROUND_COLOR:13:2}
[ "${#OUTLINE_COLOR}" -gt 9 ] && OUTLINE_COLOR=${OUTLINE_COLOR:0:3}${OUTLINE_COLOR:5:2}${OUTLINE_COLOR:9:2}${OUTLINE_COLOR:13:2}
[ "${#HELPLINE_COLOR}" -gt 9 ] && HELPLINE_COLOR=${HELPLINE_COLOR:0:3}${HELPLINE_COLOR:5:2}${HELPLINE_COLOR:9:2}${HELPLINE_COLOR:13:2}
[ "${#TEXT_COLOR}" -gt 9 ] && TEXT_COLOR=${TEXT_COLOR:0:3}${TEXT_COLOR:5:2}${TEXT_COLOR:9:2}${TEXT_COLOR:13:2}
[ "${#BONDLINE_COLOR}" -gt 9 ] && BONDLINE_COLOR=${BONDLINE_COLOR:0:3}${BONDLINE_COLOR:5:2}${BONDLINE_COLOR:9:2}${BONDLINE_COLOR:13:2}
DOCUMENT_TITLE="${BOOKBLOCK_TITLE//\\n/-}"
DOCUMENT_TITLE="${DOCUMENT_TITLE// /_}"
BOOKBLOCK_TITLE_ODG="$(echo -e ${BOOKBLOCK_TITLE} | awk '{gsub(/^/,"\t\t\t\t\t\t"); gsub(/$/,""); print }')"
# all values given, now start calculating the opendocument
# change Bookblock messurement to match messures of cardboard to cut out
#
CARDBOARD_WIDTH="$(calc "${BOOKBLOCK_WIDTH}+${BOOKLET_OVERSIZE}-(${HINGE_WIDTH}/2)")"
CARDBOARD_HEIGHT="$(calc "${BOOKBLOCK_HEIGHT}+(${BOOKLET_OVERSIZE}*2)")"
PICTURE_WIDTH="$(calc "${BOOKBLOCK_WIDTH}+${BOOKLET_OVERSIZE}-(${TITLE_OFSET}*2)-${HINGE_WIDTH}")" # BOOKBLOCK_WIDTH includes hinge, but not oversize on one side
PICTURE_HEIGHT="$(calc "${BOOKBLOCK_HEIGHT}+(${BOOKLET_OVERSIZE}*2)-(${TITLE_OFSET}*2)")"
# calc various coordinates
#first calc width of all three prints to get them centered (to maximize usable size)
CUT_SPLINE_WIDTH="$(calc "${BOOKBLOCK_THICKNESS}+(${CARDBOARD_THICKNESS}*2)+(${HINGE_WIDTH}*2)+(${CUT_MARGIN}*2)")"
CUT_FRONT_BACK_WIDTH="$(calc "${CARDBOARD_WIDTH}-(${CUT_MARGIN}/2)+${CUT_MARGIN}+${CARDBOARD_THICKNESS}")"
CUT_FRONT_BACK_SPLINE_HEIGHT="$(calc "${CARDBOARD_HEIGHT}+(${CARDBOARD_THICKNESS}*2)+(${CUT_MARGIN}*2)")"
# now calc each X1/Y1 coordinates to center the prints
X1_FRONT_BACK="$(calc "(${A4_WIDTH}-${CUT_FRONT_BACK_WIDTH})/2")"
Y1_FRONT_BACK="$(calc "(${A4_HEIGHT}-${CUT_FRONT_BACK_SPLINE_HEIGHT})/2")"
X1_CUT_SPLINE="$(calc "(${A4_WIDTH}-${CUT_SPLINE_WIDTH})/2")"
Y1_CUT_SPLINE=$Y1_FRONT_BACK
# coordinates for helplines on the back of each page ( OUTER = including cardboard thickness, CUT = including gluemargin )
# WARNING: This is for "doublesided print short-edge-binding"
# front page
X1_CUT_FRONT="${X1_FRONT_BACK}"
Y1_CUT_FRONT="${Y1_FRONT_BACK}"
CUT_FRONT_WIDTH="${CUT_FRONT_BACK_WIDTH}"
CUT_FRONT_HEIGHT="${CUT_FRONT_BACK_SPLINE_HEIGHT}"
X2_CUT_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_FRONT_WIDTH}")"
Y2_CUT_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_FRONT_HEIGHT}")"
X1_OUTER_FRONT="$(calc "${X1_CUT_FRONT}-(${CUT_MARGIN}/2)-${CARDBOARD_THICKNESS}")"
Y1_OUTER_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_MARGIN}")"
X2_OUTER_FRONT="$(calc "${X1_CUT_FRONT}-(${CUT_MARGIN}/2)+${CARDBOARD_WIDTH}+${CARDBOARD_THICKNESS}")"
Y2_OUTER_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_HEIGHT}+${CARDBOARD_THICKNESS}")"
X_GLUESPLINE_FRONT="$(calc "${X1_CUT_FRONT}+(${CUT_MARGIN}/2)")"
X1_FRONT="$(calc "${X1_CUT_FRONT}-(${CUT_MARGIN}/2)")" # left side of frontpage will overlap Splinepage
Y1_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}")"
X2_FRONT="$(calc "${X1_CUT_FRONT}-(${CUT_MARGIN}/2)+${CARDBOARD_WIDTH}")"
Y2_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_HEIGHT}")"
X1_BOOKBLOCKHELP_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_MARGIN}-${BOOKLET_OVERSIZE}")"
Y1_BOOKBLOCKHELP_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_MARGIN}-${BOOKLET_OVERSIZE}")"
X2_BOOKBLOCKHELP_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_FRONT_WIDTH}-${CUT_MARGIN}+${BOOKLET_OVERSIZE}")"
Y2_BOOKBLOCKHELP_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_FRONT_HEIGHT}-${CUT_MARGIN}+${BOOKLET_OVERSIZE}")"
X1_CUTUPPEREDGEHELP_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_FRONT_WIDTH}-(${CUT_MARGIN}*2)")"
Y1_CUTUPPEREDGEHELP_FRONT="${Y1_CUT_FRONT}"
X2_CUTUPPEREDGEHELP_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_FRONT_WIDTH}")"
Y2_CUTUPPEREDGEHELP_FRONT="$(calc "${Y1_CUT_FRONT}+(${CUT_MARGIN}*2)")"
X1_CUTLOWEREDGEHELP_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_FRONT_WIDTH}-(${CUT_MARGIN}*2)")"
Y1_CUTLOWEREDGEHELP_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_FRONT_HEIGHT}")"
X2_CUTLOWEREDGEHELP_FRONT="$(calc "${X1_CUT_FRONT}+${CUT_FRONT_WIDTH}")"
Y2_CUTLOWEREDGEHELP_FRONT="$(calc "${Y1_CUT_FRONT}+${CUT_FRONT_HEIGHT}-(${CUT_MARGIN}*2)")"
#
# back page (y-mesurements are the same as of frontpage)
X1_CUT_BACK="${X1_FRONT_BACK}"
Y1_CUT_BACK="${Y1_FRONT_BACK}"
CUT_BACK_WIDTH="${CUT_FRONT_BACK_WIDTH}"
CUT_BACK_HEIGHT="${CUT_FRONT_BACK_SPLINE_HEIGHT}"
X2_CUT_BACK="$(calc "${X1_CUT_BACK}+${CUT_BACK_WIDTH}")"
Y2_CUT_BACK="$(calc "${Y1_CUT_BACK}+${CUT_BACK_HEIGHT}")"
X1_OUTER_BACK="$(calc "${X1_CUT_BACK}+${CUT_MARGIN}")"
Y1_OUTER_BACK="$(calc "${Y1_CUT_BACK}+${CUT_MARGIN}")"
X2_OUTER_BACK="$(calc "${X1_CUT_BACK}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_WIDTH}+${CARDBOARD_THICKNESS}")"
Y2_OUTER_BACK="$(calc "${Y1_CUT_BACK}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_HEIGHT}+${CARDBOARD_THICKNESS}")"
X_GLUESPLINE_BACK="$(calc "${X1_CUT_BACK}+${CUT_BACK_WIDTH}-(${CUT_MARGIN}/2)")"
X1_BACK="$(calc "${X1_CUT_BACK}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}")"
Y1_BACK="$(calc "${Y1_CUT_BACK}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}")"
X2_BACK="$(calc "${X1_CUT_BACK}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_WIDTH}")" # right side of backpage will overlap Splinepage
Y2_BACK="$(calc "${Y1_CUT_BACK}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_HEIGHT}")"
X1_BOOKBLOCKHELP_BACK="$(calc "${X1_CUT_BACK}+${CUT_MARGIN}-${BOOKLET_OVERSIZE}")"
Y1_BOOKBLOCKHELP_BACK="$(calc "${Y1_CUT_BACK}+${CUT_MARGIN}-${BOOKLET_OVERSIZE}")"
X2_BOOKBLOCKHELP_BACK="$(calc "${X1_CUT_BACK}+${CUT_BACK_WIDTH}-${CUT_MARGIN}+${BOOKLET_OVERSIZE}")"
Y2_BOOKBLOCKHELP_BACK="$(calc "${Y1_CUT_BACK}+${CUT_BACK_HEIGHT}-${CUT_MARGIN}+${BOOKLET_OVERSIZE}")"
X1_CUTUPPEREDGEHELP_BACK="${X1_CUT_BACK}"
Y1_CUTUPPEREDGEHELP_BACK="$(calc "${Y1_CUT_BACK}+(${CUT_MARGIN}*2)")"
X2_CUTUPPEREDGEHELP_BACK="$(calc "${X1_CUT_BACK}+(${CUT_MARGIN}*2)")"
Y2_CUTUPPEREDGEHELP_BACK="${Y1_CUT_BACK}"
X1_CUTLOWEREDGEHELP_BACK="${X1_CUT_BACK}"
Y1_CUTLOWEREDGEHELP_BACK="$(calc "${Y1_CUT_BACK}+${CUT_BACK_HEIGHT}-(${CUT_MARGIN}*2)")"
X2_CUTLOWEREDGEHELP_BACK="$(calc "${X1_CUT_BACK}+(${CUT_MARGIN}*2)")"
Y2_CUTLOWEREDGEHELP_BACK="$(calc "${Y1_CUT_BACK}+${CUT_BACK_HEIGHT}")"
#
# spline page (y-mesurements are the same as of frontpage)
X1_CUT_SPLINE="${X1_CUT_SPLINE}"
Y1_CUT_SPLINE="${Y1_CUT_FRONT}"
CUT_SPLINE_WIDTH="${CUT_SPLINE_WIDTH}"
CUT_SPLINE_HEIGHT="${CUT_FRONT_BACK_SPLINE_HEIGHT}"
X2_CUT_SPLINE="$(calc "${X1_CUT_SPLINE}+${CUT_SPLINE_WIDTH}")"
Y2_CUT_SPLINE="$(calc "${Y1_CUT_SPLINE}+${CUT_SPLINE_HEIGHT}")"
X1_OUTER_SPLINE="$(calc "${X1_CUT_SPLINE}+${CUT_MARGIN}")" # on spline "outer" = outside hinges
Y1_OUTER_SPLINE="$(calc "${Y1_CUT_SPLINE}+${CUT_MARGIN}")"
X2_OUTER_SPLINE="$(calc "${X1_CUT_SPLINE}+${CUT_MARGIN}+${HINGE_WIDTH}+${CARDBOARD_THICKNESS}+${BOOKBLOCK_THICKNESS}+${CARDBOARD_THICKNESS}+${HINGE_WIDTH}")"
Y2_OUTER_SPLINE="$(calc "${Y1_CUT_SPLINE}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_HEIGHT}+${CARDBOARD_THICKNESS}")"
X1_SPLINE="$(calc "${X1_CUT_SPLINE}+${CUT_MARGIN}+${HINGE_WIDTH}+${CARDBOARD_THICKNESS}")"
Y1_SPLINE="$(calc "${Y1_CUT_SPLINE}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}")"
X2_SPLINE="$(calc "${X1_CUT_SPLINE}+${CUT_MARGIN}+${HINGE_WIDTH}+${CARDBOARD_THICKNESS}+${BOOKBLOCK_THICKNESS}")"
Y2_SPLINE="$(calc "${Y1_CUT_SPLINE}+${CUT_MARGIN}+${CARDBOARD_THICKNESS}+${CARDBOARD_HEIGHT}")"
# Spline picture and title
SPLINE_PICTURE_WIDTH="$(calc "${BOOKBLOCK_THICKNESS}/6*4")"
SPLINE_PICTURE_HEIGHT="$(calc "(${BOOKBLOCK_HEIGHT}-(${TITLE_OFSET}*2))/1.7")"
SPLINE_TITLE_WIDTH="$(calc "${BOOKBLOCK_THICKNESS}/8*6")"
SPLINE_TITLE_HEIGHT="$(calc "(${CARDBOARD_HEIGHT}-${TITLE_OFSET}*2)/3")"
X1_SPLINE_TITLE="$(calc "(${BOOKBLOCK_THICKNESS}/8)+${X1_SPLINE}")"
Y1_SPLINE_TITLE="$(calc "${Y1_SPLINE}+${TITLE_OFSET}")"
X1_FRONT_PICTURE="$(calc "${X1_FRONT}+${CARDBOARD_WIDTH}-${PICTURE_WIDTH}-${TITLE_OFSET}")"
Y1_FRONT_PICTURE="$(calc "${Y1_FRONT}+${TITLE_OFSET}")"
X1_BACK_PICTURE="$(calc "${X1_BACK}+${TITLE_OFSET}")"
Y1_BACK_PICTURE="$(calc "${Y1_BACK}+${TITLE_OFSET}")"
X1_SPLINE_PICTURE="$(calc "${X1_SPLINE}+((${BOOKBLOCK_THICKNESS}-${SPLINE_PICTURE_WIDTH})/2)")"
Y1_SPLINE_PICTURE="$(calc "${Y2_SPLINE}-${SPLINE_PICTURE_HEIGHT}-${TITLE_OFSET}")"
Y_BONDLINE_1="$(calc "${Y1_SPLINE}+(${TITLE_OFSET}/3)")"
Y_BONDLINE_2="$(calc "${Y2_SPLINE}-(${TITLE_OFSET}/3)-${BONDLINE_THICKNESS}")"
#exit 0
echo "generating libreoffice draw document ..."
cat <./${DOCUMENT_TITLE}.odg
Bash Scrip created by GA
BookCover_${DOCUMENT_TITLE}
Guido Ackermann
$(date --universal "+%FT%T")
$(date --universal "+%FT%T")
false
false
false
true
false
false
false
false
3
4
false
0
low-resolution
false
$([ -f "${BOOKBLOCK_FRONTPICTURE}" ] && base64 -w0 "${BOOKBLOCK_FRONTPICTURE}")
$(calc "${X2_FRONT}-${X1_FRONT}") x $(calc "${Y2_FRONT}-${Y1_FRONT}") mm
$([ -f "${BOOKBLOCK_BACKPICTURE}" ] && base64 -w0 "${BOOKBLOCK_BACKPICTURE}")
$(calc "${X2_BACK}-${X1_BACK}") x $(calc "${Y2_BACK}-${Y1_BACK}") mm
${BOOKBLOCK_TITLE_ODG}
$([ -f "${BOOKBLOCK_SPLINEPICTURE}" ] && base64 -w0 "${BOOKBLOCK_SPLINEPICTURE}")
$(calc "${X2_SPLINE}-${X1_SPLINE}") x $(calc "${Y2_SPLINE}-${Y1_SPLINE}") mm
EOTEOT
echo "starting libre office draw with document ./${DOCUMENT_TITLE}.odg"
libreoffice ./${DOCUMENT_TITLE}.odg