aboutsummaryrefslogtreecommitdiff
path: root/extensions-builtin/canvas-zoom-and-pan
diff options
context:
space:
mode:
authorDanil Boldyrev <daswerq123@gmail.com>2023-08-08 21:28:16 +0300
committerDanil Boldyrev <daswerq123@gmail.com>2023-08-08 21:28:16 +0300
commitbc7906e6d62bb3ed158304c581e941862355f6de (patch)
tree0915f56cc80c70d6714854ce38c4f188d93ec55e /extensions-builtin/canvas-zoom-and-pan
parent902f8cf292582301856ff018a3af34ea546a5393 (diff)
Ability to automatically expand a picture that does not fit in the screen
Diffstat (limited to 'extensions-builtin/canvas-zoom-and-pan')
-rw-r--r--extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js29
-rw-r--r--extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py1
2 files changed, 29 insertions, 1 deletions
diff --git a/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js b/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js
index 30199dcd..7369e897 100644
--- a/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js
+++ b/extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js
@@ -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;
diff --git a/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py b/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py
index 380176ce..9a51ff2a 100644
--- a/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py
+++ b/extensions-builtin/canvas-zoom-and-pan/scripts/hotkey_config.py
@@ -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"]}),
}))