tav-media
Version:
Cross platform media editing framework
25 lines (24 loc) • 938 B
JavaScript
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');
}
};