UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

58 lines (57 loc) 1.67 kB
import { CanvasSequence } from 'canvas-sequencer-ts'; import isNode from 'detect-node'; export { collectTransferables, isDetachedBuffer } from "./transferables.js"; export function isImageBitmap(value) { return typeof ImageBitmap !== 'undefined' && value instanceof ImageBitmap; } export function drawImageOntoCanvasContext(imageData, context) { if (imageData.serializedCommands) { const seq = new CanvasSequence(imageData.serializedCommands); seq.execute(context); } else { context.drawImage(imageData, 0, 0); } } export function createCanvas(width, height) { if (typeof OffscreenCanvas === 'function') { return new OffscreenCanvas(width, height); } else if (isNode) { return nodeCreateCanvas(width, height); } else { const context = new CanvasSequence(); return { width, height, getContext() { return context; }, }; } } export async function createImageBitmap(canvas) { if (typeof OffscreenCanvas === 'function') { return canvas.transferToImageBitmap(); } else if (isNode) { const dataUri = canvas.toDataURL(); const img = new nodeImage(); return new Promise((resolve, reject) => { img.onload = () => { resolve(img); }; img.onerror = reject; img.src = dataUri; }); } else { const ctx = canvas.getContext('2d'); return { height: canvas.height, width: canvas.width, serializedCommands: ctx.toJSON(), }; } }