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;