@blakron/core 0.5.0 → 0.5.2

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 (89) hide show
  1. package/dist/blakron/display/DisplayObject.d.ts +1 -1
  2. package/dist/blakron/display/DisplayObject.d.ts.map +1 -1
  3. package/dist/blakron/display/DisplayObject.js +1 -1
  4. package/dist/blakron/display/DisplayObject.js.map +1 -1
  5. package/dist/blakron/display/Graphics.d.ts.map +1 -1
  6. package/dist/blakron/display/Graphics.js +2 -1
  7. package/dist/blakron/display/Graphics.js.map +1 -1
  8. package/dist/blakron/player/Player.d.ts.map +1 -1
  9. package/dist/blakron/player/Player.js +1 -2
  10. package/dist/blakron/player/Player.js.map +1 -1
  11. package/dist/blakron/player/RenderPipe.d.ts +1 -1
  12. package/dist/blakron/player/RenderPipe.d.ts.map +1 -1
  13. package/dist/blakron/player/createPlayer.d.ts.map +1 -1
  14. package/dist/blakron/player/createPlayer.js +1 -2
  15. package/dist/blakron/player/createPlayer.js.map +1 -1
  16. package/dist/blakron/player/index.d.ts +2 -4
  17. package/dist/blakron/player/index.d.ts.map +1 -1
  18. package/dist/blakron/player/index.js +2 -4
  19. package/dist/blakron/player/index.js.map +1 -1
  20. package/dist/blakron/player/webgl/WebGLProgram.d.ts +3 -2
  21. package/dist/blakron/player/webgl/WebGLProgram.d.ts.map +1 -1
  22. package/dist/blakron/player/webgl/WebGLProgram.js.map +1 -1
  23. package/dist/blakron/player/webgl/WebGLRenderContext.d.ts +9 -1
  24. package/dist/blakron/player/webgl/WebGLRenderContext.d.ts.map +1 -1
  25. package/dist/blakron/player/webgl/WebGLRenderContext.js +41 -14
  26. package/dist/blakron/player/webgl/WebGLRenderContext.js.map +1 -1
  27. package/dist/blakron/player/webgl/WebGLRenderTarget.d.ts +2 -1
  28. package/dist/blakron/player/webgl/WebGLRenderTarget.d.ts.map +1 -1
  29. package/dist/blakron/player/webgl/WebGLRenderTarget.js.map +1 -1
  30. package/dist/blakron/player/webgl/WebGLRenderer.d.ts.map +1 -1
  31. package/dist/blakron/player/webgl/WebGLRenderer.js +3 -8
  32. package/dist/blakron/player/webgl/WebGLRenderer.js.map +1 -1
  33. package/dist/blakron/player/webgl/WebGLUtils.d.ts +9 -3
  34. package/dist/blakron/player/webgl/WebGLUtils.d.ts.map +1 -1
  35. package/dist/blakron/player/webgl/WebGLUtils.js +2 -2
  36. package/dist/blakron/player/webgl/WebGLUtils.js.map +1 -1
  37. package/dist/blakron/player/webgl/index.d.ts +1 -1
  38. package/dist/blakron/player/webgl/index.d.ts.map +1 -1
  39. package/dist/blakron/player/webgl/index.js +1 -1
  40. package/dist/blakron/player/webgl/index.js.map +1 -1
  41. package/dist/blakron/player/webgl/pipes/GraphicsPipe.d.ts +2 -0
  42. package/dist/blakron/player/webgl/pipes/GraphicsPipe.d.ts.map +1 -1
  43. package/dist/blakron/player/webgl/pipes/GraphicsPipe.js +39 -2
  44. package/dist/blakron/player/webgl/pipes/GraphicsPipe.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/blakron/player/CanvasRenderer.d.ts +0 -49
  47. package/dist/blakron/player/CanvasRenderer.d.ts.map +0 -1
  48. package/dist/blakron/player/CanvasRenderer.js +0 -792
  49. package/dist/blakron/player/CanvasRenderer.js.map +0 -1
  50. package/dist/blakron/player/DisplayList.d.ts +0 -32
  51. package/dist/blakron/player/DisplayList.d.ts.map +0 -1
  52. package/dist/blakron/player/DisplayList.js +0 -78
  53. package/dist/blakron/player/DisplayList.js.map +0 -1
  54. package/dist/blakron/player/InstructionSet.d.ts +0 -49
  55. package/dist/blakron/player/InstructionSet.d.ts.map +0 -1
  56. package/dist/blakron/player/InstructionSet.js +0 -45
  57. package/dist/blakron/player/InstructionSet.js.map +0 -1
  58. package/dist/blakron/player/RenderBuffer.d.ts +0 -35
  59. package/dist/blakron/player/RenderBuffer.d.ts.map +0 -1
  60. package/dist/blakron/player/RenderBuffer.js +0 -83
  61. package/dist/blakron/player/RenderBuffer.js.map +0 -1
  62. package/dist/blakron/player/pipes/BitmapPipe.d.ts +0 -35
  63. package/dist/blakron/player/pipes/BitmapPipe.d.ts.map +0 -1
  64. package/dist/blakron/player/pipes/BitmapPipe.js +0 -130
  65. package/dist/blakron/player/pipes/BitmapPipe.js.map +0 -1
  66. package/dist/blakron/player/pipes/FilterPipe.d.ts +0 -68
  67. package/dist/blakron/player/pipes/FilterPipe.d.ts.map +0 -1
  68. package/dist/blakron/player/pipes/FilterPipe.js +0 -169
  69. package/dist/blakron/player/pipes/FilterPipe.js.map +0 -1
  70. package/dist/blakron/player/pipes/GraphicsPipe.d.ts +0 -36
  71. package/dist/blakron/player/pipes/GraphicsPipe.d.ts.map +0 -1
  72. package/dist/blakron/player/pipes/GraphicsPipe.js +0 -126
  73. package/dist/blakron/player/pipes/GraphicsPipe.js.map +0 -1
  74. package/dist/blakron/player/pipes/MaskPipe.d.ts +0 -58
  75. package/dist/blakron/player/pipes/MaskPipe.d.ts.map +0 -1
  76. package/dist/blakron/player/pipes/MaskPipe.js +0 -190
  77. package/dist/blakron/player/pipes/MaskPipe.js.map +0 -1
  78. package/dist/blakron/player/pipes/MeshPipe.d.ts +0 -22
  79. package/dist/blakron/player/pipes/MeshPipe.d.ts.map +0 -1
  80. package/dist/blakron/player/pipes/MeshPipe.js +0 -50
  81. package/dist/blakron/player/pipes/MeshPipe.js.map +0 -1
  82. package/dist/blakron/player/pipes/TextPipe.d.ts +0 -52
  83. package/dist/blakron/player/pipes/TextPipe.d.ts.map +0 -1
  84. package/dist/blakron/player/pipes/TextPipe.js +0 -163
  85. package/dist/blakron/player/pipes/TextPipe.js.map +0 -1
  86. package/dist/blakron/player/webgl/ShaderLib.d.ts +0 -34
  87. package/dist/blakron/player/webgl/ShaderLib.d.ts.map +0 -1
  88. package/dist/blakron/player/webgl/ShaderLib.js +0 -268
  89. package/dist/blakron/player/webgl/ShaderLib.js.map +0 -1
