spryte 0.2.3 → 0.4.0

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.
Files changed (50) hide show
  1. package/README.md +11 -8
  2. package/dist/backend.d.ts +22 -5
  3. package/dist/backend.d.ts.map +1 -1
  4. package/dist/canvas2d.d.ts +11 -3
  5. package/dist/canvas2d.d.ts.map +1 -1
  6. package/dist/canvas2d.js +72 -4
  7. package/dist/canvas2d.js.map +1 -1
  8. package/dist/draw.d.ts +50 -20
  9. package/dist/draw.d.ts.map +1 -1
  10. package/dist/draw.js +48 -7
  11. package/dist/draw.js.map +1 -1
  12. package/dist/filters.d.ts +59 -0
  13. package/dist/filters.d.ts.map +1 -0
  14. package/dist/filters.js +188 -0
  15. package/dist/filters.js.map +1 -0
  16. package/dist/index.d.ts +6 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +6 -1
  19. package/dist/index.js.map +1 -1
  20. package/dist/mask.d.ts +13 -0
  21. package/dist/mask.d.ts.map +1 -0
  22. package/dist/mask.js +29 -0
  23. package/dist/mask.js.map +1 -0
  24. package/dist/offscreen.d.ts +26 -0
  25. package/dist/offscreen.d.ts.map +1 -0
  26. package/dist/offscreen.js +83 -0
  27. package/dist/offscreen.js.map +1 -0
  28. package/dist/panels.d.ts +44 -0
  29. package/dist/panels.d.ts.map +1 -0
  30. package/dist/panels.js +97 -0
  31. package/dist/panels.js.map +1 -0
  32. package/dist/phaser.d.ts +80 -0
  33. package/dist/phaser.d.ts.map +1 -0
  34. package/dist/phaser.js +100 -0
  35. package/dist/phaser.js.map +1 -0
  36. package/dist/renderer.js +1 -0
  37. package/dist/renderer.js.map +1 -1
  38. package/dist/shapes.d.ts +64 -0
  39. package/dist/shapes.d.ts.map +1 -0
  40. package/dist/shapes.js +367 -0
  41. package/dist/shapes.js.map +1 -0
  42. package/dist/shared.d.ts +29 -0
  43. package/dist/shared.d.ts.map +1 -0
  44. package/dist/shared.js +134 -0
  45. package/dist/shared.js.map +1 -0
  46. package/dist/webgl2.d.ts +29 -12
  47. package/dist/webgl2.d.ts.map +1 -1
  48. package/dist/webgl2.js +138 -19
  49. package/dist/webgl2.js.map +1 -1
  50. package/package.json +8 -2
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  # spryte
4
4
 
