Skip to content

Commit

Permalink
apply brush size limit early
Browse files Browse the repository at this point in the history
  • Loading branch information
w-e-w committed Nov 22, 2024
1 parent 7cf80a7 commit 1b9dea7
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions extensions-builtin/canvas-zoom-and-pan/javascript/zoom.js
Original file line number Diff line number Diff line change
Expand Up @@ -470,11 +470,18 @@ onUiLoaded(async() => {
gradioApp().querySelector(
`${elemId} button[aria-label="Use brush"]`
);

if (input) {
input.click();
if (!withoutValue) {
const maxValue = parseFloat(input.getAttribute("max")) || 100;
// allow brush size up to 1/2 diagonal of the image, beyond gradio's arbitrary limit
const canvasImg = gradioApp().querySelector(`${elemId} img`);
if (canvasImg) {
const maxDiameter = Math.sqrt(canvasImg.naturalWidth ** 2 + canvasImg.naturalHeight ** 2) / 2;
if (maxDiameter > maxValue) {
input.setAttribute("max", maxDiameter);
}
}
const brush_factor = deltaY > 0 ? 1 - opts.canvas_hotkey_brush_factor : 1 + opts.canvas_hotkey_brush_factor;
const currentRadius = parseFloat(input.value);
let delta = Math.sqrt(currentRadius ** 2 * brush_factor) - currentRadius;
Expand All @@ -483,16 +490,6 @@ onUiLoaded(async() => {
delta = deltaY > 0 ? -1 : 1;
}
const newValue = currentRadius + delta;
// allow increasing the brush size beyond what's limited by gradio up to 1/2 diagonal of the image
if (newValue > maxValue) {
const canvasImg = gradioApp().querySelector(`${elemId} img`);
if (canvasImg) {
const maxDiameter = Math.sqrt(canvasImg.naturalWidth ** 2 + canvasImg.naturalHeight ** 2) / 2;
if (newValue < maxDiameter) {
input.setAttribute("max", newValue);
}
}
}
input.value = Math.max(newValue, 1);
input.dispatchEvent(new Event("change"));
}
Expand Down

0 comments on commit 1b9dea7

Please sign in to comment.