@lightningjs/renderer 3.0.0-beta6 → 3.0.0-beta8

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 (497) hide show
  1. package/COPYING +1 -0
  2. package/LICENSE +202 -202
  3. package/NOTICE +3 -3
  4. package/README.md +147 -147
  5. package/dist/exports/utils.d.ts +2 -1
  6. package/dist/exports/utils.js +2 -1
  7. package/dist/exports/utils.js.map +1 -1
  8. package/dist/src/core/CoreNode.d.ts +33 -49
  9. package/dist/src/core/CoreNode.js +268 -255
  10. package/dist/src/core/CoreNode.js.map +1 -1
  11. package/dist/src/core/CoreTextNode.d.ts +1 -1
  12. package/dist/src/core/CoreTextNode.js +14 -15
  13. package/dist/src/core/CoreTextNode.js.map +1 -1
  14. package/dist/src/core/CoreTextureManager.js +11 -4
  15. package/dist/src/core/CoreTextureManager.js.map +1 -1
  16. package/dist/src/core/Stage.d.ts +27 -26
  17. package/dist/src/core/Stage.js +88 -36
  18. package/dist/src/core/Stage.js.map +1 -1
  19. package/dist/src/core/TextureMemoryManager.d.ts +9 -0
  20. package/dist/src/core/TextureMemoryManager.js +78 -48
  21. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  22. package/dist/src/core/animations/CoreAnimation.js +5 -0
  23. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  24. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  25. package/dist/src/core/animations/CoreAnimationController.js +7 -1
  26. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  27. package/dist/src/core/lib/ImageWorker.js +1 -1
  28. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  29. package/dist/src/core/lib/utils.d.ts +1 -0
  30. package/dist/src/core/lib/utils.js +3 -0
  31. package/dist/src/core/lib/utils.js.map +1 -1
  32. package/dist/src/core/renderers/CoreRenderer.d.ts +1 -0
  33. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  34. package/dist/src/core/renderers/CoreShaderNode.d.ts +1 -0
  35. package/dist/src/core/renderers/CoreShaderNode.js +9 -0
  36. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  37. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -0
  38. package/dist/src/core/renderers/canvas/CanvasRenderer.js +3 -0
  39. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  40. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +1 -4
  41. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  42. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -3
  43. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  44. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +2 -2
  45. package/dist/src/core/renderers/webgl/WebGlRenderer.js +57 -57
  46. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  47. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  48. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  49. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
  50. package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
  51. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  52. package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
  53. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  54. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +7 -5
  55. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  56. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  57. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  58. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  59. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  60. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
  61. package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
  62. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  63. package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
  64. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  65. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  66. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  67. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  68. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  69. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  70. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  71. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  72. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  73. package/dist/src/core/shaders/utils.js.map +1 -0
  74. package/dist/src/core/shaders/webgl/Border.js +82 -82
  75. package/dist/src/core/shaders/webgl/Default.js +47 -47
  76. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  77. package/dist/src/core/shaders/webgl/HolePunch.js +36 -35
  78. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  79. package/dist/src/core/shaders/webgl/LinearGradient.js +41 -40
  80. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  81. package/dist/src/core/shaders/webgl/RadialGradient.js +39 -38
  82. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  83. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  84. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +111 -100
  85. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  86. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +136 -123
  87. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  88. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  89. package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
  90. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  91. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -50
  92. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  93. package/dist/src/core/textures/ImageTexture.d.ts +1 -1
  94. package/dist/src/core/textures/ImageTexture.js +6 -1
  95. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  96. package/dist/src/core/textures/Texture.d.ts +8 -0
  97. package/dist/src/core/textures/Texture.js +13 -0
  98. package/dist/src/core/textures/Texture.js.map +1 -1
  99. package/dist/src/core/utils.d.ts +1 -1
  100. package/dist/src/main-api/Inspector.d.ts +6 -1
  101. package/dist/src/main-api/Inspector.js +42 -4
  102. package/dist/src/main-api/Inspector.js.map +1 -1
  103. package/dist/src/main-api/Renderer.d.ts +62 -43
  104. package/dist/src/main-api/Renderer.js +119 -31
  105. package/dist/src/main-api/Renderer.js.map +1 -1
  106. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  107. package/exports/canvas-shaders.ts +28 -28
  108. package/exports/canvas.ts +45 -45
  109. package/exports/index.ts +90 -90
  110. package/exports/inspector.ts +24 -24
  111. package/exports/utils.ts +50 -44
  112. package/exports/webgl-shaders.ts +28 -28
  113. package/exports/webgl.ts +50 -50
  114. package/package.json +1 -2
  115. package/src/common/CommonTypes.ts +146 -146
  116. package/src/common/EventEmitter.ts +77 -77
  117. package/src/common/IAnimationController.ts +92 -92
  118. package/src/common/IEventEmitter.ts +28 -28
  119. package/src/core/CoreNode.test.ts +202 -202
  120. package/src/core/CoreNode.ts +2483 -2469
  121. package/src/core/CoreShaderManager.ts +188 -188
  122. package/src/core/CoreTextNode.ts +451 -448
  123. package/src/core/CoreTextureManager.ts +608 -600
  124. package/src/core/Stage.ts +800 -751
  125. package/src/core/TextureMemoryManager.ts +435 -394
  126. package/src/core/animations/AnimationManager.ts +38 -38
  127. package/src/core/animations/CoreAnimation.ts +291 -284
  128. package/src/core/animations/CoreAnimationController.ts +164 -157
  129. package/src/core/lib/ContextSpy.ts +41 -41
  130. package/src/core/lib/ImageWorker.ts +286 -280
  131. package/src/core/lib/Matrix3d.ts +244 -244
  132. package/src/core/lib/RenderCoords.ts +71 -71
  133. package/src/core/lib/WebGlContextWrapper.ts +1374 -1374
  134. package/src/core/lib/textureCompression.ts +152 -152
  135. package/src/core/lib/textureSvg.ts +78 -78
  136. package/src/core/lib/utils.ts +390 -386
  137. package/src/core/lib/validateImageBitmap.ts +87 -87
  138. package/src/core/platforms/Platform.ts +77 -77
  139. package/src/core/platforms/web/WebPlatform.ts +84 -84
  140. package/src/core/renderers/CoreContextTexture.ts +43 -43
  141. package/src/core/renderers/CoreRenderOp.ts +22 -22
  142. package/src/core/renderers/CoreRenderer.ts +110 -109
  143. package/src/core/renderers/CoreShaderNode.ts +175 -165
  144. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  145. package/src/core/renderers/canvas/CanvasRenderer.ts +302 -298
  146. package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -99
  147. package/src/core/renderers/canvas/CanvasTexture.ts +156 -156
  148. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -220
  149. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -85
  150. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +86 -86
  151. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
  152. package/src/core/renderers/webgl/WebGlCtxTexture.ts +298 -301
  153. package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -161
  154. package/src/core/renderers/webgl/WebGlRenderer.ts +747 -750
  155. package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -437
  156. package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -318
  157. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  158. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  159. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
  160. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  161. package/src/core/shaders/canvas/Border.ts +78 -78
  162. package/src/core/shaders/canvas/HolePunch.ts +62 -62
  163. package/src/core/shaders/canvas/LinearGradient.ts +71 -69
  164. package/src/core/shaders/canvas/RadialGradient.ts +99 -113
  165. package/src/core/shaders/canvas/Rounded.ts +55 -55
  166. package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -72
  167. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -88
  168. package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -69
  169. package/src/core/shaders/canvas/Shadow.ts +52 -52
  170. package/src/core/shaders/canvas/utils/render.ts +151 -151
  171. package/src/core/shaders/templates/BorderTemplate.ts +115 -115
  172. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  173. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  174. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
  175. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  176. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  177. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  178. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  179. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  180. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +46 -47
  181. package/src/core/shaders/webgl/Border.ts +116 -116
  182. package/src/core/shaders/webgl/Default.ts +89 -89
  183. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  184. package/src/core/shaders/webgl/HolePunch.ts +75 -78
  185. package/src/core/shaders/webgl/LinearGradient.ts +82 -81
  186. package/src/core/shaders/webgl/RadialGradient.ts +85 -84
  187. package/src/core/shaders/webgl/Rounded.ts +117 -117
  188. package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -144
  189. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -166
  190. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
  191. package/src/core/shaders/webgl/SdfShader.ts +134 -134
  192. package/src/core/shaders/webgl/Shadow.ts +115 -115
  193. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  194. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  195. package/src/core/text-rendering/TrFontManager.ts +183 -183
  196. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  197. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  198. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  199. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  200. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  201. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  202. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  203. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +514 -514
  204. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +863 -863
  205. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +793 -849
  206. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  207. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  208. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  209. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  210. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  211. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  212. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  213. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +497 -497
  214. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  215. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  216. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  217. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  218. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  219. package/src/core/text-rendering/renderers/TextRenderer.ts +567 -567
  220. package/src/core/textures/ColorTexture.ts +102 -102
  221. package/src/core/textures/ImageTexture.ts +418 -410
  222. package/src/core/textures/NoiseTexture.ts +104 -104
  223. package/src/core/textures/RenderTexture.ts +85 -85
  224. package/src/core/textures/SubTexture.ts +205 -205
  225. package/src/core/textures/Texture.ts +372 -358
  226. package/src/core/utils.ts +227 -227
  227. package/src/env.d.ts +7 -7
  228. package/src/main-api/INode.ts +100 -100
  229. package/src/main-api/Inspector.ts +569 -522
  230. package/src/main-api/Renderer.ts +818 -673
  231. package/src/main-api/utils.ts +45 -45
  232. package/src/utils.ts +267 -267
  233. package/dist/exports/core-api.d.ts +0 -74
  234. package/dist/exports/core-api.js +0 -96
  235. package/dist/exports/core-api.js.map +0 -1
  236. package/dist/exports/main-api.d.ts +0 -30
  237. package/dist/exports/main-api.js +0 -45
  238. package/dist/exports/main-api.js.map +0 -1
  239. package/dist/src/core/CoreExtension.d.ts +0 -12
  240. package/dist/src/core/CoreExtension.js +0 -29
  241. package/dist/src/core/CoreExtension.js.map +0 -1
  242. package/dist/src/core/CoreStuff.d.ts +0 -1
  243. package/dist/src/core/CoreStuff.js +0 -138
  244. package/dist/src/core/CoreStuff.js.map +0 -1
  245. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  246. package/dist/src/core/CoreTexturizer.js +0 -47
  247. package/dist/src/core/CoreTexturizer.js.map +0 -1
  248. package/dist/src/core/LngNode.d.ts +0 -736
  249. package/dist/src/core/LngNode.js +0 -1174
  250. package/dist/src/core/LngNode.js.map +0 -1
  251. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  252. package/dist/src/core/Matrix2DContext.js +0 -45
  253. package/dist/src/core/Matrix2DContext.js.map +0 -1
  254. package/dist/src/core/ShaderNode.d.ts +0 -10
  255. package/dist/src/core/ShaderNode.js +0 -30
  256. package/dist/src/core/ShaderNode.js.map +0 -1
  257. package/dist/src/core/TextNode.d.ts +0 -103
  258. package/dist/src/core/TextNode.js +0 -331
  259. package/dist/src/core/TextNode.js.map +0 -1
  260. package/dist/src/core/lib/Coords.d.ts +0 -14
  261. package/dist/src/core/lib/Coords.js +0 -55
  262. package/dist/src/core/lib/Coords.js.map +0 -1
  263. package/dist/src/core/lib/glm/common.d.ts +0 -162
  264. package/dist/src/core/lib/glm/common.js +0 -81
  265. package/dist/src/core/lib/glm/common.js.map +0 -1
  266. package/dist/src/core/lib/glm/index.d.ts +0 -11
  267. package/dist/src/core/lib/glm/index.js +0 -30
  268. package/dist/src/core/lib/glm/index.js.map +0 -1
  269. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  270. package/dist/src/core/lib/glm/mat2.js +0 -396
  271. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  272. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  273. package/dist/src/core/lib/glm/mat2d.js +0 -442
  274. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  275. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  276. package/dist/src/core/lib/glm/mat3.js +0 -680
  277. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  278. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  279. package/dist/src/core/lib/glm/mat4.js +0 -1802
  280. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  281. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  282. package/dist/src/core/lib/glm/quat.js +0 -693
  283. package/dist/src/core/lib/glm/quat.js.map +0 -1
  284. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  285. package/dist/src/core/lib/glm/quat2.js +0 -754
  286. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  287. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  288. package/dist/src/core/lib/glm/vec2.js +0 -569
  289. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  290. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  291. package/dist/src/core/lib/glm/vec3.js +0 -720
  292. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  293. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  294. package/dist/src/core/lib/glm/vec4.js +0 -608
  295. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  296. package/dist/src/core/platform.d.ts +0 -10
  297. package/dist/src/core/platform.js +0 -56
  298. package/dist/src/core/platform.js.map +0 -1
  299. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  300. package/dist/src/core/renderers/CoreShader.js +0 -28
  301. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  302. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  303. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  304. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  305. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  306. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  307. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  308. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  309. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
  310. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  311. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  312. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  313. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  314. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  315. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
  316. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  317. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  318. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  319. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  320. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
  321. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
  322. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  323. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  324. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  325. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  326. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  327. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
  328. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  329. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  330. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
  331. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  332. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  333. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  334. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  335. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  336. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  337. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  338. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  339. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  340. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  341. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  342. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  343. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  344. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  345. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  346. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  347. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  348. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  349. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  350. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  351. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  352. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  353. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  354. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  355. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  356. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  357. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  358. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  359. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  360. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  361. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  362. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  363. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  364. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  365. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  366. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  367. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  368. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  369. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  370. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  371. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  372. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  373. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  374. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  375. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  376. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  377. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  378. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  379. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  380. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  381. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  382. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  383. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  384. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  385. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  386. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  387. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  388. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  389. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  390. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  391. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  392. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  393. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  394. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  395. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  396. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  397. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  398. package/dist/src/core/scene/Scene.d.ts +0 -59
  399. package/dist/src/core/scene/Scene.js +0 -106
  400. package/dist/src/core/scene/Scene.js.map +0 -1
  401. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  402. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  403. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  404. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  405. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  406. package/dist/src/main-api/DynamicShaderController.js +0 -58
  407. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  408. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  409. package/dist/src/main-api/ICoreDriver.js +0 -20
  410. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  411. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  412. package/dist/src/main-api/IRenderDriver.js +0 -20
  413. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  414. package/dist/src/main-api/IShaderController.d.ts +0 -14
  415. package/dist/src/main-api/IShaderController.js +0 -30
  416. package/dist/src/main-api/IShaderController.js.map +0 -1
  417. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  418. package/dist/src/main-api/IShaderNode.js +0 -19
  419. package/dist/src/main-api/IShaderNode.js.map +0 -1
  420. package/dist/src/main-api/RendererMain.d.ts +0 -375
  421. package/dist/src/main-api/RendererMain.js +0 -365
  422. package/dist/src/main-api/RendererMain.js.map +0 -1
  423. package/dist/src/main-api/ShaderController.d.ts +0 -31
  424. package/dist/src/main-api/ShaderController.js +0 -37
  425. package/dist/src/main-api/ShaderController.js.map +0 -1
  426. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  427. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  428. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  429. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  430. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  431. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  432. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  433. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  434. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  435. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  436. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  437. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  438. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  439. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  440. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  441. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  442. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  443. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  444. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  445. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  446. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  447. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  448. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  449. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  450. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  451. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  452. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  453. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  454. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  455. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  456. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  457. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  458. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  459. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  460. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  461. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  462. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  463. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  464. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  465. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  466. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  467. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  468. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  469. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  470. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  471. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  472. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  473. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  474. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  475. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  476. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  477. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  478. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  479. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  480. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  481. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  482. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  483. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  484. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  485. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  486. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  487. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  488. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  489. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  490. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  491. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  492. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  493. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  494. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  495. package/dist/src/render-drivers/utils.d.ts +0 -12
  496. package/dist/src/render-drivers/utils.js +0 -69
  497. package/dist/src/render-drivers/utils.js.map +0 -1
