tav-media
Version:
Cross platform media editing framework
74 lines (73 loc) • 2.54 kB
JavaScript
import { PAGModule } from '../pag-module';
const rewindData = (fn, scope, ...args) => {
if (PAGModule.Asyncify.currData !== null) {
const currData = PAGModule.Asyncify.currData;
PAGModule.Asyncify.currData = null;
const ret = fn.call(scope, ...args);
PAGModule.Asyncify.currData = currData;
return ret;
}
else {
return fn.call(scope, ...args);
}
};
export const proxyVector = (vector, process) => {
const proxy = new Proxy(vector, {
get(target, property, receiver) {
switch (property) {
case 'get':
return (index) => {
const wasmIns = rewindData(target.get, target, index);
return !wasmIns ? wasmIns : process(wasmIns);
};
case 'push_back':
return (value) => {
rewindData(target.push_back, target, value.wasmIns || value);
return undefined;
};
case 'size':
return () => {
return rewindData(target.size, target);
};
default:
return Reflect.get(target, property, receiver);
}
},
});
return proxy;
};
export const isOffscreenCanvas = (element) => window.OffscreenCanvas && element instanceof OffscreenCanvas;
export const layer2typeLayer = (wasmIns) => {
switch (rewindData(wasmIns._layerType, wasmIns)) {
case 2 /* LayerType.Solid */:
return new PAGModule.PAGSolidLayer(wasmIns);
case 3 /* LayerType.Text */:
return new PAGModule.PAGTextLayer(wasmIns);
case 5 /* LayerType.Image */:
return new PAGModule.PAGImageLayer(wasmIns);
default:
return new PAGModule.PAGLayer(wasmIns);
}
};
export const getLayerTypeName = (layerType) => {
switch (layerType) {
case 2 /* LayerType.Solid */:
return 'Solid';
case 3 /* LayerType.Text */:
return 'Text';
case 4 /* LayerType.Shape */:
return 'Shape';
case 5 /* LayerType.Image */:
return 'Image';
case 6 /* LayerType.PreCompose */:
return 'PreCompose';
default:
return 'Unknown';
}
};
export const getWasmIns = (value) => {
if (value === null || value === void 0 ? void 0 : value.wasmIns) {
return value.wasmIns;
}
return value;
};