From 80b3c4376ca1e36daeac185439c9293c82cd830a Mon Sep 17 00:00:00 2001 From: Jeff Pamer Date: Mon, 11 Dec 2023 12:31:39 -0800 Subject: [PATCH] Add fallback support for standard Canvas if OffscreenCanvas unavailable (#1052) --- src/components/timeline/LayerLine.svelte | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/timeline/LayerLine.svelte b/src/components/timeline/LayerLine.svelte index a0172bd374..0e05edb2c3 100644 --- a/src/components/timeline/LayerLine.svelte +++ b/src/components/timeline/LayerLine.svelte @@ -192,13 +192,25 @@ return points; } - function generateOffscreenPoint(lineColor: string, radius: number): OffscreenCanvas | null { + function generateOffscreenPoint(lineColor: string, radius: number): OffscreenCanvas | HTMLCanvasElement | null { if (!radius) { return null; } - const tempCanvas = new OffscreenCanvas(radius * 2 * dpr, radius * 2 * dpr); - const tempCtx = tempCanvas.getContext('2d'); + let tempCanvas: OffscreenCanvas | HTMLCanvasElement; + let tempCtx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D | null; + + if ('OffscreenCanvas' in window) { + tempCanvas = new OffscreenCanvas(radius * 2 * dpr, radius * 2 * dpr); + } else { + tempCanvas = document.createElement('canvas'); + tempCanvas.height = radius * 2 * dpr; + tempCanvas.width = radius * 2 * dpr; + tempCanvas.style.height = `${radius * 2}px`; + tempCanvas.style.width = `${radius * 2}px`; + } + + tempCtx = tempCanvas.getContext('2d'); if (!tempCtx) { return null;