@lightningjs/renderer 3.0.3 → 3.0.5

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 (240) hide show
  1. package/dist/src/common/EventEmitter.d.ts +7 -4
  2. package/dist/src/common/EventEmitter.js +1 -1
  3. package/dist/src/common/EventEmitter.js.map +1 -1
  4. package/dist/src/core/AutosizeManager.d.ts +29 -0
  5. package/dist/src/core/AutosizeManager.js +169 -0
  6. package/dist/src/core/AutosizeManager.js.map +1 -0
  7. package/dist/src/core/CoreNode.d.ts +2 -1
  8. package/dist/src/core/CoreNode.js +6 -3
  9. package/dist/src/core/CoreNode.js.map +1 -1
  10. package/dist/src/core/CoreTextNode.d.ts +18 -5
  11. package/dist/src/core/CoreTextNode.js +141 -59
  12. package/dist/src/core/CoreTextNode.js.map +1 -1
  13. package/dist/src/core/CoreTextNodeCanvas.d.ts +215 -0
  14. package/dist/src/core/CoreTextNodeCanvas.js +236 -0
  15. package/dist/src/core/CoreTextNodeCanvas.js.map +1 -0
  16. package/dist/src/core/Stage.js +10 -0
  17. package/dist/src/core/Stage.js.map +1 -1
  18. package/dist/src/core/TextureMemoryManager.js +4 -3
  19. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  20. package/dist/src/core/animations/Animation.d.ts +21 -0
  21. package/dist/src/core/animations/Animation.js +194 -0
  22. package/dist/src/core/animations/Animation.js.map +1 -0
  23. package/dist/src/core/animations/AnimationManager.d.ts +1 -1
  24. package/dist/src/core/animations/AnimationManager.js +5 -5
  25. package/dist/src/core/animations/AnimationManager.js.map +1 -1
  26. package/dist/src/core/animations/CoreAnimation.d.ts +11 -2
  27. package/dist/src/core/animations/CoreAnimation.js +44 -38
  28. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  29. package/dist/src/core/animations/CoreAnimationController.d.ts +6 -0
  30. package/dist/src/core/animations/CoreAnimationController.js +16 -3
  31. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  32. package/dist/src/core/animations/Playback.d.ts +64 -0
  33. package/dist/src/core/animations/Playback.js +169 -0
  34. package/dist/src/core/animations/Playback.js.map +1 -0
  35. package/dist/src/core/animations/Ticker.d.ts +71 -0
  36. package/dist/src/core/animations/Ticker.js +89 -0
  37. package/dist/src/core/animations/Ticker.js.map +1 -0
  38. package/dist/src/core/animations/Transition.d.ts +38 -0
  39. package/dist/src/core/animations/Transition.js +35 -0
  40. package/dist/src/core/animations/Transition.js.map +1 -0
  41. package/dist/src/core/animations/TransitionsController.d.ts +10 -0
  42. package/dist/src/core/animations/TransitionsController.js +39 -0
  43. package/dist/src/core/animations/TransitionsController.js.map +1 -0
  44. package/dist/src/core/animations/utils.d.ts +2 -0
  45. package/dist/src/core/animations/utils.js +136 -0
  46. package/dist/src/core/animations/utils.js.map +1 -0
  47. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  48. package/dist/src/core/lib/ImageWorker.js +11 -30
  49. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  50. package/dist/src/core/lib/WebGlContextWrapper.d.ts +5 -16
  51. package/dist/src/core/lib/WebGlContextWrapper.js +1 -35
  52. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  53. package/dist/src/core/lib/textureCompression.d.ts +2 -14
  54. package/dist/src/core/lib/textureCompression.js +67 -320
  55. package/dist/src/core/lib/textureCompression.js.map +1 -1
  56. package/dist/src/core/platform.js +9 -38
  57. package/dist/src/core/platform.js.map +1 -1
  58. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -1
  59. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +3 -11
  60. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
  61. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -2
  62. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -16
  63. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  64. package/dist/src/core/renderers/canvas/CanvasRenderer.js +14 -1
  65. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  66. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -1
  67. package/dist/src/core/renderers/canvas/CanvasTexture.js +16 -6
  68. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  69. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  70. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  71. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  72. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  73. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  74. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  75. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +1 -2
  76. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +5 -12
  77. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  78. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +6 -18
  79. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +60 -102
  80. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  82. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +1 -3
  83. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +31 -74
  84. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  85. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +7 -2
  86. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +50 -21
  87. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +2 -3
  89. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +1 -3
  90. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  91. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +2 -2
  92. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  93. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +1 -0
  94. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +23 -0
  95. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  96. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +4 -5
  97. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  98. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +1 -0
  99. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  100. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +6 -3
  101. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  102. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +11 -0
  103. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  104. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +10 -5
  105. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  106. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +10 -5
  107. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  108. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +12 -0
  109. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  110. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  111. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  112. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  113. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  114. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +2 -2
  115. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  116. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  117. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +1 -0
  118. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +30 -14
  119. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -1
  121. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +3 -13
  122. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  123. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  124. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  125. package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
  126. package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
  127. package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
  128. package/dist/src/core/text-rendering/CanvasFont.d.ts +1 -1
  129. package/dist/src/core/text-rendering/CanvasFont.js +7 -16
  130. package/dist/src/core/text-rendering/CanvasFont.js.map +1 -1
  131. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +1 -1
  132. package/dist/src/core/text-rendering/CanvasFontHandler.js +1 -1
  133. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  134. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +2 -3
  135. package/dist/src/core/text-rendering/CanvasTextRenderer.js +7 -5
  136. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  137. package/dist/src/core/text-rendering/CoreFont.d.ts +1 -1
  138. package/dist/src/core/text-rendering/CoreFont.js +1 -1
  139. package/dist/src/core/text-rendering/CoreFont.js.map +1 -1
  140. package/dist/src/core/text-rendering/FontManager.js +2 -1
  141. package/dist/src/core/text-rendering/FontManager.js.map +1 -1
  142. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +3 -5
  143. package/dist/src/core/text-rendering/SdfTextRenderer.js +19 -109
  144. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  145. package/dist/src/core/text-rendering/TextLayoutEngine.js +43 -12
  146. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -1
  147. package/dist/src/core/text-rendering/TextRenderer.d.ts +16 -8
  148. package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
  149. package/dist/src/core/text-rendering/canvas/Settings.js +20 -0
  150. package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
  151. package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
  152. package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
  153. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
  154. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
  155. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
  156. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
  157. package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
  158. package/dist/src/core/text-rendering/canvas/draw.js +132 -0
  159. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
  160. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  161. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  162. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -4
  163. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +46 -98
  164. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  165. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +1 -1
  166. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +2 -2
  167. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
  168. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  169. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +1 -1
  170. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -1
  171. package/dist/src/core/text-rendering/renderers/canvas/CanvasTextRenderer.d.ts +26 -0
  172. package/dist/src/core/text-rendering/renderers/canvas/CanvasTextRenderer.js +158 -0
  173. package/dist/src/core/text-rendering/renderers/canvas/CanvasTextRenderer.js.map +1 -0
  174. package/dist/src/core/text-rendering/renderers/canvas/internal/draw.d.ts +5 -0
  175. package/dist/src/core/text-rendering/renderers/canvas/internal/draw.js +127 -0
  176. package/dist/src/core/text-rendering/renderers/canvas/internal/draw.js.map +1 -0
  177. package/dist/src/core/text-rendering/renderers/canvas/internal/mergeDefaults.d.ts +2 -0
  178. package/dist/src/core/text-rendering/renderers/canvas/internal/mergeDefaults.js +50 -0
  179. package/dist/src/core/text-rendering/renderers/canvas/internal/mergeDefaults.js.map +1 -0
  180. package/dist/src/core/text-rendering/renderers/canvas/internal/renderInfo.d.ts +33 -0
  181. package/dist/src/core/text-rendering/renderers/canvas/internal/renderInfo.js +192 -0
  182. package/dist/src/core/text-rendering/renderers/canvas/internal/renderInfo.js.map +1 -0
  183. package/dist/src/core/text-rendering/renderers/canvas/internal/types.d.ts +66 -0
  184. package/dist/src/core/text-rendering/renderers/canvas/internal/types.js +2 -0
  185. package/dist/src/core/text-rendering/renderers/canvas/internal/types.js.map +1 -0
  186. package/dist/src/core/text-rendering/renderers/canvas/internal/utils.d.ts +91 -0
  187. package/dist/src/core/text-rendering/renderers/canvas/internal/utils.js +282 -0
  188. package/dist/src/core/text-rendering/renderers/canvas/internal/utils.js.map +1 -0
  189. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
  190. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
  191. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
  192. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
  193. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
  194. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
  195. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  196. package/dist/src/core/text-rendering/sdf/Utils.js +301 -0
  197. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  198. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  199. package/dist/src/core/text-rendering/sdf/index.js +20 -0
  200. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  201. package/dist/src/core/textures/ImageTexture.js +11 -0
  202. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  203. package/dist/src/core/textures/Texture.js +5 -0
  204. package/dist/src/core/textures/Texture.js.map +1 -1
  205. package/dist/src/main-api/Inspector.d.ts +1 -1
  206. package/dist/src/main-api/Inspector.js +25 -20
  207. package/dist/src/main-api/Inspector.js.map +1 -1
  208. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  209. package/dist/tsconfig.tsbuildinfo +1 -0
  210. package/package.json +1 -1
  211. package/src/common/EventEmitter.ts +6 -8
  212. package/src/core/CoreNode.test.ts +1 -1
  213. package/src/core/CoreNode.ts +8 -4
  214. package/src/core/CoreTextNode.test.ts +138 -25
  215. package/src/core/CoreTextNode.ts +174 -67
  216. package/src/core/Stage.ts +11 -0
  217. package/src/core/TextureMemoryManager.ts +4 -3
  218. package/src/core/animations/AnimationManager.ts +5 -5
  219. package/src/core/animations/CoreAnimation.ts +61 -45
  220. package/src/core/animations/CoreAnimationController.ts +16 -7
  221. package/src/core/renderers/canvas/CanvasRenderer.ts +19 -1
  222. package/src/core/renderers/canvas/CanvasTexture.ts +23 -8
  223. package/src/core/renderers/webgl/WebGlRenderer.ts +2 -3
  224. package/src/core/renderers/webgl/WebGlShaderNode.ts +24 -0
  225. package/src/core/renderers/webgl/WebGlShaderProgram.test.ts +274 -0
  226. package/src/core/renderers/webgl/WebGlShaderProgram.ts +10 -10
  227. package/src/core/renderers/webgl/internal/ShaderUtils.ts +1 -0
  228. package/src/core/text-rendering/CanvasFontHandler.ts +2 -2
  229. package/src/core/text-rendering/CanvasTextRenderer.ts +14 -7
  230. package/src/core/text-rendering/SdfTextRenderer.ts +28 -140
  231. package/src/core/text-rendering/TextLayoutEngine.ts +61 -28
  232. package/src/core/text-rendering/TextRenderer.ts +19 -12
  233. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +20 -0
  234. package/src/core/textures/ImageTexture.ts +18 -0
  235. package/src/core/textures/Texture.ts +6 -0
  236. package/src/main-api/Inspector.ts +25 -25
  237. package/dist/src/core/text-rendering/TextGenerator.d.ts +0 -10
  238. package/dist/src/core/text-rendering/TextGenerator.js +0 -36
  239. package/dist/src/core/text-rendering/TextGenerator.js.map +0 -1
  240. package/src/core/renderers/webgl/SdfRenderOp.ts +0 -106
