#!/bin/bash
# jpg2all
# last edited Sunday, 07/24/2022
# script by Paul Sherman <psherman2001@gmail.com>
# c2018-2022, GPL3

if [[ "$DISPLAY" && "$(which Xdialog 2>&1 | grep -v "which: no")" ]]; then
	dialog="Xdialog"
else
	dialog="dialog"
fi
if [ ! -e "$1" ]; then
	$dialog --title "No File Specified" --msgbox "\nMust be passed a JPG file\n" 10 36
	exit
fi

pth=`dirname "$1"`
cd $pth

echo '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
uf3PHv8DFMHdkAeXazMAAAAASUVORK5CYII=
' | base64 -d > /tmp/icon.png

function CLOSE_EXIT() 
{ 
    echo "Close and exit..." 
	# stop any of the conversions...
	killall -9 avifenc 2>/dev/null
	killall -9 gm 2>/dev/null
	killall -9 cjxl 2>/dev/null
	# dump the dialog
    kill $(ps aux | grep 'yad' | awk '{print $2}') 2>/dev/null 
	pkill -f $0
} ; export -f CLOSE_EXIT 


start_process () {
	wname=`echo "$1" | sed 's/\.jpg/\.webp/'`
	aname=`echo "$1" | sed 's/\.jpg/\.avif/'`
	jname=`echo "$1" | sed 's/\.jpg/\.jxl/'`
	
	gm convert -quality 90 "$1" "$wname"
	cjxl "$1" "$jname" -q 90
	avifenc --min 30 --max 30 "$1" "$aname"
	echo "Done."
}

# swing yad dialog to top-right of screen
XX=`xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1}'`
XXX=$(( ${XX}-412 ))
# Show the conversion dialog
yad --info --posx=$XXX --width=400 --title="Converting" --on-top --window-icon="/tmp/icon.png" --text-align center --button="EXIT:bash -c CLOSE_EXIT"  --text="\n<b>\nNow converting to<big><big>\n\nwebp, \navif and jxl \n\n</big></big>This dialog will close when complete...\n(clicking EXIT will stop conversions)</b>" &
# Do the conversions
start_process "$1"
sleep 2
kill $(ps aux | grep 'yad' | awk '{print $2}') 2>/dev/null
