@lightningjs/renderer 2.16.0 → 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 (443) 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 +8 -2
  6. package/dist/exports/canvas.js +8 -2
  7. package/dist/exports/canvas.js.map +1 -1
  8. package/dist/exports/index.d.ts +16 -13
  9. package/dist/exports/index.js +8 -9
  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 +11 -2
  15. package/dist/exports/webgl.js +11 -2
  16. package/dist/exports/webgl.js.map +1 -1
  17. package/dist/src/core/CoreNode.d.ts +47 -76
  18. package/dist/src/core/CoreNode.js +322 -309
  19. package/dist/src/core/CoreNode.js.map +1 -1
  20. package/dist/src/core/CoreShaderManager.d.ts +29 -73
  21. package/dist/src/core/CoreShaderManager.js +110 -97
  22. package/dist/src/core/CoreShaderManager.js.map +1 -1
  23. package/dist/src/core/CoreTextNode.d.ts +58 -87
  24. package/dist/src/core/CoreTextNode.js +243 -237
  25. package/dist/src/core/CoreTextNode.js.map +1 -1
  26. package/dist/src/core/CoreTextureManager.d.ts +2 -0
  27. package/dist/src/core/CoreTextureManager.js +12 -10
  28. package/dist/src/core/CoreTextureManager.js.map +1 -1
  29. package/dist/src/core/Stage.d.ts +58 -53
  30. package/dist/src/core/Stage.js +260 -196
  31. package/dist/src/core/Stage.js.map +1 -1
  32. package/dist/src/core/TextureMemoryManager.d.ts +3 -0
  33. package/dist/src/core/TextureMemoryManager.js +78 -74
  34. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  35. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  36. package/dist/src/core/animations/CoreAnimation.js +6 -52
  37. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  38. package/dist/src/core/lib/ImageWorker.js +1 -1
  39. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  40. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  41. package/dist/src/core/lib/RenderCoords.js +43 -55
  42. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  43. package/dist/src/core/lib/WebGlContextWrapper.d.ts +117 -55
  44. package/dist/src/core/lib/WebGlContextWrapper.js +196 -157
  45. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  46. package/dist/src/core/lib/colorCache.d.ts +1 -0
  47. package/dist/src/core/lib/colorCache.js +19 -0
  48. package/dist/src/core/lib/colorCache.js.map +1 -0
  49. package/dist/src/core/lib/colorParser.d.ts +21 -0
  50. package/dist/src/core/lib/colorParser.js +72 -0
  51. package/dist/src/core/lib/colorParser.js.map +1 -0
  52. package/dist/src/core/lib/textureCompression.js +0 -1
  53. package/dist/src/core/lib/textureCompression.js.map +1 -1
  54. package/dist/src/core/lib/utils.d.ts +3 -1
  55. package/dist/src/core/lib/utils.js +19 -0
  56. package/dist/src/core/lib/utils.js.map +1 -1
  57. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  58. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  59. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  60. package/dist/src/core/platforms/web/WebPlatform.js +29 -3
  61. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  62. package/dist/src/core/renderers/CoreRenderer.d.ts +15 -22
  63. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  64. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  65. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -2
  66. package/dist/src/core/renderers/canvas/CanvasRenderer.js +7 -21
  67. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  68. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -1
  69. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  70. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
  71. package/dist/src/core/renderers/canvas/CanvasTexture.js +8 -7
  72. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  73. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  74. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  75. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  76. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  77. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  78. package/dist/src/core/renderers/canvas/internal/ColorUtils.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 -18
  83. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  84. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +4 -2
  85. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +31 -13
  86. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  87. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  88. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  89. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  90. package/dist/src/core/shaders/canvas/Border.js +1 -1
  91. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  92. package/dist/src/core/shaders/webgl/Border.js +82 -82
  93. package/dist/src/core/shaders/webgl/Default.js +47 -47
  94. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  95. package/dist/src/core/shaders/webgl/HolePunch.js +32 -32
  96. package/dist/src/core/shaders/webgl/LinearGradient.js +36 -36
  97. package/dist/src/core/shaders/webgl/RadialGradient.js +33 -33
  98. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  99. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +111 -111
  100. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +130 -130
  101. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  102. package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
  103. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  104. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +4 -4
  105. package/dist/src/core/text-rendering/CanvasFontHandler.js +19 -6
  106. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  107. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +18 -2
  108. package/dist/src/core/text-rendering/CanvasTextRenderer.js +296 -69
  109. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  110. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +4 -4
  111. package/dist/src/core/text-rendering/SdfFontHandler.js +6 -6
  112. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  113. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +4 -8
  114. package/dist/src/core/text-rendering/SdfTextRenderer.js +68 -37
  115. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  116. package/dist/src/core/text-rendering/TextRenderer.d.ts +37 -113
  117. package/dist/src/core/text-rendering/TextRenderer.js +1 -51
  118. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -1
  119. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  120. package/dist/src/core/text-rendering/canvas/Settings.d.ts +14 -3
  121. package/dist/src/core/text-rendering/canvas/Utils.d.ts +3 -2
  122. package/dist/src/core/text-rendering/canvas/Utils.js +9 -4
  123. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -1
  124. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +32 -9
  125. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +52 -57
  126. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -1
  127. package/dist/src/core/text-rendering/canvas/draw.d.ts +3 -10
  128. package/dist/src/core/text-rendering/canvas/draw.js +26 -27
  129. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -1
  130. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  131. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  132. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -0
  133. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  134. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +7 -1
  135. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +50 -2
  136. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  137. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  138. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +42 -83
  139. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  140. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
  141. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
  142. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  143. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +14 -4
  144. package/dist/src/core/text-rendering/renderers/TextRenderer.js +3 -0
  145. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  146. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  147. package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
  148. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  149. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  150. package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/sdf/index.js} +3 -21
  151. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  152. package/dist/src/core/textures/ImageTexture.d.ts +1 -0
  153. package/dist/src/core/textures/ImageTexture.js +11 -4
  154. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  155. package/dist/src/core/textures/Texture.d.ts +6 -1
  156. package/dist/src/core/textures/Texture.js.map +1 -1
  157. package/dist/src/main-api/INode.d.ts +9 -9
  158. package/dist/src/main-api/Inspector.d.ts +6 -1
  159. package/dist/src/main-api/Inspector.js +43 -7
  160. package/dist/src/main-api/Inspector.js.map +1 -1
  161. package/dist/src/main-api/Renderer.d.ts +83 -136
  162. package/dist/src/main-api/Renderer.js +139 -91
  163. package/dist/src/main-api/Renderer.js.map +1 -1
  164. package/dist/src/utils.d.ts +5 -4
  165. package/dist/src/utils.js +20 -9
  166. package/dist/src/utils.js.map +1 -1
  167. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  168. package/exports/canvas-shaders.ts +28 -0
  169. package/exports/canvas.ts +45 -39
  170. package/exports/index.ts +82 -89
  171. package/exports/inspector.ts +24 -24
  172. package/exports/utils.ts +50 -44
  173. package/exports/webgl-shaders.ts +28 -0
  174. package/exports/webgl.ts +52 -38
  175. package/package.json +4 -4
  176. package/src/common/CommonTypes.ts +146 -146
  177. package/src/common/EventEmitter.ts +77 -77
  178. package/src/common/IAnimationController.ts +92 -92
  179. package/src/common/IEventEmitter.ts +28 -28
  180. package/src/core/CoreNode.test.ts +202 -202
  181. package/src/core/CoreNode.ts +2491 -2487
  182. package/src/core/CoreShaderManager.ts +188 -292
  183. package/src/core/CoreTextNode.ts +443 -455
  184. package/src/core/CoreTextureManager.ts +565 -561
  185. package/src/core/Stage.ts +906 -826
  186. package/src/core/TextureMemoryManager.ts +445 -431
  187. package/src/core/animations/AnimationManager.ts +38 -38
  188. package/src/core/animations/CoreAnimation.ts +291 -347
  189. package/src/core/animations/CoreAnimationController.ts +166 -166
  190. package/src/core/lib/ContextSpy.ts +41 -41
  191. package/src/core/lib/ImageWorker.ts +286 -280
  192. package/src/core/lib/Matrix3d.ts +244 -244
  193. package/src/core/lib/RenderCoords.ts +71 -86
  194. package/src/core/lib/WebGlContextWrapper.ts +1381 -1332
  195. package/src/core/lib/colorCache.ts +20 -0
  196. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -69
  197. package/src/core/lib/textureCompression.ts +152 -152
  198. package/src/core/lib/textureSvg.ts +78 -78
  199. package/src/core/lib/utils.ts +412 -388
  200. package/src/core/lib/validateImageBitmap.ts +87 -76
  201. package/src/core/platforms/Platform.ts +77 -0
  202. package/src/core/platforms/web/WebPlatform.ts +121 -0
  203. package/src/core/renderers/CoreContextTexture.ts +43 -43
  204. package/src/core/renderers/CoreRenderOp.ts +22 -22
  205. package/src/core/renderers/CoreRenderer.ts +110 -115
  206. package/src/core/renderers/CoreShaderNode.ts +175 -0
  207. package/{dist/src/core/renderers/CoreShader.js → src/core/renderers/CoreShaderProgram.ts} +23 -28
  208. package/src/core/renderers/canvas/CanvasRenderer.ts +283 -0
  209. package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -0
  210. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +156 -153
  211. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +91 -91
  212. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +50 -50
  213. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +310 -313
  214. package/src/core/renderers/webgl/WebGlRenderOp.ts +167 -0
  215. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +747 -821
  216. package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -0
  217. package/src/core/renderers/webgl/WebGlShaderProgram.ts +341 -0
  218. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  219. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  220. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -143
  221. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  222. package/src/core/shaders/canvas/Border.ts +75 -0
  223. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  224. package/src/core/shaders/canvas/LinearGradient.ts +71 -0
  225. package/src/core/shaders/canvas/RadialGradient.ts +99 -0
  226. package/src/core/shaders/canvas/Rounded.ts +55 -0
  227. package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -0
  228. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -0
  229. package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -0
  230. package/src/core/shaders/canvas/Shadow.ts +52 -0
  231. package/src/core/shaders/canvas/utils/render.ts +151 -0
  232. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  233. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  234. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  235. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  236. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  237. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  238. package/{dist/src/core/shaders/templates/shaderUtils.js → src/core/shaders/templates/RoundedWithBorderTemplate.ts} +35 -41
  239. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  240. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  241. package/src/core/shaders/utils.ts +46 -0
  242. package/src/core/shaders/webgl/Border.ts +116 -0
  243. package/src/core/shaders/webgl/Default.ts +89 -0
  244. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  245. package/src/core/shaders/webgl/HolePunch.ts +75 -0
  246. package/src/core/shaders/webgl/LinearGradient.ts +82 -0
  247. package/src/core/shaders/webgl/RadialGradient.ts +85 -0
  248. package/src/core/shaders/webgl/Rounded.ts +117 -0
  249. package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -0
  250. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -0
  251. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  252. package/src/core/shaders/webgl/SdfShader.ts +134 -0
  253. package/src/core/shaders/webgl/Shadow.ts +115 -0
  254. package/src/core/text-rendering/CanvasFontHandler.ts +176 -0
  255. package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
  256. package/src/core/text-rendering/SdfFontHandler.ts +517 -0
  257. package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
  258. package/src/core/text-rendering/TextRenderer.ts +404 -0
  259. package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +257 -263
  260. package/src/core/text-rendering/canvas/Settings.ts +99 -0
  261. package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
  262. package/src/core/text-rendering/canvas/Utils.ts +178 -0
  263. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
  264. package/src/core/text-rendering/canvas/draw.ts +165 -0
  265. package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
  266. package/src/core/text-rendering/sdf/Utils.ts +436 -0
  267. package/src/core/text-rendering/{renderers/SdfTextRenderer/internal/constants.ts → sdf/index.ts} +20 -32
  268. package/src/core/textures/ColorTexture.ts +102 -102
  269. package/src/core/textures/ImageTexture.ts +418 -400
  270. package/src/core/textures/NoiseTexture.ts +104 -104
  271. package/src/core/textures/RenderTexture.ts +85 -85
  272. package/src/core/textures/SubTexture.ts +205 -205
  273. package/src/core/textures/Texture.ts +381 -376
  274. package/src/core/utils.ts +227 -227
  275. package/src/env.d.ts +7 -7
  276. package/src/main-api/INode.ts +100 -101
  277. package/src/main-api/Inspector.ts +567 -522
  278. package/src/main-api/Renderer.ts +873 -807
  279. package/src/main-api/utils.ts +45 -45
  280. package/src/utils.ts +267 -248
  281. package/dist/src/core/platform.d.ts +0 -10
  282. package/dist/src/core/platform.js +0 -81
  283. package/dist/src/core/platform.js.map +0 -1
  284. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  285. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  286. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  287. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  288. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  289. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  290. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
  291. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  292. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  293. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  294. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  295. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  296. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  297. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  298. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  299. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  300. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  301. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
  302. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
  303. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  304. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  305. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  306. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  307. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  308. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
  309. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  310. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  311. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
  312. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  313. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  314. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  315. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  316. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  317. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  318. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  319. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  320. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  321. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  322. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  323. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  324. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  325. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  326. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  327. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  328. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  329. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  330. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  331. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  332. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  333. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  334. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  335. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  336. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  337. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  338. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  339. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  340. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  341. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  342. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  343. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  344. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  345. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  346. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  347. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  348. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  349. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  350. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  351. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  352. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  353. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  354. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  355. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  356. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  357. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  358. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  359. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  360. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  361. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  362. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  363. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  364. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  365. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  366. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  367. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  368. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  369. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  370. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  371. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  372. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  373. package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
  374. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  375. package/dist/src/core/shaders/webgl/Spinner.d.ts +0 -1
  376. package/dist/src/core/shaders/webgl/Spinner.js +0 -2
  377. package/dist/src/core/shaders/webgl/Spinner.js.map +0 -1
  378. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +0 -12
  379. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +0 -61
  380. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +0 -1
  381. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +0 -45
  382. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +0 -69
  383. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +0 -1
  384. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  385. package/dist/src/main-api/DynamicShaderController.js +0 -58
  386. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  387. package/dist/src/main-api/ShaderController.d.ts +0 -31
  388. package/dist/src/main-api/ShaderController.js +0 -37
  389. package/dist/src/main-api/ShaderController.js.map +0 -1
  390. package/scripts/please-use-pnpm.js +0 -13
  391. package/src/core/platform.ts +0 -100
  392. package/src/core/renderers/CoreShader.ts +0 -41
  393. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  394. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
  395. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
  396. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
  397. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
  398. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  399. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  400. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  401. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  402. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  403. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  404. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  405. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  406. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  407. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  408. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  409. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  410. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  411. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  412. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  413. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  414. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  415. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  416. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  417. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  418. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  419. package/src/core/text-rendering/TrFontManager.ts +0 -183
  420. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  421. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  422. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  423. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  424. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  425. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  426. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  427. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  428. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
  429. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
  430. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  431. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  432. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  433. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  434. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  435. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  436. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  437. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  438. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  439. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  440. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  441. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -557
  442. package/src/main-api/DynamicShaderController.ts +0 -104
  443. package/src/main-api/ShaderController.ts +0 -80
