UNPKG

tav-media

Version:

Cross platform media editing framework

25 lines (24 loc) 938 B
import { CANVAS_POOL_MAX_SIZE } from '../constant'; const canvasPool = new Array(); export const isOffscreenCanvas = (element) => window.OffscreenCanvas && element instanceof window.OffscreenCanvas; export const isCanvas = (element) => isOffscreenCanvas(element) || element instanceof HTMLCanvasElement; export const getCanvas2D = () => { return canvasPool.pop() || createCanvas2D(); }; export const releaseCanvas2D = (canvas) => { if (canvasPool.length < CANVAS_POOL_MAX_SIZE) { canvasPool.push(canvas); } }; const createCanvas2D = () => { try { const offscreenCanvas = new OffscreenCanvas(0, 0); const context = offscreenCanvas.getContext('2d'); if (context === null || context === void 0 ? void 0 : context.measureText) return offscreenCanvas; return document.createElement('canvas'); } catch (err) { return document.createElement('canvas'); } };