@@ -2,6 +2,15 @@ import { Rectangle } from '../../../geom/Rectangle.js';
2
2
  import { RenderBuffer } from '../../canvas/index.js';
3
3
  // Shared scratch rectangle — avoids per-execute allocation.
4
4
  const _scratchBounds = new Rectangle();
5
+ // ── Texture GC registry ───────────────────────────────────────────────────────
6
+ /**
7
+ * When a Graphics object is GC'd, automatically release its WebGL texture.
8
+ * This prevents GPU memory leaks when Shapes are created and discarded without
9
+ * an explicit destroyRenderable() call.
10
+ */
11
+ const _textureRegistry = new FinalizationRegistry(({ gl, texture }) => {
12
+ gl.deleteTexture(texture);
13
+ });
5
14
  // ── Pipe ──────────────────────────────────────────────────────────────────────
6
15
  /**
7
16
  * Handles WebGL rendering of Shape / Sprite graphics.
@@ -17,6 +26,8 @@ export class GraphicsPipe {
17
26
  // ── Instance fields ───────────────────────────────────────────────────────
18
27
  _canvasRenderer;
19
28
  _cache = new WeakMap();
29
+ _registryTokens = new WeakMap();
30
+ _gl;
20
31
  // ── Constructor ───────────────────────────────────────────────────────────
21
32
  constructor(canvasRenderer) {
22
33
  this._canvasRenderer = canvasRenderer;
@@ -52,8 +63,20 @@ export class GraphicsPipe {
52
63
  }
53
64
  destroyRenderable(renderable) {
54
65
  const graphics = renderable.graphics;
55
- if (graphics)
56
- this._cache.delete(graphics);
66
+ if (!graphics)
67
+ return;
68
+ const cache = this._cache.get(graphics);
69
+ if (cache?.texture) {
70
+ // Unregister from GC registry and delete texture immediately.
71
+ const token = this._registryTokens.get(graphics);
72
+ if (token) {
73
+ _textureRegistry.unregister(token);
74
+ this._registryTokens.delete(graphics);
75
+ }
76
+ if (this._gl)
77
+ this._gl.deleteTexture(cache.texture);
78
+ }
79
+ this._cache.delete(graphics);
57
80
  }
58
81
  // ── Execute ───────────────────────────────────────────────────────────────
59
82
  execute(inst, buffer) {
@@ -61,6 +84,9 @@ export class GraphicsPipe {
61
84
  if (graphics.commands.length === 0) {
62
85
  return;
63
86
  }
87
+ // Cache the GL context for use in destroyRenderable.
88
+ if (!this._gl)
89
+ this._gl = buffer.context.gl;
64
90
  const bounds = _scratchBounds;
65
91
  bounds.setEmpty();
66
92
  graphics.measureContentBounds(bounds);
@@ -98,9 +124,20 @@ export class GraphicsPipe {
98
124
  const surface = cache.renderBuffer.surface;
99
125
  if (!cache.texture) {
100
126
  cache.texture = buffer.context.createTexture(surface);
127
+ // Register for GC-based cleanup.
128
+ const token = {};
129
+ _textureRegistry.register(graphics, { gl: buffer.context.gl, texture: cache.texture }, token);
130
+ this._registryTokens.set(graphics, token);
101
131
  }
102
132
  else {
133
+ // Unregister old texture, create new registration for updated texture.
134
+ const oldToken = this._registryTokens.get(graphics);
135
+ if (oldToken)
136
+ _textureRegistry.unregister(oldToken);
103
137
  buffer.context.updateTexture(cache.texture, surface);
138
+ const token = {};
139
+ _textureRegistry.register(graphics, { gl: buffer.context.gl, texture: cache.texture }, token);
140
+ this._registryTokens.set(graphics, token);
104
141
  }
105
142
  cache.textureWidth = w;
106
143
  cache.textureHeight = h;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicsPipe.js","sourceRoot":"","sources":["../../../../../src/blakron/player/webgl/pipes/GraphicsPipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphicsPipe.js","sourceRoot":"","sources":["../../../../../src/blakron/player/webgl/pipes/GraphicsPipe.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAMvD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,4DAA4D;AAC5D,MAAM,cAAc,GAAG,IAAI,SAAS,EAAE,CAAC;AAEvC,iFAAiF;AAEjF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,CAAoC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;IACxG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAyBH,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IACxB,6EAA6E;IACtE,MAAM,CAAU,OAAO,GAAG,UAAU,CAAC;IACpC,MAAM,CAAU,KAAK,GAA0B,EAAE,CAAC;IAE1D,6EAA6E;IAC5D,eAAe,CAAiB;IAChC,MAAM,GAAG,IAAI,OAAO,EAA2B,CAAC;IAChD,eAAe,GAAG,IAAI,OAAO,EAAoB,CAAC;IAC3D,GAAG,CAAM;IAEjB,6EAA6E;IAC7E,YAAmB,cAA8B;QAChD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,UAAyB,EAAE,QAAkB,EAAE,EAAU,EAAE,EAAU;QAC1F,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI;YACxC,YAAY,EAAE,UAAU;YACxB,UAAU;YACV,QAAQ;YACR,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACX,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,IAAyB;QAC9C,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,6EAA6E;IAEtE,mBAAmB,CAAC,UAAyB,EAAE,GAAmB;QACxE,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO;QACR,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,gBAAgB,CAAC,WAA0B;QACjD,6DAA6D;QAC7D,iEAAiE;IAClE,CAAC;IAEM,iBAAiB,CAAC,UAAyB;QACjD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,8DAA8D;YAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,KAAK,EAAE,CAAC;gBACX,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YACD,IAAI,IAAI,CAAC,GAAG;gBAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED,6EAA6E;IAEtE,OAAO,CAAC,IAAyB,EAAE,MAAyB;QAClE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAC1B,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO;QACR,CAAC;QAED,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAE5C,MAAM,MAAM,GAAG,cAAc,CAAC;QAC9B,MAAM,CAAC,QAAQ,EAAE,CAAC;QAClB,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACxB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QAEnB,yEAAyE;QACzE,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,KAAK,GAAG;gBACP,YAAY,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpC,OAAO,EAAE,SAAS;gBAClB,YAAY,EAAE,CAAC;gBACf,aAAa,EAAE,CAAC;gBAChB,OAAO,EAAE,MAAM,CAAC,CAAC;gBACjB,OAAO,EAAE,MAAM,CAAC,CAAC;aACjB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,CAAC;QAExG,IAAI,YAAY,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;YACD,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC3B,sEAAsE;YACtE,0EAA0E;YAC1E,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAC3C,QAAQ,EACR,KAAK,CAAC,YAAY,CAAC,OAAO,EAC1B,CAAC,MAAM,CAAC,CAAC,EACT,CAAC,MAAM,CAAC,CAAC,EACT,KAAK,EACL,IAAI,CACJ,CAAC;YACF,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACtD,iCAAiC;gBACjC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC9F,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACP,uEAAuE;gBACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,QAAQ;oBAAE,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACpD,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjB,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC9F,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC3C,CAAC;YACD,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;YACvB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;YACxB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YACzB,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;YACzB,8DAA8D;YAC9D,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QAED,yEAAyE;QACzE,iEAAiE;QACjE,uEAAuE;QACvE,MAAM,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YAChD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAExE,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAC3B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blakron/core",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "description": "Modern rewrite of the Egret game engine — WebGL multi-texture batching, instruction-driven render pipeline, strict TypeScript, Egret-compatible API",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -1,49 +0,0 @@
1
- import { DisplayObject } from '../display/DisplayObject.js';
2
- import { Bitmap } from '../display/Bitmap.js';
3
- import { Graphics } from '../display/Graphics.js';
4
- import { Matrix } from '../geom/Matrix.js';
5
- import { TextField } from '../text/TextField.js';
6
- import { RenderBuffer } from './RenderBuffer.js';
7
- /**
8
- * Canvas 2D renderer. Traverses the DisplayObject tree and draws each node
9
- * using the Canvas 2D API. Equivalent to Egret's `CanvasRenderer`.
10
- *
11
- * Performance notes:
12
- * - Currently does full-tree traversal and full-canvas redraw every frame.
13
- * Egret used a DisplayList with dirty-region tracking to only redraw changed areas.
14
- * This should be added when performance becomes a concern.
15
- * - Egret used a RenderNode intermediate layer (BitmapNode, GraphicsNode, etc.)
16
- * to cache rendering instructions. Blakron reads DisplayObject data directly,
17
- * which is simpler but skips the caching benefit. If profiling shows the JS-side
18
- * traversal is a bottleneck, consider adding a lightweight render command cache.
19
- * - For high-performance scenarios, a WebGL renderer with batch rendering should
20
- * be implemented as an alternative backend.
21
- */
22
- export declare class CanvasRenderer {
23
- private _hasFill;
24
- private _hasStroke;
25
- /**
26
- * Renders a display object tree into the given buffer.
27
- */
28
- render(displayObject: DisplayObject, buffer: RenderBuffer, matrix?: Matrix): number;
29
- /** @internal Used by WebGLRenderer for offscreen DisplayList rendering. */
30
- renderToContext(displayObject: DisplayObject, ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number): void;
31
- /** @internal Used by WebGLRenderer to rasterize a Graphics object into a Canvas 2D context. */
32
- renderGraphicsToContext(graphics: Graphics, ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number, forHitTest?: boolean, skipCache?: boolean): void;
33
- /** @internal Used by WebGL TextPipe to rasterize a TextField into a Canvas 2D context. */
34
- renderTextFieldToContext(tf: TextField, ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number): void;
35
- /** @internal Used by Bitmap pixel hit test. */
36
- renderBitmapToContext(bitmap: Bitmap, ctx: CanvasRenderingContext2D, offsetX: number, offsetY: number): void;
37
- private drawDisplayObject;
38
- private drawWithScrollRect;
39
- private drawWithFilter;
40
- private drawWithClip;
41
- private renderSelf;
42
- private renderBitmap;
43
- private renderMesh;
44
- private renderGraphics;
45
- private renderTextField;
46
- private flushOpenPath;
47
- private executeGraphicsCommand;
48
- }
49
- //# sourceMappingURL=CanvasRenderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CanvasRenderer.d.ts","sourceRoot":"","sources":["../../../src/blakron/player/CanvasRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgC,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,MAAM,EAAyB,MAAM,sBAAsB,CAAC;AAIrE,OAAO,EAAE,QAAQ,EAAsB,MAAM,wBAAwB,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAM3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,OAAO,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAYhE;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc;IAE1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAI3B;;OAEG;IACI,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM;IAW1F,2EAA2E;IACpE,eAAe,CACrB,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,IAAI;IAIP,+FAA+F;IACxF,uBAAuB,CAC7B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,UAAQ,EAClB,SAAS,UAAQ,GACf,IAAI;IAIP,0FAA0F;IACnF,wBAAwB,CAC9B,EAAE,EAAE,SAAS,EACb,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,IAAI;IAIP,+CAA+C;IACxC,qBAAqB,CAC3B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,IAAI;IAKP,OAAO,CAAC,iBAAiB;IA4FzB,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,cAAc;IA8GtB,OAAO,CAAC,YAAY;IA8FpB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,cAAc;IAuEtB,OAAO,CAAC,eAAe;IA+KvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,sBAAsB;CAqI9B"}