#!/bin/sh

PCACHE="$HOME/.cache/vifm/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$PWD/$6")" | sha256sum)"
export PCACHE="${PCACHE%% *}"

pclear() {
    printf '{"action": "remove", "identifier": "vifm-preview"}\n' >"$FIFO_UEBERZUG"
}

image() {
    printf '{"action": "add", "identifier": "vifm-preview", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$2" "$3" "$4" "$5" "$6" >"$FIFO_UEBERZUG"
}

main() {
    case "$1" in
    "clear")
        pclear "$@"
        ;;
    "draw")
        FILE="$PWD/$6"
        TMP="${PCACHE}.jpg"
        convert "$FILE" -background white -alpha remove -alpha off "$TMP" 2>/dev/null || cp "$FILE" "$TMP"
        image "$1" "$2" "$3" "$4" "$5" "$TMP"
        ;;
    "video")
        [ ! -f "$PCACHE" ] &&
            ffmpegthumbnailer -i "$6" -o "${PCACHE}.jpg" -s 0 -q 5
        image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
        ;;
    "epub")
        [ ! -f "$PCACHE" ] &&
            epub-thumbnailer "$6" "$PCACHE" 1024
        image "$1" "$2" "$3" "$4" "$5" "$PCACHE"
        ;;
    "pdf")
        [ ! -f "${PCACHE}.jpg" ] &&
            pdftoppm -jpeg -f 1 -singlefile "$6" "$PCACHE"
        image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
        ;;
    "djvu")
        [ ! -f "${PCACHE}.jpg" ] &&
            ddjvu -format=tiff -quality=90 -page=1 "$6" "$PCACHE.jpg"
        image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
        ;;
    "audio")
        [ ! -f "${PCACHE}.jpg" ] &&
            ffmpeg -hide_banner -i "$6" "${PCACHE}.jpg" -y >/dev/null
        image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
        ;;
    "font")
        [ ! -f "${PCACHE}.jpg" ] &&
            fontpreview -i "$6" -o "${PCACHE}.jpg"
        image "$1" "$2" "$3" "$4" "$5" "${PCACHE}.jpg"
        ;;
    *) ;;
    esac
}
main "$@"