5
- **Blazing fast 2D rendering for the web: 2–4× faster than the most popular renderer, at a ninth of its size.** Every number is checked pixel for pixel in [2dbench](https://github.com/debuffjp/2dbench), an open benchmark you can [run on your own device](https://debuffjp.github.io/2dbench/mobile.html).
5
+ **Blazing fast 2D rendering for the web: 2-4x faster than the most popular renderer, at an eighth of its size.** Every number is checked pixel for pixel in [2dbench](https://github.com/debuffjp/2dbench), an open benchmark you can [run on your own device](https://debuffjp.github.io/2dbench/mobile.html).
6
6
 
7
7
  ![Most sprites each library holds at 60 fps, per 2dbench scene](https://debuff.jp/charts/max-at-60fps.svg)
8
8
 
9
- You draw in immediate mode (sprites, bulk sprites, rects, circles, lines, text, clips, blend modes, render targets and custom shaders), and spryte batches it onto WebGL2 with instancing, falling back to Canvas 2D automatically. No dependencies, no scene graph, no game framework.
9
+ You draw in immediate mode (sprites, bulk sprites, nine-slice panels, tiled fills, shapes and strokes, text, clips, masks, blend modes, filters, render targets and custom shaders), and spryte batches it onto WebGL2 with instancing, falling back to Canvas 2D automatically. No dependencies, no scene graph, no game framework.
10
10
 
11
11
  > **Alpha.** spryte is the renderer inside [debuff](https://debuff.jp), where games already run on it. The API may still change before 1.0. It's measured on desktop Chrome and Chromium (Windows and Linux; NVIDIA and AMD GPUs), iPhone Safari and Chrome, and Firefox on Android, and its one-call-per-sprite path is ahead of PixiJS on every device so far ([results across devices](https://github.com/debuffjp/2dbench#across-devices)). Safari on macOS isn't covered yet: [run 2dbench on your device](https://debuffjp.github.io/2dbench/mobile.html) to help.
12
12
 
@@ -45,21 +45,23 @@ Games are where spryte started, but anything that draws lots of moving 2D things
45
45
 
46
46
  ## Why spryte
47
47
 
48
- Against PixiJS 8 on the same machine, assets and simulation, over 3–7 interleaved rounds in [2dbench](https://github.com/debuffjp/2dbench), after a pixel-parity gate (desktop Chrome, RTX 5060 laptop, spryte 0.2.1). The comparison went through a fairness review aimed at breaking it. Method, raw data and caveats are in [benchmarks](https://github.com/debuffjp/spryte/blob/main/docs/benchmarks.md).
48
+ Against PixiJS 8 on the same machine, assets and simulation, over 3-7 interleaved rounds in [2dbench](https://github.com/debuffjp/2dbench), after a pixel-parity gate (desktop Chrome, RTX 5060 laptop, spryte 0.2.1). The comparison went through a fairness review aimed at breaking it. Method, raw data and caveats are in [benchmarks](https://github.com/debuffjp/spryte/blob/main/docs/benchmarks.md).
49
49
 
50
50
  | | spryte | PixiJS 8 | |
51
51
  | --- | --- | --- | --- |
52
- | JS at startup (brotli) | **10.1 kB** | 87.8 kB | ~9× smaller |
53
- | 200k particles, per-particle scale, rotation, tint and alpha all changing | **5.8 ms** | 24.2 ms (`ParticleContainer`) | 4.2× faster |
54
- | 50k sprites with rotation, scale and tint, one call each | **7.8 ms** | 27.1 ms (`Sprite`) | 3.5× faster |
55
- | 200k sprites, position only, bulk | **2.8 ms** | 7.2 ms (`ParticleContainer`) | 2.6× faster |
52
+ | JS at startup (brotli) | **11.3 kB** | 87.8 kB | ~8x smaller |
53
+ | 200k particles, per-particle scale, rotation, tint and alpha all changing | **5.8 ms** | 24.2 ms (`ParticleContainer`) | 4.2x faster |
54
+ | 50k sprites with rotation, scale and tint, one call each | **7.8 ms** | 27.1 ms (`Sprite`) | 3.5x faster |
55
+ | 200k sprites, position only, bulk | **2.8 ms** | 7.2 ms (`ParticleContainer`) | 2.6x faster |
56
56
 
57
57
  ![Frame time by sprite count for dynamic particles: spryte and PixiJS, with the 60 fps budget](https://debuff.jp/charts/particles.svg)
58
58
 
59
- *Charts from [2dbench](https://github.com/debuffjp/2dbench), the same run as the table (3–7 rounds depending on the scene). Lower lines are faster; the dashed line is the 60 fps budget.*
59
+ *Charts from [2dbench](https://github.com/debuffjp/2dbench), the same run as the table (3-7 rounds depending on the scene). Lower lines are faster; the dashed line is the 60 fps budget.*
60
60
 
61
61
  In [2dbench](https://github.com/debuffjp/2dbench)'s raycaster scene (a retro first-person maze drawn as thousands of texture slices), spryte held 20,000 enemies at 60 fps against PixiJS `Sprite`'s 5,000. The gap is per-sprite work: a PixiJS `Sprite` is a scene-graph object updated, bounded and batched every frame, while spryte writes a few numbers per sprite into a typed array and the GPU expands them. Static scenes, where PixiJS can cache, are much closer.
62
62
 
63
+ Against Phaser 4 on the same laptop, spryte draws moving sprites 2.2-3.1x faster than Phaser's `Image` and 5x faster than its `SpriteGPULayer`, at 11.3 kB of JavaScript against Phaser's 276.6 kB ([spryte vs Phaser](https://debuff.jp/blog/spryte-vs-phaser)). A Phaser game can keep Phaser and hand its heaviest effects to spryte, inside Phaser's frame and depth order, through an `Extern` (`spryte/phaser`, see the [API docs](docs/api.md#phaser-4-sprytephaser)).
64
+
63
65
  - **Bulk sprites with no per-sprite JavaScript.** On WebGL2, pass a `Float32Array` of positions (plus optional per-copy scale, rotation and colour arrays) and spryte uploads it as is.
64
66
  - **Immediate mode.** There are no display objects to create, pool or destroy. Draw what you want this frame.
65
67
  - **Verified output.** Real-GPU pixel checks prove that the bulk paths, render targets and shaders draw exactly what the simple path draws.
@@ -78,6 +80,7 @@ draw.withShader(crt, () => draw.sprite(scene, 0, 0, { origin: [0, 0] }));
78
80
  - **Guides on debuff.jp:** [getting started](https://debuff.jp/spryte/getting-started), [sprites and frames](https://debuff.jp/spryte/sprites), [bulk sprites and particles](https://debuff.jp/spryte/bulk-sprites), [shapes and text](https://debuff.jp/spryte/shapes-and-text), [transforms and clipping](https://debuff.jp/spryte/transforms-and-clipping), [render targets and shaders](https://debuff.jp/spryte/render-targets-and-shaders), [pixel art](https://debuff.jp/spryte/pixel-art)
79
81
  - **[How spryte got fast](https://debuff.jp/research/how-spryte-got-fast):** the research write-up, from the first profile to the 8-byte instance format
80
82
  - **[Migrating from PixiJS](https://debuff.jp/spryte/migrating-from-pixijs):** the mental model, side-by-side code and a mapping table
83
+ - **[Migrating from Phaser](https://debuff.jp/spryte/migrating-from-phaser):** what spryte replaces in Phaser, side-by-side code and a mapping table
81
84
  - [Changelog](https://github.com/debuffjp/spryte/blob/main/CHANGELOG.md)
82
85
  - [Roadmap](https://github.com/debuffjp/debuff/blob/main/docs/roadmap.md#spryte)
83
86
  - [API reference](https://github.com/debuffjp/spryte/blob/main/docs/api.md)
package/dist/backend.d.ts CHANGED
@@ -1,6 +1,12 @@
1
1
  /** 2D affine matrix `[a, b, c, d, e, f]`: x' = a·x + c·y + e, y' = b·x + d·y + f (Canvas order). */
2
2
  export type Matrix = [number, number, number, number, number, number];
3
- export type BlendMode = "normal" | "add";
3
+ /**
4
+ * How drawing combines with what's underneath. `add` brightens (glows, fire), `multiply` darkens (shadows,
5
+ * tinted lighting), `screen` lightens softly, and `erase` cuts alpha out of what's there (holes in a render
6
+ * target, masks). On a see-through target `multiply` follows the GPU formula, which hides drawing over fully
7
+ * transparent pixels where Canvas 2D shows it.
8
+ */
9
+ export type BlendMode = "normal" | "add" | "multiply" | "screen" | "erase";
4
10
  export interface ClipRect {
5
11
  x: number;
6
12
  y: number;
@@ -17,6 +23,7 @@ export type RawContext = {
17
23
  };
18
24
  import type { CopySpec } from "./copies.js";
19
25
  import type { Shader } from "./shader.js";
26
+ import type { ShapeBuffer } from "./shapes.js";
20
27
  import type { RenderTarget } from "./target.js";
21
28
  /** Image sources the renderer can draw. Textures are cached per source object. */
22
29
  export type TextureSource = HTMLImageElement | HTMLCanvasElement | OffscreenCanvas | ImageBitmap | RenderTarget;
@@ -32,8 +39,8 @@ export interface Backend {
32
39
  readonly contextLost?: boolean;
33
40
  /** GPU draw calls submitted so far this frame, where the backend batches (WebGL2). */
34
41
  readonly drawCalls?: number;
35
- /** Begin a frame: clear to `clear` (0xRRGGBBAA) at the given logical size and backing scale. */
36
- begin(clear: number, width: number, height: number, scale: number): void;
42
+ /** Begin a frame: clear to `clear` (0xRRGGBBAA; null keeps what's there) at the given logical size and backing scale. */
43
+ begin(clear: number | null, width: number, height: number, scale: number): void;
37
44
  /**
38
45
  * Draw the unit square transformed by `m`. `src` null draws solid `color`.
39
46
  * `sx, sy, sw, sh` is the source rect in source pixels (ignored when `src` is null). `flash` (0..1) mixes the texture toward white.
@@ -47,14 +54,24 @@ export interface Backend {
47
54
  quads(t: Matrix, m: Matrix, positions: ArrayLike<number>, count: number, src: TextureSource, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean, snap: boolean): void;
48
55
  /** Copies of one frame with per-copy scale, rotation or colour (`draw.sprites` with `each`). */
49
56
  copies(spec: CopySpec): void;
50
- setBlend(mode: BlendMode): void;
57
+ /**
58
+ * Fill (`width` 0) or stroke a path of `n` points (x0, y0, x1, y1, …) in the units `m` maps to logical space.
59
+ * `aa` is one device pixel in those units, for edge antialiasing where the backend does its own. The
60
+ * tessellator comes from the shape functions, so it's only in apps that draw shapes.
61
+ */
62
+ path(m: Matrix, points: ArrayLike<number>, n: number, closed: boolean, width: number, color: number, aa: number, tessellator: new () => ShapeBuffer): void;
63
+ /** `mask` (internal, for `mask()`) keeps what's there in proportion to the source's alpha. */
64
+ setBlend(mode: BlendMode | "mask"): void;
51
65
  /**
52
66
  * Send drawing to `target` (null: the canvas). `clear` (0xRRGGBBAA) clears it first; null keeps what's there.
53
- * `width, height` are the logical size of the destination (the target's pixel size, or the canvas's logical size).
67
+ * `width, height` are the logical size of the destination: the canvas's logical size, or for a target its pixel
68
+ * size (`into`) or the canvas's logical size again (`mask`, whose targets match the canvas's backing pixels).
54
69
  */
55
70
  setTarget(target: RenderTarget | null, clear: number | null, width: number, height: number): void;
56
71
  /** Draw subsequent quads with a custom fragment effect (null: the default). */
57
72
  setShader(shader: Shader | null): void;
73
+ /** Canvas 2D only: a CSS filter (`"none"` to clear) for subsequent draws. Its presence selects CSS filters in `filter()`. */
74
+ setFilter?(css: string): void;
58
75
  /** Free a target's GPU or canvas storage. */
59
76
  disposeTarget(target: RenderTarget): void;
60
77
  /** Restrict drawing to a rectangle in backing-store pixels (top-left origin), or remove the clip. */
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,MAAM,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3E,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,yFAAyF;AACzF,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,EAAE,EAAE,sBAAsB,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAExH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,kFAAkF;AAClF,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AAEhH;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,sFAAsF;IACtF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,yHAAyH;IACzH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChF;;;;OAIG;IACH,IAAI,CACF,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,GACd,IAAI,CAAC;IACR;;;OAGG;IACH,KAAK,CACH,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,GACZ,IAAI,CAAC;IACR,gGAAgG;IAChG,MAAM,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,IAAI,CACF,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EACzB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,UAAU,WAAW,GACjC,IAAI,CAAC;IACR,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAClG,+EAA+E;IAC/E,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACvC,6HAA6H;IAC7H,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,6CAA6C;IAC7C,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1C,qGAAqG;IACrG,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;IACrC,2CAA2C;IAC3C,GAAG,IAAI,IAAI,CAAC;IACZ,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1D,8DAA8D;IAC9D,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;;;OAIG;IACH,MAAM,CAAC,CAAC,GAAG,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzH,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -19,6 +19,7 @@ export declare class Canvas2DBackend implements Backend {
19
19
  private readonly surfaces;
20
20
  private target;
21
21
  private warnedShader;
22
+ private warnedFilter;
22
23
  private scale;
23
24
  private smoothing;
24
25
  private scratch;
@@ -27,17 +28,19 @@ export declare class Canvas2DBackend implements Backend {
27
28
  private clipped;
28
29
  private blendMode;
29
30
  constructor(ctx: CanvasRenderingContext2D);
30
- begin(clear: number, width: number, height: number, scale: number): void;
31
+ begin(clear: number | null, width: number, height: number, scale: number): void;
31
32
  quad(m: Matrix, src: TextureSource | null, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean): void;
32
33
  quads(t: Matrix, m: Matrix, positions: ArrayLike<number>, count: number, src: TextureSource, sx: number, sy: number, sw: number, sh: number, color: number, flash: number, smooth: boolean, snap: boolean): void;
33
34
  copies(c: CopySpec): void;
34
- setBlend(mode: BlendMode): void;
35
+ path(m: Matrix, points: ArrayLike<number>, n: number, closed: boolean, width: number, color: number): void;
36
+ setBlend(mode: BlendMode | "mask"): void;
35
37
  setClip(rect: ClipRect | null): void;
36
38
  end(): void;
37
39
  resize(): void;
38
40
  invalidate(src: TextureSource): void;
39
41
  dispose(): void;
40
- setTarget(target: RenderTarget | null, clear: number | null, _width: number, _height: number): void;
42
+ setTarget(target: RenderTarget | null, clear: number | null, width: number, _height: number): void;
43
+ setFilter(css: string): void;
41
44
  setShader(shader: Shader | null): void;
42
45
  disposeTarget(target: RenderTarget): void;
43
46
  private surface;
@@ -49,4 +52,9 @@ export declare class Canvas2DBackend implements Backend {
49
52
  private shaded;
50
53
  private scratchCanvas;
51
54
  }
55
+ /**
56
+ * Whether Canvas 2D applies `ctx.filter`. Some browsers accept the property and ignore it (Safari before 18), so
57
+ * this draws one red pixel through `grayscale(1)` and reads it back, once.
58
+ */
59
+ export declare function canvasFilters(): boolean;
52
60
  //# sourceMappingURL=canvas2d.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas2d.d.ts","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpG,OAAO,EAAE,KAAK,QAAQ,EAAU,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;;;GAMG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,QAAQ,CAAC,IAAI,EAAG,IAAI,CAAU;IAC9B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,+FAA+F;IAC/F,OAAO,CAAC,GAAG,CAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwC;IACjE,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,OAAO,CAAkD;IACjE,mEAAmE;IACnE,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAuB;IAExC,YAAY,GAAG,EAAE,wBAAwB,EAIxC;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAavE;IAED,IAAI,CACF,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,aAAa,GAAG,IAAI,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,GACd,IAAI,CAoBN;IAED,KAAK,CACH,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,OAAO,GACZ,IAAI,CAaN;IAED,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAMxB;IAED,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAG9B;IAED,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAiBnC;IAED,GAAG,IAAI,IAAI,CAIV;IAED,MAAM,IAAI,IAAI,CAGb;IAED,UAAU,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEnC;IAED,OAAO,IAAI,IAAI,CAAG;IAElB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAiBlG;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAKrC;IAED,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAQxC;IAED,OAAO,CAAC,OAAO;IAYf;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAqCd,OAAO,CAAC,aAAa;CAMtB"}
1
+ {"version":3,"file":"canvas2d.d.ts","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"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"}
package/dist/canvas2d.js CHANGED
@@ -18,6 +18,7 @@ export class Canvas2DBackend {
18
18
  surfaces = new WeakMap();
19
19
  target = null;
20
20
  warnedShader = false;
21
+ warnedFilter = false;
21
22
  scale = 1;
22
23
  smoothing;
23
24
  scratch;
@@ -39,6 +40,8 @@ export class Canvas2DBackend {
39
40
  ctx.setTransform(scale, 0, 0, scale, 0, 0);
40
41
  ctx.globalAlpha = 1;
41
42
  ctx.globalCompositeOperation = "source-over";
43
+ if (clear === null)
44
+ return;
42
45
  // A see-through clear colour replaces last frame instead of blending over it.
43
46
  if ((clear & 0xff) < 255)
44
47
  ctx.clearRect(0, 0, width, height);
@@ -90,9 +93,35 @@ export class Canvas2DBackend {
90
93
  this.quad(q, c.src, c.sx, c.sy, c.sw, c.sh, color, c.flash, c.smooth);
91
94
  }
92
95
  }
96
+ path(m, points, n, closed, width, color) {
97
+ if (n < 2)
98
+ return;
99
+ const ctx = this.ctx;
100
+ const s = this.scale;
101
+ ctx.setTransform(m[0] * s, m[1] * s, m[2] * s, m[3] * s, m[4] * s, m[5] * s);
102
+ ctx.globalAlpha = 1;
103
+ ctx.beginPath();
104
+ ctx.moveTo(points[0], points[1]);
105
+ for (let i = 1; i < n; i++)
106
+ ctx.lineTo(points[i * 2], points[i * 2 + 1]);
107
+ if (closed || width === 0)
108
+ ctx.closePath();
109
+ if (width === 0) {
110
+ ctx.fillStyle = rgbaToCss(color);
111
+ ctx.fill();
112
+ }
113
+ else {
114
+ ctx.strokeStyle = rgbaToCss(color);
115
+ ctx.lineWidth = width;
116
+ ctx.lineJoin = "miter";
117
+ ctx.miterLimit = 4;
118
+ ctx.lineCap = "butt";
119
+ ctx.stroke();
120
+ }
121
+ }
93
122
  setBlend(mode) {
94
123
  this.blendMode = mode;
95
- this.ctx.globalCompositeOperation = mode === "add" ? "lighter" : "source-over";
124
+ this.ctx.globalCompositeOperation = COMPOSITE[mode];
96
125
  }
97
126
  setClip(rect) {
98
127
  const ctx = this.ctx;
@@ -126,11 +155,11 @@ export class Canvas2DBackend {
126
155
  this.shades.delete(src);
127
156
  }
128
157
  dispose() { }
129
- setTarget(target, clear, _width, _height) {
158
+ setTarget(target, clear, width, _height) {
130
159
  this.ctx = target ? this.surface(target).getContext("2d") : this.screen;
131
160
  this.target = target;
132
- // Targets are sized in pixels; the canvas in logical units at its backing scale.
133
- this.scale = target ? 1 : this.screenScale;
161
+ // The canvas is in logical units at its backing scale; a target at its pixels per logical unit (1 for `into`).
162
+ this.scale = target ? target.width / width : this.screenScale;
134
163
  this.smoothing = undefined;
135
164
  this.setBlend(this.blendMode);
136
165
  if (target && clear !== null) {
@@ -144,6 +173,16 @@ export class Canvas2DBackend {
144
173
  }
145
174
  }
146
175
  }
176
+ setFilter(css) {
177
+ if (css !== "none" && !canvasFilters()) {
178
+ if (!this.warnedFilter) {
179
+ this.warnedFilter = true;
180
+ console.warn("spryte: this browser's Canvas 2D ignores ctx.filter, so filters draw unfiltered on the fallback");
181
+ }
182
+ return;
183
+ }
184
+ this.ctx.filter = css;
185
+ }
147
186
  setShader(shader) {
148
187
  if (shader && !this.warnedShader) {
149
188
  this.warnedShader = true;
@@ -237,4 +276,33 @@ function newSurface(w, h) {
237
276
  function mixWhite(c, f) {
238
277
  return Math.round(c + ((255 - c) * f) / 255);
239
278
  }
279
+ let filtersWork;
280
+ /**
281
+ * Whether Canvas 2D applies `ctx.filter`. Some browsers accept the property and ignore it (Safari before 18), so
282
+ * this draws one red pixel through `grayscale(1)` and reads it back, once.
283
+ */
284
+ export function canvasFilters() {
285
+ if (filtersWork === undefined) {
286
+ const c = typeof OffscreenCanvas === "function" ? new OffscreenCanvas(1, 1) : document.createElement("canvas");
287
+ const g = c.getContext("2d", { willReadFrequently: true });
288
+ if (!g) {
289
+ filtersWork = false;
290
+ return false;
291
+ }
292
+ g.filter = "grayscale(1)";
293
+ g.fillStyle = "#f00";
294
+ g.fillRect(0, 0, 1, 1);
295
+ const [r, gr] = g.getImageData(0, 0, 1, 1).data;
296
+ filtersWork = r !== undefined && r === gr;
297
+ }
298
+ return filtersWork;
299
+ }
300
+ const COMPOSITE = {
301
+ normal: "source-over",
302
+ add: "lighter",
303
+ multiply: "multiply",
304
+ screen: "screen",
305
+ erase: "destination-out",
306
+ mask: "destination-in",
307
+ };
240
308
  //# sourceMappingURL=canvas2d.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvas2d.js","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvas2d.js","sourceRoot":"","sources":["../src/canvas2d.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAiB,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,IAAa,CAAC;IACrB,GAAG,CAAa;IACzB,+FAA+F;IACvF,GAAG,CAA2B;IACrB,MAAM,CAA2B;IAC1C,WAAW,GAAG,CAAC,CAAC;IACP,QAAQ,GAAG,IAAI,OAAO,EAAyB,CAAC;IACzD,MAAM,GAAwB,IAAI,CAAC;IACnC,YAAY,GAAG,KAAK,CAAC;IACrB,YAAY,GAAG,KAAK,CAAC;IACrB,KAAK,GAAG,CAAC,CAAC;IACV,SAAS,CAAsB;IAC/B,OAAO,CAAkD;IACjE,mEAAmE;IAC3D,MAAM,GAAG,IAAI,OAAO,EAAgC,CAAC;IACrD,OAAO,GAAG,KAAK,CAAC;IAChB,SAAS,GAAuB,QAAQ,CAAC;IAEjD,YAAY,GAA6B;QACvC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAoB,EAAE,KAAa,EAAE,MAAc,EAAE,KAAa;QACtE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3C,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;QACpB,GAAG,CAAC,wBAAwB,GAAG,aAAa,CAAC;QAC7C,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO;QAC3B,8EAA8E;QAC9E,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG;YAAE,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7D,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QACjC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CACF,CAAS,EACT,GAAyB,EACzB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa,EACb,KAAa,EACb,MAAe;QAEf,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAC3G,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;YACpB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC9B,GAAG,CAAC,qBAAqB,GAAG,MAAM,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,GAAG,GAAG,YAAY,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACpE,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;QACvC,MAAM,GAAG,GAAG,KAAK,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;;YAClF,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,YAAY,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5H,CAAC;IAED,KAAK,CACH,CAAS,EACT,CAAS,EACT,SAA4B,EAC5B,KAAa,EACb,GAAkB,EAClB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa,EACb,KAAa,EACb,MAAe,EACf,IAAa;QAEb,MAAM,CAAC,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC;YACrC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAW,CAAC;YACzC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,CAAW;QAChB,MAAM,CAAC,GAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,MAAyB,EAAE,CAAS,EAAE,MAAe,EAAE,KAAa,EAAE,KAAa;QACjG,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACrB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;QACpB,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,MAAM,CAAC,CAAC,CAAW,CAAC,CAAC;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAW,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;QAC7F,IAAI,MAAM,IAAI,KAAK,KAAK,CAAC;YAAE,GAAG,CAAC,SAAS,EAAE,CAAC;QAC3C,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YACtB,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;YACvB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC;YACrB,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAwB;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,wBAAwB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,IAAqB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,kFAAkF;QAClF,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,gGAAgG;YAChG,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,GAAG,CAAC,SAAS,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,IAAI,EAAE,CAAC;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,GAAG;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,iEAAiE;QACjE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,GAAkB;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,KAAU,CAAC;IAElB,SAAS,CAAC,MAA2B,EAAE,KAAoB,EAAE,KAAa,EAAE,OAAe;QACzF,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACtG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,+GAA+G;QAC/G,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,MAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;YACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBACjC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,iGAAiG,CAAC,CAAC;YAClH,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAqB;QAC7B,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,aAAa,CAAC,MAAoB;QAChC,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,uEAAuE;QACvE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAEO,OAAO,CAAC,MAAoB;QAClC,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/H,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAC7B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,GAAsB,EAAE,IAAa,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAW,EAAE,KAAa;QAC1H,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACjE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,GAAG,GAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAoC,CAAC;QACnG,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC;QACtB,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC;QAC7B,MAAM,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAE,CAAC,CAAC,CAAC,CAAY,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAY,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAY,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,CAAC;YACD,gFAAgF;YAChF,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,aAAa,CAAC,CAAS,EAAE,CAAS;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAED,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,IAAI,OAAO,eAAe,KAAK,WAAW;QAAE,OAAO,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACb,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,IAAI,WAAgC,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,OAAO,eAAe,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/G,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAoC,CAAC;QAC9F,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,WAAW,GAAG,KAAK,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC;QAC1B,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC;QACrB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAChD,WAAW,GAAG,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,SAAS,GAAyD;IACtE,MAAM,EAAE,aAAa;IACrB,GAAG,EAAE,SAAS;IACd,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,iBAAiB;IACxB,IAAI,EAAE,gBAAgB;CACvB,CAAC"}
package/dist/draw.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Backend, BlendMode, Matrix, RawContext, TextureSource } from "./backend.js";
1
+ import type { Backend, BlendMode, ClipRect, Matrix, RawContext, TextureSource } from "./backend.js";
2
2
  import type { BitmapFont } from "./bitmap-font.js";
3
3
  import { type Color } from "./color.js";
4
4
  import type { SpritesEach } from "./copies.js";
@@ -43,7 +43,8 @@ export interface TextDrawOptions {
43
43
  * Everything batches automatically; call order is draw order.
44
44
  */
45
45
  export declare class Draw {
46
- private backend;
46
+ /** @internal */
47
+ backend: Backend;
47
48
  /** Default filtering for images (false for pixel art). */
48
49
  smooth: boolean;
49
50
  /** Global alpha multiplier for subsequent draws. */
@@ -58,25 +59,36 @@ export declare class Draw {
58
59
  /** Preallocated transform stack: push/pop copy six numbers and never allocate. */
59
60
  private readonly stack;
60
61
  private depth;
61
- private readonly m;
62
+ /** @internal */
63
+ readonly m: Matrix;
62
64
  private readonly frames;
63
65
  private lastImage;
64
66
  private lastFrame;
65
- private readonly clips;
66
- private shader;
67
+ /** @internal */
68
+ readonly clips: ClipRect[];
69
+ /** @internal */
70
+ shader: Shader | null;
67
71
  /** The render target being drawn into, or null for the canvas. */
68
- private target;
72
+ /** @internal */
73
+ target: RenderTarget | null;
69
74
  /** The canvas's logical size this frame, to switch back to after `into()`. */
70
- private viewW;
71
- private viewH;
72
- private readonly tmp;
75
+ /** @internal */
76
+ viewW: number;
77
+ /** @internal */
78
+ viewH: number;
79
+ /** @internal */
80
+ readonly tmp: Matrix;
73
81
  private readonly textCache;
74
82
  /** Antialiased white circles, 64, 256 and 1024px across, each made on first use. */
75
83
  private readonly circleTextures;
76
- private backingW;
77
- private backingH;
78
84
  /** @internal */
79
- constructor(backend: Backend,
85
+ backingW: number;
86
+ /** @internal */
87
+ backingH: number;
88
+ /** @internal */
89
+ constructor(
90
+ /** @internal */
91
+ backend: Backend,
80
92
  /** Default filtering for images (false for pixel art). */
81
93
  smooth: boolean);
82
94
  /** Which backend is active. */
@@ -93,6 +105,12 @@ export declare class Draw {
93
105
  push(): void;
94
106
  pop(): void;
95
107
  translate(x: number, y: number): void;
108
+ /**
109
+ * Multiply a matrix `[a, b, c, d, e, f]` (x' = a·x + c·y + e, y' = b·x + d·y + f, the Canvas order) onto the
110
+ * current transform, the way `translate`, `scale` and `rotate` do. For a camera or parent transform another
111
+ * engine computed, which can include skew that those three can't express.
112
+ */
113
+ transform(a: number, b: number, c: number, d: number, e: number, f: number): void;
96
114
  scale(x: number, y?: number): void;
97
115
  rotate(radians: number): void;
98
116
  /**
@@ -127,7 +145,8 @@ export declare class Draw {
127
145
  private spritesEach;
128
146
  /** tmp = M · T(x, y) · R(rotation) · S(sx, sy) · T(ox, oy) · S(w, h), expanded by hand. Returns the frame. */
129
147
  private place;
130
- private spriteColor;
148
+ /** @internal */
149
+ spriteColor(o: SpriteDrawOptions): number;
131
150
  /** Text, rasterised once and cached as a texture (crisp at the current render scale). */
132
151
  text(text: string, x: number, y: number, o?: TextDrawOptions): void;
133
152
  /**
@@ -167,23 +186,34 @@ export declare class Draw {
167
186
  invalidate(src: TextureSource): void;
168
187
  /** @internal */
169
188
  renderScale: number;
170
- /** @internal */
171
- begin(clear: Color, width: number, height: number, scale: number): void;
189
+ /**
190
+ * Start a frame: clear to `clear` (null draws over what's there: an overlay, a second pass, or a frame another
191
+ * engine began), at a logical size of `width × height` units with `scale` backing pixels per unit (2 on a 2×
192
+ * screen, or the canvas's pixel width / `width`). Resets the transform, alpha, blend and clips.
193
+ */
194
+ begin(clear: Color | null, width: number, height: number, scale: number): void;
172
195
  /** @internal Reset transform and blend between scene and afterRender hooks. */
173
196
  reset(): void;
174
- /** @internal */
197
+ /** Finish the frame: submits everything drawn since `begin()`. */
175
198
  end(): void;
176
199
  /** Release GPU resources and listeners. Using this `Draw` afterwards throws; disposing again does nothing. */
177
200
  dispose(): void;
178
- /** @internal */
201
+ /** Tell spryte the canvas's backing size changed: call it with `canvas.width, canvas.height` after setting them. */
179
202
  resize(w: number, h: number): void;
180
203
  /** @internal Switch to a backend that finished loading (the Canvas 2D fallback), at the current size. */
181
204
  setBackend(backend: Backend): void;
205
+ /** @internal */
206
+ blendMode: BlendMode;
207
+ /** @internal */
208
+ maskDepth: number;
182
209
  /** tmp = current matrix × (translate(x, y) · scale(w, h)): maps the unit square to the rect. */
183
- private local;
184
- private wholeImage;
210
+ /** @internal */
211
+ local(x: number, y: number, w: number, h: number): void;
212
+ /** @internal */
213
+ wholeImage(image: TextureSource): Frame;
185
214
  private defaultFont;
186
- private withAlpha;
215
+ /** @internal */
216
+ withAlpha(rgba: number, alpha: number): number;
187
217
  private circleTexture;
188
218
  }
189
219
  //# sourceMappingURL=draw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../src/draw.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../src/draw.ts"],"names":[],"mappings":"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"}