Skip to content

Commit

Permalink
keep-text-in-occlusion (#3277)
Browse files Browse the repository at this point in the history
  • Loading branch information
escribapetrus authored Jul 20, 2024
1 parent 0b38ecd commit 799912c
Showing 1 changed file with 25 additions and 15 deletions.
40 changes: 25 additions & 15 deletions ts/routes/image-occlusion/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ async function setupImageOcclusionInner(setupOptions?: SetupImageOcclusionOption
window.addEventListener("keydown", (event) => {
const button = document.getElementById("toggle");
if (button && button.style.display !== "none" && event.key === "M") {
toggleMasks();
toggleMasks(setupOptions);
}
});
oneTimeSetupDone = true;
Expand All @@ -169,7 +169,7 @@ async function setupImageOcclusionInner(setupOptions?: SetupImageOcclusionOption
const button = document.getElementById("toggle");
if (button) {
if (document.querySelector("[data-occludeinactive=\"1\"]")) {
button.addEventListener("click", toggleMasks);
button.addEventListener("click", () => toggleMasks(setupOptions));
} else {
button.style.display = "none";
}
Expand All @@ -182,13 +182,16 @@ function drawShapes(
canvas: HTMLCanvasElement,
onWillDrawShapes?: DrawShapesFilter,
onDidDrawShapes?: DrawShapesCallback,
allowedShapes?: Array<typeof Shape>,
): void {
const context: CanvasRenderingContext2D = canvas.getContext("2d")!;
const size = canvas;
const filterByAllowedShapes = (el: Shape) =>
(allowedShapes && allowedShapes.length > 0) ? allowedShapes.some(s => el instanceof s) : true;

let activeShapes = extractShapesFromRenderedClozes(".cloze");
let inactiveShapes = extractShapesFromRenderedClozes(".cloze-inactive");
let highlightShapes = extractShapesFromRenderedClozes(".cloze-highlight");
let activeShapes = extractShapesFromRenderedClozes(".cloze").filter(filterByAllowedShapes);
let inactiveShapes = extractShapesFromRenderedClozes(".cloze-inactive").filter(filterByAllowedShapes);
let highlightShapes = extractShapesFromRenderedClozes(".cloze-highlight").filter(filterByAllowedShapes);
let properties = getShapeProperties();

const processed = onWillDrawShapes?.({ activeShapes, inactiveShapes, highlightShapes, properties }, context);
Expand Down Expand Up @@ -230,7 +233,12 @@ function drawShapes(
});
}

onDidDrawShapes?.({ activeShapes, inactiveShapes, highlightShapes, properties }, context);
onDidDrawShapes?.({
activeShapes,
inactiveShapes,
highlightShapes,
properties,
}, context);
}

interface DrawShapeParameters {
Expand Down Expand Up @@ -452,14 +460,16 @@ function getShapeProperties(): ShapeProperties {
}
}

const toggleMasks = (): void => {
const canvas = document.getElementById(
"image-occlusion-canvas",
) as HTMLCanvasElement;
const display = canvas.style.display;
if (display === "none") {
canvas.style.display = "unset";
} else {
canvas.style.display = "none";
let hide = false;
const toggleMasks = (setupOptions?: SetupImageOcclusionOptions): void => {
const canvas = document.getElementById("image-occlusion-canvas") as HTMLCanvasElement;
const context = canvas.getContext("2d")!;

hide = !hide;
context.clearRect(0, 0, canvas.width, canvas.height);
if (hide) {
drawShapes(canvas, setupOptions?.onWillDrawShapes, setupOptions?.onDidDrawShapes, [Text]);
return;
}
drawShapes(canvas, setupOptions?.onWillDrawShapes, setupOptions?.onDidDrawShapes);
};

0 comments on commit 799912c

Please sign in to comment.