window.DefinePanel("LoadImageAsyncV2", { author: "TheQwertiest" });

// Get a list of jpg files from a folder
const g_image_list = utils.Glob('c:\\wallpaper\\*.jpg');
let ww = 0, wh = 0;
let g_img = null;

// Trigger every 5 seconds.
let g_timer = window.SetInterval(function () {
    load_random_image_async();
}, 5000);

const load_random_image_async = async (metadb, art_id) =>
{
    // Load a random image from the list
    let path = g_image_list[Math.floor(Math.random() * g_image_list.length)];
    g_img = await gdi.LoadImageAsyncV2(window.ID, path);
    window.Repaint();
};

load_random_image_async();

function on_size() {
    ww = window.Width;
    wh = window.Height;
}

function on_paint(gr) {
    if (!g_img) {
        return;
    }

    let scale_w = ww / g_img.Width;
    let scale_h = wh / g_img.Height;
    let scale = Math.min(scale_w, scale_h);
    let pos_x = 0, pos_y = 0;
    if (scale_w < scale_h) {
        pos_y = (wh - g_img.Height * scale) / 2;
    }
    else if (scale_w > scale_h) {
        pos_x = (ww - g_img.Width * scale) / 2;
    }
    gr.DrawImage(g_img, pos_x, pos_y, g_img.Width * scale, g_img.Height * scale, 0, 0, g_img.Width, g_img.Height);
}
