@glissade/backend-canvas2d 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,13 +1,24 @@
1
- import { DisplayList, DrawCommand, FontSpec, TextMetricsLite, TextMetricsLite as TextMetricsLite$1, VideoFrameSource } from "@glissade/scene";
1
+ import { DisplayList, DrawCommand, FontSpec, ShaderCaps, ShaderRef, TextMetricsLite, TextMetricsLite as TextMetricsLite$1, VideoFrameSource } from "@glissade/scene";
2
2
 
3
3
  //#region src/index.d.ts
4
4
 
5
+ /**
6
+ * §3.7 shader runner seam: @glissade/effects-webgpu registers here at load
7
+ * time (the loadYogaLayoutEngine pattern). This package never imports GPU
8
+ * code — headless paths stay clean by construction.
9
+ */
10
+ interface ShaderRunner {
11
+ apply(layer: AnyCanvas, shader: ShaderRef, w: number, h: number): Drawable | null;
12
+ }
13
+ declare function setShaderRunner(runner: ShaderRunner | null): void;
5
14
  type Drawable = Exclude<CanvasImageSource, SVGImageElement>;
6
15
  type AnyCanvas = HTMLCanvasElement | OffscreenCanvas;
7
16
  declare class Canvas2DBackend {
8
17
  private readonly target;
9
18
  private readonly raster;
10
- constructor(target: AnyCanvas);
19
+ constructor(target: AnyCanvas, opts?: {
20
+ shaderCaps?: ShaderCaps;
21
+ });
11
22
  /** Register a decoded still (kind 'image' assets). */
12
23
  setImageAsset(assetId: string, image: Drawable): void;
13
24
  /** Register a warmed-on-demand video source (kind 'video' assets, §3.8). */
@@ -19,4 +30,4 @@ declare class Canvas2DBackend {
19
30
  private context;
20
31
  }
21
32
  //#endregion
22
- export { Canvas2DBackend, type DisplayList, type DrawCommand, type TextMetricsLite };
33
+ export { Canvas2DBackend, type DisplayList, type DrawCommand, ShaderRunner, type TextMetricsLite, setShaderRunner };
package/dist/index.js CHANGED
@@ -6,16 +6,21 @@ import { Raster2D, fontString } from "@glissade/scene";
6
6
  * in @glissade/scene: this file owns only the DOM canvas flavor (context
7
7
  * acquisition, OffscreenCanvas layers, Path2D) and text measurement.
8
8
  */
9
+ let shaderRunner = null;
10
+ function setShaderRunner(runner) {
11
+ shaderRunner = runner;
12
+ }
9
13
  var Canvas2DBackend = class {
10
14
  target;
11
15
  raster;
12
- constructor(target) {
16
+ constructor(target, opts = {}) {
13
17
  this.target = target;
14
18
  this.raster = new Raster2D({
15
19
  context: (c) => this.context(c),
16
20
  createCanvas: (w, h) => new OffscreenCanvas(w, h),
17
- newPath: () => new Path2D()
18
- });
21
+ newPath: () => new Path2D(),
22
+ applyShader: (layer, shader, w, h) => shaderRunner?.apply(layer, shader, w, h) ?? null
23
+ }, opts.shaderCaps ?? "warn");
19
24
  }
20
25
  /** Register a decoded still (kind 'image' assets). */
21
26
  setImageAsset(assetId, image) {
@@ -53,4 +58,4 @@ var Canvas2DBackend = class {
53
58
  }
54
59
  };
55
60
  //#endregion
56
- export { Canvas2DBackend };
61
+ export { Canvas2DBackend, setShaderRunner };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glissade/backend-canvas2d",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "glissade Canvas 2D render backend: DisplayList -> CanvasRenderingContext2D/OffscreenCanvas.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -15,8 +15,8 @@
15
15
  "dist"
16
16
  ],
17
17
  "dependencies": {
18
- "@glissade/core": "0.3.0",
19
- "@glissade/scene": "0.3.0"
18
+ "@glissade/core": "0.4.1",
19
+ "@glissade/scene": "0.4.1"
20
20
  },
21
21
  "repository": {
22
22
  "type": "git",