@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta10

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 (611) hide show
  1. package/COPYING +1 -0
  2. package/LICENSE +202 -202
  3. package/NOTICE +3 -3
  4. package/README.md +133 -147
  5. package/dist/exports/canvas.d.ts +1 -1
  6. package/dist/exports/canvas.js +1 -1
  7. package/dist/exports/canvas.js.map +1 -1
  8. package/dist/exports/index.d.ts +1 -5
  9. package/dist/exports/index.js +1 -5
  10. package/dist/exports/index.js.map +1 -1
  11. package/dist/exports/utils.d.ts +2 -1
  12. package/dist/exports/utils.js +2 -1
  13. package/dist/exports/utils.js.map +1 -1
  14. package/dist/exports/webgl.d.ts +2 -1
  15. package/dist/exports/webgl.js +2 -1
  16. package/dist/exports/webgl.js.map +1 -1
  17. package/dist/src/core/CoreNode.d.ts +45 -69
  18. package/dist/src/core/CoreNode.js +323 -305
  19. package/dist/src/core/CoreNode.js.map +1 -1
  20. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  21. package/dist/src/core/CoreShaderManager.js.map +1 -1
  22. package/dist/src/core/CoreTextNode.d.ts +58 -87
  23. package/dist/src/core/CoreTextNode.js +243 -237
  24. package/dist/src/core/CoreTextNode.js.map +1 -1
  25. package/dist/src/core/CoreTextureManager.d.ts +9 -11
  26. package/dist/src/core/CoreTextureManager.js +80 -91
  27. package/dist/src/core/CoreTextureManager.js.map +1 -1
  28. package/dist/src/core/Stage.d.ts +75 -31
  29. package/dist/src/core/Stage.js +270 -136
  30. package/dist/src/core/Stage.js.map +1 -1
  31. package/dist/src/core/TextureMemoryManager.d.ts +10 -1
  32. package/dist/src/core/TextureMemoryManager.js +112 -78
  33. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  34. package/dist/src/core/animations/CoreAnimation.js +5 -0
  35. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  36. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  37. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  38. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  39. package/dist/src/core/lib/ImageWorker.js +3 -2
  40. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  41. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  42. package/dist/src/core/lib/RenderCoords.js +43 -55
  43. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  44. package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
  45. package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
  46. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  47. package/dist/src/core/lib/colorCache.d.ts +1 -0
  48. package/dist/src/core/lib/colorCache.js +19 -0
  49. package/dist/src/core/lib/colorCache.js.map +1 -0
  50. package/dist/src/core/lib/colorParser.d.ts +21 -0
  51. package/dist/src/core/lib/colorParser.js +72 -0
  52. package/dist/src/core/lib/colorParser.js.map +1 -0
  53. package/dist/src/core/lib/utils.d.ts +3 -0
  54. package/dist/src/core/lib/utils.js +42 -0
  55. package/dist/src/core/lib/utils.js.map +1 -1
  56. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  57. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  58. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  59. package/dist/src/core/platforms/Platform.d.ts +37 -0
  60. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  61. package/dist/src/core/platforms/Platform.js.map +1 -0
  62. package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
  63. package/dist/src/core/platforms/web/WebPlatform.js +84 -0
  64. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  65. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
  66. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
  67. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  68. package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
  69. package/dist/src/core/renderers/CoreShaderNode.js +8 -2
  70. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  71. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
  72. package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
  73. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  74. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  75. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  76. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
  77. package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
  78. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  79. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
  80. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
  82. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
  83. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  84. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
  85. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
  86. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  87. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
  88. package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
  89. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  90. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
  91. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  92. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  93. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
  94. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
  95. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  96. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
  97. package/dist/src/core/shaders/canvas/Border.js +1 -1
  98. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  99. package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
  100. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  101. package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
  102. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  103. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
  104. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  105. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  106. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  107. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  108. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  109. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
  110. package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
  111. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  112. package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
  113. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  114. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  115. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  116. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  117. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  118. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  119. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  120. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  121. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  122. package/dist/src/core/shaders/utils.js.map +1 -0
  123. package/dist/src/core/shaders/webgl/Border.js +86 -63
  124. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  125. package/dist/src/core/shaders/webgl/Default.js +47 -47
  126. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  127. package/dist/src/core/shaders/webgl/HolePunch.js +36 -35
  128. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  129. package/dist/src/core/shaders/webgl/LinearGradient.js +41 -40
  130. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  131. package/dist/src/core/shaders/webgl/RadialGradient.js +39 -38
  132. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  133. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  134. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +115 -72
  135. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  136. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +138 -88
  137. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  138. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  139. package/dist/src/core/shaders/webgl/SdfShader.js +63 -63
  140. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  141. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  142. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +25 -0
  143. package/dist/src/core/text-rendering/CanvasFontHandler.js +130 -0
  144. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  145. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
  146. package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
  147. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  148. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +137 -0
  149. package/dist/src/core/text-rendering/SdfFontHandler.js +336 -0
  150. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  151. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  152. package/dist/src/core/text-rendering/SdfTextRenderer.js +355 -0
  153. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  154. package/dist/src/core/text-rendering/TextRenderer.d.ts +349 -0
  155. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  156. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  157. package/dist/src/core/text-rendering/Utils.d.ts +71 -0
  158. package/dist/src/core/text-rendering/Utils.js +212 -0
  159. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  160. package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
  161. package/dist/src/core/{renderers/CoreShader.js → text-rendering/canvas/Settings.js} +3 -11
  162. package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
  163. package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
  164. package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
  165. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
  166. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
  167. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
  168. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
  169. package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
  170. package/dist/src/core/text-rendering/canvas/draw.js +132 -0
  171. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
  172. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -0
  173. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  174. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -1
  175. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +50 -2
  176. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  177. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +9 -54
  178. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  179. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  182. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +13 -0
  183. package/dist/src/core/text-rendering/renderers/TextRenderer.js +3 -0
  184. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  185. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  186. package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
  187. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  188. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  189. package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/sdf/index.js} +3 -11
  190. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  191. package/dist/src/core/textures/ImageTexture.d.ts +4 -3
  192. package/dist/src/core/textures/ImageTexture.js +36 -9
  193. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  194. package/dist/src/core/textures/Texture.d.ts +21 -2
  195. package/dist/src/core/textures/Texture.js +37 -6
  196. package/dist/src/core/textures/Texture.js.map +1 -1
  197. package/dist/src/core/utils.d.ts +1 -1
  198. package/dist/src/main-api/INode.d.ts +2 -2
  199. package/dist/src/main-api/Inspector.d.ts +6 -1
  200. package/dist/src/main-api/Inspector.js +43 -7
  201. package/dist/src/main-api/Inspector.js.map +1 -1
  202. package/dist/src/main-api/Renderer.d.ts +122 -46
  203. package/dist/src/main-api/Renderer.js +174 -37
  204. package/dist/src/main-api/Renderer.js.map +1 -1
  205. package/dist/src/utils.d.ts +1 -6
  206. package/dist/src/utils.js +2 -9
  207. package/dist/src/utils.js.map +1 -1
  208. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  209. package/exports/canvas-shaders.ts +28 -28
  210. package/exports/canvas.ts +45 -45
  211. package/exports/index.ts +82 -89
  212. package/exports/inspector.ts +24 -24
  213. package/exports/utils.ts +50 -44
  214. package/exports/webgl-shaders.ts +28 -28
  215. package/exports/webgl.ts +52 -50
  216. package/package.json +2 -4
  217. package/src/common/CommonTypes.ts +146 -146
  218. package/src/common/EventEmitter.ts +77 -77
  219. package/src/common/IAnimationController.ts +92 -92
  220. package/src/common/IEventEmitter.ts +28 -28
  221. package/src/core/CoreNode.test.ts +202 -203
  222. package/src/core/CoreNode.ts +2491 -2476
  223. package/src/core/CoreShaderManager.ts +188 -193
  224. package/src/core/CoreTextNode.ts +443 -448
  225. package/src/core/CoreTextureManager.ts +565 -597
  226. package/src/core/Stage.ts +906 -740
  227. package/src/core/TextureMemoryManager.ts +445 -395
  228. package/src/core/animations/AnimationManager.ts +38 -38
  229. package/src/core/animations/CoreAnimation.ts +291 -284
  230. package/src/core/animations/CoreAnimationController.ts +166 -157
  231. package/src/core/lib/ContextSpy.ts +41 -41
  232. package/src/core/lib/ImageWorker.ts +286 -279
  233. package/src/core/lib/Matrix3d.ts +244 -244
  234. package/src/core/lib/RenderCoords.ts +71 -86
  235. package/src/core/lib/WebGlContextWrapper.ts +1381 -1324
  236. package/src/core/lib/colorCache.ts +20 -0
  237. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
  238. package/src/core/lib/textureCompression.ts +152 -152
  239. package/src/core/lib/textureSvg.ts +78 -78
  240. package/src/core/lib/utils.ts +412 -361
  241. package/src/core/lib/validateImageBitmap.ts +87 -76
  242. package/src/core/platforms/Platform.ts +77 -0
  243. package/src/core/platforms/web/WebPlatform.ts +121 -0
  244. package/src/core/renderers/CoreContextTexture.ts +43 -43
  245. package/src/core/renderers/CoreRenderOp.ts +22 -22
  246. package/src/core/renderers/CoreRenderer.ts +110 -107
  247. package/src/core/renderers/CoreShaderNode.ts +175 -171
  248. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  249. package/src/core/renderers/canvas/CanvasRenderer.ts +283 -299
  250. package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -99
  251. package/src/core/renderers/canvas/CanvasTexture.ts +156 -153
  252. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +91 -86
  253. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
  254. package/src/core/renderers/webgl/WebGlCtxTexture.ts +310 -301
  255. package/src/core/renderers/webgl/WebGlRenderOp.ts +167 -145
  256. package/src/core/renderers/webgl/WebGlRenderer.ts +747 -715
  257. package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -433
  258. package/src/core/renderers/webgl/WebGlShaderProgram.ts +341 -310
  259. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  260. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  261. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
  262. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  263. package/src/core/shaders/canvas/Border.ts +75 -78
  264. package/src/core/shaders/canvas/HolePunch.ts +62 -62
  265. package/src/core/shaders/canvas/LinearGradient.ts +71 -69
  266. package/src/core/shaders/canvas/RadialGradient.ts +99 -113
  267. package/src/core/shaders/canvas/Rounded.ts +55 -55
  268. package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -68
  269. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -88
  270. package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -69
  271. package/src/core/shaders/canvas/Shadow.ts +52 -52
  272. package/src/core/shaders/canvas/utils/render.ts +151 -151
  273. package/src/core/shaders/templates/BorderTemplate.ts +115 -115
  274. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  275. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  276. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
  277. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  278. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  279. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  280. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  281. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  282. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +46 -47
  283. package/src/core/shaders/webgl/Border.ts +116 -96
  284. package/src/core/shaders/webgl/Default.ts +89 -89
  285. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  286. package/src/core/shaders/webgl/HolePunch.ts +75 -78
  287. package/src/core/shaders/webgl/LinearGradient.ts +82 -81
  288. package/src/core/shaders/webgl/RadialGradient.ts +85 -84
  289. package/src/core/shaders/webgl/Rounded.ts +117 -117
  290. package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -114
  291. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -133
  292. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
  293. package/src/core/shaders/webgl/SdfShader.ts +134 -137
  294. package/src/core/shaders/webgl/Shadow.ts +115 -115
  295. package/src/core/text-rendering/CanvasFontHandler.ts +176 -0
  296. package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
  297. package/src/core/text-rendering/SdfFontHandler.ts +517 -0
  298. package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
  299. package/src/core/text-rendering/TextRenderer.ts +404 -0
  300. package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +257 -263
  301. package/src/core/text-rendering/canvas/Settings.ts +99 -0
  302. package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
  303. package/src/core/text-rendering/canvas/Utils.ts +178 -0
  304. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
  305. package/src/core/text-rendering/canvas/draw.ts +165 -0
  306. package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
  307. package/src/core/text-rendering/sdf/Utils.ts +436 -0
  308. package/src/core/text-rendering/sdf/index.ts +20 -0
  309. package/src/core/textures/ColorTexture.ts +102 -102
  310. package/src/core/textures/ImageTexture.ts +418 -376
  311. package/src/core/textures/NoiseTexture.ts +104 -104
  312. package/src/core/textures/RenderTexture.ts +85 -85
  313. package/src/core/textures/SubTexture.ts +205 -205
  314. package/src/core/textures/Texture.ts +381 -337
  315. package/src/core/utils.ts +227 -227
  316. package/src/env.d.ts +7 -7
  317. package/src/main-api/INode.ts +100 -99
  318. package/src/main-api/Inspector.ts +567 -522
  319. package/src/main-api/Renderer.ts +873 -649
  320. package/src/main-api/utils.ts +45 -45
  321. package/src/utils.ts +267 -267
  322. package/dist/exports/core-api.d.ts +0 -74
  323. package/dist/exports/core-api.js +0 -96
  324. package/dist/exports/core-api.js.map +0 -1
  325. package/dist/exports/main-api.d.ts +0 -30
  326. package/dist/exports/main-api.js +0 -45
  327. package/dist/exports/main-api.js.map +0 -1
  328. package/dist/src/core/CoreExtension.d.ts +0 -12
  329. package/dist/src/core/CoreExtension.js +0 -29
  330. package/dist/src/core/CoreExtension.js.map +0 -1
  331. package/dist/src/core/CoreStuff.d.ts +0 -1
  332. package/dist/src/core/CoreStuff.js +0 -138
  333. package/dist/src/core/CoreStuff.js.map +0 -1
  334. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  335. package/dist/src/core/CoreTexturizer.js +0 -47
  336. package/dist/src/core/CoreTexturizer.js.map +0 -1
  337. package/dist/src/core/LngNode.d.ts +0 -736
  338. package/dist/src/core/LngNode.js +0 -1174
  339. package/dist/src/core/LngNode.js.map +0 -1
  340. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  341. package/dist/src/core/Matrix2DContext.js +0 -45
  342. package/dist/src/core/Matrix2DContext.js.map +0 -1
  343. package/dist/src/core/ShaderNode.d.ts +0 -10
  344. package/dist/src/core/ShaderNode.js +0 -30
  345. package/dist/src/core/ShaderNode.js.map +0 -1
  346. package/dist/src/core/TextNode.d.ts +0 -103
  347. package/dist/src/core/TextNode.js +0 -331
  348. package/dist/src/core/TextNode.js.map +0 -1
  349. package/dist/src/core/lib/Coords.d.ts +0 -14
  350. package/dist/src/core/lib/Coords.js +0 -55
  351. package/dist/src/core/lib/Coords.js.map +0 -1
  352. package/dist/src/core/lib/glm/common.d.ts +0 -162
  353. package/dist/src/core/lib/glm/common.js +0 -81
  354. package/dist/src/core/lib/glm/common.js.map +0 -1
  355. package/dist/src/core/lib/glm/index.d.ts +0 -11
  356. package/dist/src/core/lib/glm/index.js +0 -30
  357. package/dist/src/core/lib/glm/index.js.map +0 -1
  358. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  359. package/dist/src/core/lib/glm/mat2.js +0 -396
  360. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  361. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  362. package/dist/src/core/lib/glm/mat2d.js +0 -442
  363. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  364. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  365. package/dist/src/core/lib/glm/mat3.js +0 -680
  366. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  367. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  368. package/dist/src/core/lib/glm/mat4.js +0 -1802
  369. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  370. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  371. package/dist/src/core/lib/glm/quat.js +0 -693
  372. package/dist/src/core/lib/glm/quat.js.map +0 -1
  373. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  374. package/dist/src/core/lib/glm/quat2.js +0 -754
  375. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  376. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  377. package/dist/src/core/lib/glm/vec2.js +0 -569
  378. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  379. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  380. package/dist/src/core/lib/glm/vec3.js +0 -720
  381. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  382. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  383. package/dist/src/core/lib/glm/vec4.js +0 -608
  384. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  385. package/dist/src/core/platform.d.ts +0 -10
  386. package/dist/src/core/platform.js +0 -56
  387. package/dist/src/core/platform.js.map +0 -1
  388. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  389. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  390. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  391. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  392. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  393. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  394. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  395. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  396. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  397. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
  398. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  399. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  400. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  401. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  402. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  403. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
  404. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  405. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  406. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  407. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  408. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
  409. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
  410. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  411. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  412. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  413. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  414. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  415. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
  416. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  417. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  418. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
  419. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  420. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  421. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  422. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  423. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  424. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  425. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  426. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  427. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  428. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  429. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  430. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  431. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  432. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  433. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  434. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  435. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  436. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  437. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  438. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  439. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  440. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  441. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  442. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  443. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  444. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  445. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  446. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  447. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  448. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  449. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  450. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  451. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  452. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  453. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  454. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  455. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  456. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  457. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  458. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  459. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  460. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  461. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  462. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  463. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  464. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  465. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  466. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  467. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  468. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  469. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  470. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  471. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  472. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  473. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  474. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  475. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  476. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  477. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  478. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  479. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  480. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  481. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  482. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  483. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  484. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  485. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  486. package/dist/src/core/scene/Scene.d.ts +0 -59
  487. package/dist/src/core/scene/Scene.js +0 -106
  488. package/dist/src/core/scene/Scene.js.map +0 -1
  489. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  490. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  491. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  492. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  493. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  494. package/dist/src/main-api/DynamicShaderController.js +0 -58
  495. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  496. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  497. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  498. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  499. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  500. package/dist/src/main-api/IShaderController.d.ts +0 -14
  501. package/dist/src/main-api/IShaderController.js +0 -30
  502. package/dist/src/main-api/IShaderController.js.map +0 -1
  503. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  504. package/dist/src/main-api/IShaderNode.js +0 -19
  505. package/dist/src/main-api/IShaderNode.js.map +0 -1
  506. package/dist/src/main-api/RendererMain.d.ts +0 -375
  507. package/dist/src/main-api/RendererMain.js +0 -365
  508. package/dist/src/main-api/RendererMain.js.map +0 -1
  509. package/dist/src/main-api/ShaderController.d.ts +0 -31
  510. package/dist/src/main-api/ShaderController.js +0 -37
  511. package/dist/src/main-api/ShaderController.js.map +0 -1
  512. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  513. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  514. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  515. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  516. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  517. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  518. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  519. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  520. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  521. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  522. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  523. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  524. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  525. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  526. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  527. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  528. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  529. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  530. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  531. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  532. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  533. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  534. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  535. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  536. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  537. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  538. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  539. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  540. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  541. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  542. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  543. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  544. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  545. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  546. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  547. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  548. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  549. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  550. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  551. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  552. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  553. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  554. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  555. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  556. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  557. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  558. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  559. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  560. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  561. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  562. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  563. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  564. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  565. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  566. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  567. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  568. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  569. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  570. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  571. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  572. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  573. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  574. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  575. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  576. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  577. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  578. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  579. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  580. package/dist/src/render-drivers/utils.d.ts +0 -12
  581. package/dist/src/render-drivers/utils.js +0 -69
  582. package/dist/src/render-drivers/utils.js.map +0 -1
  583. package/scripts/please-use-pnpm.js +0 -13
  584. package/src/core/platform.ts +0 -64
  585. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  586. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  587. package/src/core/text-rendering/TrFontManager.ts +0 -183
  588. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  589. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  590. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  591. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  592. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  593. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  594. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  595. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  596. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  597. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
  598. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  599. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  600. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  601. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  602. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  603. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  604. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  605. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  606. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  607. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  608. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  609. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  610. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  611. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
