@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,841 +0,0 @@
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 {
21
- type Bound,
22
- type Rect,
23
- createBound,
24
- type BoundWithValid,
25
- intersectRect,
26
- type RectWithValid,
27
- copyRect,
28
- boundsOverlap,
29
- convertBoundToRect,
30
- } from '../../../lib/utils.js';
31
- import {
32
- TextRenderer,
33
- type TrProps,
34
- type TextRendererState,
35
- type TrFontProps,
36
- type TrPropSetters,
37
- } from '../TextRenderer.js';
38
- import { SdfTrFontFace } from '../../font-face-types/SdfTrFontFace/SdfTrFontFace.js';
39
- import { FLOATS_PER_GLYPH } from './internal/constants.js';
40
- import { getStartConditions } from './internal/getStartConditions.js';
41
- import { layoutText } from './internal/layoutText.js';
42
- import {
43
- setRenderWindow,
44
- type SdfRenderWindow,
45
- } from './internal/setRenderWindow.js';
46
- import type { TrFontFace } from '../../font-face-types/TrFontFace.js';
47
- import { type FontFamilyMap } from '../../TrFontManager.js';
48
- import { assertTruthy, mergeColorAlpha } from '../../../../utils.js';
49
- import type { Stage } from '../../../Stage.js';
50
- import { WebGlRenderOp } from '../../../renderers/webgl/WebGlRenderOp.js';
51
- import { BufferCollection } from '../../../renderers/webgl/internal/BufferCollection.js';
52
- import { Sdf, type SdfShaderProps } from '../../../shaders/webgl/SdfShader.js';
53
- import type { WebGlCtxTexture } from '../../../renderers/webgl/WebGlCtxTexture.js';
54
- import { EventEmitter } from '../../../../common/EventEmitter.js';
55
- import type { Matrix3d } from '../../../lib/Matrix3d.js';
56
- import type { Dimensions } from '../../../../common/CommonTypes.js';
57
- import { WebGlRenderer } from '../../../renderers/webgl/WebGlRenderer.js';
58
- import { calcDefaultLineHeight } from '../../TextRenderingUtils.js';
59
- import type { WebGlShaderProgram } from '../../../renderers/webgl/WebGlShaderProgram.js';
60
- import type { WebGlShaderNode } from '../../../renderers/webgl/WebGlShaderNode.js';
61
- import type { CoreTextNode } from '../../../CoreTextNode.js';
62
-
63
- declare module '../TextRenderer.js' {
64
- interface TextRendererMap {
65
- sdf: SdfTextRenderer;
66
- }
67
-
68
- // Add prefixed SDF-specific props to TextRendererDebugProps
69
- interface TextRendererDebugProps {
70
- sdfShaderDebug: boolean;
71
- }
72
- }
73
-
74
- export interface LineCacheItem {
75
- codepointIndex: number;
76
- maxY: number;
77
- maxX: number;
78
- }
79
-
80
- export interface SdfTextRendererState extends TextRendererState {
81
- /**
82
- * Cache for layout resume points indexed by the `curY` for each line
83
- * in the render sequence.
84
- *
85
- * Allows faster rendering by skipping parts of the layout loop that are
86
- * outside of the renderWindow.
87
- */
88
- lineCache: LineCacheItem[];
89
-
90
- renderWindow: SdfRenderWindow;
91
-
92
- elementBounds: BoundWithValid;
93
-
94
- clippingRect: RectWithValid;
95
-
96
- bufferNumFloats: number;
97
-
98
- bufferNumQuads: number;
99
-
100
- vertexBuffer: Float32Array | undefined;
101
-
102
- webGlBuffers: BufferCollection | null;
103
-
104
- bufferUploaded: boolean;
105
-
106
- distanceRange: number;
107
-
108
- trFontFace: SdfTrFontFace | undefined;
109
-
110
- /**
111
- * Resolved line height in logical screen pixel units
112
- */
113
- resLineHeight: number | undefined;
114
- }
115
-
116
- /**
117
- * Ephemeral rect object used for calculations
118
- */
119
- const tmpRect: Rect = {
120
- x: 0,
121
- y: 0,
122
- width: 0,
123
- height: 0,
124
- };
125
-
126
- /**
127
- * Singleton class for rendering text using signed distance fields.
128
- *
129
- * @remarks
130
- * SdfTextRenderer supports both single-channel and multi-channel signed distance fields.
131
- */
132
- export class SdfTextRenderer extends TextRenderer<SdfTextRendererState> {
133
- /**
134
- * Map of font family names to a set of font faces.
135
- */
136
- private ssdfFontFamilies: FontFamilyMap = {};
137
- private msdfFontFamilies: FontFamilyMap = {};
138
- private fontFamilyArray: FontFamilyMap[] = [
139
- this.ssdfFontFamilies,
140
- this.msdfFontFamilies,
141
- ];
142
- private sdfShader: WebGlShaderNode;
143
- private rendererBounds: Bound;
144
-
145
- public type: 'canvas' | 'sdf' = 'sdf';
146
-
147
- constructor(stage: Stage) {
148
- super(stage);
149
- this.stage.shManager.registerShaderType('Sdf', Sdf);
150
- this.sdfShader = this.stage.shManager.createShader(
151
- 'Sdf',
152
- ) as WebGlShaderNode;
153
- this.rendererBounds = {
154
- x1: 0,
155
- y1: 0,
156
- x2: this.stage.options.appWidth,
157
- y2: this.stage.options.appHeight,
158
- };
159
- }
160
-
161
- //#region Overrides
162
- getPropertySetters(): Partial<TrPropSetters<SdfTextRendererState>> {
163
- return {
164
- fontFamily: (state, value) => {
165
- state.props.fontFamily = value;
166
- this.releaseFontFace(state);
167
- this.invalidateLayoutCache(state);
168
- },
169
- fontWeight: (state, value) => {
170
- state.props.fontWeight = value;
171
- this.releaseFontFace(state);
172
- this.invalidateLayoutCache(state);
173
- },
174
- fontStyle: (state, value) => {
175
- state.props.fontStyle = value;
176
- this.releaseFontFace(state);
177
- this.invalidateLayoutCache(state);
178
- },
179
- fontStretch: (state, value) => {
180
- state.props.fontStretch = value;
181
- this.releaseFontFace(state);
182
- this.invalidateLayoutCache(state);
183
- },
184
- fontSize: (state, value) => {
185
- state.props.fontSize = value;
186
- this.invalidateLayoutCache(state);
187
- },
188
- text: (state, value) => {
189
- state.props.text = value;
190
- this.invalidateLayoutCache(state);
191
- },
192
- textAlign: (state, value) => {
193
- state.props.textAlign = value;
194
- this.invalidateLayoutCache(state);
195
- },
196
- color: (state, value) => {
197
- state.props.color = value;
198
- },
199
- x: (state, value) => {
200
- state.props.x = value;
201
- if (state.elementBounds.valid) {
202
- this.setElementBoundsX(state);
203
- // Only schedule an update if the text is not already rendered
204
- // (renderWindow is invalid) and the element possibly overlaps the screen
205
- // This is to avoid unnecessary updates when we know text is off-screen
206
- if (
207
- !state.renderWindow.valid &&
208
- boundsOverlap(state.elementBounds, this.rendererBounds)
209
- ) {
210
- this.scheduleUpdateState(state);
211
- }
212
- }
213
- },
214
- y: (state, value) => {
215
- state.props.y = value;
216
- if (state.elementBounds.valid) {
217
- this.setElementBoundsY(state);
218
- // See x() for explanation
219
- if (
220
- !state.renderWindow.valid &&
221
- boundsOverlap(state.elementBounds, this.rendererBounds)
222
- ) {
223
- this.scheduleUpdateState(state);
224
- }
225
- }
226
- },
227
- contain: (state, value) => {
228
- state.props.contain = value;
229
- this.invalidateLayoutCache(state);
230
- },
231
- width: (state, value) => {
232
- state.props.width = value;
233
- // Only invalidate layout cache if we're containing in the horizontal direction
234
- if (state.props.contain !== 'none') {
235
- this.invalidateLayoutCache(state);
236
- }
237
- },
238
- height: (state, value) => {
239
- state.props.height = value;
240
- // Only invalidate layout cache if we're containing in the vertical direction
241
- if (state.props.contain === 'both') {
242
- this.invalidateLayoutCache(state);
243
- }
244
- },
245
- offsetY: (state, value) => {
246
- state.props.offsetY = value;
247
- this.invalidateLayoutCache(state);
248
- },
249
- scrollable: (state, value) => {
250
- state.props.scrollable = value;
251
- this.invalidateLayoutCache(state);
252
- },
253
- scrollY: (state, value) => {
254
- state.props.scrollY = value;
255
- // Scrolling doesn't need to invalidate any caches, but it does need to
256
- // schedule an update
257
- this.scheduleUpdateState(state);
258
- },
259
- letterSpacing: (state, value) => {
260
- state.props.letterSpacing = value;
261
- this.invalidateLayoutCache(state);
262
- },
263
- lineHeight: (state, value) => {
264
- state.props.lineHeight = value;
265
- state.resLineHeight = undefined;
266
- this.invalidateLayoutCache(state);
267
- },
268
- maxLines: (state, value) => {
269
- state.props.maxLines = value;
270
- this.invalidateLayoutCache(state);
271
- },
272
- textBaseline: (state, value) => {
273
- state.props.textBaseline = value;
274
- this.invalidateLayoutCache(state);
275
- },
276
- verticalAlign: (state, value) => {
277
- state.props.verticalAlign = value;
278
- this.invalidateLayoutCache(state);
279
- },
280
- overflowSuffix: (state, value) => {
281
- state.props.overflowSuffix = value;
282
- this.invalidateLayoutCache(state);
283
- },
284
- debug: (state, value) => {
285
- state.props.debug = value;
286
- },
287
- };
288
- }
289
-
290
- override canRenderFont(props: TrFontProps): boolean {
291
- // TODO: Support matching on font stretch, weight and style (if/when needed)
292
- // For now we just match on the font family name
293
- // '$$SDF_FAILURE_TEST$$' is used to test the 'failure' event coming from text
294
- const { fontFamily } = props;
295
- return (
296
- fontFamily in this.ssdfFontFamilies ||
297
- fontFamily in this.msdfFontFamilies ||
298
- fontFamily === '$$SDF_FAILURE_TEST$$'
299
- );
300
- }
301
-
302
- override isFontFaceSupported(fontFace: TrFontFace): boolean {
303
- return fontFace instanceof SdfTrFontFace;
304
- }
305
-
306
- override addFontFace(fontFace: TrFontFace): void {
307
- // Make sure the font face is an SDF font face (it should have already passed
308
- // the `isFontFaceSupported` check)
309
- assertTruthy(fontFace instanceof SdfTrFontFace);
310
- const familyName = fontFace.fontFamily;
311
- const fontFamiles =
312
- fontFace.type === 'ssdf'
313
- ? this.ssdfFontFamilies
314
- : fontFace.type === 'msdf'
315
- ? this.msdfFontFamilies
316
- : undefined;
317
- if (!fontFamiles) {
318
- console.warn(`Invalid font face type: ${fontFace.type as string}`);
319
- return;
320
- }
321
- let faceSet = fontFamiles[familyName];
322
- if (!faceSet) {
323
- faceSet = new Set();
324
- fontFamiles[familyName] = faceSet;
325
- }
326
- faceSet.add(fontFace);
327
- }
328
-
329
- override createState(props: TrProps): SdfTextRendererState {
330
- return {
331
- props,
332
- status: 'initialState',
333
- updateScheduled: false,
334
- emitter: new EventEmitter(),
335
- lineCache: [],
336
- forceFullLayoutCalc: false,
337
- renderWindow: {
338
- screen: {
339
- x1: 0,
340
- y1: 0,
341
- x2: 0,
342
- y2: 0,
343
- },
344
- sdf: {
345
- x1: 0,
346
- y1: 0,
347
- x2: 0,
348
- y2: 0,
349
- },
350
- firstLineIdx: 0,
351
- numLines: 0,
352
- valid: false,
353
- },
354
- elementBounds: {
355
- x1: 0,
356
- y1: 0,
357
- x2: 0,
358
- y2: 0,
359
- valid: false,
360
- },
361
- clippingRect: {
362
- x: 0,
363
- y: 0,
364
- width: 0,
365
- height: 0,
366
- valid: false,
367
- },
368
- bufferNumFloats: 0,
369
- bufferNumQuads: 0,
370
- vertexBuffer: undefined,
371
- webGlBuffers: null,
372
- bufferUploaded: false,
373
- textH: undefined,
374
- textW: undefined,
375
- distanceRange: 0,
376
- trFontFace: undefined,
377
- isRenderable: false,
378
- resLineHeight: undefined,
379
- debugData: {
380
- updateCount: 0,
381
- layoutCount: 0,
382
- lastLayoutNumCharacters: 0,
383
- layoutSum: 0,
384
- drawSum: 0,
385
- drawCount: 0,
386
- bufferSize: 0,
387
- },
388
- };
389
- }
390
-
391
- override updateState(state: SdfTextRendererState): void {
392
- let { trFontFace } = state;
393
- const { textH, lineCache, debugData, forceFullLayoutCalc } = state;
394
- debugData.updateCount++;
395
-
396
- // On the first update call we need to set the status to loading
397
- if (state.status === 'initialState') {
398
- this.setStatus(state, 'loading');
399
- }
400
-
401
- // Resolve font face if we haven't yet
402
- if (trFontFace === undefined) {
403
- trFontFace = this.resolveFontFace(state.props);
404
- state.trFontFace = trFontFace;
405
- if (trFontFace === undefined) {
406
- const msg = `SdfTextRenderer: Could not resolve font face for family: '${state.props.fontFamily}'`;
407
- console.error(msg);
408
- this.setStatus(state, 'failed', new Error(msg));
409
- return;
410
- }
411
- trFontFace.texture.setRenderableOwner(state, true);
412
- }
413
-
414
- // If the font hasn't been loaded yet, stop here.
415
- // Listen for the 'loaded' event and forward fontLoaded event
416
- if (trFontFace.loaded === false) {
417
- trFontFace.once('loaded', () => {
418
- this.scheduleUpdateState(state);
419
- });
420
- return;
421
- }
422
-
423
- // If the font is loaded then so should the data
424
- assertTruthy(trFontFace.data, 'Font face data should be loaded');
425
- assertTruthy(trFontFace.metrics, 'Font face metrics should be loaded');
426
-
427
- const {
428
- text,
429
- fontSize,
430
- x,
431
- y,
432
- contain,
433
- width,
434
- height,
435
- verticalAlign,
436
- scrollable,
437
- overflowSuffix,
438
- maxLines,
439
- } = state.props;
440
-
441
- // scrollY only has an effect when contain === 'both' and scrollable === true
442
- const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;
443
-
444
- const { renderWindow } = state;
445
-
446
- /**
447
- * The font size of the SDF font face (the basis for SDF space units)
448
- */
449
- const sdfFontSize = trFontFace.data.info.size;
450
-
451
- /**
452
- * Divide screen space units by this to get the SDF space units
453
- * Mulitple SDF space units by this to get screen space units
454
- */
455
- const fontSizeRatio = fontSize / sdfFontSize;
456
-
457
- // If not already resolved, resolve the line height and store it in the state
458
- let resLineHeight = state.resLineHeight;
459
- if (resLineHeight === undefined) {
460
- const lineHeight = state.props.lineHeight;
461
- // If lineHeight is undefined, use the maxCharHeight from the font face
462
- if (lineHeight === undefined) {
463
- resLineHeight = calcDefaultLineHeight(trFontFace.metrics, fontSize);
464
- } else {
465
- resLineHeight = lineHeight;
466
- }
467
- state.resLineHeight = resLineHeight;
468
- }
469
-
470
- // Needed in renderWindow calculation
471
- const sdfLineHeight = resLineHeight / fontSizeRatio;
472
-
473
- state.distanceRange =
474
- fontSizeRatio * trFontFace.data.distanceField.distanceRange;
475
-
476
- // Allocate buffers if needed
477
- const neededLength = text.length * FLOATS_PER_GLYPH;
478
- let vertexBuffer = state.vertexBuffer;
479
- if (!vertexBuffer || vertexBuffer.length < neededLength) {
480
- vertexBuffer = new Float32Array(neededLength * 2);
481
- }
482
-
483
- const elementBounds = state.elementBounds;
484
- if (!elementBounds.valid) {
485
- this.setElementBoundsX(state);
486
- this.setElementBoundsY(state);
487
- elementBounds.valid = true;
488
- }
489
-
490
- // Return early if we're still viewing inside the established render window
491
- // No need to re-render what we've already rendered
492
- // (Only if there's an established renderWindow and we're not suppressing early exit)
493
- if (!forceFullLayoutCalc && renderWindow.valid) {
494
- const rwScreen = renderWindow.screen;
495
- if (
496
- x + rwScreen.x1 <= elementBounds.x1 &&
497
- x + rwScreen.x2 >= elementBounds.x2 &&
498
- y - scrollY + rwScreen.y1 <= elementBounds.y1 &&
499
- y - scrollY + rwScreen.y2 >= elementBounds.y2
500
- ) {
501
- this.setStatus(state, 'loaded');
502
- return;
503
- }
504
- // Otherwise invalidate the renderWindow so it can be redone
505
- renderWindow.valid = false;
506
- this.setStatus(state, 'loading');
507
- }
508
-
509
- const { offsetY, textAlign } = state.props;
510
-
511
- // Create a new renderWindow if needed
512
- if (!renderWindow.valid) {
513
- const isPossiblyOnScreen = boundsOverlap(
514
- elementBounds,
515
- this.rendererBounds,
516
- );
517
-
518
- if (!isPossiblyOnScreen) {
519
- // If the element is not possibly on screen, we can skip the layout and rendering completely
520
- return;
521
- }
522
-
523
- setRenderWindow(
524
- renderWindow,
525
- x,
526
- y,
527
- scrollY,
528
- resLineHeight,
529
- contain === 'both' ? elementBounds.y2 - elementBounds.y1 : 0,
530
- elementBounds,
531
- fontSizeRatio,
532
- );
533
- // console.log('newRenderWindow', renderWindow);
534
- }
535
-
536
- const start = getStartConditions(
537
- sdfFontSize,
538
- sdfLineHeight,
539
- trFontFace,
540
- verticalAlign,
541
- offsetY,
542
- fontSizeRatio,
543
- renderWindow,
544
- lineCache,
545
- textH,
546
- );
547
-
548
- if (!start) {
549
- // Nothing to render, return early, but still mark as loaded (since the text is just scrolled
550
- // out of view)
551
- this.setStatus(state, 'loaded');
552
- return;
553
- }
554
-
555
- const { letterSpacing } = state.props;
556
-
557
- const out2 = layoutText(
558
- start.lineIndex,
559
- start.sdfX,
560
- start.sdfY,
561
- text,
562
- textAlign,
563
- width,
564
- height,
565
- fontSize,
566
- resLineHeight,
567
- letterSpacing,
568
- vertexBuffer,
569
- contain,
570
- lineCache,
571
- renderWindow.sdf,
572
- trFontFace,
573
- forceFullLayoutCalc,
574
- scrollable,
575
- overflowSuffix,
576
- maxLines,
577
- );
578
-
579
- state.bufferUploaded = false;
580
- state.bufferNumFloats = out2.bufferNumFloats;
581
- state.bufferNumQuads = out2.bufferNumQuads;
582
- state.vertexBuffer = vertexBuffer;
583
- state.renderWindow = renderWindow;
584
- debugData.lastLayoutNumCharacters = out2.layoutNumCharacters;
585
- debugData.bufferSize = vertexBuffer.byteLength;
586
-
587
- // If we didn't exit early, we know we have completely computed w/h
588
- if (out2.fullyProcessed) {
589
- state.textW = out2.maxX * fontSizeRatio;
590
- state.textH = out2.numLines * sdfLineHeight * fontSizeRatio;
591
- }
592
-
593
- // if (state.props.debug.printLayoutTime) {
594
- // debugData.layoutSum += performance.now() - updateStartTime;
595
- // debugData.layoutCount++;
596
- // }
597
- this.setStatus(state, 'loaded');
598
- }
599
-
600
- override renderQuads(node: CoreTextNode): void {
601
- const state = node.trState as SdfTextRendererState;
602
- if (!state.vertexBuffer) {
603
- // Nothing to draw
604
- return;
605
- }
606
-
607
- const renderer = this.stage.renderer;
608
- assertTruthy(renderer instanceof WebGlRenderer);
609
-
610
- const { fontSize, color, contain, scrollable, zIndex, debug } = state.props;
611
-
612
- // scrollY only has an effect when contain === 'both' and scrollable === true
613
- const scrollY = contain === 'both' && scrollable ? state.props.scrollY : 0;
614
-
615
- const {
616
- textW = 0,
617
- textH = 0,
618
- distanceRange,
619
- vertexBuffer,
620
- bufferUploaded,
621
- trFontFace,
622
- elementBounds,
623
- } = state;
624
-
625
- let { webGlBuffers } = state;
626
-
627
- if (!webGlBuffers) {
628
- const glw = renderer.glw;
629
- const stride = 4 * Float32Array.BYTES_PER_ELEMENT;
630
- const webGlBuffer = glw.createBuffer();
631
- assertTruthy(webGlBuffer);
632
- state.webGlBuffers = new BufferCollection([
633
- {
634
- buffer: webGlBuffer,
635
- attributes: {
636
- a_position: {
637
- name: 'a_position',
638
- size: 2, // 2 components per iteration
639
- type: glw.FLOAT, // the data is 32bit floats
640
- normalized: false, // don't normalize the data
641
- stride, // 0 = move forward size * sizeof(type) each iteration to get the next position
642
- offset: 0, // start at the beginning of the buffer
643
- },
644
- a_textureCoords: {
645
- name: 'a_textureCoords',
646
- size: 2,
647
- type: glw.FLOAT,
648
- normalized: false,
649
- stride,
650
- offset: 2 * Float32Array.BYTES_PER_ELEMENT,
651
- },
652
- },
653
- },
654
- ]);
655
- state.bufferUploaded = false;
656
- assertTruthy(state.webGlBuffers);
657
- webGlBuffers = state.webGlBuffers;
658
- }
659
-
660
- if (!bufferUploaded) {
661
- const glw = renderer.glw;
662
-
663
- const buffer = webGlBuffers?.getBuffer('a_textureCoords') ?? null;
664
- glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);
665
- state.bufferUploaded = true;
666
- }
667
-
668
- assertTruthy(trFontFace);
669
- if (scrollable && contain === 'both') {
670
- assertTruthy(elementBounds.valid);
671
- const elementRect = convertBoundToRect(elementBounds, tmpRect);
672
-
673
- if (node.clippingRect.valid) {
674
- state.clippingRect.valid = true;
675
- node.clippingRect = intersectRect(
676
- node.clippingRect,
677
- elementRect,
678
- state.clippingRect,
679
- );
680
- } else {
681
- state.clippingRect.valid = true;
682
- node.clippingRect = copyRect(elementRect, state.clippingRect);
683
- }
684
- }
685
-
686
- const renderOp = new WebGlRenderOp(
687
- renderer,
688
- {
689
- sdfShaderProps: {
690
- transform: node.globalTransform!.getFloatArr(),
691
- color: mergeColorAlpha(color, node.worldAlpha),
692
- size: fontSize / (trFontFace.data?.info.size || 0),
693
- scrollY,
694
- distanceRange,
695
- debug: debug.sdfShaderDebug,
696
- },
697
- sdfBuffers: state.webGlBuffers as BufferCollection,
698
- shader: this.sdfShader,
699
- alpha: node.worldAlpha,
700
- clippingRect: node.clippingRect,
701
- height: textH,
702
- width: textW,
703
- rtt: false,
704
- parentHasRenderTexture: node.parentHasRenderTexture,
705
- framebufferDimensions: node.framebufferDimensions,
706
- },
707
- 0,
708
- );
709
-
710
- const texture = state.trFontFace?.texture;
711
- assertTruthy(texture);
712
- const ctxTexture = texture.ctxTexture;
713
-
714
- renderOp.addTexture(ctxTexture as WebGlCtxTexture);
715
- renderOp.length = state.bufferNumFloats;
716
- renderOp.numQuads = state.bufferNumQuads;
717
-
718
- renderer.addRenderOp(renderOp);
719
-
720
- // if (!debug.disableScissor) {
721
- // renderer.enableScissor(
722
- // visibleRect.x,
723
- // visibleRect.y,
724
- // visibleRect.w,
725
- // visibleRect.h,
726
- // );
727
- // }
728
-
729
- // Draw the arrays
730
- // gl.drawArrays(
731
- // gl.TRIANGLES, // Primitive type
732
- // 0,
733
- // bufferNumVertices, // Number of verticies
734
- // );
735
-
736
- // renderer.disableScissor();
737
-
738
- // if (debug.showElementRect) {
739
- // this.renderer.drawBorder(
740
- // Colors.Blue,
741
- // elementRect.x,
742
- // elementRect.y,
743
- // elementRect.w,
744
- // elementRect.h,
745
- // );
746
- // }
747
-
748
- // if (debug.showVisibleRect) {
749
- // this.renderer.drawBorder(
750
- // Colors.Green,
751
- // visibleRect.x,
752
- // visibleRect.y,
753
- // visibleRect.w,
754
- // visibleRect.h,
755
- // );
756
- // }
757
-
758
- // if (debug.showRenderWindow && renderWindow) {
759
- // this.renderer.drawBorder(
760
- // Colors.Red,
761
- // x + renderWindow.x1,
762
- // y + renderWindow.y1 - scrollY,
763
- // x + renderWindow.x2 - (x + renderWindow.x1),
764
- // y + renderWindow.y2 - scrollY - (y + renderWindow.y1 - scrollY),
765
- // );
766
- // }
767
- // if (debug.printLayoutTime) {
768
- // debugData.drawSum += performance.now() - drawStartTime;
769
- // debugData.drawCount++;
770
- // }
771
- }
772
-
773
- override setIsRenderable(
774
- state: SdfTextRendererState,
775
- renderable: boolean,
776
- ): void {
777
- super.setIsRenderable(state, renderable);
778
- state.trFontFace?.texture.setRenderableOwner(state, renderable);
779
- }
780
-
781
- override destroyState(state: SdfTextRendererState): void {
782
- super.destroyState(state);
783
- // If there's a Font Face assigned we must free the owner relation to its texture
784
- state.trFontFace?.texture.setRenderableOwner(state, false);
785
- }
786
- //#endregion Overrides
787
-
788
- public resolveFontFace(props: TrFontProps): SdfTrFontFace | undefined {
789
- return this.stage.fontManager.resolveFontFace(
790
- this.fontFamilyArray,
791
- props,
792
- 'sdf',
793
- ) as SdfTrFontFace | undefined;
794
- }
795
-
796
- /**
797
- * Release the loaded SDF font face
798
- *
799
- * @param state
800
- */
801
- protected releaseFontFace(state: SdfTextRendererState) {
802
- state.resLineHeight = undefined;
803
- if (state.trFontFace) {
804
- state.trFontFace.texture.setRenderableOwner(state, false);
805
- state.trFontFace = undefined;
806
- }
807
- }
808
-
809
- /**
810
- * Invalidate the layout cache stored in the state. This will cause the text
811
- * to be re-layed out on the next update.
812
- *
813
- * @remarks
814
- * This also invalidates the visible window cache.
815
- *
816
- * @param state
817
- */
818
- protected invalidateLayoutCache(state: SdfTextRendererState): void {
819
- state.renderWindow.valid = false;
820
- state.elementBounds.valid = false;
821
- state.textH = undefined;
822
- state.textW = undefined;
823
- state.lineCache = [];
824
- this.setStatus(state, 'loading');
825
- this.scheduleUpdateState(state);
826
- }
827
-
828
- protected setElementBoundsX(state: SdfTextRendererState): void {
829
- const { x, contain, width } = state.props;
830
- const { elementBounds } = state;
831
- elementBounds.x1 = x;
832
- elementBounds.x2 = contain !== 'none' ? x + width : Infinity;
833
- }
834
-
835
- protected setElementBoundsY(state: SdfTextRendererState): void {
836
- const { y, contain, height } = state.props;
837
- const { elementBounds } = state;
838
- elementBounds.y1 = y;
839
- elementBounds.y2 = contain === 'both' ? y + height : Infinity;
840
- }
841
- }