@@ -18,6 +18,8 @@
18
18
  */
19
19
  import { CoreNode, CoreNodeRenderState, UpdateType, } from './CoreNode.js';
20
20
  import { Matrix3d } from './lib/Matrix3d.js';
21
+ import { BufferCollection } from './renderers/webgl/internal/BufferCollection.js';
22
+ import { mergeColorAlpha } from '../utils.js';
21
23
  export var TextConstraint;
22
24
  (function (TextConstraint) {
23
25
  TextConstraint[TextConstraint["none"] = 0] = "none";
@@ -31,23 +33,16 @@ export class CoreTextNode extends CoreNode {
31
33
  _layoutGenerated = false;
32
34
  _waitingForFont = false;
33
35
  _containType = TextConstraint.none;
34
- // SDF layout caching for performance
35
- _cachedLayout = null;
36
- // Mutable ref box shared with SdfTextRenderer so the renderer can write the
37
- // created WebGLBuffer back into it, allowing reuse across frames.
38
- _sdfBufferRef = { current: null };
36
+ _sdfBuffer = null;
37
+ _sdfQuadCollection = null;
38
+ _sdfShaderProps = null;
39
39
  // Text renderer properties - stored directly on the node
40
40
  textProps;
41
- _renderInfo = {
42
- width: 0,
43
- height: 0,
44
- };
45
- _type = 'sdf'; // Default to SDF renderer
41
+ _renderInfo = null;
46
42
  constructor(stage, props, textRenderer) {
47
43
  super(stage, props);
48
44
  this.textRenderer = textRenderer;
49
45
  this.fontHandler = textRenderer.font;
50
- this._type = textRenderer.type;
51
46
  // Initialize text properties from props
52
47
  // Props are guaranteed to have all defaults resolved by Stage.createTextNode
53
48
  this.textProps = props;
@@ -74,11 +69,12 @@ export class CoreTextNode extends CoreNode {
74
69
  * Safe to call from destroy() or on text change.
75
70
  */
76
71
  releaseSdfBuffer() {
77
- const buf = this._sdfBufferRef.current;
72
+ const buf = this._sdfBuffer;
78
73
  if (buf === null)
79
74
  return;
80
75
  this.stage.renderer.deleteBuffer(buf);
81
- this._sdfBufferRef.current = null;
76
+ this._sdfBuffer = null;
77
+ this._sdfQuadCollection = null;
82
78
  }
83
79
  allowTextGeneration() {
84
80
  const p = this.props.parent;
@@ -154,7 +150,7 @@ export class CoreTextNode extends CoreNode {
154
150
  this._layoutGenerated === false) {
155
151
  if (this.fontHandler.isFontLoaded(this.textProps.fontFamily) === true) {
156
152
  this._waitingForFont = false;
157
- this._cachedLayout = null; // Invalidate cached layout
153
+ this._renderInfo = null; // Clear any previous render info before generating new layout
158
154
  this.releaseSdfBuffer(); // Free the cached WebGLBuffer
159
155
  const resp = this.textRenderer.renderText(this.textProps);
160
156
  this.handleRenderResult(resp);
@@ -171,7 +167,7 @@ export class CoreTextNode extends CoreNode {
171
167
  // If text is invalid, ensure node is not renderable
172
168
  this.setRenderable(false);
173
169
  this._layoutGenerated = false;
174
- this._cachedLayout = null;
170
+ this._renderInfo = null;
175
171
  this.releaseSdfBuffer(); // Free the cached WebGLBuffer
176
172
  }
177
173
  // First run the standard CoreNode update
@@ -183,26 +179,34 @@ export class CoreTextNode extends CoreNode {
183
179
  updateIsRenderable() {
184
180
  // Guard: Text nodes are never renderable without valid text
185
181
  const hasValidText = typeof this.textProps.text === 'string' && this.textProps.text.length > 0;
186
- if (hasValidText === false) {
182
+ const renderInfo = this._renderInfo;
183
+ if (hasValidText === false || renderInfo === null) {
187
184
  this.setRenderable(false);
188
185
  return;
189
186
  }
190
187
  // SDF text nodes are always renderable if they have a valid layout
191
- if (this._type === 'canvas') {
188
+ if (renderInfo.type === 'canvas') {
192
189
  super.updateIsRenderable();
193
190
  return;
194
191
  }
195
- // For SDF, check if we have a cached layout
196
- this.setRenderable(this._cachedLayout !== null);
192
+ this.setRenderable(true);
197
193
  }
198
194
  /**
199
195
  * Handle the result of text rendering for both Canvas and SDF renderers
200
196
  */
201
197
  handleRenderResult(result) {
202
198
  // Host paths on top
203
- const textRendererType = this._type;
199
+ const textRendererType = result.type;
204
200
  let width = result.width;
205
201
  let height = result.height;
202
+ // Handle zero-dimension case (can happen with certain text inputs or font issues)
203
+ if (width === 0 || height === 0) {
204
+ this.emit('failed', {
205
+ type: 'text',
206
+ error: new Error('Text rendering failed, width or height zero'),
207
+ });
208
+ return;
209
+ }
206
210
  // Handle Canvas renderer (uses ImageData)
207
211
  if (textRendererType === 'canvas') {
208
212
  if (result.imageData === undefined) {
@@ -216,6 +220,8 @@ export class CoreTextNode extends CoreNode {
216
220
  premultiplyAlpha: true,
217
221
  src: result.imageData,
218
222
  });
223
+ this.props.w = width;
224
+ this.props.h = height;
219
225
  // It isn't renderable until the texture is loaded we have to set it to false here to avoid it
220
226
  // being detected as a renderable default color node in the next frame
221
227
  // it will be corrected once the texture is loaded
@@ -225,27 +231,34 @@ export class CoreTextNode extends CoreNode {
225
231
  this.texture.setRenderableOwner(this._id, true);
226
232
  }
227
233
  }
228
- // Handle zero-dimension case (can happen with certain text inputs or font issues)
229
- if (width === 0 || height === 0) {
230
- this.emit('failed', {
231
- type: 'text',
232
- error: new Error('Text rendering failed, width or height zero'),
233
- });
234
- return;
235
- }
236
- this._cachedLayout = result.layout || null;
237
- this.props.w = width;
238
- this.props.h = height;
239
- // Handle SDF renderer (uses layout caching)
240
- if (textRendererType === 'sdf') {
241
- this.setRenderable(true);
234
+ else {
235
+ const layout = result.layout;
236
+ // For SDF, we rely on the presence of a valid layout to determine renderability
237
+ if (layout === undefined) {
238
+ this.emit('failed', {
239
+ type: 'text',
240
+ error: new Error('SDF text rendering failed, no layout data returned'),
241
+ });
242
+ return;
243
+ }
244
+ this.props.w = width;
245
+ this.props.h = height;
242
246
  this.setUpdateType(UpdateType.Local);
247
+ this.setRenderable(true);
248
+ this.numQuads = layout.glyphCount;
249
+ this._sdfShaderProps = {
250
+ size: layout.fontScale,
251
+ distanceRange: layout.distanceRange,
252
+ };
253
+ this.renderOpTextures = [result.atlasTexture];
243
254
  }
244
255
  this._renderInfo = result;
245
256
  queueMicrotask(this.emitTextLoadedEvent);
246
257
  }
247
258
  // Reusable bound method for emitting loaded event
248
259
  emitTextLoadedEvent = () => {
260
+ if (this._renderInfo === null)
261
+ return; // Guard against unexpected null
249
262
  this.emit('loaded', {
250
263
  type: 'text',
251
264
  dimensions: {
@@ -263,37 +276,54 @@ export class CoreTextNode extends CoreNode {
263
276
  if (rtt === false || this.parentRenderTexture !== renderer.activeRttNode)
264
277
  return;
265
278
  }
266
- // Canvas renderer: use standard texture rendering via CoreNode
267
- if (this._type === 'canvas') {
268
- super.renderQuads(renderer);
279
+ // Early return if no renderInfo
280
+ if (this._renderInfo === null) {
269
281
  return;
270
282
  }
271
- // Early return if no cached data
272
- if (this._cachedLayout === null) {
283
+ // Canvas renderer: use standard texture rendering via CoreNode
284
+ if (this._renderInfo.type === 'canvas') {
285
+ super.renderQuads(renderer);
273
286
  return;
274
287
  }
275
- const props = this.textProps;
276
- this.textRenderer.renderQuads(renderer, this._cachedLayout, {
277
- fontFamily: this.textProps.fontFamily,
278
- fontSize: props.fontSize,
279
- color: this.props.color || 0xffffffff,
280
- offsetY: props.offsetY,
281
- worldAlpha: this.worldAlpha,
282
- globalTransform: this.globalTransform.getFloatArr(),
283
- clippingRect: this.clippingRect,
284
- width: this.props.w,
285
- height: this.props.h,
286
- parentHasRenderTexture: this.parentHasRenderTexture,
287
- framebufferDimensions: this.parentHasRenderTexture === true
288
- ? this.parentFramebufferDimensions
289
- : null,
290
- stage: this.stage,
291
- glBufferRef: this._sdfBufferRef,
292
- });
288
+ if (this._sdfBuffer === null) {
289
+ const glw = this.stage.renderer.glw;
290
+ this._sdfBuffer = glw.createBuffer();
291
+ if (this._sdfBuffer === null) {
292
+ console.error('Failed to create WebGL buffer for SDF text rendering');
293
+ return;
294
+ }
295
+ glw.arrayBufferData(this._sdfBuffer, this._renderInfo.layout.vertexBuffer, glw.STATIC_DRAW);
296
+ this._sdfQuadCollection = new BufferCollection([
297
+ {
298
+ buffer: this._sdfBuffer,
299
+ attributes: {
300
+ a_position: {
301
+ name: 'a_position',
302
+ size: 2,
303
+ type: glw.FLOAT,
304
+ normalized: false,
305
+ stride: 4 * Float32Array.BYTES_PER_ELEMENT,
306
+ offset: 0,
307
+ },
308
+ a_textureCoords: {
309
+ name: 'a_textureCoords',
310
+ size: 2,
311
+ type: glw.FLOAT,
312
+ normalized: false,
313
+ stride: 4 * Float32Array.BYTES_PER_ELEMENT,
314
+ offset: 2 * Float32Array.BYTES_PER_ELEMENT,
315
+ },
316
+ },
317
+ },
318
+ ]);
319
+ }
320
+ this.sdfShaderProps.transform = this.globalTransform.getFloatArr();
321
+ this.sdfShaderProps.color = mergeColorAlpha(this.props.color, this.worldAlpha);
322
+ this.textRenderer.renderQuads(this);
293
323
  }
294
324
  updateRenderState(renderState) {
295
325
  super.updateRenderState(renderState);
296
- if (this._type === 'sdf' &&
326
+ if (this._renderInfo !== null &&
297
327
  renderState === CoreNodeRenderState.OutOfBounds) {
298
328
  this.releaseSdfBuffer();
299
329
  }
@@ -303,12 +333,64 @@ export class CoreTextNode extends CoreNode {
303
333
  this.fontHandler.stopWaitingForFont(this.textProps.fontFamily, this);
304
334
  }
305
335
  // Clear cached layout and vertex buffer
306
- this._cachedLayout = null;
336
+ this._renderInfo = null;
307
337
  this.releaseSdfBuffer(); // Delete the cached WebGLBuffer before losing stage ref
308
338
  this.fontHandler = null; // Clear reference to avoid memory leaks
309
339
  this.textRenderer = null; // Clear reference to avoid memory leaks
310
340
  super.destroy();
311
341
  }
342
+ /**
343
+ * used in webgl SDF shader to get the quad buffer collection for rendering text quads
344
+ */
345
+ get quadBufferCollection() {
346
+ return this._sdfQuadCollection || super.quadBufferCollection;
347
+ }
348
+ /**
349
+ * used in webgl SDF shader to get the SDF shader props for rendering text quads
350
+ */
351
+ get sdfShaderProps() {
352
+ return this._sdfShaderProps;
353
+ }
354
+ get isSdfRenderOp() {
355
+ return this.textRenderer.type === 'sdf';
356
+ }
357
+ draw(renderer) {
358
+ if (this.textRenderer.type === 'canvas') {
359
+ super.draw(renderer);
360
+ return;
361
+ }
362
+ const { glw, stage } = renderer;
363
+ const canvas = stage.platform.canvas;
364
+ const shader = this.props.shader;
365
+ stage.shManager.useShader(shader.program);
366
+ shader.program.bindRenderOp(this);
367
+ const clippingRect = this.clippingRect;
368
+ // Clipping
369
+ if (clippingRect.valid === true) {
370
+ const pixelRatio = this.parentHasRenderTexture ? 1 : stage.pixelRatio;
371
+ const clipX = Math.round(clippingRect.x * pixelRatio);
372
+ const clipWidth = Math.round(clippingRect.w * pixelRatio);
373
+ const clipHeight = Math.round(clippingRect.h * pixelRatio);
374
+ let clipY = Math.round(canvas.height - clipHeight - clippingRect.y * pixelRatio);
375
+ // if parent has render texture, we need to adjust the scissor rect
376
+ // to be relative to the parent's framebuffer
377
+ if (this.parentHasRenderTexture) {
378
+ const parentFramebufferDimensions = this.parentFramebufferDimensions;
379
+ clipY =
380
+ parentFramebufferDimensions !== null
381
+ ? parentFramebufferDimensions.h - this.props.h
382
+ : 0;
383
+ }
384
+ glw.setScissorTest(true);
385
+ glw.scissor(clipX, clipY, clipWidth, clipHeight);
386
+ }
387
+ else {
388
+ glw.setScissorTest(false);
389
+ }
390
+ // SDF rendering uses drawArrays with explicit triangle vertices (6 vertices per quad)
391
+ // Note: buffers should be bound by bindRenderOp -> bindBufferCollection
392
+ glw.drawArrays(glw.TRIANGLES, 0, 6 * this.numQuads);
393
+ }
312
394
  set w(value) {
313
395
  this.maxWidth = value;
314
396
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CoreTextNode.js","sourceRoot":"","sources":["../../../src/core/CoreTextNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoreTextNode.js","sourceRoot":"","sources":["../../../src/core/CoreTextNode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ import type { TextRenderer, TrFontProps } from './text-rendering/renderers/TextRenderer.js';
2
+ import { CoreNode, type CoreNodeProps } from './CoreNode.js';
3
+ import type { Stage } from './Stage.js';
4
+ import type { RectWithValid } from './lib/utils.js';
5
+ import type { TextBaseline, TextVerticalAlign } from './text-rendering/renderers/canvas/LightningTextTextureRenderer.js';
6
+ export declare enum CanvasTextUpdateType {
7
+ None = 0,
8
+ Text = 1,
9
+ Font = 2,
10
+ All = 4
11
+ }
12
+ export interface CoreTextNodeProps extends CoreNodeProps, TrFontProps {
13
+ /**
14
+ * Text to display
15
+ *
16
+ * @default ''
17
+ */
18
+ text: string;
19
+ /**
20
+ * Text alignment
21
+ *
22
+ * @remarks
23
+ * Alignment of the text relative to it's contained bounds. For best results,
24
+ * use {@link contain} mode `'width'` or `'both'` and a set an explicit
25
+ * {@link width} for the text to be aligned within.
26
+ *
27
+ * @default 'left'
28
+ */
29
+ textAlign: 'left' | 'center' | 'right';
30
+ /**
31
+ * Color of text
32
+ *
33
+ * @remarks
34
+ * The color value is a number in the format 0xRRGGBBAA, where RR is the red
35
+ * component, GG is the green component, BB is the blue component, and AA is
36
+ * the alpha component.
37
+ *
38
+ * @default 0xffffffff (opaque white)
39
+ */
40
+ color: number;
41
+ /**
42
+ * Contain mode for text
43
+ *
44
+ * @remarks
45
+ * The contain mode determines how the text is contained within the bounds
46
+ * of the Text Node. The default value is `'none'`, which means that the
47
+ * Text Renderer will not constrain the text in any way. `'width'` mode will
48
+ * constrain the text to the set width wrapping lines as necessary, and
49
+ * `'both'` mode will constrain the text to both the set width and height
50
+ * wrapping lines and truncating text as necessary.
51
+ *
52
+ * ## Text Auto-size Behavior
53
+ * Depending on the set contain mode, after the text 'loaded' event is emitted,
54
+ * the text node may have either its {@link width} and {@link height} updated
55
+ * to match the rendered size of the text.
56
+ *
57
+ * When contain mode is 'none', both the {@link width} and {@link height}
58
+ * properties are updated.
59
+ *
60
+ * When contain mode is 'width', only the {@link height} property is updated.
61
+ *
62
+ * When contain mode is 'both', neither property is updated.
63
+ *
64
+ * @default 'none'
65
+ */
66
+ contain: 'none' | 'width' | 'both';
67
+ /**
68
+ * Letter spacing for text (in pixels)
69
+ *
70
+ * @remarks
71
+ * This property sets additional (or reduced, if value is negative) spacing
72
+ * between characters in the text.
73
+ *
74
+ * @default 0
75
+ */
76
+ letterSpacing: number;
77
+ /**
78
+ * Line height for text (in pixels)
79
+ *
80
+ * @remarks
81
+ * This property sets the height of each line. If set to `undefined`, the
82
+ * line height will be calculated based on the font and font size to be the
83
+ * minimal height required to completely contain a line of text.
84
+ *
85
+ * See: https://github.com/lightning-js/renderer/issues/170
86
+ *
87
+ * @default `undefined`
88
+ */
89
+ lineHeight: number | undefined;
90
+ /**
91
+ * Max lines for text
92
+ *
93
+ * @remarks
94
+ * This property sets max number of lines of a text paragraph.
95
+ * Not yet implemented in the SDF renderer.
96
+ *
97
+ * @default 0
98
+ */
99
+ maxLines: number;
100
+ /**
101
+ * Baseline for text
102
+ *
103
+ * @remarks
104
+ * This property sets the text baseline used when drawing text.
105
+ * Not yet implemented in the SDF renderer.
106
+ *
107
+ * @default alphabetic
108
+ */
109
+ textBaseline: TextBaseline;
110
+ /**
111
+ * Vertical Align for text when lineHeight > fontSize
112
+ *
113
+ * @remarks
114
+ * This property sets the vertical align of the text.
115
+ * Not yet implemented in the SDF renderer.
116
+ *
117
+ * @default middle
118
+ */
119
+ verticalAlign: TextVerticalAlign;
120
+ /**
121
+ * Overflow Suffix for text
122
+ *
123
+ * @remarks
124
+ * The suffix to be added when text is cropped due to overflow.
125
+ * Not yet implemented in the SDF renderer.
126
+ *
127
+ * @default "..."
128
+ */
129
+ overflowSuffix: string;
130
+ /**
131
+ * Font Style String
132
+ *
133
+ * @remarks
134
+ * This property sets the font style string used when drawing text.
135
+ *
136
+ * @default "normal normal normal"
137
+ */
138
+ fontStyleString?: string;
139
+ /**
140
+ * Word wrap
141
+ *
142
+ * @remarks
143
+ * This property sets the word wrap mode for the text.
144
+ *
145
+ * @default true
146
+ */
147
+ wordWrap: boolean;
148
+ /**
149
+ * Debug mode for text
150
+ *
151
+ * @remarks
152
+ * This property sets the debug mode for the text.
153
+ * Not yet implemented in the SDF renderer.
154
+ *
155
+ * @default false
156
+ */
157
+ debug?: boolean;
158
+ }
159
+ /**
160
+ * An CoreNode in the Renderer scene graph that renders text using Canvas 2D.
161
+ *
162
+ * @remarks
163
+ * A Text Node is the second graphical building block of the Renderer scene
164
+ * graph. It renders text using a specific text renderer that is automatically
165
+ * chosen based on the font requested and what type of fonts are installed
166
+ * into an app.
167
+ *
168
+ * The text renderer can be overridden by setting the `textRendererOverride`
169
+ *
170
+ * The `texture` and `shader` properties are managed by loaded text renderer and
171
+ * should not be set directly.
172
+ *
173
+ * For non-text rendering, see {@link CoreNode}.
174
+ */
175
+ export declare class CoreTextCanvasNode extends CoreNode {
176
+ private textUpdateType;
177
+ private textProps;
178
+ private textRenderer;
179
+ private fontLoaded;
180
+ constructor(stage: Stage, props: CoreTextNodeProps, textRenderer: TextRenderer);
181
+ setTextUpdateType(updateType: CanvasTextUpdateType): void;
182
+ update(delta: number, parentClippingRect: RectWithValid): void;
183
+ updateText(): void;
184
+ updateFont(): Promise<void>;
185
+ get text(): string;
186
+ set text(value: string);
187
+ get fontSize(): CoreTextNodeProps['fontSize'];
188
+ set fontSize(value: CoreTextNodeProps['fontSize']);
189
+ get fontFamily(): CoreTextNodeProps['fontFamily'];
190
+ set fontFamily(value: CoreTextNodeProps['fontFamily']);
191
+ get fontStretch(): CoreTextNodeProps['fontStretch'];
192
+ set fontStretch(value: CoreTextNodeProps['fontStretch']);
193
+ get fontStyle(): CoreTextNodeProps['fontStyle'];
194
+ set fontStyle(value: CoreTextNodeProps['fontStyle']);
195
+ get fontWeight(): CoreTextNodeProps['fontWeight'];
196
+ set fontWeight(value: CoreTextNodeProps['fontWeight']);
197
+ get textAlign(): CoreTextNodeProps['textAlign'];
198
+ set textAlign(value: CoreTextNodeProps['textAlign']);
199
+ get contain(): CoreTextNodeProps['contain'];
200
+ set contain(value: CoreTextNodeProps['contain']);
201
+ get letterSpacing(): CoreTextNodeProps['letterSpacing'];
202
+ set letterSpacing(value: CoreTextNodeProps['letterSpacing']);
203
+ get lineHeight(): CoreTextNodeProps['lineHeight'];
204
+ set lineHeight(value: CoreTextNodeProps['lineHeight']);
205
+ get maxLines(): CoreTextNodeProps['maxLines'];
206
+ set maxLines(value: CoreTextNodeProps['maxLines']);
207
+ get textBaseline(): CoreTextNodeProps['textBaseline'];
208
+ set textBaseline(value: CoreTextNodeProps['textBaseline']);
209
+ get verticalAlign(): CoreTextNodeProps['verticalAlign'];
210
+ set verticalAlign(value: CoreTextNodeProps['verticalAlign']);
211
+ get overflowSuffix(): CoreTextNodeProps['overflowSuffix'];
212
+ set overflowSuffix(value: CoreTextNodeProps['overflowSuffix']);
213
+ get debug(): CoreTextNodeProps['debug'];
214
+ set debug(value: CoreTextNodeProps['debug']);
215
+ }