@flighthq/scene2d-canvas 0.3.0-next.906.07cea63 → 0.3.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 (141) hide show
  1. package/dist/canvasBitmapText.d.ts +1 -1
  2. package/dist/canvasBitmapText.d.ts.map +1 -1
  3. package/dist/canvasBitmapText.js +9 -5
  4. package/dist/canvasBitmapText.js.map +1 -1
  5. package/dist/canvasBitmapTextureResolver.d.ts +3 -0
  6. package/dist/canvasBitmapTextureResolver.d.ts.map +1 -0
  7. package/dist/canvasBitmapTextureResolver.js +21 -0
  8. package/dist/canvasBitmapTextureResolver.js.map +1 -0
  9. package/dist/canvasCache.d.ts +6 -0
  10. package/dist/canvasCache.d.ts.map +1 -1
  11. package/dist/canvasCache.js +14 -1
  12. package/dist/canvasCache.js.map +1 -1
  13. package/dist/canvasFillPattern.d.ts +2 -2
  14. package/dist/canvasFillPattern.d.ts.map +1 -1
  15. package/dist/canvasFillPattern.js +17 -3
  16. package/dist/canvasFillPattern.js.map +1 -1
  17. package/dist/canvasImageSource.d.ts +2 -3
  18. package/dist/canvasImageSource.d.ts.map +1 -1
  19. package/dist/canvasImageSource.js +5 -41
  20. package/dist/canvasImageSource.js.map +1 -1
  21. package/dist/canvasImageTextureResolver.d.ts +3 -0
  22. package/dist/canvasImageTextureResolver.d.ts.map +1 -0
  23. package/dist/canvasImageTextureResolver.js +10 -0
  24. package/dist/canvasImageTextureResolver.js.map +1 -0
  25. package/dist/canvasParticleEmitter2D.d.ts.map +1 -1
  26. package/dist/canvasParticleEmitter2D.js +9 -4
  27. package/dist/canvasParticleEmitter2D.js.map +1 -1
  28. package/dist/canvasQuadBatch.d.ts.map +1 -1
  29. package/dist/canvasQuadBatch.js +9 -4
  30. package/dist/canvasQuadBatch.js.map +1 -1
  31. package/dist/canvasRenderState.d.ts +4 -1
  32. package/dist/canvasRenderState.d.ts.map +1 -1
  33. package/dist/canvasRenderState.js +29 -1
  34. package/dist/canvasRenderState.js.map +1 -1
  35. package/dist/canvasRenderTexture.d.ts +14 -0
  36. package/dist/canvasRenderTexture.d.ts.map +1 -0
  37. package/dist/canvasRenderTexture.js +99 -0
  38. package/dist/canvasRenderTexture.js.map +1 -0
  39. package/dist/canvasRenderTexturePool.d.ts +7 -0
  40. package/dist/canvasRenderTexturePool.d.ts.map +1 -0
  41. package/dist/canvasRenderTexturePool.js +92 -0
  42. package/dist/canvasRenderTexturePool.js.map +1 -0
  43. package/dist/canvasRenderTextureResolver.d.ts +3 -0
  44. package/dist/canvasRenderTextureResolver.d.ts.map +1 -0
  45. package/dist/canvasRenderTextureResolver.js +9 -0
  46. package/dist/canvasRenderTextureResolver.js.map +1 -0
  47. package/dist/canvasScale9Shape.d.ts +1 -2
  48. package/dist/canvasScale9Shape.d.ts.map +1 -1
  49. package/dist/canvasScale9Shape.js +5 -115
  50. package/dist/canvasScale9Shape.js.map +1 -1
  51. package/dist/canvasShape.d.ts +3 -2
  52. package/dist/canvasShape.d.ts.map +1 -1
  53. package/dist/canvasShape.js +19 -7
  54. package/dist/canvasShape.js.map +1 -1
  55. package/dist/canvasShapeCommands.d.ts +3 -2
  56. package/dist/canvasShapeCommands.d.ts.map +1 -1
  57. package/dist/canvasShapeCommands.js +21 -17
  58. package/dist/canvasShapeCommands.js.map +1 -1
  59. package/dist/canvasShapeRasterizer.d.ts +3 -0
  60. package/dist/canvasShapeRasterizer.d.ts.map +1 -0
  61. package/dist/canvasShapeRasterizer.js +17 -0
  62. package/dist/canvasShapeRasterizer.js.map +1 -0
  63. package/dist/canvasShapeRegistry.d.ts +4 -4
  64. package/dist/canvasShapeRegistry.d.ts.map +1 -1
  65. package/dist/canvasShapeRegistry.js +15 -10
  66. package/dist/canvasShapeRegistry.js.map +1 -1
  67. package/dist/canvasSprite.d.ts +3 -4
  68. package/dist/canvasSprite.d.ts.map +1 -1
  69. package/dist/canvasSprite.js +28 -50
  70. package/dist/canvasSprite.js.map +1 -1
  71. package/dist/canvasTextureResolver.d.ts +6 -0
  72. package/dist/canvasTextureResolver.d.ts.map +1 -0
  73. package/dist/canvasTextureResolver.js +44 -0
  74. package/dist/canvasTextureResolver.js.map +1 -0
  75. package/dist/canvasTextureWindowSource.d.ts +3 -0
  76. package/dist/canvasTextureWindowSource.d.ts.map +1 -0
  77. package/dist/canvasTextureWindowSource.js +82 -0
  78. package/dist/canvasTextureWindowSource.js.map +1 -0
  79. package/dist/canvasTilemap.d.ts.map +1 -1
  80. package/dist/canvasTilemap.js +9 -8
  81. package/dist/canvasTilemap.js.map +1 -1
  82. package/dist/contract.d.ts +12 -4
  83. package/dist/contract.d.ts.map +1 -1
  84. package/dist/contract.js +12 -4
  85. package/dist/contract.js.map +1 -1
  86. package/dist/enableCanvasTextureResolverGuards.d.ts +4 -0
  87. package/dist/enableCanvasTextureResolverGuards.d.ts.map +1 -0
  88. package/dist/enableCanvasTextureResolverGuards.js +8 -0
  89. package/dist/enableCanvasTextureResolverGuards.js.map +1 -0
  90. package/dist/explainCanvasScene2DCoverage.d.ts +4 -0
  91. package/dist/explainCanvasScene2DCoverage.d.ts.map +1 -0
  92. package/dist/explainCanvasScene2DCoverage.js +43 -0
  93. package/dist/explainCanvasScene2DCoverage.js.map +1 -0
  94. package/dist/explainCanvasTextureResolution.d.ts +3 -0
  95. package/dist/explainCanvasTextureResolution.d.ts.map +1 -0
  96. package/dist/explainCanvasTextureResolution.js +11 -0
  97. package/dist/explainCanvasTextureResolution.js.map +1 -0
  98. package/dist/index.d.ts +2 -1
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +2 -1
  101. package/dist/index.js.map +1 -1
  102. package/package.json +23 -15
  103. package/src/canvasBitmapText.test.ts +13 -9
  104. package/src/canvasBitmapTextureResolver.test.ts +21 -0
  105. package/src/canvasCache.test.ts +34 -1
  106. package/src/canvasFillPattern.test.ts +34 -14
  107. package/src/canvasImageSource.test.ts +127 -41
  108. package/src/canvasImageTextureResolver.test.ts +25 -0
  109. package/src/canvasParticleEmitter2D.test.ts +11 -2
  110. package/src/canvasQuadBatch.test.ts +11 -4
  111. package/src/canvasRenderState.test.ts +53 -0
  112. package/src/canvasRenderTexture.test.ts +133 -0
  113. package/src/canvasRenderTexturePool.test.ts +161 -0
  114. package/src/canvasRenderTextureResolver.test.ts +19 -0
  115. package/src/canvasScale9Shape.test.ts +2 -65
  116. package/src/canvasShape.test.ts +137 -39
  117. package/src/canvasShapeCommands.test.ts +146 -118
  118. package/src/canvasShapeRasterizer.test.ts +102 -0
  119. package/src/canvasShapeRegistry.test.ts +26 -12
  120. package/src/canvasSprite.test.ts +56 -77
  121. package/src/canvasTextureResolver.test.ts +120 -0
  122. package/src/canvasTextureWindowSource.test.ts +17 -0
  123. package/src/canvasTilemap.test.ts +14 -13
  124. package/src/enableCanvasTextureResolverGuards.test.ts +62 -0
  125. package/src/explainCanvasScene2DCoverage.test.ts +87 -0
  126. package/src/explainCanvasTextureResolution.test.ts +37 -0
  127. package/dist/canvasBitmap.d.ts +0 -4
  128. package/dist/canvasBitmap.d.ts.map +0 -1
  129. package/dist/canvasBitmap.js +0 -36
  130. package/dist/canvasBitmap.js.map +0 -1
  131. package/dist/canvasRenderTargetNode2D.d.ts +0 -11
  132. package/dist/canvasRenderTargetNode2D.d.ts.map +0 -1
  133. package/dist/canvasRenderTargetNode2D.js +0 -68
  134. package/dist/canvasRenderTargetNode2D.js.map +0 -1
  135. package/dist/canvasVideo.d.ts +0 -4
  136. package/dist/canvasVideo.d.ts.map +0 -1
  137. package/dist/canvasVideo.js +0 -26
  138. package/dist/canvasVideo.js.map +0 -1
  139. package/src/canvasBitmap.test.ts +0 -92
  140. package/src/canvasRenderTargetNode2D.test.ts +0 -137
  141. package/src/canvasVideo.test.ts +0 -43
