Commit bc7906e6 authored by Danil Boldyrev's avatar Danil Boldyrev
Browse files

Ability to automatically expand a picture that does not fit in the screen

parent 902f8cf2
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -201,7 +201,8 @@ onUiLoaded(async() => {
        canvas_hotkey_overlap: "KeyO",
        canvas_disabled_functions: [],
        canvas_show_tooltip: true,
        canvas_blur_prompt: false
        canvas_blur_prompt: false,
        canvas_auto_expand: false
    };

    const functionMap = {
@@ -648,8 +649,34 @@ onUiLoaded(async() => {
            mouseY = e.offsetY;
        }

        // Simulation of the function to put a long image into the screen.
        // We define the size of the canvas, make a fullscreen to reveal the image, then reduce it to fit into the element.
        // We hide the image and show it to the user when it is ready.
        function autoExpand(e) {
            const canvas = document.querySelector(`${elemId} canvas[key="interface"]`);
            const isMainTab = activeElement === elementIDs.inpaint || activeElement === elementIDs.inpaintSketch || activeElement === elementIDs.sketch;
            if (canvas && isMainTab) {
                if (canvas && parseInt(targetElement.style.width) > 862 || parseInt(canvas.width) < 862) {
                    return;
                }
                if (canvas) {
                    targetElement.style.visibility = "hidden";
                    setTimeout(() => {
                        fitToScreen();
                        resetZoom();
                        targetElement.style.visibility = "visible";
                    }, 10);
                }
            }
        }

        targetElement.addEventListener("mousemove", getMousePosition);

        // Apply auto expand if enabled
        if (hotkeysConfig.canvas_auto_expand) {
            targetElement.addEventListener("mousemove", autoExpand);
        }

        // Handle events only inside the targetElement
        let isKeyDownHandlerAttached = false;

+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ shared.options_templates.update(shared.options_section(('canvas_hotkey', "Canvas
    "canvas_hotkey_reset": shared.OptionInfo("R", "Reset zoom and canvas positon"),
    "canvas_hotkey_overlap": shared.OptionInfo("O", "Toggle overlap").info("Technical button, neededs for testing"),
    "canvas_show_tooltip": shared.OptionInfo(True, "Enable tooltip on the canvas"),
    "canvas_auto_expand": shared.OptionInfo(False, "Automatically expands an image that does not fit completely in the canvas area, similar to manually pressing the S and R buttons"),
    "canvas_blur_prompt": shared.OptionInfo(False, "Take the focus off the prompt when working with a canvas"),
    "canvas_disabled_functions": shared.OptionInfo(["Overlap"], "Disable function that you don't use", gr.CheckboxGroup, {"choices": ["Zoom","Adjust brush size", "Moving canvas","Fullscreen","Reset Zoom","Overlap"]}),
}))