Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/dev/core/src/Engines/Native/nativeInterfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export interface INativeEngine {
bufferLength: number
): Promise<ArrayBuffer>;

createImageBitmap(data: ArrayBufferView | IImage): ImageBitmap;
createImageBitmap(data: ArrayBuffer | IImage): ImageBitmap;
resizeImageBitmap(image: ImageBitmap, bufferWidth: number, bufferHeight: number): Uint8Array;

createFrameBuffer(
Expand Down
27 changes: 14 additions & 13 deletions packages/dev/core/src/Engines/nativeEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2063,20 +2063,21 @@ export class NativeEngine extends Engine {
* @returns ImageBitmap
*/
public override async createImageBitmap(image: ImageBitmapSource, options?: ImageBitmapOptions): Promise<ImageBitmap> {
return await new Promise((resolve, reject) => {
if (Array.isArray(image)) {
const arr = <Array<ArrayBufferView>>image;
if (arr.length) {
const image = this._engine.createImageBitmap(arr[0]);
if (image) {
resolve(image);
return;
}
}
// Back-compat: Because of the previous Blob hack, this could be an array of BlobParts.

if (Array.isArray(image)) {
const arr = <Array<ArrayBuffer>>image;
if (arr.length) {
return this._engine.createImageBitmap(arr[0]);
}
// eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
reject(`Unsupported data for createImageBitmap.`);
});
}

if (image instanceof Blob) {
const data = await image.arrayBuffer();
return this._engine.createImageBitmap(data);
}

throw new Error("Unsupported data for createImageBitmap.");
}

/**
Expand Down
Loading