From 717b8ad0cf90f5505fb238d1f00366725e6ded28 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 4 Mar 2020 16:02:07 +0100 Subject: [PATCH] Make createCanvasContext2D work in non-window context --- src/ol/dom.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ol/dom.js b/src/ol/dom.js index ad10c14671..37d188541e 100644 --- a/src/ol/dom.js +++ b/src/ol/dom.js @@ -3,6 +3,7 @@ */ +//FIXME Move this function to the canvas module /** * Create an html canvas element and returns its 2d context. * @param {number=} opt_width Canvas width. @@ -12,14 +13,18 @@ */ export function createCanvasContext2D(opt_width, opt_height, opt_canvasPool) { const canvas = opt_canvasPool && opt_canvasPool.length ? - opt_canvasPool.shift() : document.createElement('canvas'); + opt_canvasPool.shift() : + 'document' in self ? + document.createElement('canvas') : + new OffscreenCanvas(opt_width || 300, opt_height || 300); if (opt_width) { canvas.width = opt_width; } if (opt_height) { canvas.height = opt_height; } - return canvas.getContext('2d'); + //FIXME Allow OffscreenCanvasRenderingContext2D as return type + return /** @type {CanvasRenderingContext2D} */ (canvas.getContext('2d')); }