@@ -1,557 +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 type { Dimensions } from '../../../common/CommonTypes.js';
21
- import type { EventEmitter } from '../../../common/EventEmitter.js';
22
- import type { CoreTextNode } from '../../CoreTextNode.js';
23
- import type { Stage } from '../../Stage.js';
24
- import type { Matrix3d } from '../../lib/Matrix3d.js';
25
- import type { Rect, RectWithValid } from '../../lib/utils.js';
26
- import type {
27
- TrFontFace,
28
- TrFontFaceDescriptors,
29
- } from '../font-face-types/TrFontFace.js';
30
- import type {
31
- TextBaseline,
32
- TextVerticalAlign,
33
- } from './LightningTextTextureRenderer.js';
34
-
35
- /**
36
- * Augmentable map of text renderer type IDs to text renderer types.
37
- *
38
- * @example
39
- * ```ts
40
- * declare module './TextRenderer' {
41
- * interface TextRendererMap {
42
- * canvas: CanvasTextRenderer;
43
- * }
44
- * }
45
- * ```
46
- */
47
- // eslint-disable-next-line @typescript-eslint/no-empty-interface
48
- export interface TextRendererMap {}
49
-
50
- export interface TextRendererState {
51
- props: TrProps;
52
- /**
53
- * Whether or not the text renderer state is scheduled to be updated
54
- * via queueMicrotask.
55
- */
56
- updateScheduled: boolean;
57
- status: 'initialState' | 'loading' | 'loaded' | 'failed' | 'destroyed';
58
- /**
59
- * Event emitter for the text renderer
60
- */
61
- emitter: EventEmitter;
62
-
63
- /**
64
- * Force a full layout pass for the calculation of the
65
- * total dimensions of the text
66
- */
67
- forceFullLayoutCalc: boolean;
68
- textW: number | undefined;
69
- textH: number | undefined;
70
-
71
- isRenderable: boolean;
72
-
73
- debugData: {
74
- updateCount: number;
75
- layoutCount: number;
76
- drawCount: number;
77
- lastLayoutNumCharacters: number;
78
- layoutSum: number;
79
- drawSum: number;
80
- bufferSize: number;
81
- };
82
- }
83
-
84
- export interface TextRendererDebugProps {
85
- showRenderWindow: boolean;
86
- showVisibleRect: boolean;
87
- showElementRect: boolean;
88
- disableScissor: boolean;
89
- printLayoutTime: boolean;
90
- }
91
-
92
- /**
93
- * Text renderer properties that are used in resolving appropriate font faces
94
- *
95
- * @remarks
96
- * Extended by {@link TrProps}
97
- */
98
- export interface TrFontProps {
99
- /**
100
- * Font Family
101
- *
102
- * @internalRemarks
103
- * `fontFamily` is defined currently as single string, but in the future we may want to
104
- * support multiple font family fallbacks, as this is supported by CSS / Canvas2d. We can
105
- * do this in a backwards compatible way by unioning an array of strings to the
106
- * `fontFamily` property.
107
- */
108
- fontFamily: string;
109
- /**
110
- * Font Weight
111
- *
112
- * @remarks
113
- * The font weight to use when looking up the font face. This can be a numeric
114
- * value between 1 and 1000, or one of the following strings:
115
- * - `'normal'` - same as 400
116
- * - `'bold'` - same as 700
117
- * - `'bolder'` - (Not yet properly supported)
118
- */
119
- fontWeight: TrFontFaceDescriptors['weight'] | 'bolder' | 'lighter';
120
- /**
121
- * Font Style
122
- *
123
- * @remarks
124
- * The font style to use when looking up the font face. This can be one of the
125
- * following strings:
126
- * - `'normal'`
127
- * - `'italic'`
128
- * - `'oblique'`
129
- */
130
- fontStyle: TrFontFaceDescriptors['style'];
131
- /**
132
- * Font Stretch
133
- *
134
- * @remarks
135
- * The font stretch to use when looking up the font face. This can be one of the
136
- * following strings:
137
- * - `'normal'`
138
- * - `'ultra-condensed'`
139
- * - `'extra-condensed'`
140
- * - `'condensed'`
141
- * - `'semi-condensed'`
142
- * - `'semi-expanded'`
143
- * - `'expanded'`
144
- * - `'extra-expanded'`
145
- * - `'ultra-expanded'`
146
- *
147
- * @default 'normal'
148
- */
149
- fontStretch: TrFontFaceDescriptors['stretch'];
150
- /**
151
- * Font Size
152
- *
153
- * @remarks
154
- * The font size to use when looking up the font face.
155
- *
156
- * The font size is specified in pixels and is the height of the font's
157
- * em-square. The em-square is essentially the height of the capital letters
158
- * for the font. The actual height of the text can be larger than the
159
- * specified font size, as the font may have ascenders and descenders that
160
- * extend beyond the em-square.
161
- *
162
- * @default 16
163
- */
164
- fontSize: number;
165
- }
166
-
167
- export interface TrProps extends TrFontProps {
168
- /**
169
- * Text to display
170
- *
171
- * @default ''
172
- */
173
- text: string;
174
- /**
175
- * Text alignment
176
- *
177
- * @remarks
178
- * Alignment of the text relative to it's contained bounds. For best results,
179
- * use {@link contain} mode `'width'` or `'both'` and a set an explicit
180
- * {@link width} for the text to be aligned within.
181
- *
182
- * @default 'left'
183
- */
184
- textAlign: 'left' | 'center' | 'right';
185
- /**
186
- * Color of text
187
- *
188
- * @remarks
189
- * The color value is a number in the format 0xRRGGBBAA, where RR is the red
190
- * component, GG is the green component, BB is the blue component, and AA is
191
- * the alpha component.
192
- *
193
- * @default 0xffffffff (opaque white)
194
- */
195
- color: number;
196
- x: number;
197
- y: number;
198
- /**
199
- * Contain mode for text
200
- *
201
- * @remarks
202
- * The contain mode determines how the text is contained within the bounds
203
- * of the Text Node. The default value is `'none'`, which means that the
204
- * Text Renderer will not constrain the text in any way. `'width'` mode will
205
- * constrain the text to the set width wrapping lines as necessary, and
206
- * `'both'` mode will constrain the text to both the set width and height
207
- * wrapping lines and truncating text as necessary.
208
- *
209
- * ## Text Auto-size Behavior
210
- * Depending on the set contain mode, after the text 'loaded' event is emitted,
211
- * the text node may have either its {@link width} and {@link height} updated
212
- * to match the rendered size of the text.
213
- *
214
- * When contain mode is 'none', both the {@link width} and {@link height}
215
- * properties are updated.
216
- *
217
- * When contain mode is 'width', only the {@link height} property is updated.
218
- *
219
- * When contain mode is 'both', neither property is updated.
220
- *
221
- * @default 'none'
222
- */
223
- contain: 'none' | 'width' | 'both';
224
- width: number;
225
- height: number;
226
- /**
227
- * Whether or not the text is scrollable
228
- *
229
- * @remarks
230
- * If `scrollable` is `true`, the text can be scrolled vertically within the
231
- * bounds of the Text Node. You can set the scroll position using the
232
- * {@link scrollY} property.
233
- *
234
- * @default false
235
- */
236
- scrollable: boolean;
237
- /**
238
- * Vertical scroll position for text
239
- *
240
- * @remarks
241
- * The vertical scroll position of the text. This property is only used if
242
- * {@link scrollable} is `true`.
243
- *
244
- * @default 0
245
- */
246
- scrollY: number;
247
- /**
248
- * Vertical offset for text
249
- *
250
- * @remarks
251
- * The vertical offset of the text. This property is only used if
252
- * {@link scrollable} is `true`.
253
- *
254
- * @default 0
255
- */
256
- offsetY: number;
257
- /**
258
- * Letter spacing for text (in pixels)
259
- *
260
- * @remarks
261
- * This property sets additional (or reduced, if value is negative) spacing
262
- * between characters in the text.
263
- *
264
- * @default 0
265
- */
266
- letterSpacing: number;
267
- /**
268
- * Line height for text (in pixels)
269
- *
270
- * @remarks
271
- * This property sets the height of each line. If set to `undefined`, the
272
- * line height will be calculated based on the font and font size to be the
273
- * minimal height required to completely contain a line of text.
274
- *
275
- * See: https://github.com/lightning-js/renderer/issues/170
276
- *
277
- * @default `undefined`
278
- */
279
- lineHeight: number | undefined;
280
- /**
281
- * Max lines for text
282
- *
283
- * @remarks
284
- * This property sets max number of lines of a text paragraph.
285
- * Not yet implemented in the SDF renderer.
286
- *
287
- * @default 0
288
- */
289
- maxLines: number;
290
- /**
291
- * Baseline for text
292
- *
293
- * @remarks
294
- * This property sets the text baseline used when drawing text.
295
- * Not yet implemented in the SDF renderer.
296
- *
297
- * @default alphabetic
298
- */
299
- textBaseline: TextBaseline;
300
- /**
301
- * Vertical Align for text when lineHeight > fontSize
302
- *
303
- * @remarks
304
- * This property sets the vertical align of the text.
305
- * Not yet implemented in the SDF renderer.
306
- *
307
- * @default middle
308
- */
309
- verticalAlign: TextVerticalAlign;
310
- /**
311
- * Overflow Suffix for text
312
- *
313
- * @remarks
314
- * The suffix to be added when text is cropped due to overflow.
315
- * Not yet implemented in the SDF renderer.
316
- *
317
- * @default "..."
318
- */
319
- overflowSuffix: string;
320
-
321
- zIndex: number;
322
-
323
- debug: Partial<TextRendererDebugProps>;
324
- }
325
-
326
- export type TrPropSetters<StateT = TextRendererState> = {
327
- [key in keyof TrProps]: (state: StateT, value: TrProps[key]) => void;
328
- };
329
-
330
- const trPropSetterDefaults: TrPropSetters = {
331
- x: (state, value) => {
332
- state.props.x = value;
333
- },
334
- y: (state, value) => {
335
- state.props.y = value;
336
- },
337
- width: (state, value) => {
338
- state.props.width = value;
339
- },
340
- height: (state, value) => {
341
- state.props.height = value;
342
- },
343
- color: (state, value) => {
344
- state.props.color = value;
345
- },
346
- zIndex: (state, value) => {
347
- state.props.zIndex = value;
348
- },
349
- fontFamily: (state, value) => {
350
- state.props.fontFamily = value;
351
- },
352
- fontWeight: (state, value) => {
353
- state.props.fontWeight = value;
354
- },
355
- fontStyle: (state, value) => {
356
- state.props.fontStyle = value;
357
- },
358
- fontStretch: (state, value) => {
359
- state.props.fontStretch = value;
360
- },
361
- fontSize: (state, value) => {
362
- state.props.fontSize = value;
363
- },
364
- text: (state, value) => {
365
- state.props.text = value;
366
- },
367
- textAlign: (state, value) => {
368
- state.props.textAlign = value;
369
- },
370
- contain: (state, value) => {
371
- state.props.contain = value;
372
- },
373
- offsetY: (state, value) => {
374
- state.props.offsetY = value;
375
- },
376
- scrollable: (state, value) => {
377
- state.props.scrollable = value;
378
- },
379
- scrollY: (state, value) => {
380
- state.props.scrollY = value;
381
- },
382
- letterSpacing: (state, value) => {
383
- state.props.letterSpacing = value;
384
- },
385
- lineHeight: (state, value) => {
386
- state.props.lineHeight = value;
387
- },
388
- maxLines: (state, value) => {
389
- state.props.maxLines = value;
390
- },
391
- textBaseline: (state, value) => {
392
- state.props.textBaseline = value;
393
- },
394
- verticalAlign: (state, value) => {
395
- state.props.verticalAlign = value;
396
- },
397
- overflowSuffix: (state, value) => {
398
- state.props.overflowSuffix = value;
399
- },
400
- debug: (state, value) => {
401
- state.props.debug = value;
402
- },
403
- };
404
-
405
- /**
406
- * Event handler for when text is loaded
407
- *
408
- * @remarks
409
- * Emitted by state.emitter
410
- */
411
- export type TrLoadedEventHandler = (target: any) => void;
412
-
413
- /**
414
- * Event handler for when text failed to load
415
- *
416
- * @remarks
417
- * Emitted by state.emitter
418
- */
419
- export type TrFailedEventHandler = (target: any, error: Error) => void;
420
-
421
- export abstract class TextRenderer<
422
- StateT extends TextRendererState = TextRendererState,
423
- > {
424
- readonly set: Readonly<TrPropSetters<StateT>>;
425
- abstract type: 'canvas' | 'sdf';
426
-
427
- constructor(protected stage: Stage) {
428
- const propSetters = {
429
- ...trPropSetterDefaults,
430
- ...this.getPropertySetters(),
431
- };
432
- // For each prop setter add a wrapper method that checks if the prop is
433
- // different before calling the setter
434
- const propSet = {};
435
- Object.keys(propSetters).forEach((key) => {
436
- Object.defineProperty(propSet, key, {
437
- value: (state: StateT, value: TrProps[keyof TrProps]) => {
438
- // Check if the current prop value is different before calling the setter
439
- if (state.props[key as keyof TrProps] !== value) {
440
- propSetters[key as keyof TrPropSetters](state, value as never);
441
-
442
- // Assume any prop change will require a render
443
- // This ensures that renders are triggered appropriately even with RAF paused
444
- this.stage.requestRender();
445
- }
446
- },
447
- writable: false, // Prevents property from being changed
448
- configurable: false, // Prevents property from being deleted
449
- });
450
- });
451
- this.set = propSet as Readonly<TrPropSetters<StateT>>;
452
- }
453
-
454
- setStatus(state: StateT, status: StateT['status'], error?: Error) {
455
- // Don't emit the same status twice
456
- if (state.status === status) {
457
- return;
458
- }
459
- state.status = status;
460
- state.emitter.emit(status, error);
461
- }
462
-
463
- /**
464
- * Allows the CoreTextNode to communicate changes to the isRenderable state of
465
- * the itself.
466
- *
467
- * @param state
468
- * @param renderable
469
- */
470
- setIsRenderable(state: StateT, renderable: boolean) {
471
- state.isRenderable = renderable;
472
- }
473
-
474
- /**
475
- * Called by constructor to get a map of property setter functions for this renderer.
476
- */
477
- abstract getPropertySetters(): Partial<TrPropSetters<StateT>>;
478
-
479
- /**
480
- * Given text renderer properties (particularly the specific properties related to font selection)
481
- * returns whether or not the renderer can render it.
482
- *
483
- * @param props
484
- */
485
- abstract canRenderFont(props: TrFontProps): boolean;
486
-
487
- /**
488
- * Called by the TrFontManager to find out if a newly added font face is supported
489
- * by this renderer.
490
- *
491
- * @param fontFace
492
- */
493
- abstract isFontFaceSupported(fontFace: TrFontFace): boolean;
494
-
495
- /**
496
- * Called by the TrFontManager to add a font face to the renderer's font registry.
497
- *
498
- * @remarks
499
- * This method MUST ONLY be called for a fontFace that previously passed the
500
- * {@link isFontFaceSupported} check.
501
- *
502
- * @param fontFace
503
- */
504
- abstract addFontFace(fontFace: TrFontFace): void;
505
-
506
- abstract createState(props: TrProps, node: CoreTextNode): StateT;
507
-
508
- /**
509
- * Destroy/Clean up the state object
510
- *
511
- * @remarks
512
- * Opposite of createState(). Frees any event listeners / resources held by
513
- * the state that may not reliably get garbage collected.
514
- *
515
- * @param state
516
- */
517
- destroyState(state: StateT) {
518
- this.setStatus(state, 'destroyed');
519
- state.emitter.removeAllListeners();
520
- }
521
-
522
- /**
523
- * Schedule a state update via queueMicrotask
524
- *
525
- * @remarks
526
- * This method is used to schedule a state update via queueMicrotask. This
527
- * method should be called whenever a state update is needed, and it will
528
- * ensure that the state is only updated once per microtask.
529
- * @param state
530
- * @returns
531
- */
532
- scheduleUpdateState(state: StateT): void {
533
- if (state.updateScheduled) {
534
- return;
535
- }
536
- state.updateScheduled = true;
537
- queueMicrotask(() => {
538
- // If the state has been destroyed, don't update it
539
- if (state.status === 'destroyed') {
540
- return;
541
- }
542
- state.updateScheduled = false;
543
- this.updateState(state);
544
- });
545
- }
546
-
547
- abstract updateState(state: StateT): void;
548
-
549
- renderQuads?(
550
- state: StateT,
551
- transform: Matrix3d,
552
- clippingRect: RectWithValid,
553
- alpha: number,
554
- parentHasRenderTexture: boolean,
555
- framebufferDimensions: Dimensions | undefined,
556
- ): void;
557
- }
@@ -1,104 +0,0 @@
1
- import type { ShaderEffectValueMap } from '../../exports/index.js';
2
- import type {
3
- CoreShaderManager,
4
- EffectMap,
5
- ShaderMap,
6
- } from '../core/CoreShaderManager.js';
7
- import type { ExtractProps } from '../core/CoreTextureManager.js';
8
- import type { EffectDesc } from '../core/renderers/webgl/shaders/effects/ShaderEffect.js';
9
- import type { BaseShaderController } from './ShaderController.js';
10
-
11
- type OptionalName<T> = T extends string ? T : never;
12
-
13
- type MapEffectProps<
14
- Effects extends [...{ name?: string; type: keyof EffectMap }[]],
15
- > = {
16
- [K in Effects[number] as OptionalName<K['name']>]: ExtractProps<
17
- EffectMap[K['type']]
18
- >;
19
- };
20
-
21
- export type DynamicEffects<
22
- T extends [...{ name?: string; type: keyof EffectMap }[]],
23
- > = {
24
- [K in keyof T]: EffectDesc<T[K]>;
25
- };
26
-
27
- export class DynamicShaderController<
28
- Effects extends [...{ name?: string; type: keyof EffectMap }[]],
29
- > implements BaseShaderController
30
- {
31
- private resolvedProps: ExtractProps<ShaderMap['DynamicShader']>;
32
- props: MapEffectProps<Effects>;
33
- type: 'DynamicShader';
34
-
35
- constructor(
36
- readonly shader: InstanceType<ShaderMap['DynamicShader']>,
37
- props: ExtractProps<ShaderMap['DynamicShader']>,
38
- shManager: CoreShaderManager,
39
- ) {
40
- this.type = 'DynamicShader';
41
- this.resolvedProps = props;
42
- const effectConstructors = shManager.getRegisteredEffects();
43
- const definedProps = {};
44
-
45
- const effects = props.effects!;
46
- const effectsLength = effects.length;
47
-
48
- for (let i = 0; i < effectsLength; i++) {
49
- const {
50
- name: effectName,
51
- props: effectProps,
52
- type: effectType,
53
- } = effects[i]!;
54
- if (effectName === undefined) {
55
- continue;
56
- }
57
- const definedEffectProps = {};
58
- const propEntries = Object.keys(effectProps);
59
- const propEntriesLength = propEntries.length;
60
- for (let j = 0; j < propEntriesLength; j++) {
61
- const propName = propEntries[j]!;
62
- Object.defineProperty(definedEffectProps, propName, {
63
- get: () => {
64
- return (
65
- this.resolvedProps.effects![i]!.props[propName] as Record<
66
- string,
67
- any
68
- >
69
- ).value;
70
- },
71
- set: (value) => {
72
- const target = this.resolvedProps.effects![i]!.props[
73
- propName
74
- ] as Record<string, any>;
75
- target.value = value;
76
- if (target.hasValidator) {
77
- value = target.validatedValue = effectConstructors[effectType]!
78
- .uniforms[propName]?.validator!(value, effectProps);
79
- }
80
- if (target.hasProgramValueUpdater) {
81
- effectConstructors[effectType]!.uniforms[propName]
82
- ?.updateProgramValue!(target as ShaderEffectValueMap);
83
- } else {
84
- target.programValue = value;
85
- }
86
- shManager.renderer.stage.requestRender();
87
- },
88
- });
89
- }
90
-
91
- Object.defineProperty(definedProps, effectName, {
92
- get: () => {
93
- return definedEffectProps;
94
- },
95
- });
96
- }
97
-
98
- this.props = definedProps as MapEffectProps<Effects>;
99
- }
100
-
101
- getResolvedProps() {
102
- return this.resolvedProps;
103
- }
104
- }