@@ -1,4 +1,4 @@
1
1
  import type { CanvasRenderState, RenderProxy2D, SpriteRenderer } from '@flighthq/types/contract';
2
- export declare function drawCanvasBitmapText(state: CanvasRenderState, node: RenderProxy2D): void;
2
+ export declare function drawCanvasSpriteText(state: CanvasRenderState, node: RenderProxy2D): void;
3
3
  export declare const defaultCanvasBitmapTextRenderer: SpriteRenderer;
4
4
  //# sourceMappingURL=canvasBitmapText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasBitmapText.d.ts","sourceRoot":"","sources":["../src/canvasBitmapText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAQlC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAgDxF;AAED,eAAO,MAAM,+BAA+B,EAAE,cAG7C,CAAC"}
1
+ {"version":3,"file":"canvasBitmapText.d.ts","sourceRoot":"","sources":["../src/canvasBitmapText.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iBAAiB,EACjB,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAiDxF;AAED,eAAO,MAAM,+BAA+B,EAAE,cAG7C,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import { noopRendererData } from '@flighthq/render/contract';
2
2
  import { getNode2DRuntime } from '@flighthq/scene2d/contract';
3
3
  import { applyCanvasMaterial } from './canvasMaterialRegistry';
4
+ import { getCanvasRenderStateTextureResolvers } from './canvasRenderState';
5
+ import { resolveCanvasTexture } from './canvasTextureResolver';
4
6
  // Draws a BitmapText leaf on Canvas 2D: one `drawImage` per glyph, per glyph-atlas page. Canvas realizes
5
7
  // no color-adjustment fold, so a node tint is not applied here (honest — the missing
6
8
  // `enableCanvasColorAdjustment` is the signal). Mirrors `drawCanvasQuadBatch`'s vector2 path, one page at
7
9
  // a time.
8
- export function drawCanvasBitmapText(state, node) {
10
+ export function drawCanvasSpriteText(state, node) {
9
11
  const source = node.source;
10
12
  const pages = getNode2DRuntime(source).pages;
11
13
  const context = state.context;
@@ -19,10 +21,12 @@ export function drawCanvasBitmapText(state, node) {
19
21
  context.setTransform(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);
20
22
  for (const page of pages) {
21
23
  const atlas = page.atlas;
22
- const image = atlas.image;
23
- if (image === null || image.source === null || page.instanceCount === 0)
24
+ const texture = atlas.texture;
25
+ if (texture === null || page.instanceCount === 0)
26
+ continue;
27
+ const domImage = resolveCanvasTexture(getCanvasRenderStateTextureResolvers(state), texture);
28
+ if (domImage === null)
24
29
  continue;
25
- const domImage = image.source;
26
30
  const regions = atlas.regions;
27
31
  const numRegions = regions.length;
28
32
  const ids = page.ids;
@@ -47,6 +51,6 @@ export function drawCanvasBitmapText(state, node) {
47
51
  }
48
52
  export const defaultCanvasBitmapTextRenderer = {
49
53
  createData: noopRendererData,
50
- submit: drawCanvasBitmapText,
54
+ submit: drawCanvasSpriteText,
51
55
  };
52
56
  //# sourceMappingURL=canvasBitmapText.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasBitmapText.js","sourceRoot":"","sources":["../src/canvasBitmapText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvasBitmapText.js","sourceRoot":"","sources":["../src/canvasBitmapText.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CanvasTextureResolvers } from '@flighthq/types/contract';
2
+ export declare function registerCanvasBitmapTextureResolver(resolvers: CanvasTextureResolvers): void;
3
+ //# sourceMappingURL=canvasBitmapTextureResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasBitmapTextureResolver.d.ts","sourceRoot":"","sources":["../src/canvasBitmapTextureResolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAU,sBAAsB,EAAW,MAAM,0BAA0B,CAAC;AAKxF,wBAAgB,mCAAmC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAE3F"}
@@ -0,0 +1,21 @@
1
+ import { createImageResourceFromBitmap } from '@flighthq/image/contract';
2
+ import { getTextureSource } from '@flighthq/texture/contract';
3
+ import { BitmapTextureSourceKind } from '@flighthq/types/contract';
4
+ import { registerCanvasTextureResolver } from './canvasTextureResolver';
5
+ export function registerCanvasBitmapTextureResolver(resolvers) {
6
+ registerCanvasTextureResolver(resolvers, BitmapTextureSourceKind, resolveCanvasBitmapTexture);
7
+ }
8
+ function resolveCanvasBitmapTexture(resolvers, texture) {
9
+ const bitmap = getTextureSource(texture);
10
+ if (bitmap === null)
11
+ return null;
12
+ const cache = (resolvers.bitmapElementCache ??= new WeakMap());
13
+ let entry = cache.get(bitmap);
14
+ if (entry === undefined || entry.version !== bitmap.version) {
15
+ const image = createImageResourceFromBitmap(bitmap);
16
+ entry = { element: image.source, version: bitmap.version };
17
+ cache.set(bitmap, entry);
18
+ }
19
+ return entry.element;
20
+ }
21
+ //# sourceMappingURL=canvasBitmapTextureResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasBitmapTextureResolver.js","sourceRoot":"","sources":["../src/canvasBitmapTextureResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,UAAU,mCAAmC,CAAC,SAAiC;IACnF,6BAA6B,CAAC,SAAS,EAAE,uBAAuB,EAAE,0BAA0B,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,0BAA0B,CACjC,SAAiC,EACjC,OAA0B;IAE1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAA4B,CAAC;IACpE,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,kBAAkB,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;QACpD,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,MAA2B,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChF,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC"}
@@ -7,6 +7,12 @@ import type { CanvasRenderState, CanvasRenderTarget, Node2D, Scene2DRenderer, Re
7
7
  * node map, adapter map, and frame counter, so baking never touches the screen state.
8
8
  */
9
9
  export declare function createCanvasCacheState(screenState: CanvasRenderState): CanvasRenderState;
10
+ /**
11
+ * Creates an independent offscreen pipeline whose Canvas targets remain owned by `screenState`.
12
+ * Renderers and policy registrations are creation-time snapshots; traversal/proxy state and host
13
+ * canvases remain independent.
14
+ */
15
+ export declare function createCanvasOffscreenRenderState(screenState: CanvasRenderState): CanvasRenderState;
10
16
  export declare function destroyCanvasRenderCacheTarget(state: CanvasRenderState, cache: RenderCache): void;
11
17
  export declare function enableCanvasRenderCache(state: RenderState): void;
12
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"canvasCache.d.ts","sourceRoot":"","sources":["../src/canvasCache.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,eAAe,EAEf,WAAW,EACX,yBAAyB,EAEzB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAelC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,iBAAiB,CAYxF;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAcjG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,kBAAkB,CAUpB;AAID,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAE3F;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,GAAG,kBAAkB,GAAG,IAAI,CAElH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,iBAAiB,EAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC5C,OAAO,CAgCT;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAG3F;AAuBD,eAAO,MAAM,gCAAgC,EAAE,eAG9C,CAAC"}
1
+ {"version":3,"file":"canvasCache.d.ts","sourceRoot":"","sources":["../src/canvasCache.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,MAAM,EACN,eAAe,EAEf,WAAW,EACX,yBAAyB,EAEzB,WAAW,EACZ,MAAM,0BAA0B,CAAC;AAmBlC;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,iBAAiB,GAAG,iBAAiB,CAExF;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,WAAW,EAAE,iBAAiB,GAAG,iBAAiB,CAiBlG;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAcjG;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,WAAW,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,kBAAkB,CAUpB;AAID,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,CAE3F;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,GAAG,kBAAkB,GAAG,IAAI,CAElH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,iBAAiB,EAC7B,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,GAC5C,OAAO,CAgCT;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAG3F;AAuBD,eAAO,MAAM,gCAAgC,EAAE,eAG9C,CAAC"}
@@ -2,7 +2,7 @@ import { createMatrix, createRectangle } from '@flighthq/geometry/contract';
2
2
  import { computeNodeBoundsRectangle } from '@flighthq/node/contract';
3
3
  import { computeScene2DRenderTargetTransform, computeRenderCacheTransform, computeRenderTargetSize, copyAllRenderersFromRenderState, getRenderProxyCache, noopRendererData, prepareScene2DRender, registerRenderCacheRenderer, } from '@flighthq/render/contract';
4
4
  import { renderCanvasScene2D } from './canvasNode2D';
5
- import { createCanvasRenderState, getCanvasRenderStateRuntime } from './canvasRenderState';
5
+ import { copyCanvasRenderStateRegistrations, createCanvasRenderState, getCanvasRenderStateRuntime, } from './canvasRenderState';
6
6
  import { createCanvasRenderTarget, resizeCanvasRenderTarget, setCanvasRenderTransform2D } from './canvasRenderTarget';
7
7
  import { setCanvasTransform } from './canvasTransform';
8
8
  /**
@@ -13,15 +13,28 @@ import { setCanvasTransform } from './canvasTransform';
13
13
  * node map, adapter map, and frame counter, so baking never touches the screen state.
14
14
  */
15
15
  export function createCanvasCacheState(screenState) {
16
+ return createCanvasOffscreenRenderState(screenState);
17
+ }
18
+ /**
19
+ * Creates an independent offscreen pipeline whose Canvas targets remain owned by `screenState`.
20
+ * Renderers and policy registrations are creation-time snapshots; traversal/proxy state and host
21
+ * canvases remain independent.
22
+ */
23
+ export function createCanvasOffscreenRenderState(screenState) {
16
24
  const screen = getCanvasRenderStateRuntime(screenState);
17
25
  const cacheState = createCanvasRenderState(document.createElement('canvas'), {
26
+ backgroundColor: screenState.backgroundColor,
18
27
  imageSmoothingEnabled: screen.imageSmoothingEnabled,
19
28
  imageSmoothingQuality: screen.imageSmoothingQuality,
20
29
  pixelRatio: screenState.pixelRatio,
21
30
  roundPixels: screenState.roundPixels,
22
31
  sceneGraphSyncPolicy: screenState.sceneGraphSyncPolicy,
23
32
  });
33
+ cacheState.allowSmoothing = screenState.allowSmoothing;
34
+ cacheState.renderAlpha = screenState.renderAlpha;
35
+ cacheState.renderBlendMode = screenState.renderBlendMode;
24
36
  copyAllRenderersFromRenderState(cacheState, screenState);
37
+ copyCanvasRenderStateRegistrations(cacheState, screenState);
25
38
  _cacheStateScreen.set(cacheState, screenState);
26
39
  return cacheState;
27
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"canvasCache.js","sourceRoot":"","sources":["../src/canvasCache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvasCache.js","sourceRoot":"","sources":["../src/canvasCache.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { GradientType, ImageResource, InterpolationMethod, Matrix, SpreadMethod } from '@flighthq/types/contract';
2
- export declare function createBitmapPattern(context: CanvasRenderingContext2D, bitmap: ImageResource, repeat: boolean, smooth?: boolean): CanvasPattern | null;
1
+ import type { CanvasTextureResolvers, GradientType, InterpolationMethod, Matrix, SpreadMethod, Texture } from '@flighthq/types/contract';
2
+ export declare function createBitmapPattern(context: CanvasRenderingContext2D, texture: Readonly<Texture>, resolvers: CanvasTextureResolvers, allowSmoothing?: boolean): CanvasPattern | null;
3
3
  export declare function createGradientPattern(context: CanvasRenderingContext2D, gradientType: GradientType, colors: number[], alphas: number[], ratios: number[], m: Matrix | null, spreadMethod: SpreadMethod, _interpolationMethod: InterpolationMethod, focalPointRatio: number): CanvasPattern | CanvasGradient | null;
4
4
  //# sourceMappingURL=canvasFillPattern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasFillPattern.d.ts","sourceRoot":"","sources":["../src/canvasFillPattern.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,MAAM,EAEN,YAAY,EACb,MAAM,0BAA0B,CAAC;AAKlC,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,OAAO,EACf,MAAM,UAAQ,GACb,aAAa,GAAG,IAAI,CAItB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,wBAAwB,EACjC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChB,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,mBAAmB,EACzC,eAAe,EAAE,MAAM,GACtB,aAAa,GAAG,cAAc,GAAG,IAAI,CAOvC"}
1
+ {"version":3,"file":"canvasFillPattern.d.ts","sourceRoot":"","sources":["../src/canvasFillPattern.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,MAAM,EAEN,YAAY,EACZ,OAAO,EACR,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAC1B,SAAS,EAAE,sBAAsB,EACjC,cAAc,UAAO,GACpB,aAAa,GAAG,IAAI,CAMtB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,wBAAwB,EACjC,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChB,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,mBAAmB,EACzC,eAAe,EAAE,MAAM,GACtB,aAAa,GAAG,cAAc,GAAG,IAAI,CAOvC"}
@@ -1,11 +1,14 @@
1
1
  import { createMatrix } from '@flighthq/geometry/contract';
2
+ import { resolveCanvasTextureWindowSource } from './canvasTextureWindowSource';
2
3
  // Flash's gradient box is normalized to ±819.2 units.
3
4
  const GRADIENT_HALF = 819.2;
4
- export function createBitmapPattern(context, bitmap, repeat, smooth = false) {
5
- if (bitmap.source === null)
5
+ export function createBitmapPattern(context, texture, resolvers, allowSmoothing = true) {
6
+ const source = resolveCanvasTextureWindowSource(resolvers, texture);
7
+ if (source === null)
6
8
  return null;
9
+ const smooth = allowSmoothing && !texture.sampler.magFilter.startsWith('nearest');
7
10
  setSmoothing(context, smooth);
8
- return context.createPattern(bitmap.source, repeat ? 'repeat' : 'no-repeat');
11
+ return context.createPattern(source, getCanvasPatternRepetition(texture));
9
12
  }
10
13
  export function createGradientPattern(context, gradientType, colors, alphas, ratios, m, spreadMethod, _interpolationMethod, focalPointRatio) {
11
14
  const mat = m ?? IDENTITY;
@@ -94,6 +97,17 @@ function createLinearGradient(context, colors, alphas, ratios, m, spreadMethod)
94
97
  octx.fillRect(0, 0, offscreen.width, offscreen.height);
95
98
  return context.createPattern(offscreen, 'no-repeat');
96
99
  }
100
+ function getCanvasPatternRepetition(texture) {
101
+ const repeatX = texture.sampler.wrapU !== 'clamp-to-edge';
102
+ const repeatY = texture.sampler.wrapV !== 'clamp-to-edge';
103
+ if (repeatX && repeatY)
104
+ return 'repeat';
105
+ if (repeatX)
106
+ return 'repeat-x';
107
+ if (repeatY)
108
+ return 'repeat-y';
109
+ return 'no-repeat';
110
+ }
97
111
  function setSmoothing(context, smooth) {
98
112
  if (context.imageSmoothingEnabled !== smooth) {
99
113
  context.imageSmoothingEnabled = smooth;
@@ -1 +1 @@
1
- {"version":3,"file":"canvasFillPattern.js","sourceRoot":"","sources":["../src/canvasFillPattern.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvasFillPattern.js","sourceRoot":"","sources":["../src/canvasFillPattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAW3D,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAE/E,sDAAsD;AACtD,MAAM,aAAa,GAAG,KAAK,CAAC;AAE5B,MAAM,UAAU,mBAAmB,CACjC,OAAiC,EACjC,OAA0B,EAC1B,SAAiC,EACjC,cAAc,GAAG,IAAI;IAErB,MAAM,MAAM,GAAG,gCAAgC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,cAAc,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAClF,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAAiC,EACjC,YAA0B,EAC1B,MAAgB,EAChB,MAAgB,EAChB,MAAgB,EAChB,CAAgB,EAChB,YAA0B,EAC1B,oBAAyC,EACzC,eAAuB;IAEvB,MAAM,GAAG,GAAG,CAAC,IAAI,QAAQ,CAAC;IAE1B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;AAClF,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;AAEhC,SAAS,EAAE,CAAC,CAAa,EAAE,CAAS,EAAE,CAAS;IAC7C,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,QAAwB,EAAE,MAAgB,EAAE,MAAgB,EAAE,MAAgB;IACnG,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAiC,EACjC,MAAgB,EAChB,MAAgB,EAChB,MAAgB,EAChB,CAAa,EACb,eAAuB;IAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC;IAEhE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IAEzC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IACzE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAiC,EACjC,MAAgB,EAChB,MAAgB,EAChB,MAAgB,EAChB,CAAa,EACb,YAA0B;IAE1B,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qEAAqE;IACrE,mDAAmD;IACnD,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;IAEvB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAEnB,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACvC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAC7C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAC3B,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAC3B,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAC3B,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAC5B,CAAC;IAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBACtE,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,CAAC,IAAI,IAAI,CAAC;YACV,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC1E,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,CAAC,IAAI,IAAI,CAAC;QACZ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;gBAC9E,aAAa,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACjD,aAAa,CAAC,YAAY,CAAC,IAAI,GAAG,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3G,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnE,CAAC,IAAI,IAAI,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,0BAA0B,CAAC,OAA0B;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,eAAe,CAAC;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,eAAe,CAAC;IAC1D,IAAI,OAAO,IAAI,OAAO;QAAE,OAAO,QAAQ,CAAC;IACxC,IAAI,OAAO;QAAE,OAAO,UAAU,CAAC;IAC/B,IAAI,OAAO;QAAE,OAAO,UAAU,CAAC;IAC/B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,OAAiC,EAAE,MAAe;IACtE,IAAI,OAAO,CAAC,qBAAqB,KAAK,MAAM,EAAE,CAAC;QAC7C,OAAO,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACzC,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,KAAa;IAC9C,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IACvB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;AACzC,CAAC"}
@@ -1,4 +1,3 @@
1
- import type { CanvasImageSourceKind, CanvasRenderState, ImageResource } from '@flighthq/types/contract';
2
- export declare function explainCanvasImageSource(image: Readonly<ImageResource>): CanvasImageSourceKind;
3
- export declare function resolveCanvasImageSource(state: CanvasRenderState, image: Readonly<ImageResource>): CanvasImageSource | null;
1
+ import type { Bitmap, CanvasImageSourceKind, Image } from '@flighthq/types/contract';
2
+ export declare function explainCanvasImageSource(image: Readonly<Image> | Readonly<Bitmap>): CanvasImageSourceKind;
4
3
  //# sourceMappingURL=canvasImageSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasImageSource.d.ts","sourceRoot":"","sources":["../src/canvasImageSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AASxG,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,qBAAqB,CAI9F;AAaD,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,iBAAiB,EACxB,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAC7B,iBAAiB,GAAG,IAAI,CAkB1B"}
1
+ {"version":3,"file":"canvasImageSource.d.ts","sourceRoot":"","sources":["../src/canvasImageSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAKrF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAGzG"}
@@ -1,45 +1,9 @@
1
- import { createCanvasFromImageResource } from '@flighthq/image/contract';
2
- import { getCanvasRenderStateRuntime } from './canvasRenderState';
3
- // Reports how a resource will resolve on the Canvas backend without drawing or materializing anything
4
- // — the shakeable diagnostic for the otherwise-silent data→element transcode. `element` is free;
5
- // `data` means resolveCanvasImageSource transcodes the pixels into a cached canvas on first use and
6
- // after every `version` bump (a CPU copy the GL/wgpu data path does not incur, since those upload raw
7
- // texels natively). A guard or dev tool surfaces this so the cost is legible, per the diagnostics rule.
1
+ import { BitmapTextureSourceKind } from '@flighthq/types/contract';
2
+ // Reports whether Canvas can draw a source directly or must materialize its bytes. The query never
3
+ // performs the conversion; registerCanvasBitmapTextureResolver is the explicit opt-in that does.
8
4
  export function explainCanvasImageSource(image) {
9
- if (image.source !== null)
10
- return 'element';
11
- if (image.data !== null)
5
+ if (image.kind === BitmapTextureSourceKind)
12
6
  return 'data';
13
- return 'none';
14
- }
15
- // Resolves a (possibly data-only) ImageResource to a CanvasImageSource the 2D context can draw. An
16
- // element-backed resource returns its host `source` directly with no copy. A data-only resource — a
17
- // generated Surface with no element — materializes an HTMLCanvasElement from its raw pixels and caches
18
- // it per render state, re-materializing only when `version` bumps (see invalidateImageResource).
19
- // Returns null when the resource carries neither pixel form.
20
- //
21
- // This is the Canvas parallel to the GL backend's bindGlImageResourceTexture: derived, renderer-owned
22
- // state keyed on the caller's explicit invalidation signal, never written back onto the shared
23
- // resource. It closes the gap where a data-only Surface previously drew nothing on Canvas/DOM unless
24
- // the caller manually built an element (createImageResourceFromSurface) first. The transcode cost is
25
- // reportable via explainCanvasImageSource rather than hidden.
26
- export function resolveCanvasImageSource(state, image) {
27
- if (image.source !== null)
28
- return image.source;
29
- if (image.data === null)
30
- return null;
31
- const runtime = getCanvasRenderStateRuntime(state);
32
- let cache = runtime.imageResourceElementCache;
33
- if (cache === undefined) {
34
- cache = new WeakMap();
35
- runtime.imageResourceElementCache = cache;
36
- }
37
- let entry = cache.get(image);
38
- if (entry === undefined || entry.version !== image.version) {
39
- // data is non-null here, so the transcode never returns null.
40
- entry = { element: createCanvasFromImageResource(image), version: image.version };
41
- cache.set(image, entry);
42
- }
43
- return entry.element;
7
+ return 'element';
44
8
  }
45
9
  //# sourceMappingURL=canvasImageSource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasImageSource.js","sourceRoot":"","sources":["../src/canvasImageSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,sGAAsG;AACtG,iGAAiG;AACjG,oGAAoG;AACpG,sGAAsG;AACtG,wGAAwG;AACxG,MAAM,UAAU,wBAAwB,CAAC,KAA8B;IACrE,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mGAAmG;AACnG,oGAAoG;AACpG,uGAAuG;AACvG,iGAAiG;AACjG,6DAA6D;AAC7D,EAAE;AACF,sGAAsG;AACtG,+FAA+F;AAC/F,qGAAqG;AACrG,qGAAqG;AACrG,8DAA8D;AAC9D,MAAM,UAAU,wBAAwB,CACtC,KAAwB,EACxB,KAA8B;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAC9C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,yBAAyB,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC3D,8DAA8D;QAC9D,KAAK,GAAG,EAAE,OAAO,EAAE,6BAA6B,CAAC,KAAK,CAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACnF,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"canvasImageSource.js","sourceRoot":"","sources":["../src/canvasImageSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,mGAAmG;AACnG,iGAAiG;AACjG,MAAM,UAAU,wBAAwB,CAAC,KAAyC;IAChF,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB;QAAE,OAAO,MAAM,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CanvasTextureResolvers } from '@flighthq/types/contract';
2
+ export declare function registerCanvasImageTextureResolver(resolvers: CanvasTextureResolvers): void;
3
+ //# sourceMappingURL=canvasImageTextureResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasImageTextureResolver.d.ts","sourceRoot":"","sources":["../src/canvasImageTextureResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAkB,MAAM,0BAA0B,CAAC;AAKvF,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAE1F"}
@@ -0,0 +1,10 @@
1
+ import { getTextureSource } from '@flighthq/texture/contract';
2
+ import { ImageTextureSourceKind } from '@flighthq/types/contract';
3
+ import { registerCanvasTextureResolver } from './canvasTextureResolver';
4
+ export function registerCanvasImageTextureResolver(resolvers) {
5
+ registerCanvasTextureResolver(resolvers, ImageTextureSourceKind, resolveCanvasImageTexture);
6
+ }
7
+ function resolveCanvasImageTexture(_resolvers, texture) {
8
+ return getTextureSource(texture)?.source ?? null;
9
+ }
10
+ //# sourceMappingURL=canvasImageTextureResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvasImageTextureResolver.js","sourceRoot":"","sources":["../src/canvasImageTextureResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AAExE,MAAM,UAAU,kCAAkC,CAAC,SAAiC;IAClF,6BAA6B,CAAC,SAAS,EAAE,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,yBAAyB,CAChC,UAAkC,EAClC,OAA0B;IAE1B,OAAQ,gBAAgB,CAAC,OAAO,CAA4B,EAAE,MAAM,IAAI,IAAI,CAAC;AAC/E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvasParticleEmitter2D.d.ts","sourceRoot":"","sources":["../src/canvasParticleEmitter2D.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAMpH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAuDtG;AAED,eAAO,MAAM,sCAAsC,EAAE,cAGpD,CAAC"}
1
+ {"version":3,"file":"canvasParticleEmitter2D.d.ts","sourceRoot":"","sources":["../src/canvasParticleEmitter2D.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAqB,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AASpH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,GAAG,IAAI,CAyDtG;AAED,eAAO,MAAM,sCAAsC,EAAE,cAGpD,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { noopRendererData } from '@flighthq/render/contract';
2
+ import { getCanvasRenderStateTextureResolvers } from './canvasRenderState';
3
+ import { resolveCanvasTexture } from './canvasTextureResolver';
2
4
  // Canvas 2D does not support per-pixel color multiplication, so only alpha
3
5
  // and transform (position, rotation, scale) are applied. Color tint values
4
6
  // from the emitter config are silently ignored. Use the Gl renderer for
@@ -6,16 +8,19 @@ import { noopRendererData } from '@flighthq/render/contract';
6
8
  export function drawCanvasParticleEmitter2D(state, renderProxy) {
7
9
  const source = renderProxy.source;
8
10
  const { atlas, alphas, ids, particleCount, transforms } = source.data;
9
- if (atlas === null || atlas.image === null || atlas.image.source === null || particleCount === 0)
11
+ if (atlas === null || atlas.texture === null || particleCount === 0)
12
+ return;
13
+ const imageSource = resolveCanvasTexture(getCanvasRenderStateTextureResolvers(state), atlas.texture);
14
+ if (imageSource === null)
10
15
  return;
11
16
  const regions = atlas.regions;
12
17
  const numRegions = regions.length;
13
18
  const nodeAlpha = renderProxy.alpha;
14
19
  const t = renderProxy.transform2D;
15
- const imageSource = atlas.image.source;
16
20
  const context = state.context;
17
21
  state.applyBlendMode?.(state, renderProxy.blendMode);
18
- if (!state.allowSmoothing)
22
+ const smoothing = state.allowSmoothing && !atlas.texture.sampler.magFilter.startsWith('nearest');
23
+ if (!smoothing)
19
24
  context.imageSmoothingEnabled = false;
20
25
  for (let i = 0; i < particleCount; i++) {
21
26
  const id = ids[i];
@@ -54,7 +59,7 @@ export function drawCanvasParticleEmitter2D(state, renderProxy) {
54
59
  context.setTransform(a, b, c, d, tx, ty);
55
60
  context.drawImage(imageSource, region.x, region.y, region.width, region.height, 0, 0, region.width, region.height);
56
61
  }
57
- if (!state.allowSmoothing)
62
+ if (!smoothing)
58
63
  context.imageSmoothingEnabled = true;
59
64
  }
60
65
  export const defaultCanvasParticleEmitter2DRenderer = {
@@ -1 +1 @@
1
- {"version":3,"file":"canvasParticleEmitter2D.js","sourceRoot":"","sources":["../src/canvasParticleEmitter2D.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvasParticleEmitter2D.js","sourceRoot":"","sources":["../src/canvasParticleEmitter2D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EAAE,oCAAoC,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,2EAA2E;AAC3E,2EAA2E;AAC3E,wEAAwE;AACxE,oCAAoC;AACpC,MAAM,UAAU,2BAA2B,CAAC,KAAwB,EAAE,WAA0B;IAC9F,MAAM,MAAM,GAAG,WAAW,CAAC,MAA2B,CAAC;IACvD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IACtE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO;IAC5E,MAAM,WAAW,GAAG,oBAAoB,CAAC,oCAAoC,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACrG,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO;IAEjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAClC,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;IACpC,MAAM,CAAC,GAAG,WAAW,CAAC,WAAW,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAE9B,KAAK,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACjG,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,qBAAqB,GAAG,KAAK,CAAC;IAEtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,UAAU;YAAE,SAAS;QACzC,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC;YAAE,SAAS;QAEtD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAEjC,4EAA4E;QAC5E,sDAAsD;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACxC,IAAI,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAU,EAAE,EAAU,CAAC;QACvE,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC3B,CAAC,GAAG,IAAI,CAAC;YACT,CAAC,GAAG,IAAI,CAAC;YACT,CAAC,GAAG,CAAC,IAAI,CAAC;YACV,CAAC,GAAG,IAAI,CAAC;YACT,EAAE,GAAG,EAAE,CAAC;YACR,EAAE,GAAG,EAAE,CAAC;QACV,CAAC;aAAM,CAAC;YACN,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC7B,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAClC,CAAC;QAED,OAAO,CAAC,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACrH,CAAC;IAED,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,MAAM,sCAAsC,GAAmB;IACpE,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,2BAA2B;CACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"canvasQuadBatch.d.ts","sourceRoot":"","sources":["../src/canvasQuadBatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAa,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI5G,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAqF5F;AAED,eAAO,MAAM,8BAA8B,EAAE,cAG5C,CAAC"}
1
+ {"version":3,"file":"canvasQuadBatch.d.ts","sourceRoot":"","sources":["../src/canvasQuadBatch.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAa,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM5G,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAuF5F;AAED,eAAO,MAAM,8BAA8B,EAAE,cAG5C,CAAC"}
@@ -1,15 +1,19 @@
1
1
  import { acquireMatrix, multiplyMatrix, releaseMatrix, setMatrixFromFloat32Array } from '@flighthq/geometry/contract';
2
2
  import { noopRendererData } from '@flighthq/render/contract';
3
3
  import { applyCanvasMaterial } from './canvasMaterialRegistry';
4
+ import { getCanvasRenderStateTextureResolvers } from './canvasRenderState';
5
+ import { resolveCanvasTexture } from './canvasTextureResolver';
4
6
  export function drawCanvasQuadBatch(state, quadBatch) {
5
7
  const source = quadBatch.source;
6
8
  const data = source.data;
7
9
  const { atlas, instanceCount, ids, transforms } = data;
8
- if (atlas === null || atlas.image === null || atlas.image.source === null || instanceCount === 0)
10
+ if (atlas === null || atlas.texture === null || instanceCount === 0)
11
+ return;
12
+ const image = resolveCanvasTexture(getCanvasRenderStateTextureResolvers(state), atlas.texture);
13
+ if (image === null)
9
14
  return;
10
15
  state.applyBlendMode?.(state, quadBatch.blendMode);
11
16
  const context = state.context;
12
- const image = atlas.image.source;
13
17
  const regions = atlas.regions;
14
18
  const numRegions = regions.length;
15
19
  const transform = quadBatch.transform2D;
@@ -17,7 +21,8 @@ export function drawCanvasQuadBatch(state, quadBatch) {
17
21
  const quadTransform = acquireMatrix();
18
22
  const stride = data.transformType === 'vector2' ? 2 : 6;
19
23
  context.globalAlpha = quadBatch.alpha;
20
- if (!state.allowSmoothing /*|| !quadBatch.smoothing*/) {
24
+ const smoothing = state.allowSmoothing && !atlas.texture.sampler.magFilter.startsWith('nearest');
25
+ if (!smoothing) {
21
26
  context.imageSmoothingEnabled = false;
22
27
  }
23
28
  const restoreMaterial = applyCanvasMaterial(state, quadBatch.material);
@@ -51,7 +56,7 @@ export function drawCanvasQuadBatch(state, quadBatch) {
51
56
  context.restore();
52
57
  context.setTransform(1, 0, 0, 1, 0, 0);
53
58
  releaseMatrix(quadTransform);
54
- if (!state.allowSmoothing /*|| !quadBatch.smoothing*/) {
59
+ if (!smoothing) {
55
60
  context.imageSmoothingEnabled = true;
56
61
  }
57
62
  // popClip(state);
@@ -1 +1 @@
1
- {"version":3,"file":"canvasQuadBatch.js","sourceRoot":"","sources":["../src/canvasQuadBatch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"canvasQuadBatch.js","sourceRoot":"","sources":["../src/canvasQuadBatch.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import type { CanvasRenderOptions, CanvasRenderState, CanvasRenderStateRuntime } from '@flighthq/types/contract';
1
+ import type { CanvasRenderOptions, CanvasRenderState, CanvasRenderStateRuntime, CanvasTextureResolvers } from '@flighthq/types/contract';
2
+ export declare function copyCanvasRenderStateRegistrations(target: CanvasRenderState, source: CanvasRenderState): void;
2
3
  export declare function createCanvasRenderState(canvas: HTMLCanvasElement, options?: Partial<CanvasRenderOptions>): CanvasRenderState;
3
4
  export declare function createCanvasRenderStateRuntime(): CanvasRenderStateRuntime;
5
+ export declare function destroyCanvasRenderState(state: CanvasRenderState): void;
4
6
  export declare function getCanvasRenderStateRuntime(state: CanvasRenderState): CanvasRenderStateRuntime;
7
+ export declare function getCanvasRenderStateTextureResolvers(state: CanvasRenderState): CanvasTextureResolvers;
5
8
  //# sourceMappingURL=canvasRenderState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasRenderState.d.ts","sourceRoot":"","sources":["../src/canvasRenderState.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGjH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACzC,iBAAiB,CA8BnB;AAMD,wBAAgB,8BAA8B,IAAI,wBAAwB,CAEzE;AAID,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,GAAG,wBAAwB,CAE9F"}
1
+ {"version":3,"file":"canvasRenderState.d.ts","sourceRoot":"","sources":["../src/canvasRenderState.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAOlC,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAS7G;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACzC,iBAAiB,CAkCnB;AAMD,wBAAgB,8BAA8B,IAAI,wBAAwB,CAEzE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAEvE;AAID,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,iBAAiB,GAAG,wBAAwB,CAE9F;AAQD,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,iBAAiB,GAAG,sBAAsB,CAErG"}
@@ -1,6 +1,19 @@
1
1
  import { createMatrix } from '@flighthq/geometry/contract';
2
- import { createRenderState as _createRenderState, createRenderStateRuntime, setRenderStateBackgroundColor, } from '@flighthq/render/contract';
2
+ import { copyRenderStateRegistrations, createRenderState as _createRenderState, createRenderStateRuntime, destroyRenderState, setRenderStateBackgroundColor, } from '@flighthq/render/contract';
3
3
  import { EntityRuntimeKey } from '@flighthq/types/contract';
4
+ import { createCanvasTextureResolvers } from './canvasTextureResolver';
5
+ // Explicit snapshot re-copy for policy that is meaningful to a derived Canvas pipeline. Resource
6
+ // caches remain state-local; registrations are cloned so later changes do not leak across states.
7
+ export function copyCanvasRenderStateRegistrations(target, source) {
8
+ const targetRuntime = getCanvasRenderStateRuntime(target);
9
+ const sourceRuntime = getCanvasRenderStateRuntime(source);
10
+ target.applyBlendMode = source.applyBlendMode;
11
+ target.canvasCssFilterResolver = source.canvasCssFilterResolver;
12
+ targetRuntime.canvasTextureResolvers.registry = copyMap(sourceRuntime.canvasTextureResolvers.registry);
13
+ targetRuntime.materialRendererMap = copyMap(sourceRuntime.materialRendererMap);
14
+ targetRuntime.canvasRenderEffectRegistry = copyMap(sourceRuntime.canvasRenderEffectRegistry);
15
+ copyRenderStateRegistrations(target, source);
16
+ }
4
17
  export function createCanvasRenderState(canvas, options = {}) {
5
18
  const context = canvas.getContext('2d', options.contextAttributes || undefined);
6
19
  if (!context)
@@ -22,6 +35,10 @@ export function createCanvasRenderState(canvas, options = {}) {
22
35
  state.contextAttributes = context.getContextAttributes();
23
36
  const runtime = createCanvasRenderStateRuntime();
24
37
  state[EntityRuntimeKey] = runtime;
38
+ // The state owns a resolution set and points its miss seam at its own emitter. The closure reads the
39
+ // emitter at call time, so enabling the guards later still reports through it.
40
+ runtime.canvasTextureResolvers = createCanvasTextureResolvers();
41
+ runtime.canvasTextureResolvers.registryMiss = (registry, kind) => runtime.registryMiss?.(registry, kind);
25
42
  runtime.currentBlendMode = null;
26
43
  runtime.imageSmoothingEnabled = options.imageSmoothingEnabled ?? true;
27
44
  runtime.imageSmoothingQuality = options.imageSmoothingQuality ?? 'high';
@@ -36,9 +53,20 @@ export function createCanvasRenderState(canvas, options = {}) {
36
53
  export function createCanvasRenderStateRuntime() {
37
54
  return createRenderStateRuntime();
38
55
  }
56
+ export function destroyCanvasRenderState(state) {
57
+ destroyRenderState(state);
58
+ }
39
59
  // Resolves the package-private 2D-canvas runtime attached to a CanvasRenderState. Mutable by design:
40
60
  // the render path writes its fields every frame.
41
61
  export function getCanvasRenderStateRuntime(state) {
42
62
  return state[EntityRuntimeKey];
43
63
  }
64
+ function copyMap(source) {
65
+ return source === null || source === undefined ? undefined : new Map(source);
66
+ }
67
+ // The state's own resolution set, which a shape rasterizer on another backend can share so both resolve
68
+ // one Texture through one transcode cache.
69
+ export function getCanvasRenderStateTextureResolvers(state) {
70
+ return getCanvasRenderStateRuntime(state).canvasTextureResolvers;
71
+ }
44
72
  //# sourceMappingURL=canvasRenderState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canvasRenderState.js","sourceRoot":"","sources":["../src/canvasRenderState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,MAAM,UAAU,uBAAuB,CACrC,MAAyB,EACzB,UAAwC,EAAE;IAE1C,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,IAAI,SAAS,CAAC,CAAC;IAChF,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAC/B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;QACnC,iBAAiB,EAAE,OAAO,CAAC,eAAe,IAAI,YAAY,EAAE;QAC5D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;QACzC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;KACnD,CAAsB,CAAC;IAExB,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI;QAAE,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnG,gGAAgG;IAChG,yBAAyB;IACzB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACpC,KAAuC,CAAC,MAAM,GAAG,MAAM,CAAC;IACxD,KAA+C,CAAC,OAAO,GAAG,OAAO,CAAC;IAClE,KAAiE,CAAC,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAEtH,MAAM,OAAO,GAAG,8BAA8B,EAAE,CAAC;IACjD,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC;IACtE,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,IAAI,MAAM,CAAC;IAExE,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC9D,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mGAAmG;AACnG,8EAA8E;AAC9E,qGAAqG;AACrG,yDAAyD;AACzD,MAAM,UAAU,8BAA8B;IAC5C,OAAO,wBAAwB,EAA8B,CAAC;AAChE,CAAC;AAED,qGAAqG;AACrG,iDAAiD;AACjD,MAAM,UAAU,2BAA2B,CAAC,KAAwB;IAClE,OAAO,KAAK,CAAC,gBAAgB,CAA6B,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"canvasRenderState.js","sourceRoot":"","sources":["../src/canvasRenderState.ts"],"names":[],"mappings":"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"}