@@ -1,358 +1,372 @@
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 { CoreTextureManager } from '../CoreTextureManager.js';
21
- import type { SubTextureProps } from './SubTexture.js';
22
- import type { Dimensions } from '../../common/CommonTypes.js';
23
- import { EventEmitter } from '../../common/EventEmitter.js';
24
- import type { CoreContextTexture } from '../renderers/CoreContextTexture.js';
25
- import type { Bound } from '../lib/utils.js';
26
-
27
- /**
28
- * Event handler for when a Texture is freed
29
- */
30
- export type TextureFreedEventHandler = (target: any) => void;
31
-
32
- /**
33
- * Event handler for when a Texture is loading
34
- */
35
- export type TextureLoadingEventHandler = (target: any) => void;
36
-
37
- /**
38
- * Event handler for when a Texture is loaded
39
- */
40
- export type TextureLoadedEventHandler = (
41
- target: any,
42
- dimensions: Readonly<Dimensions>,
43
- ) => void;
44
-
45
- /**
46
- * Represents compressed texture data.
47
- */
48
- interface CompressedData {
49
- /**
50
- * GLenum spcifying compression format
51
- */
52
- glInternalFormat: number;
53
-
54
- /**
55
- * All mipmap levels
56
- */
57
- mipmaps?: ArrayBuffer[];
58
-
59
- /**
60
- * Supported container types ('pvr' or 'ktx').
61
- */
62
- type: 'pvr' | 'ktx';
63
-
64
- /**
65
- * The width of the compressed texture in pixels. Defaults to 0.
66
- *
67
- * @default 0
68
- */
69
- width: number;
70
-
71
- /**
72
- * The height of the compressed texture in pixels.
73
- **/
74
- height: number;
75
- }
76
-
77
- /**
78
- * Event handler for when a Texture fails to load
79
- */
80
- export type TextureFailedEventHandler = (target: any, error: Error) => void;
81
-
82
- /**
83
- * TextureData that is used to populate a CoreContextTexture
84
- */
85
- export interface TextureData {
86
- /**
87
- * The texture data
88
- */
89
- data:
90
- | ImageBitmap
91
- | ImageData
92
- | SubTextureProps
93
- | CompressedData
94
- | HTMLImageElement
95
- | Uint8Array
96
- | null;
97
- /**
98
- * Premultiply alpha when uploading texture data to the GPU
99
- *
100
- * @defaultValue `false`
101
- */
102
- premultiplyAlpha?: boolean | null;
103
- }
104
- /**
105
- * TextureCoords generally numbers between 0 - 1
106
- */
107
- export type TextureCoords = Bound;
108
-
109
- export type TextureState =
110
- | 'initial' // Before anything is loaded
111
- | 'fetching' // Fetching or generating texture source
112
- | 'fetched' // Texture source is ready
113
- | 'loading' // Uploading to GPU
114
- | 'loaded' // Fully loaded and usable
115
- | 'failed' // Failed to load
116
- | 'freed'; // Released and must be reloaded
117
-
118
- export enum TextureType {
119
- 'generic' = 0,
120
- 'color' = 1,
121
- 'image' = 2,
122
- 'noise' = 3,
123
- 'renderToTexture' = 4,
124
- 'subTexture' = 5,
125
- }
126
-
127
- /**
128
- * Represents a source of texture data for a CoreContextTexture.
129
- *
130
- * @remarks
131
- * Texture sources are used to populate a CoreContextTexture when that texture
132
- * is loaded. Texture data retrieved by the CoreContextTexture by the
133
- * `getTextureData` method. It's the responsibility of the concerete `Texture`
134
- * subclass to implement this method appropriately.
135
- */
136
- export abstract class Texture extends EventEmitter {
137
- /**
138
- * The dimensions of the texture
139
- *
140
- * @remarks
141
- * Until the texture data is loaded for the first time the value will be
142
- * `null`.
143
- */
144
- private _dimensions: Dimensions | null = null;
145
- private _error: Error | null = null;
146
-
147
- // aggregate state
148
- public state: TextureState = 'initial';
149
-
150
- readonly renderableOwners = new Set<unknown>();
151
-
152
- readonly renderable: boolean = false;
153
-
154
- public type: TextureType = TextureType.generic;
155
-
156
- public preventCleanup = false;
157
-
158
- public ctxTexture: CoreContextTexture | undefined;
159
-
160
- public textureData: TextureData | null = null;
161
-
162
- constructor(protected txManager: CoreTextureManager) {
163
- super();
164
- }
165
-
166
- get dimensions(): Dimensions | null {
167
- return this._dimensions;
168
- }
169
-
170
- get error(): Error | null {
171
- return this._error;
172
- }
173
-
174
- /**
175
- * Add/remove an owner to/from the Texture based on its renderability.
176
- *
177
- * @remarks
178
- * Any object can own a texture, be it a CoreNode or even the state object
179
- * from a Text Renderer.
180
- *
181
- * When the reference to the texture that an owner object holds is replaced
182
- * or cleared it must call this with `renderable=false` to release the owner
183
- * association.
184
- *
185
- * @param owner
186
- * @param renderable
187
- */
188
- setRenderableOwner(owner: unknown, renderable: boolean): void {
189
- const oldSize = this.renderableOwners.size;
190
-
191
- if (renderable === true) {
192
- if (this.renderableOwners.has(owner) === false) {
193
- // Add the owner to the set
194
- this.renderableOwners.add(owner);
195
- }
196
-
197
- const newSize = this.renderableOwners.size;
198
- if (newSize > oldSize && newSize === 1) {
199
- (this.renderable as boolean) = true;
200
- this.onChangeIsRenderable?.(true);
201
- this.load();
202
- }
203
- } else {
204
- this.renderableOwners.delete(owner);
205
- const newSize = this.renderableOwners.size;
206
- if (newSize < oldSize && newSize === 0) {
207
- (this.renderable as boolean) = false;
208
- this.onChangeIsRenderable?.(false);
209
- this.txManager.orphanTexture(this);
210
- }
211
- }
212
- }
213
-
214
- load(): void {
215
- this.txManager.loadTexture(this);
216
- }
217
-
218
- /**
219
- * Event called when the Texture becomes renderable or unrenderable.
220
- *
221
- * @remarks
222
- * Used by subclasses like SubTexture propogate then renderability of the
223
- * Texture to other referenced Textures.
224
- *
225
- * @param isRenderable `true` if this Texture has renderable owners.
226
- */
227
- onChangeIsRenderable?(isRenderable: boolean): void;
228
-
229
- /**
230
- * Load the core context texture for this Texture.
231
- * The ctxTexture is created by the renderer and lives on the GPU.
232
- *
233
- * @returns
234
- */
235
- loadCtxTexture(): CoreContextTexture {
236
- if (this.ctxTexture === undefined) {
237
- this.ctxTexture = this.txManager.renderer.createCtxTexture(this);
238
- }
239
-
240
- return this.ctxTexture;
241
- }
242
-
243
- /**
244
- * Free the core context texture for this Texture.
245
- *
246
- * @remarks
247
- * The ctxTexture is created by the renderer and lives on the GPU.
248
- */
249
- free(): void {
250
- this.ctxTexture?.free();
251
- }
252
-
253
- /**
254
- * Free the source texture data for this Texture.
255
- *
256
- * @remarks
257
- * The texture data is the source data that is used to populate the CoreContextTexture.
258
- * e.g. ImageData that is downloaded from a URL.
259
- */
260
- freeTextureData(): void {
261
- this.textureData = null;
262
- }
263
-
264
- public setState(
265
- state: TextureState,
266
- errorOrDimensions?: Error | Dimensions,
267
- ): void {
268
- if (this.state === state) {
269
- return;
270
- }
271
-
272
- let payload: Error | Dimensions | null = null;
273
- if (state === 'loaded') {
274
- if (
275
- errorOrDimensions !== undefined &&
276
- 'width' in errorOrDimensions === true &&
277
- 'height' in errorOrDimensions === true &&
278
- errorOrDimensions.width !== undefined &&
279
- errorOrDimensions.height !== undefined
280
- ) {
281
- this._dimensions = errorOrDimensions;
282
- }
283
-
284
- payload = this._dimensions;
285
- } else if (state === 'failed') {
286
- this._error = errorOrDimensions as Error;
287
- payload = this._error;
288
- }
289
-
290
- // emit the new state
291
- this.state = state;
292
- this.emit(state, payload);
293
- }
294
-
295
- /**
296
- * Get the texture data for this texture.
297
- *
298
- * @remarks
299
- * This method is called by the CoreContextTexture when the texture is loaded.
300
- * The texture data is then used to populate the CoreContextTexture.
301
- *
302
- * @returns
303
- * The texture data for this texture.
304
- */
305
- async getTextureData(): Promise<TextureData> {
306
- if (this.textureData === null) {
307
- this.textureData = await this.getTextureSource();
308
- }
309
-
310
- return this.textureData;
311
- }
312
-
313
- /**
314
- * Get the texture source for this texture.
315
- *
316
- * @remarks
317
- * This method is called by the CoreContextTexture when the texture is loaded.
318
- * The texture source is then used to populate the CoreContextTexture.
319
- */
320
- abstract getTextureSource(): Promise<TextureData>;
321
-
322
- /**
323
- * Make a cache key for this texture.
324
- *
325
- * @remarks
326
- * Each concrete `Texture` subclass must implement this method to provide an
327
- * appropriate cache key for the texture type including the texture's
328
- * properties that uniquely identify a copy of the texture. If the texture
329
- * type does not support caching, then this method should return `false`.
330
- *
331
- * @param props
332
- * @returns
333
- * A cache key for this texture or `false` if the texture type does not
334
- * support caching.
335
- */
336
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
337
- static makeCacheKey(props: unknown): string | false {
338
- return false;
339
- }
340
-
341
- /**
342
- * Resolve the default values for the texture's properties.
343
- *
344
- * @remarks
345
- * Each concrete `Texture` subclass must implement this method to provide
346
- * default values for the texture's optional properties.
347
- *
348
- * @param props
349
- * @returns
350
- * The default values for the texture's properties.
351
- */
352
- static resolveDefaults(
353
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
354
- props: unknown,
355
- ): Record<string, any> {
356
- return {};
357
- }
358
- }
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 { CoreTextureManager } from '../CoreTextureManager.js';
21
+ import type { SubTextureProps } from './SubTexture.js';
22
+ import type { Dimensions } from '../../common/CommonTypes.js';
23
+ import { EventEmitter } from '../../common/EventEmitter.js';
24
+ import type { CoreContextTexture } from '../renderers/CoreContextTexture.js';
25
+ import type { Bound } from '../lib/utils.js';
26
+
27
+ /**
28
+ * Event handler for when a Texture is freed
29
+ */
30
+ export type TextureFreedEventHandler = (target: any) => void;
31
+
32
+ /**
33
+ * Event handler for when a Texture is loading
34
+ */
35
+ export type TextureLoadingEventHandler = (target: any) => void;
36
+
37
+ /**
38
+ * Event handler for when a Texture is loaded
39
+ */
40
+ export type TextureLoadedEventHandler = (
41
+ target: any,
42
+ dimensions: Readonly<Dimensions>,
43
+ ) => void;
44
+
45
+ /**
46
+ * Represents compressed texture data.
47
+ */
48
+ interface CompressedData {
49
+ /**
50
+ * GLenum spcifying compression format
51
+ */
52
+ glInternalFormat: number;
53
+
54
+ /**
55
+ * All mipmap levels
56
+ */
57
+ mipmaps?: ArrayBuffer[];
58
+
59
+ /**
60
+ * Supported container types ('pvr' or 'ktx').
61
+ */
62
+ type: 'pvr' | 'ktx';
63
+
64
+ /**
65
+ * The width of the compressed texture in pixels. Defaults to 0.
66
+ *
67
+ * @default 0
68
+ */
69
+ width: number;
70
+
71
+ /**
72
+ * The height of the compressed texture in pixels.
73
+ **/
74
+ height: number;
75
+ }
76
+
77
+ /**
78
+ * Event handler for when a Texture fails to load
79
+ */
80
+ export type TextureFailedEventHandler = (target: any, error: Error) => void;
81
+
82
+ /**
83
+ * TextureData that is used to populate a CoreContextTexture
84
+ */
85
+ export interface TextureData {
86
+ /**
87
+ * The texture data
88
+ */
89
+ data:
90
+ | ImageBitmap
91
+ | ImageData
92
+ | SubTextureProps
93
+ | CompressedData
94
+ | HTMLImageElement
95
+ | Uint8Array
96
+ | null;
97
+ /**
98
+ * Premultiply alpha when uploading texture data to the GPU
99
+ *
100
+ * @defaultValue `false`
101
+ */
102
+ premultiplyAlpha?: boolean | null;
103
+ }
104
+ /**
105
+ * TextureCoords generally numbers between 0 - 1
106
+ */
107
+ export type TextureCoords = Bound;
108
+
109
+ export type TextureState =
110
+ | 'initial' // Before anything is loaded
111
+ | 'fetching' // Fetching or generating texture source
112
+ | 'fetched' // Texture source is ready
113
+ | 'loading' // Uploading to GPU
114
+ | 'loaded' // Fully loaded and usable
115
+ | 'failed' // Failed to load
116
+ | 'freed'; // Released and must be reloaded
117
+
118
+ export enum TextureType {
119
+ 'generic' = 0,
120
+ 'color' = 1,
121
+ 'image' = 2,
122
+ 'noise' = 3,
123
+ 'renderToTexture' = 4,
124
+ 'subTexture' = 5,
125
+ }
126
+
127
+ /**
128
+ * Represents a source of texture data for a CoreContextTexture.
129
+ *
130
+ * @remarks
131
+ * Texture sources are used to populate a CoreContextTexture when that texture
132
+ * is loaded. Texture data retrieved by the CoreContextTexture by the
133
+ * `getTextureData` method. It's the responsibility of the concerete `Texture`
134
+ * subclass to implement this method appropriately.
135
+ */
136
+ export abstract class Texture extends EventEmitter {
137
+ /**
138
+ * The dimensions of the texture
139
+ *
140
+ * @remarks
141
+ * Until the texture data is loaded for the first time the value will be
142
+ * `null`.
143
+ */
144
+ private _dimensions: Dimensions | null = null;
145
+ private _error: Error | null = null;
146
+
147
+ // aggregate state
148
+ public state: TextureState = 'initial';
149
+
150
+ readonly renderableOwners = new Set<unknown>();
151
+
152
+ readonly renderable: boolean = false;
153
+
154
+ public type: TextureType = TextureType.generic;
155
+
156
+ public preventCleanup = false;
157
+
158
+ public ctxTexture: CoreContextTexture | undefined;
159
+
160
+ public textureData: TextureData | null = null;
161
+
162
+ constructor(protected txManager: CoreTextureManager) {
163
+ super();
164
+ }
165
+
166
+ get dimensions(): Dimensions | null {
167
+ return this._dimensions;
168
+ }
169
+
170
+ get error(): Error | null {
171
+ return this._error;
172
+ }
173
+
174
+ /**
175
+ * Add/remove an owner to/from the Texture based on its renderability.
176
+ *
177
+ * @remarks
178
+ * Any object can own a texture, be it a CoreNode or even the state object
179
+ * from a Text Renderer.
180
+ *
181
+ * When the reference to the texture that an owner object holds is replaced
182
+ * or cleared it must call this with `renderable=false` to release the owner
183
+ * association.
184
+ *
185
+ * @param owner
186
+ * @param renderable
187
+ */
188
+ setRenderableOwner(owner: unknown, renderable: boolean): void {
189
+ const oldSize = this.renderableOwners.size;
190
+
191
+ if (renderable === true) {
192
+ if (this.renderableOwners.has(owner) === false) {
193
+ // Add the owner to the set
194
+ this.renderableOwners.add(owner);
195
+ }
196
+
197
+ const newSize = this.renderableOwners.size;
198
+ if (newSize > oldSize && newSize === 1) {
199
+ (this.renderable as boolean) = true;
200
+ this.onChangeIsRenderable?.(true);
201
+ this.load();
202
+ }
203
+ } else {
204
+ this.renderableOwners.delete(owner);
205
+ const newSize = this.renderableOwners.size;
206
+ if (newSize < oldSize && newSize === 0) {
207
+ (this.renderable as boolean) = false;
208
+ this.onChangeIsRenderable?.(false);
209
+ this.txManager.orphanTexture(this);
210
+ }
211
+ }
212
+ }
213
+
214
+ load(): void {
215
+ this.txManager.loadTexture(this);
216
+ }
217
+
218
+ /**
219
+ * Event called when the Texture becomes renderable or unrenderable.
220
+ *
221
+ * @remarks
222
+ * Used by subclasses like SubTexture propogate then renderability of the
223
+ * Texture to other referenced Textures.
224
+ *
225
+ * @param isRenderable `true` if this Texture has renderable owners.
226
+ */
227
+ onChangeIsRenderable?(isRenderable: boolean): void;
228
+
229
+ /**
230
+ * Load the core context texture for this Texture.
231
+ * The ctxTexture is created by the renderer and lives on the GPU.
232
+ *
233
+ * @returns
234
+ */
235
+ loadCtxTexture(): CoreContextTexture {
236
+ if (this.ctxTexture === undefined) {
237
+ this.ctxTexture = this.txManager.renderer.createCtxTexture(this);
238
+ }
239
+
240
+ return this.ctxTexture;
241
+ }
242
+
243
+ /**
244
+ * Free the core context texture for this Texture.
245
+ *
246
+ * @remarks
247
+ * The ctxTexture is created by the renderer and lives on the GPU.
248
+ */
249
+ free(): void {
250
+ this.ctxTexture?.free();
251
+ }
252
+
253
+ /**
254
+ * Destroy the texture.
255
+ *
256
+ * @remarks
257
+ * This method is called when the texture is no longer needed and should be
258
+ * cleaned up.
259
+ */
260
+ destroy(): void {
261
+ this.removeAllListeners();
262
+ this.free();
263
+ this.freeTextureData();
264
+ this.renderableOwners.clear();
265
+ }
266
+
267
+ /**
268
+ * Free the source texture data for this Texture.
269
+ *
270
+ * @remarks
271
+ * The texture data is the source data that is used to populate the CoreContextTexture.
272
+ * e.g. ImageData that is downloaded from a URL.
273
+ */
274
+ freeTextureData(): void {
275
+ this.textureData = null;
276
+ }
277
+
278
+ public setState(
279
+ state: TextureState,
280
+ errorOrDimensions?: Error | Dimensions,
281
+ ): void {
282
+ if (this.state === state) {
283
+ return;
284
+ }
285
+
286
+ let payload: Error | Dimensions | null = null;
287
+ if (state === 'loaded') {
288
+ if (
289
+ errorOrDimensions !== undefined &&
290
+ 'width' in errorOrDimensions === true &&
291
+ 'height' in errorOrDimensions === true &&
292
+ errorOrDimensions.width !== undefined &&
293
+ errorOrDimensions.height !== undefined
294
+ ) {
295
+ this._dimensions = errorOrDimensions;
296
+ }
297
+
298
+ payload = this._dimensions;
299
+ } else if (state === 'failed') {
300
+ this._error = errorOrDimensions as Error;
301
+ payload = this._error;
302
+ }
303
+
304
+ // emit the new state
305
+ this.state = state;
306
+ this.emit(state, payload);
307
+ }
308
+
309
+ /**
310
+ * Get the texture data for this texture.
311
+ *
312
+ * @remarks
313
+ * This method is called by the CoreContextTexture when the texture is loaded.
314
+ * The texture data is then used to populate the CoreContextTexture.
315
+ *
316
+ * @returns
317
+ * The texture data for this texture.
318
+ */
319
+ async getTextureData(): Promise<TextureData> {
320
+ if (this.textureData === null) {
321
+ this.textureData = await this.getTextureSource();
322
+ }
323
+
324
+ return this.textureData;
325
+ }
326
+
327
+ /**
328
+ * Get the texture source for this texture.
329
+ *
330
+ * @remarks
331
+ * This method is called by the CoreContextTexture when the texture is loaded.
332
+ * The texture source is then used to populate the CoreContextTexture.
333
+ */
334
+ abstract getTextureSource(): Promise<TextureData>;
335
+
336
+ /**
337
+ * Make a cache key for this texture.
338
+ *
339
+ * @remarks
340
+ * Each concrete `Texture` subclass must implement this method to provide an
341
+ * appropriate cache key for the texture type including the texture's
342
+ * properties that uniquely identify a copy of the texture. If the texture
343
+ * type does not support caching, then this method should return `false`.
344
+ *
345
+ * @param props
346
+ * @returns
347
+ * A cache key for this texture or `false` if the texture type does not
348
+ * support caching.
349
+ */
350
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
351
+ static makeCacheKey(props: unknown): string | false {
352
+ return false;
353
+ }
354
+
355
+ /**
356
+ * Resolve the default values for the texture's properties.
357
+ *
358
+ * @remarks
359
+ * Each concrete `Texture` subclass must implement this method to provide
360
+ * default values for the texture's optional properties.
361
+ *
362
+ * @param props
363
+ * @returns
364
+ * The default values for the texture's properties.
365
+ */
366
+ static resolveDefaults(
367
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
368
+ props: unknown,
369
+ ): Record<string, any> {
370
+ return {};
371
+ }
372
+ }