From 87e2cf797653f33149ae0f410061b1af20f560c0 Mon Sep 17 00:00:00 2001
From: Mani <12841290+krmanik@users.noreply.github.com>
Date: Wed, 16 Aug 2023 05:47:46 +0800
Subject: [PATCH] fix: reset image button in io note editor (#2602)
---
ts/editor/NoteEditor.svelte | 6 ++++++
ts/image-occlusion/MaskEditor.svelte | 20 ++++++++++++++++++--
ts/image-occlusion/Toolbar.svelte | 6 ------
ts/image-occlusion/mask-editor.ts | 21 ++++++++++++++++++++-
4 files changed, 44 insertions(+), 9 deletions(-)
diff --git a/ts/editor/NoteEditor.svelte b/ts/editor/NoteEditor.svelte
index 04a14171c..fe3bf28e0 100644
--- a/ts/editor/NoteEditor.svelte
+++ b/ts/editor/NoteEditor.svelte
@@ -42,6 +42,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
diff --git a/ts/image-occlusion/Toolbar.svelte b/ts/image-occlusion/Toolbar.svelte
index f347b8af9..511e22a28 100644
--- a/ts/image-occlusion/Toolbar.svelte
+++ b/ts/image-occlusion/Toolbar.svelte
@@ -18,7 +18,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
mdiSquare,
mdiViewDashboard,
} from "./icons";
- import { setupMaskEditor } from "./mask-editor";
import { hideAllGuessOne } from "./store";
import { drawEllipse, drawPolygon, drawRectangle } from "./tools/index";
import { makeMaskTransparent } from "./tools/lib";
@@ -78,11 +77,6 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
canvas.selectionColor = "rgba(100, 100, 255, 0.3)";
};
- const resetIOImage = (path) => {
- setupMaskEditor(path, instance);
- };
- globalThis.resetIOImage = resetIOImage;
-
const setOcclusionFieldForDesktop = () => {
const clist = document.body.classList;
if (
diff --git a/ts/image-occlusion/mask-editor.ts b/ts/image-occlusion/mask-editor.ts
index 4e54265fd..438eafd3b 100644
--- a/ts/image-occlusion/mask-editor.ts
+++ b/ts/image-occlusion/mask-editor.ts
@@ -102,7 +102,7 @@ const getImageData = (imageData): string => {
return "data:image/png;base64," + b64encoded;
};
-const setCanvasZoomRatio = (
+export const setCanvasZoomRatio = (
canvas: fabric.Canvas,
instance: PanZoom,
): void => {
@@ -140,3 +140,22 @@ function containerSize(): Size {
height: container.clientHeight,
};
}
+
+export async function resetIOImage(path) {
+ const imageData = await getImageForOcclusion({ path });
+ const image = document.getElementById("image") as HTMLImageElement;
+ image.src = getImageData(imageData.data!);
+ const canvas = globalThis.canvas;
+
+ image.onload = function() {
+ const size = optimumCssSizeForCanvas(
+ { width: image.naturalWidth, height: image.naturalHeight },
+ containerSize(),
+ );
+ canvas.setWidth(size.width);
+ canvas.setHeight(size.height);
+ image.height = size.height;
+ image.width = size.width;
+ };
+}
+globalThis.resetIOImage = resetIOImage;