#!/bin/sh
set -e
read -r filename

ICON_MAXSIZE=512

if [ "${filename%%:*}" = xdgicon ]; then
    filename="$(/usr/lib/qubes/xdg-icon "${filename#*:}" "$ICON_MAXSIZE")"
    forcemaxsize="$ICON_MAXSIZE"

    [ -n "${filename}" ]
elif [ "${filename}" = "-" ] || [ "${filename##*:}" = "-" ]; then
    tmpfile="$(mktemp /tmp/qimg-XXXXXXXX)"
    cat > "${tmpfile}"
    if [ "${filename%:*}" != "-" ]; then
        filename="${filename%:*}:${tmpfile}"
    else
        filename="${tmpfile}"
    fi
elif ! [ -r "${filename}" ]; then
    exit 1
fi

s="$(identify -format '%w %h %m' "$filename")"
w="$(echo "$s"|cut -d " " -f 1)"
h="$(echo "$s"|cut -d " " -f 2)"
m="$(echo "$s"|cut -d " " -f 3)"
if [ "$m" = SVG ]; then
    tmpfile2="$(mktemp /tmp/qimg-XXXXXXXX.png)"
    rsvg-convert -o "$tmpfile2" "$filename"
    # downscale the image if necessary
    if [ -n "$forcemaxsize" ] && \
            { [ "$w" -gt "$forcemaxsize" ] || [ "$h" -gt "$forcemaxsize" ]; }; then
        convert "$tmpfile2" -scale "${forcemaxsize}x${forcemaxsize}" "$tmpfile2"
        # read the size again, because icon may not be a square
        s="$(identify -format '%w %h' "$tmpfile2")"
        w="$(echo "$s"|cut -d " " -f 1)"
        h="$(echo "$s"|cut -d " " -f 2)"
    fi
    filename="$tmpfile2"
fi
echo "$w $h"
convert -depth 8 -size "${w}x${h}" "$filename" rgba:-

if [ -n "${tmpfile}" ]; then
    rm -f "${tmpfile}"
fi
if [ -n "${tmpfile2}" ]; then
    rm -f "${tmpfile2}"
fi

# vim: ft=sh ts=4 sw=4 et