LibWeb: Implement basics for OffscreenCanvas

This implements the basic interface, classes and functions for
OffscreenCanvas. Many are still stubbed out and have many FIXMEs in
them, but it is a basic skeleton.
This commit is contained in:
Totto16 2025-03-07 00:19:45 +01:00 committed by Andrew Kaster
commit 2ad3ce5d37
Notes: github-actions[bot] 2025-06-30 15:47:43 +00:00
14 changed files with 1094 additions and 4 deletions

View file

@ -0,0 +1,32 @@
#import <DOM/EventTarget.idl>
#import <HTML/OffscreenCanvasRenderingContext2D.idl>
#import <HTML/Canvas/OffscreenCanvasBase.idl>
// FIXME: This should be in OffscreenCanvasBase.idl but then it is not exported
// https://html.spec.whatwg.org/multipage/canvas.html#imageencodeoptions
dictionary ImageEncodeOptions {
DOMString type = "image/png";
unrestricted double quality;
};
// FIXME: This should be in OffscreenCanvasBase.idl but then it is not exported
// https://html.spec.whatwg.org/multipage/canvas.html#offscreenrenderingcontextid
enum OffscreenRenderingContextId { "2d", "bitmaprenderer", "webgl", "webgl2", "webgpu" };
// https://html.spec.whatwg.org/multipage/canvas.html#offscreencanvas
[Exposed=(Window,Worker), Transferable]
interface OffscreenCanvas : EventTarget {
constructor([EnforceRange] unsigned long long width, [EnforceRange] unsigned long long height);
attribute unsigned long long width;
attribute unsigned long long height;
OffscreenRenderingContext? getContext(OffscreenRenderingContextId contextId, optional any options = null);
ImageBitmap transferToImageBitmap();
Promise<Blob> convertToBlob(optional ImageEncodeOptions options = {});
attribute EventHandler oncontextlost;
attribute EventHandler oncontextrestored;
};