@@ -1,448 +1,443 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
- import type {
21
- TextRenderer,
22
- TextRendererMap,
23
- TrProps,
24
- TextRendererState,
25
- TrFailedEventHandler,
26
- TrLoadedEventHandler,
27
- } from './text-rendering/renderers/TextRenderer.js';
28
- import { CoreNode, UpdateType, type CoreNodeProps } from './CoreNode.js';
29
- import type { Stage } from './Stage.js';
30
- import type { CoreRenderer } from './renderers/CoreRenderer.js';
31
- import type {
32
- NodeTextFailedPayload,
33
- NodeTextLoadedPayload,
34
- } from '../common/CommonTypes.js';
35
- import type { RectWithValid } from './lib/utils.js';
36
- import { assertTruthy } from '../utils.js';
37
- import { Matrix3d } from './lib/Matrix3d.js';
38
-
39
- export interface CoreTextNodeProps extends CoreNodeProps, TrProps {
40
- /**
41
- * Force Text Node to use a specific Text Renderer
42
- *
43
- * @remarks
44
- * By default, Text Nodes resolve the Text Renderer to use based on the font
45
- * that is matched using the font family and other font selection properties.
46
- *
47
- * If two fonts supported by two separate Text Renderers are matched setting
48
- * this override forces the Text Node to resolve to the Text Renderer defined
49
- * here.
50
- *
51
- * @default null
52
- */
53
- textRendererOverride: keyof TextRendererMap | null;
54
- }
55
-
56
- /**
57
- * An CoreNode in the Renderer scene graph that renders text.
58
- *
59
- * @remarks
60
- * A Text Node is the second graphical building block of the Renderer scene
61
- * graph. It renders text using a specific text renderer that is automatically
62
- * chosen based on the font requested and what type of fonts are installed
63
- * into an app.
64
- *
65
- * The text renderer can be overridden by setting the `textRendererOverride`
66
- *
67
- * The `texture` and `shader` properties are managed by loaded text renderer and
68
- * should not be set directly.
69
- *
70
- * For non-text rendering, see {@link CoreNode}.
71
- */
72
- export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
73
- textRenderer: TextRenderer;
74
- trState: TextRendererState;
75
- private _textRendererOverride: CoreTextNodeProps['textRendererOverride'] =
76
- null;
77
-
78
- constructor(
79
- stage: Stage,
80
- props: CoreTextNodeProps,
81
- textRenderer: TextRenderer,
82
- ) {
83
- super(stage, props);
84
- this._textRendererOverride = props.textRendererOverride;
85
- this.textRenderer = textRenderer;
86
- const textRendererState = this.createState({
87
- x: this.absX,
88
- y: this.absY,
89
- width: props.width,
90
- height: props.height,
91
- textAlign: props.textAlign,
92
- color: props.color,
93
- zIndex: props.zIndex,
94
- contain: props.contain,
95
- scrollable: props.scrollable,
96
- scrollY: props.scrollY,
97
- offsetY: props.offsetY,
98
- letterSpacing: props.letterSpacing,
99
- debug: props.debug,
100
- fontFamily: props.fontFamily,
101
- fontSize: props.fontSize,
102
- fontStretch: props.fontStretch,
103
- fontStyle: props.fontStyle,
104
- fontWeight: props.fontWeight,
105
- text: props.text,
106
- lineHeight: props.lineHeight,
107
- maxLines: props.maxLines,
108
- textBaseline: props.textBaseline,
109
- verticalAlign: props.verticalAlign,
110
- overflowSuffix: props.overflowSuffix,
111
- });
112
-
113
- this.trState = textRendererState;
114
- }
115
-
116
- private onTextLoaded: TrLoadedEventHandler = () => {
117
- const { contain } = this;
118
- const setWidth = this.trState.props.width;
119
- const setHeight = this.trState.props.height;
120
- const calcWidth = this.trState.textW || 0;
121
- const calcHeight = this.trState.textH || 0;
122
-
123
- if (contain === 'both') {
124
- this.props.width = setWidth;
125
- this.props.height = setHeight;
126
- } else if (contain === 'width') {
127
- this.props.width = setWidth;
128
- this.props.height = calcHeight;
129
- } else if (contain === 'none') {
130
- this.props.width = calcWidth;
131
- this.props.height = calcHeight;
132
- }
133
- this.updateLocalTransform();
134
-
135
- // Incase the RAF loop has been stopped already before text was loaded,
136
- // we request a render so it can be drawn.
137
- this.stage.requestRender();
138
- this.emit('loaded', {
139
- type: 'text',
140
- dimensions: {
141
- width: this.trState.textW || 0,
142
- height: this.trState.textH || 0,
143
- },
144
- } satisfies NodeTextLoadedPayload);
145
- };
146
-
147
- private onTextFailed: TrFailedEventHandler = (target, error) => {
148
- this.emit('failed', {
149
- type: 'text',
150
- error,
151
- } satisfies NodeTextFailedPayload);
152
- };
153
-
154
- override get width(): number {
155
- return this.props.width;
156
- }
157
-
158
- override set width(value: number) {
159
- this.props.width = value;
160
- this.textRenderer.set.width(this.trState, value);
161
-
162
- // If not containing, we must update the local transform to account for the
163
- // new width
164
- if (this.contain === 'none') {
165
- this.setUpdateType(UpdateType.Local);
166
- }
167
- }
168
-
169
- override get height(): number {
170
- return this.props.height;
171
- }
172
-
173
- override set height(value: number) {
174
- this.props.height = value;
175
- this.textRenderer.set.height(this.trState, value);
176
-
177
- // If not containing in the horizontal direction, we must update the local
178
- // transform to account for the new height
179
- if (this.contain !== 'both') {
180
- this.setUpdateType(UpdateType.Local);
181
- }
182
- }
183
-
184
- override get color(): number {
185
- return this.trState.props.color;
186
- }
187
-
188
- override set color(value: number) {
189
- this.textRenderer.set.color(this.trState, value);
190
- }
191
-
192
- get text(): string {
193
- return this.trState.props.text;
194
- }
195
-
196
- set text(value: string) {
197
- this.textRenderer.set.text(this.trState, value);
198
- }
199
-
200
- get textRendererOverride(): CoreTextNodeProps['textRendererOverride'] {
201
- return this._textRendererOverride;
202
- }
203
-
204
- set textRendererOverride(value: CoreTextNodeProps['textRendererOverride']) {
205
- this._textRendererOverride = value;
206
- this.textRenderer.destroyState(this.trState);
207
-
208
- const textRenderer = this.stage.resolveTextRenderer(
209
- this.trState.props,
210
- this._textRendererOverride,
211
- );
212
-
213
- if (!textRenderer) {
214
- console.warn(
215
- 'Text Renderer not found for font',
216
- this.trState.props.fontFamily,
217
- );
218
- return;
219
- }
220
-
221
- this.textRenderer = textRenderer;
222
- this.trState = this.createState(this.trState.props);
223
- }
224
-
225
- get fontSize(): CoreTextNodeProps['fontSize'] {
226
- return this.trState.props.fontSize;
227
- }
228
-
229
- set fontSize(value: CoreTextNodeProps['fontSize']) {
230
- this.textRenderer.set.fontSize(this.trState, value);
231
- }
232
-
233
- get fontFamily(): CoreTextNodeProps['fontFamily'] {
234
- return this.trState.props.fontFamily;
235
- }
236
-
237
- set fontFamily(value: CoreTextNodeProps['fontFamily']) {
238
- this.textRenderer.set.fontFamily(this.trState, value);
239
- }
240
-
241
- get fontStretch(): CoreTextNodeProps['fontStretch'] {
242
- return this.trState.props.fontStretch;
243
- }
244
-
245
- set fontStretch(value: CoreTextNodeProps['fontStretch']) {
246
- this.textRenderer.set.fontStretch(this.trState, value);
247
- }
248
-
249
- get fontStyle(): CoreTextNodeProps['fontStyle'] {
250
- return this.trState.props.fontStyle;
251
- }
252
-
253
- set fontStyle(value: CoreTextNodeProps['fontStyle']) {
254
- this.textRenderer.set.fontStyle(this.trState, value);
255
- }
256
-
257
- get fontWeight(): CoreTextNodeProps['fontWeight'] {
258
- return this.trState.props.fontWeight;
259
- }
260
-
261
- set fontWeight(value: CoreTextNodeProps['fontWeight']) {
262
- this.textRenderer.set.fontWeight(this.trState, value);
263
- }
264
-
265
- get textAlign(): CoreTextNodeProps['textAlign'] {
266
- return this.trState.props.textAlign;
267
- }
268
-
269
- set textAlign(value: CoreTextNodeProps['textAlign']) {
270
- this.textRenderer.set.textAlign(this.trState, value);
271
- }
272
-
273
- get contain(): CoreTextNodeProps['contain'] {
274
- return this.trState.props.contain;
275
- }
276
-
277
- set contain(value: CoreTextNodeProps['contain']) {
278
- this.textRenderer.set.contain(this.trState, value);
279
- }
280
-
281
- get scrollable(): CoreTextNodeProps['scrollable'] {
282
- return this.trState.props.scrollable;
283
- }
284
-
285
- set scrollable(value: CoreTextNodeProps['scrollable']) {
286
- this.textRenderer.set.scrollable(this.trState, value);
287
- }
288
-
289
- get scrollY(): CoreTextNodeProps['scrollY'] {
290
- return this.trState.props.scrollY;
291
- }
292
-
293
- set scrollY(value: CoreTextNodeProps['scrollY']) {
294
- this.textRenderer.set.scrollY(this.trState, value);
295
- }
296
-
297
- get offsetY(): CoreTextNodeProps['offsetY'] {
298
- return this.trState.props.offsetY;
299
- }
300
-
301
- set offsetY(value: CoreTextNodeProps['offsetY']) {
302
- this.textRenderer.set.offsetY(this.trState, value);
303
- }
304
-
305
- get letterSpacing(): CoreTextNodeProps['letterSpacing'] {
306
- return this.trState.props.letterSpacing;
307
- }
308
-
309
- set letterSpacing(value: CoreTextNodeProps['letterSpacing']) {
310
- this.textRenderer.set.letterSpacing(this.trState, value);
311
- }
312
-
313
- get lineHeight(): CoreTextNodeProps['lineHeight'] {
314
- return this.trState.props.lineHeight;
315
- }
316
-
317
- set lineHeight(value: CoreTextNodeProps['lineHeight']) {
318
- this.textRenderer.set.lineHeight(this.trState, value);
319
- }
320
-
321
- get maxLines(): CoreTextNodeProps['maxLines'] {
322
- return this.trState.props.maxLines;
323
- }
324
-
325
- set maxLines(value: CoreTextNodeProps['maxLines']) {
326
- this.textRenderer.set.maxLines(this.trState, value);
327
- }
328
-
329
- get textBaseline(): CoreTextNodeProps['textBaseline'] {
330
- return this.trState.props.textBaseline;
331
- }
332
-
333
- set textBaseline(value: CoreTextNodeProps['textBaseline']) {
334
- this.textRenderer.set.textBaseline(this.trState, value);
335
- }
336
-
337
- get verticalAlign(): CoreTextNodeProps['verticalAlign'] {
338
- return this.trState.props.verticalAlign;
339
- }
340
-
341
- set verticalAlign(value: CoreTextNodeProps['verticalAlign']) {
342
- this.textRenderer.set.verticalAlign(this.trState, value);
343
- }
344
-
345
- get overflowSuffix(): CoreTextNodeProps['overflowSuffix'] {
346
- return this.trState.props.overflowSuffix;
347
- }
348
-
349
- set overflowSuffix(value: CoreTextNodeProps['overflowSuffix']) {
350
- this.textRenderer.set.overflowSuffix(this.trState, value);
351
- }
352
-
353
- get debug(): CoreTextNodeProps['debug'] {
354
- return this.trState.props.debug;
355
- }
356
-
357
- set debug(value: CoreTextNodeProps['debug']) {
358
- this.textRenderer.set.debug(this.trState, value);
359
- }
360
-
361
- override update(delta: number, parentClippingRect: RectWithValid) {
362
- super.update(delta, parentClippingRect);
363
-
364
- assertTruthy(this.globalTransform);
365
-
366
- // globalTransform is updated in super.update(delta)
367
- this.textRenderer.set.x(this.trState, this.globalTransform.tx);
368
- this.textRenderer.set.y(this.trState, this.globalTransform.ty);
369
- }
370
-
371
- override checkBasicRenderability() {
372
- if (this.worldAlpha === 0 || this.isOutOfBounds() === true) {
373
- return false;
374
- }
375
-
376
- if (this.trState && this.trState.props.text !== '') {
377
- return true;
378
- }
379
-
380
- return false;
381
- }
382
-
383
- override setRenderable(isRenderable: boolean) {
384
- super.setRenderable(isRenderable);
385
- this.textRenderer.setIsRenderable(this.trState, isRenderable);
386
- }
387
-
388
- override renderQuads(renderer: CoreRenderer) {
389
- assertTruthy(this.globalTransform);
390
-
391
- // If the text renderer does not support rendering quads, fallback to the
392
- // default renderQuads method
393
- if (!this.textRenderer.renderQuads) {
394
- super.renderQuads(renderer);
395
- return;
396
- }
397
-
398
- // If the text renderer does support rendering quads, use it...
399
-
400
- // Prevent quad rendering if parent has a render texture
401
- // and this node is not the render texture
402
- if (this.parentHasRenderTexture) {
403
- if (!renderer.renderToTextureActive) {
404
- return;
405
- }
406
- // Prevent quad rendering if parent render texture is not the active render texture
407
- if (this.parentRenderTexture !== renderer.activeRttNode) {
408
- return;
409
- }
410
- }
411
-
412
- if (this.parentHasRenderTexture && this.props.parent?.rtt) {
413
- this.globalTransform = Matrix3d.identity();
414
- if (this.localTransform) {
415
- this.globalTransform.multiply(this.localTransform);
416
- }
417
- }
418
-
419
- assertTruthy(this.globalTransform);
420
-
421
- this.textRenderer.renderQuads(this);
422
- }
423
-
424
- /**
425
- * Destroy the node and cleanup all resources
426
- */
427
- override destroy(): void {
428
- super.destroy();
429
-
430
- this.textRenderer.destroyState(this.trState);
431
- }
432
-
433
- /**
434
- * Resolve a text renderer and a new state based on the current text renderer props provided
435
- * @param props
436
- * @returns
437
- */
438
- private createState(props: TrProps) {
439
- const textRendererState = this.textRenderer.createState(props, this);
440
-
441
- textRendererState.emitter.on('loaded', this.onTextLoaded);
442
- textRendererState.emitter.on('failed', this.onTextFailed);
443
-
444
- this.textRenderer.scheduleUpdateState(textRendererState);
445
-
446
- return textRendererState;
447
- }
448
- }
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+
20
+ import type {
21
+ FontHandler,
22
+ TextRenderer,
23
+ TrProps,
24
+ TextLayout,
25
+ TextRenderInfo,
26
+ } from './text-rendering/TextRenderer.js';
27
+ import {
28
+ CoreNode,
29
+ CoreNodeRenderState,
30
+ UpdateType,
31
+ type CoreNodeProps,
32
+ } from './CoreNode.js';
33
+ import type { Stage } from './Stage.js';
34
+ import type {
35
+ NodeTextFailedPayload,
36
+ NodeTextLoadedPayload,
37
+ NodeTextureLoadedPayload,
38
+ } from '../common/CommonTypes.js';
39
+ import type { RectWithValid } from './lib/utils.js';
40
+ import type { CoreRenderer } from './renderers/CoreRenderer.js';
41
+ import type { TextureLoadedEventHandler } from './textures/Texture.js';
42
+ export interface CoreTextNodeProps extends CoreNodeProps, TrProps {
43
+ /**
44
+ * Force Text Node to use a specific Text Renderer
45
+ */
46
+ textRendererOverride?: string | null;
47
+ forceLoad: boolean;
48
+ }
49
+
50
+ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
51
+ private textRenderer: TextRenderer;
52
+ private fontHandler: FontHandler;
53
+
54
+ private _layoutGenerated = false;
55
+
56
+ // SDF layout caching for performance
57
+ private _cachedLayout: TextLayout | null = null;
58
+ private _lastVertexBuffer: Float32Array | null = null;
59
+
60
+ // Text renderer properties - stored directly on the node
61
+ private textProps: CoreTextNodeProps;
62
+
63
+ private _renderInfo: TextRenderInfo = {
64
+ width: 0,
65
+ height: 0,
66
+ };
67
+
68
+ private _type: 'sdf' | 'canvas' = 'sdf'; // Default to SDF renderer
69
+
70
+ constructor(
71
+ stage: Stage,
72
+ props: CoreTextNodeProps,
73
+ textRenderer: TextRenderer,
74
+ ) {
75
+ super(stage, props);
76
+ this.textRenderer = textRenderer;
77
+ this.fontHandler = textRenderer.font;
78
+ this._type = textRenderer.type;
79
+
80
+ // Initialize text properties from props
81
+ // Props are guaranteed to have all defaults resolved by Stage.createTextNode
82
+ this.textProps = props;
83
+
84
+ this.setUpdateType(UpdateType.All);
85
+ }
86
+
87
+ protected override onTextureLoaded: TextureLoadedEventHandler = (
88
+ _,
89
+ dimensions,
90
+ ) => {
91
+ // If parent has a render texture, flag that we need to update
92
+ if (this.parentHasRenderTexture) {
93
+ this.notifyParentRTTOfUpdate();
94
+ }
95
+
96
+ // ignore 1x1 pixel textures
97
+ if (dimensions.width > 1 && dimensions.height > 1) {
98
+ this.emit('loaded', {
99
+ type: 'texture',
100
+ dimensions,
101
+ } satisfies NodeTextureLoadedPayload);
102
+ }
103
+
104
+ this.width = this._renderInfo.width;
105
+ this.height = this._renderInfo.height;
106
+
107
+ // Texture was loaded. In case the RAF loop has already stopped, we request
108
+ // a render to ensure the texture is rendered.
109
+ this.stage.requestRender();
110
+ };
111
+
112
+ /**
113
+ * Override CoreNode's update method to handle text-specific updates
114
+ */
115
+ override update(delta: number, parentClippingRect: RectWithValid): void {
116
+ if (
117
+ (this.props.parent?.isRenderable === true &&
118
+ this._layoutGenerated === false) ||
119
+ (this.textProps.forceLoad === true &&
120
+ this._layoutGenerated === false &&
121
+ this.fontHandler.isFontLoaded(this.textProps.fontFamily) === true)
122
+ ) {
123
+ this._cachedLayout = null; // Invalidate cached layout
124
+ this._lastVertexBuffer = null; // Invalidate last vertex buffer
125
+ const resp = this.textRenderer.renderText(this.stage, this.textProps);
126
+ this.handleRenderResult(resp);
127
+ this._layoutGenerated = true;
128
+ }
129
+
130
+ // First run the standard CoreNode update
131
+ super.update(delta, parentClippingRect);
132
+ }
133
+
134
+ /**
135
+ * Override is renderable check for SDF text nodes
136
+ */
137
+ override updateIsRenderable(): void {
138
+ // SDF text nodes are always renderable if they have a valid layout
139
+ if (this._type === 'canvas') {
140
+ super.updateIsRenderable();
141
+ return;
142
+ }
143
+
144
+ // For SDF, check if we have a cached layout
145
+ this.setRenderable(this._cachedLayout !== null);
146
+ }
147
+
148
+ /**
149
+ * Handle the result of text rendering for both Canvas and SDF renderers
150
+ */
151
+ private handleRenderResult(result: TextRenderInfo): void {
152
+ // Host paths on top
153
+ const textRendererType = this._type;
154
+ let width = result.width;
155
+ let height = result.height;
156
+
157
+ // Handle Canvas renderer (uses ImageData)
158
+ if (textRendererType === 'canvas') {
159
+ if (result.imageData === undefined) {
160
+ this.emit('failed', {
161
+ type: 'text',
162
+ error: new Error(
163
+ 'Canvas text rendering failed, no image data returned',
164
+ ),
165
+ } satisfies NodeTextFailedPayload);
166
+ return;
167
+ }
168
+
169
+ this.texture = this.stage.txManager.createTexture('ImageTexture', {
170
+ premultiplyAlpha: true,
171
+ src: result.imageData as ImageData,
172
+ });
173
+
174
+ // It isn't renderable until the texture is loaded we have to set it to false here to avoid it
175
+ // being detected as a renderable default color node in the next frame
176
+ // it will be corrected once the texture is loaded
177
+ this.setRenderable(false);
178
+
179
+ if (this.renderState > CoreNodeRenderState.OutOfBounds) {
180
+ // We do want the texture to load immediately
181
+ this.texture.setRenderableOwner(this, true);
182
+ }
183
+ }
184
+
185
+ // Handle SDF renderer (uses layout caching)
186
+ if (textRendererType === 'sdf') {
187
+ this._cachedLayout = result.layout || null;
188
+ this.setRenderable(true);
189
+ this.props.width = width;
190
+ this.props.height = height;
191
+ this.setUpdateType(UpdateType.Local);
192
+ }
193
+
194
+ this._renderInfo = result;
195
+ this.emit('loaded', {
196
+ type: 'text',
197
+ dimensions: {
198
+ width: width,
199
+ height: height,
200
+ },
201
+ } satisfies NodeTextLoadedPayload);
202
+ }
203
+
204
+ /**
205
+ * Override renderQuads to handle SDF vs Canvas rendering
206
+ */
207
+ override renderQuads(renderer: CoreRenderer): void {
208
+ // Canvas renderer: use standard texture rendering via CoreNode
209
+ if (this._type === 'canvas') {
210
+ super.renderQuads(renderer);
211
+ return;
212
+ }
213
+
214
+ // Early return if no cached data
215
+ if (!this._cachedLayout) {
216
+ return;
217
+ }
218
+
219
+ if (this._lastVertexBuffer === null) {
220
+ this._lastVertexBuffer = this.textRenderer.addQuads(this._cachedLayout);
221
+ }
222
+
223
+ const props = this.textProps;
224
+ this.textRenderer.renderQuads(
225
+ renderer,
226
+ this._cachedLayout as TextLayout,
227
+ this._lastVertexBuffer!,
228
+ {
229
+ fontFamily: this.textProps.fontFamily,
230
+ fontSize: props.fontSize,
231
+ color: this.props.color || 0xffffffff,
232
+ offsetY: props.offsetY,
233
+ worldAlpha: this.worldAlpha,
234
+ globalTransform: this.globalTransform!.getFloatArr(),
235
+ clippingRect: this.clippingRect,
236
+ width: this.props.width,
237
+ height: this.props.height,
238
+ parentHasRenderTexture: this.parentHasRenderTexture,
239
+ framebufferDimensions:
240
+ this.parentHasRenderTexture === true
241
+ ? this.parentFramebufferDimensions
242
+ : null,
243
+ stage: this.stage,
244
+ },
245
+ );
246
+ }
247
+
248
+ get maxWidth() {
249
+ return this.textProps.maxWidth;
250
+ }
251
+
252
+ set maxWidth(value: number) {
253
+ if (this.textProps.maxWidth !== value) {
254
+ this.textProps.maxWidth = value;
255
+ this._layoutGenerated = false;
256
+ this.setUpdateType(UpdateType.Local);
257
+ }
258
+ }
259
+
260
+ // Property getters and setters
261
+ get maxHeight() {
262
+ return this.textProps.maxHeight;
263
+ }
264
+
265
+ set maxHeight(value: number) {
266
+ if (this.textProps.maxHeight !== value) {
267
+ this.textProps.maxHeight = value;
268
+ this._layoutGenerated = false;
269
+ this.setUpdateType(UpdateType.Local);
270
+ }
271
+ }
272
+
273
+ get text(): string {
274
+ return this.textProps.text;
275
+ }
276
+
277
+ set text(value: string) {
278
+ if (this.textProps.text !== value) {
279
+ this.textProps.text = value;
280
+ this._layoutGenerated = false;
281
+ this.setUpdateType(UpdateType.Local);
282
+ }
283
+ }
284
+
285
+ get fontSize(): number {
286
+ return this.textProps.fontSize;
287
+ }
288
+
289
+ set fontSize(value: number) {
290
+ if (this.textProps.fontSize !== value) {
291
+ this.textProps.fontSize = value;
292
+ this._layoutGenerated = false;
293
+ this.setUpdateType(UpdateType.Local);
294
+ }
295
+ }
296
+
297
+ get fontFamily(): string {
298
+ return this.textProps.fontFamily;
299
+ }
300
+
301
+ set fontFamily(value: string) {
302
+ if (this.textProps.fontFamily !== value) {
303
+ this.textProps.fontFamily = value;
304
+ this._layoutGenerated = true;
305
+ this.setUpdateType(UpdateType.Local);
306
+ }
307
+ }
308
+
309
+ get fontStyle(): TrProps['fontStyle'] {
310
+ return this.textProps.fontStyle;
311
+ }
312
+
313
+ set fontStyle(value: TrProps['fontStyle']) {
314
+ if (this.textProps.fontStyle !== value) {
315
+ this.textProps.fontStyle = value;
316
+ this._layoutGenerated = true;
317
+ this.setUpdateType(UpdateType.Local);
318
+ }
319
+ }
320
+
321
+ get textAlign(): TrProps['textAlign'] {
322
+ return this.textProps.textAlign;
323
+ }
324
+
325
+ set textAlign(value: TrProps['textAlign']) {
326
+ if (this.textProps.textAlign !== value) {
327
+ this.textProps.textAlign = value;
328
+ this._layoutGenerated = false;
329
+ this.setUpdateType(UpdateType.Local);
330
+ }
331
+ }
332
+
333
+ get letterSpacing(): number {
334
+ return this.textProps.letterSpacing;
335
+ }
336
+
337
+ set letterSpacing(value: number) {
338
+ if (this.textProps.letterSpacing !== value) {
339
+ this.textProps.letterSpacing = value;
340
+ this._layoutGenerated = false;
341
+ this.setUpdateType(UpdateType.Local);
342
+ }
343
+ }
344
+
345
+ get lineHeight(): number {
346
+ return this.textProps.lineHeight;
347
+ }
348
+
349
+ set lineHeight(value: number) {
350
+ if (this.textProps.lineHeight !== value) {
351
+ this.textProps.lineHeight = value;
352
+ this._layoutGenerated = false;
353
+ this.setUpdateType(UpdateType.Local);
354
+ }
355
+ }
356
+
357
+ get maxLines(): number {
358
+ return this.textProps.maxLines;
359
+ }
360
+
361
+ set maxLines(value: number) {
362
+ if (this.textProps.maxLines !== value) {
363
+ this.textProps.maxLines = value;
364
+ this._layoutGenerated = false;
365
+ this.setUpdateType(UpdateType.Local);
366
+ }
367
+ }
368
+
369
+ get textBaseline(): TrProps['textBaseline'] {
370
+ return this.textProps.textBaseline;
371
+ }
372
+
373
+ set textBaseline(value: TrProps['textBaseline']) {
374
+ if (this.textProps.textBaseline !== value) {
375
+ this.textProps.textBaseline = value;
376
+ this._layoutGenerated = false;
377
+ this.setUpdateType(UpdateType.Local);
378
+ }
379
+ }
380
+
381
+ get verticalAlign(): TrProps['verticalAlign'] {
382
+ return this.textProps.verticalAlign;
383
+ }
384
+
385
+ set verticalAlign(value: TrProps['verticalAlign']) {
386
+ if (this.textProps.verticalAlign !== value) {
387
+ this.textProps.verticalAlign = value;
388
+ this._layoutGenerated = false;
389
+ this.setUpdateType(UpdateType.Local);
390
+ }
391
+ }
392
+
393
+ get overflowSuffix(): string {
394
+ return this.textProps.overflowSuffix;
395
+ }
396
+
397
+ set overflowSuffix(value: string) {
398
+ if (this.textProps.overflowSuffix !== value) {
399
+ this.textProps.overflowSuffix = value;
400
+ this._layoutGenerated = false;
401
+ this.setUpdateType(UpdateType.Local);
402
+ }
403
+ }
404
+
405
+ get wordBreak(): TrProps['wordBreak'] {
406
+ return this.textProps.wordBreak;
407
+ }
408
+
409
+ set wordBreak(value: TrProps['wordBreak']) {
410
+ if (this.textProps.wordBreak !== value) {
411
+ this.textProps.wordBreak = value;
412
+ this._layoutGenerated = false;
413
+ this.setUpdateType(UpdateType.Local);
414
+ }
415
+ }
416
+
417
+ get offsetY(): number {
418
+ return this.textProps.offsetY;
419
+ }
420
+
421
+ set offsetY(value: number) {
422
+ if (this.textProps.offsetY !== value) {
423
+ this.textProps.offsetY = value;
424
+ this._layoutGenerated = false;
425
+ this.setUpdateType(UpdateType.Local);
426
+ }
427
+ }
428
+
429
+ get forceLoad() {
430
+ return this.textProps.forceLoad;
431
+ }
432
+
433
+ set forceLoad(value: boolean) {
434
+ if (this.textProps.forceLoad !== value) {
435
+ this.textProps.forceLoad = value;
436
+ this.setUpdateType(UpdateType.Local);
437
+ }
438
+ }
439
+
440
+ get renderInfo(): TextRenderInfo {
441
+ return this._renderInfo;
442
+ }
443
+ }