outputdir="${1:-png_modern}"
elementdir="$sourcedir/elements"
pngcrushlog=pngcrush.log.txt
pngcrushoutput=pngcrushoutput.txt
inkscapelog=inkscape.log.txt
$pngcrushbin -brute -reduce -e .2.png "$1" >> "$pngcrushoutput" || exit 1
echo "$1 : $(echo "$(stat -c %s "${1%png}2.png")/$(stat -c %s "${1}")*100" | bc -l)" >> "$pngcrushlog"
pngoutfile="$outputdir/$(basename ${1%.svg})_(${3:-$2}).png"
[[ "$(stat -c "%Y" "$pngoutfile" 2>/dev/null)" -lt "$svgfilemod" ]] && {
[[ "$(inkscape --without-gui --query-width $1 | cut -d. -f1)" -gt "$(inkscape --without-gui --query-height $1 | cut -d. -f1)" ]] && {
inkscape --without-gui --export-$dimension=$2 $1 --export-png="$pngoutfile" >> "$inkscapelog" || exit 1
svgelementcount=$(ls $elementdir | wc -l)
for svgfile in $elementdir/*.svg; do
echo -n "Converting $svgfile"
svgfilemod=$(stat -c "%Y" "$svgfile")
for size in 24 48 64 96 128; do
[[ "$svgfile" =~ Rackmountable_.* || "$svgfile" =~ Zabbix_server_.* || "$svgfile" =~ UPS_rackmountable.* ]] && [ "$size" -lt "64" ] && continue
svgtopng "$svgfile" "$size"
echo "[$[$elementfilesdone*100/$svgelementcount]%]"
rackimages=([64]=68 [96]=101 [128]=134)
echo -n "Converting Rack_42.svg"
for rackimagesize in "${!rackimages[@]}"; do
svgtopng "$sourcedir/equipment_rack/Rack_42.svg" "${rackimages[$rackimagesize]}" "$rackimagesize" "width"
rackwithdoorimages=([64]=100 [96]=149 [128]=199)
echo -n "Converting Rack_42_with_door.svg"
for rackwithdoorimagesize in "${!rackwithdoorimages[@]}"; do
svgtopng "$sourcedir/equipment_rack/Rack_42_with_door.svg" "${rackwithdoorimages[$rackwithdoorimagesize]}" "$rackwithdoorimagesize" "width"