@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (611) hide show
  1. package/COPYING +1 -0
  2. package/LICENSE +202 -202
  3. package/NOTICE +3 -3
  4. package/README.md +133 -147
  5. package/dist/exports/canvas.d.ts +1 -1
  6. package/dist/exports/canvas.js +1 -1
  7. package/dist/exports/canvas.js.map +1 -1
  8. package/dist/exports/index.d.ts +1 -5
  9. package/dist/exports/index.js +1 -5
  10. package/dist/exports/index.js.map +1 -1
  11. package/dist/exports/utils.d.ts +2 -1
  12. package/dist/exports/utils.js +2 -1
  13. package/dist/exports/utils.js.map +1 -1
  14. package/dist/exports/webgl.d.ts +2 -1
  15. package/dist/exports/webgl.js +2 -1
  16. package/dist/exports/webgl.js.map +1 -1
  17. package/dist/src/core/CoreNode.d.ts +45 -69
  18. package/dist/src/core/CoreNode.js +323 -305
  19. package/dist/src/core/CoreNode.js.map +1 -1
  20. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  21. package/dist/src/core/CoreShaderManager.js.map +1 -1
  22. package/dist/src/core/CoreTextNode.d.ts +58 -87
  23. package/dist/src/core/CoreTextNode.js +243 -237
  24. package/dist/src/core/CoreTextNode.js.map +1 -1
  25. package/dist/src/core/CoreTextureManager.d.ts +9 -11
  26. package/dist/src/core/CoreTextureManager.js +80 -91
  27. package/dist/src/core/CoreTextureManager.js.map +1 -1
  28. package/dist/src/core/Stage.d.ts +75 -31
  29. package/dist/src/core/Stage.js +270 -136
  30. package/dist/src/core/Stage.js.map +1 -1
  31. package/dist/src/core/TextureMemoryManager.d.ts +10 -1
  32. package/dist/src/core/TextureMemoryManager.js +112 -78
  33. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  34. package/dist/src/core/animations/CoreAnimation.js +5 -0
  35. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  36. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  37. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  38. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  39. package/dist/src/core/lib/ImageWorker.js +3 -2
  40. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  41. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  42. package/dist/src/core/lib/RenderCoords.js +43 -55
  43. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  44. package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
  45. package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
  46. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  47. package/dist/src/core/lib/colorCache.d.ts +1 -0
  48. package/dist/src/core/lib/colorCache.js +19 -0
  49. package/dist/src/core/lib/colorCache.js.map +1 -0
  50. package/dist/src/core/lib/colorParser.d.ts +21 -0
  51. package/dist/src/core/lib/colorParser.js +72 -0
  52. package/dist/src/core/lib/colorParser.js.map +1 -0
  53. package/dist/src/core/lib/utils.d.ts +3 -0
  54. package/dist/src/core/lib/utils.js +42 -0
  55. package/dist/src/core/lib/utils.js.map +1 -1
  56. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  57. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  58. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  59. package/dist/src/core/platforms/Platform.d.ts +37 -0
  60. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  61. package/dist/src/core/platforms/Platform.js.map +1 -0
  62. package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
  63. package/dist/src/core/platforms/web/WebPlatform.js +84 -0
  64. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  65. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
  66. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
  67. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  68. package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
  69. package/dist/src/core/renderers/CoreShaderNode.js +8 -2
  70. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  71. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
  72. package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
  73. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  74. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  75. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  76. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
  77. package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
  78. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  79. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
  80. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
  82. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
  83. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  84. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
  85. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
  86. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  87. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
  88. package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
  89. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  90. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
  91. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  92. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  93. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
  94. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
  95. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  96. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
  97. package/dist/src/core/shaders/canvas/Border.js +1 -1
  98. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  99. package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
  100. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  101. package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
  102. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  103. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
  104. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  105. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  106. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  107. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  108. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  109. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
  110. package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
  111. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  112. package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
  113. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  114. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  115. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  116. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  117. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  118. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  119. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  120. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  121. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  122. package/dist/src/core/shaders/utils.js.map +1 -0
  123. package/dist/src/core/shaders/webgl/Border.js +86 -63
  124. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  125. package/dist/src/core/shaders/webgl/Default.js +47 -47
  126. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  127. package/dist/src/core/shaders/webgl/HolePunch.js +36 -35
  128. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  129. package/dist/src/core/shaders/webgl/LinearGradient.js +41 -40
  130. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  131. package/dist/src/core/shaders/webgl/RadialGradient.js +39 -38
  132. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  133. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  134. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +115 -72
  135. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  136. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +138 -88
  137. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  138. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  139. package/dist/src/core/shaders/webgl/SdfShader.js +63 -63
  140. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  141. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  142. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +25 -0
  143. package/dist/src/core/text-rendering/CanvasFontHandler.js +130 -0
  144. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  145. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
  146. package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
  147. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  148. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +137 -0
  149. package/dist/src/core/text-rendering/SdfFontHandler.js +336 -0
  150. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  151. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  152. package/dist/src/core/text-rendering/SdfTextRenderer.js +355 -0
  153. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  154. package/dist/src/core/text-rendering/TextRenderer.d.ts +349 -0
  155. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  156. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  157. package/dist/src/core/text-rendering/Utils.d.ts +71 -0
  158. package/dist/src/core/text-rendering/Utils.js +212 -0
  159. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  160. package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
  161. package/dist/src/core/{renderers/CoreShader.js → text-rendering/canvas/Settings.js} +3 -11
  162. package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
  163. package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
  164. package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
  165. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
  166. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
  167. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
  168. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
  169. package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
  170. package/dist/src/core/text-rendering/canvas/draw.js +132 -0
  171. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
  172. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -0
  173. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
  174. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -1
  175. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +50 -2
  176. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  177. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +9 -54
  178. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  179. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
  180. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
  181. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  182. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +13 -0
  183. package/dist/src/core/text-rendering/renderers/TextRenderer.js +3 -0
  184. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  185. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  186. package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
  187. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  188. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  189. package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/sdf/index.js} +3 -11
  190. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  191. package/dist/src/core/textures/ImageTexture.d.ts +4 -3
  192. package/dist/src/core/textures/ImageTexture.js +36 -9
  193. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  194. package/dist/src/core/textures/Texture.d.ts +21 -2
  195. package/dist/src/core/textures/Texture.js +37 -6
  196. package/dist/src/core/textures/Texture.js.map +1 -1
  197. package/dist/src/core/utils.d.ts +1 -1
  198. package/dist/src/main-api/INode.d.ts +2 -2
  199. package/dist/src/main-api/Inspector.d.ts +6 -1
  200. package/dist/src/main-api/Inspector.js +43 -7
  201. package/dist/src/main-api/Inspector.js.map +1 -1
  202. package/dist/src/main-api/Renderer.d.ts +122 -46
  203. package/dist/src/main-api/Renderer.js +174 -37
  204. package/dist/src/main-api/Renderer.js.map +1 -1
  205. package/dist/src/utils.d.ts +1 -6
  206. package/dist/src/utils.js +2 -9
  207. package/dist/src/utils.js.map +1 -1
  208. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  209. package/exports/canvas-shaders.ts +28 -28
  210. package/exports/canvas.ts +45 -45
  211. package/exports/index.ts +82 -89
  212. package/exports/inspector.ts +24 -24
  213. package/exports/utils.ts +50 -44
  214. package/exports/webgl-shaders.ts +28 -28
  215. package/exports/webgl.ts +52 -50
  216. package/package.json +2 -4
  217. package/src/common/CommonTypes.ts +146 -146
  218. package/src/common/EventEmitter.ts +77 -77
  219. package/src/common/IAnimationController.ts +92 -92
  220. package/src/common/IEventEmitter.ts +28 -28
  221. package/src/core/CoreNode.test.ts +202 -203
  222. package/src/core/CoreNode.ts +2491 -2476
  223. package/src/core/CoreShaderManager.ts +188 -193
  224. package/src/core/CoreTextNode.ts +443 -448
  225. package/src/core/CoreTextureManager.ts +565 -597
  226. package/src/core/Stage.ts +906 -740
  227. package/src/core/TextureMemoryManager.ts +445 -395
  228. package/src/core/animations/AnimationManager.ts +38 -38
  229. package/src/core/animations/CoreAnimation.ts +291 -284
  230. package/src/core/animations/CoreAnimationController.ts +166 -157
  231. package/src/core/lib/ContextSpy.ts +41 -41
  232. package/src/core/lib/ImageWorker.ts +286 -279
  233. package/src/core/lib/Matrix3d.ts +244 -244
  234. package/src/core/lib/RenderCoords.ts +71 -86
  235. package/src/core/lib/WebGlContextWrapper.ts +1381 -1324
  236. package/src/core/lib/colorCache.ts +20 -0
  237. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
  238. package/src/core/lib/textureCompression.ts +152 -152
  239. package/src/core/lib/textureSvg.ts +78 -78
  240. package/src/core/lib/utils.ts +412 -361
  241. package/src/core/lib/validateImageBitmap.ts +87 -76
  242. package/src/core/platforms/Platform.ts +77 -0
  243. package/src/core/platforms/web/WebPlatform.ts +121 -0
  244. package/src/core/renderers/CoreContextTexture.ts +43 -43
  245. package/src/core/renderers/CoreRenderOp.ts +22 -22
  246. package/src/core/renderers/CoreRenderer.ts +110 -107
  247. package/src/core/renderers/CoreShaderNode.ts +175 -171
  248. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  249. package/src/core/renderers/canvas/CanvasRenderer.ts +283 -299
  250. package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -99
  251. package/src/core/renderers/canvas/CanvasTexture.ts +156 -153
  252. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +91 -86
  253. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
  254. package/src/core/renderers/webgl/WebGlCtxTexture.ts +310 -301
  255. package/src/core/renderers/webgl/WebGlRenderOp.ts +167 -145
  256. package/src/core/renderers/webgl/WebGlRenderer.ts +747 -715
  257. package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -433
  258. package/src/core/renderers/webgl/WebGlShaderProgram.ts +341 -310
  259. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  260. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  261. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
  262. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  263. package/src/core/shaders/canvas/Border.ts +75 -78
  264. package/src/core/shaders/canvas/HolePunch.ts +62 -62
  265. package/src/core/shaders/canvas/LinearGradient.ts +71 -69
  266. package/src/core/shaders/canvas/RadialGradient.ts +99 -113
  267. package/src/core/shaders/canvas/Rounded.ts +55 -55
  268. package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -68
  269. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -88
  270. package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -69
  271. package/src/core/shaders/canvas/Shadow.ts +52 -52
  272. package/src/core/shaders/canvas/utils/render.ts +151 -151
  273. package/src/core/shaders/templates/BorderTemplate.ts +115 -115
  274. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  275. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  276. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
  277. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  278. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  279. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  280. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  281. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  282. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +46 -47
  283. package/src/core/shaders/webgl/Border.ts +116 -96
  284. package/src/core/shaders/webgl/Default.ts +89 -89
  285. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  286. package/src/core/shaders/webgl/HolePunch.ts +75 -78
  287. package/src/core/shaders/webgl/LinearGradient.ts +82 -81
  288. package/src/core/shaders/webgl/RadialGradient.ts +85 -84
  289. package/src/core/shaders/webgl/Rounded.ts +117 -117
  290. package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -114
  291. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -133
  292. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
  293. package/src/core/shaders/webgl/SdfShader.ts +134 -137
  294. package/src/core/shaders/webgl/Shadow.ts +115 -115
  295. package/src/core/text-rendering/CanvasFontHandler.ts +176 -0
  296. package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
  297. package/src/core/text-rendering/SdfFontHandler.ts +517 -0
  298. package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
  299. package/src/core/text-rendering/TextRenderer.ts +404 -0
  300. package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +257 -263
  301. package/src/core/text-rendering/canvas/Settings.ts +99 -0
  302. package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
  303. package/src/core/text-rendering/canvas/Utils.ts +178 -0
  304. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
  305. package/src/core/text-rendering/canvas/draw.ts +165 -0
  306. package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
  307. package/src/core/text-rendering/sdf/Utils.ts +436 -0
  308. package/src/core/text-rendering/sdf/index.ts +20 -0
  309. package/src/core/textures/ColorTexture.ts +102 -102
  310. package/src/core/textures/ImageTexture.ts +418 -376
  311. package/src/core/textures/NoiseTexture.ts +104 -104
  312. package/src/core/textures/RenderTexture.ts +85 -85
  313. package/src/core/textures/SubTexture.ts +205 -205
  314. package/src/core/textures/Texture.ts +381 -337
  315. package/src/core/utils.ts +227 -227
  316. package/src/env.d.ts +7 -7
  317. package/src/main-api/INode.ts +100 -99
  318. package/src/main-api/Inspector.ts +567 -522
  319. package/src/main-api/Renderer.ts +873 -649
  320. package/src/main-api/utils.ts +45 -45
  321. package/src/utils.ts +267 -267
  322. package/dist/exports/core-api.d.ts +0 -74
  323. package/dist/exports/core-api.js +0 -96
  324. package/dist/exports/core-api.js.map +0 -1
  325. package/dist/exports/main-api.d.ts +0 -30
  326. package/dist/exports/main-api.js +0 -45
  327. package/dist/exports/main-api.js.map +0 -1
  328. package/dist/src/core/CoreExtension.d.ts +0 -12
  329. package/dist/src/core/CoreExtension.js +0 -29
  330. package/dist/src/core/CoreExtension.js.map +0 -1
  331. package/dist/src/core/CoreStuff.d.ts +0 -1
  332. package/dist/src/core/CoreStuff.js +0 -138
  333. package/dist/src/core/CoreStuff.js.map +0 -1
  334. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  335. package/dist/src/core/CoreTexturizer.js +0 -47
  336. package/dist/src/core/CoreTexturizer.js.map +0 -1
  337. package/dist/src/core/LngNode.d.ts +0 -736
  338. package/dist/src/core/LngNode.js +0 -1174
  339. package/dist/src/core/LngNode.js.map +0 -1
  340. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  341. package/dist/src/core/Matrix2DContext.js +0 -45
  342. package/dist/src/core/Matrix2DContext.js.map +0 -1
  343. package/dist/src/core/ShaderNode.d.ts +0 -10
  344. package/dist/src/core/ShaderNode.js +0 -30
  345. package/dist/src/core/ShaderNode.js.map +0 -1
  346. package/dist/src/core/TextNode.d.ts +0 -103
  347. package/dist/src/core/TextNode.js +0 -331
  348. package/dist/src/core/TextNode.js.map +0 -1
  349. package/dist/src/core/lib/Coords.d.ts +0 -14
  350. package/dist/src/core/lib/Coords.js +0 -55
  351. package/dist/src/core/lib/Coords.js.map +0 -1
  352. package/dist/src/core/lib/glm/common.d.ts +0 -162
  353. package/dist/src/core/lib/glm/common.js +0 -81
  354. package/dist/src/core/lib/glm/common.js.map +0 -1
  355. package/dist/src/core/lib/glm/index.d.ts +0 -11
  356. package/dist/src/core/lib/glm/index.js +0 -30
  357. package/dist/src/core/lib/glm/index.js.map +0 -1
  358. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  359. package/dist/src/core/lib/glm/mat2.js +0 -396
  360. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  361. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  362. package/dist/src/core/lib/glm/mat2d.js +0 -442
  363. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  364. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  365. package/dist/src/core/lib/glm/mat3.js +0 -680
  366. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  367. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  368. package/dist/src/core/lib/glm/mat4.js +0 -1802
  369. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  370. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  371. package/dist/src/core/lib/glm/quat.js +0 -693
  372. package/dist/src/core/lib/glm/quat.js.map +0 -1
  373. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  374. package/dist/src/core/lib/glm/quat2.js +0 -754
  375. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  376. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  377. package/dist/src/core/lib/glm/vec2.js +0 -569
  378. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  379. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  380. package/dist/src/core/lib/glm/vec3.js +0 -720
  381. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  382. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  383. package/dist/src/core/lib/glm/vec4.js +0 -608
  384. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  385. package/dist/src/core/platform.d.ts +0 -10
  386. package/dist/src/core/platform.js +0 -56
  387. package/dist/src/core/platform.js.map +0 -1
  388. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  389. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  390. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  391. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  392. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  393. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  394. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  395. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  396. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  397. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
  398. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  399. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  400. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  401. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  402. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  403. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
  404. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  405. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  406. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  407. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  408. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
  409. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
  410. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  411. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  412. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  413. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  414. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  415. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
  416. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  417. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  418. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
  419. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  420. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  421. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  422. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  423. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  424. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  425. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  426. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  427. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  428. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  429. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  430. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  431. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  432. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  433. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  434. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  435. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  436. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  437. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  438. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  439. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  440. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  441. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  442. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  443. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  444. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  445. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  446. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  447. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  448. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  449. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  450. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  451. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  452. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  453. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  454. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  455. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  456. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  457. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  458. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  459. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  460. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  461. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  462. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  463. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  464. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  465. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  466. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  467. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  468. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  469. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  470. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  471. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  472. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  473. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  474. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  475. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  476. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  477. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  478. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  479. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  480. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  481. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  482. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  483. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  484. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  485. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  486. package/dist/src/core/scene/Scene.d.ts +0 -59
  487. package/dist/src/core/scene/Scene.js +0 -106
  488. package/dist/src/core/scene/Scene.js.map +0 -1
  489. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  490. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  491. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  492. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  493. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  494. package/dist/src/main-api/DynamicShaderController.js +0 -58
  495. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  496. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  497. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  498. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  499. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  500. package/dist/src/main-api/IShaderController.d.ts +0 -14
  501. package/dist/src/main-api/IShaderController.js +0 -30
  502. package/dist/src/main-api/IShaderController.js.map +0 -1
  503. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  504. package/dist/src/main-api/IShaderNode.js +0 -19
  505. package/dist/src/main-api/IShaderNode.js.map +0 -1
  506. package/dist/src/main-api/RendererMain.d.ts +0 -375
  507. package/dist/src/main-api/RendererMain.js +0 -365
  508. package/dist/src/main-api/RendererMain.js.map +0 -1
  509. package/dist/src/main-api/ShaderController.d.ts +0 -31
  510. package/dist/src/main-api/ShaderController.js +0 -37
  511. package/dist/src/main-api/ShaderController.js.map +0 -1
  512. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  513. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  514. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  515. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  516. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  517. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  518. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  519. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  520. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  521. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  522. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  523. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  524. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  525. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  526. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  527. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  528. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  529. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  530. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  531. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  532. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  533. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  534. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  535. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  536. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  537. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  538. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  539. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  540. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  541. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  542. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  543. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  544. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  545. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  546. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  547. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  548. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  549. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  550. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  551. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  552. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  553. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  554. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  555. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  556. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  557. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  558. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  559. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  560. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  561. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  562. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  563. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  564. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  565. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  566. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  567. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  568. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  569. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  570. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  571. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  572. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  573. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  574. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  575. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  576. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  577. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  578. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  579. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  580. package/dist/src/render-drivers/utils.d.ts +0 -12
  581. package/dist/src/render-drivers/utils.js +0 -69
  582. package/dist/src/render-drivers/utils.js.map +0 -1
  583. package/scripts/please-use-pnpm.js +0 -13
  584. package/src/core/platform.ts +0 -64
  585. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  586. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  587. package/src/core/text-rendering/TrFontManager.ts +0 -183
  588. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  589. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  590. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  591. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  592. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  593. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  594. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  595. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  596. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  597. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
  598. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  599. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  600. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  601. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  602. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  603. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  604. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  605. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  606. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  607. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  608. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  609. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  610. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  611. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
@@ -1,376 +1,418 @@
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 { Texture, TextureType, type TextureData } from './Texture.js';
22
- import {
23
- isCompressedTextureContainer,
24
- loadCompressedTexture,
25
- } from '../lib/textureCompression.js';
26
- import { convertUrlToAbsolute, isBase64Image } from '../lib/utils.js';
27
- import { isSvgImage, loadSvg } from '../lib/textureSvg.js';
28
- import { fetchJson } from '../text-rendering/font-face-types/utils.js';
29
-
30
- /**
31
- * Properties of the {@link ImageTexture}
32
- */
33
- export interface ImageTextureProps {
34
- /**
35
- * Source URL or ImageData for the image to be used as a texture.
36
- *
37
- * @remarks
38
- * The ImageData type is currently only supported internally. End users should
39
- * only set this property to a URL string.
40
- *
41
- * @default ''
42
- */
43
- src?: string | ImageData | (() => ImageData | null);
44
- /**
45
- * Whether to premultiply the alpha channel into the color channels of the
46
- * image.
47
- *
48
- * @remarks
49
- * Generally this should be set to `true` (the default). However, if the
50
- * texture's associated Shader expects straight (non-premultiplied) colors,
51
- * this should be set to `false`.
52
- *
53
- * @default true
54
- */
55
- premultiplyAlpha?: boolean | null;
56
- /**
57
- * `ImageData` textures are not cached unless a `key` is provided
58
- */
59
- key?: string | null;
60
- /**
61
- * Width of the image to be used as a texture. If not provided, the image's
62
- * natural width will be used.
63
- */
64
- width?: number | null;
65
- /**
66
- * Height of the image to be used as a texture. If not provided, the image's
67
- * natural height will be used.
68
- */
69
- height?: number | null;
70
- /**
71
- * Type, indicate an image type for overriding type detection
72
- *
73
- * @default null
74
- */
75
- type?: 'regular' | 'compressed' | 'svg' | null;
76
- /**
77
- * The width of the rectangle from which the ImageBitmap will be extracted. This value
78
- * can be negative. Only works when createImageBitmap is supported on the browser.
79
- *
80
- * @default null
81
- */
82
- sw?: number | null;
83
- /**
84
- * The height of the rectangle from which the ImageBitmap will be extracted. This value
85
- * can be negative. Only works when createImageBitmap is supported on the browser.
86
- *
87
- * @default null
88
- */
89
- sh?: number | null;
90
- /**
91
- * The y coordinate of the reference point of the rectangle from which the ImageBitmap
92
- * will be extracted. Only used when `sw` and `sh` are provided. And only works when
93
- * createImageBitmap is available.
94
- *
95
- * @default null
96
- */
97
- sx?: number | null;
98
- /**
99
- * The x coordinate of the reference point of the rectangle from which the
100
- * ImageBitmap will be extracted. Only used when source `sw` width and `sh` height
101
- * are provided. Only works when createImageBitmap is supported on the browser.
102
- *
103
- * @default null
104
- */
105
- sy?: number | null;
106
- }
107
-
108
- /**
109
- * Texture consisting of an image loaded from a URL
110
- *
111
- * @remarks
112
- * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL
113
- * to be downloaded.
114
- *
115
- * By default, the texture's alpha values will be premultiplied into its color
116
- * values which is generally the desired setting before they are sent to the
117
- * texture's associated {@link Shader}. However, in special cases you may want
118
- * the Shader to receive straight (non-premultiplied) values. In that case you
119
- * can disable the default behavior by setting the
120
- * {@link ImageTextureProps.premultiplyAlpha} prop to `false`.
121
- */
122
- export class ImageTexture extends Texture {
123
- public props: Required<ImageTextureProps>;
124
-
125
- public override type: TextureType = TextureType.image;
126
-
127
- constructor(txManager: CoreTextureManager, props: ImageTextureProps) {
128
- super(txManager);
129
- this.props = ImageTexture.resolveDefaults(props);
130
- }
131
-
132
- hasAlphaChannel(mimeType: string) {
133
- return mimeType.indexOf('image/png') !== -1;
134
- }
135
-
136
- async loadImageFallback(src: string, hasAlpha: boolean) {
137
- const img = new Image();
138
-
139
- if (isBase64Image(src) === false) {
140
- img.crossOrigin = 'anonymous';
141
- }
142
-
143
- return new Promise<{ data: HTMLImageElement; premultiplyAlpha: boolean }>(
144
- (resolve) => {
145
- img.onload = () => {
146
- resolve({ data: img, premultiplyAlpha: hasAlpha });
147
- };
148
-
149
- img.onerror = () => {
150
- console.warn('Image loading failed, returning fallback object.');
151
- resolve({ data: img, premultiplyAlpha: hasAlpha });
152
- };
153
-
154
- img.src = src;
155
- },
156
- );
157
- }
158
-
159
- async createImageBitmap(
160
- blob: Blob,
161
- premultiplyAlpha: boolean | null,
162
- sx: number | null,
163
- sy: number | null,
164
- sw: number | null,
165
- sh: number | null,
166
- ): Promise<{
167
- data: ImageBitmap | HTMLImageElement;
168
- premultiplyAlpha: boolean;
169
- }> {
170
- const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
171
- const imageBitmapSupported = this.txManager.imageBitmapSupported;
172
-
173
- if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
174
- // createImageBitmap with crop
175
- const bitmap = await createImageBitmap(blob, sx || 0, sy || 0, sw, sh, {
176
- premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
177
- colorSpaceConversion: 'none',
178
- imageOrientation: 'none',
179
- });
180
- return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
181
- } else if (imageBitmapSupported.basic === true) {
182
- // basic createImageBitmap without options or crop
183
- // this is supported for Chrome v50 to v52/54 that doesn't support options
184
- return {
185
- data: await createImageBitmap(blob),
186
- premultiplyAlpha: hasAlphaChannel,
187
- };
188
- }
189
-
190
- // default createImageBitmap without crop but with options
191
- const bitmap = await createImageBitmap(blob, {
192
- premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
193
- colorSpaceConversion: 'none',
194
- imageOrientation: 'none',
195
- });
196
- return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
197
- }
198
-
199
- async loadImage(src: string) {
200
- const { premultiplyAlpha, sx, sy, sw, sh } = this.props;
201
-
202
- if (this.txManager.hasCreateImageBitmap === true) {
203
- if (
204
- isBase64Image(src) === false &&
205
- this.txManager.hasWorker === true &&
206
- this.txManager.imageWorkerManager !== null
207
- ) {
208
- return this.txManager.imageWorkerManager.getImage(
209
- src,
210
- premultiplyAlpha,
211
- sx,
212
- sy,
213
- sw,
214
- sh,
215
- );
216
- }
217
-
218
- const blob = await fetchJson(src, 'blob').then(
219
- (response) => response as Blob,
220
- );
221
- return this.createImageBitmap(blob, premultiplyAlpha, sx, sy, sw, sh);
222
- }
223
-
224
- return this.loadImageFallback(src, premultiplyAlpha ?? true);
225
- }
226
-
227
- override async getTextureSource(): Promise<TextureData> {
228
- let resp;
229
- try {
230
- resp = await this.determineImageTypeAndLoadImage();
231
- } catch (e) {
232
- this.setState('failed', e as Error);
233
- return {
234
- data: null,
235
- };
236
- }
237
-
238
- if (resp.data === null) {
239
- this.setState('failed', Error('ImageTexture: No image data'));
240
- return {
241
- data: null,
242
- };
243
- }
244
-
245
- let width, height;
246
- // check if resp.data is typeof Uint8ClampedArray else
247
- // use resp.data.width and resp.data.height
248
- if (resp.data instanceof Uint8Array) {
249
- width = this.props.width ?? 0;
250
- height = this.props.height ?? 0;
251
- } else {
252
- width = resp.data?.width ?? (this.props.width || 0);
253
- height = resp.data?.height ?? (this.props.height || 0);
254
- }
255
-
256
- // we're loaded!
257
- this.setState('fetched', {
258
- width,
259
- height,
260
- });
261
-
262
- return {
263
- data: resp.data,
264
- premultiplyAlpha: this.props.premultiplyAlpha ?? true,
265
- };
266
- }
267
-
268
- determineImageTypeAndLoadImage() {
269
- const { src, premultiplyAlpha, type } = this.props;
270
- if (src === null) {
271
- return {
272
- data: null,
273
- };
274
- }
275
-
276
- if (typeof src !== 'string') {
277
- if (src instanceof ImageData) {
278
- return {
279
- data: src,
280
- premultiplyAlpha,
281
- };
282
- }
283
- return {
284
- data: src(),
285
- premultiplyAlpha,
286
- };
287
- }
288
-
289
- const absoluteSrc = convertUrlToAbsolute(src);
290
- if (type === 'regular') {
291
- return this.loadImage(absoluteSrc);
292
- }
293
-
294
- if (type === 'svg') {
295
- return loadSvg(
296
- absoluteSrc,
297
- this.props.width,
298
- this.props.height,
299
- this.props.sx,
300
- this.props.sy,
301
- this.props.sw,
302
- this.props.sh,
303
- );
304
- }
305
-
306
- if (isSvgImage(src) === true) {
307
- return loadSvg(
308
- absoluteSrc,
309
- this.props.width,
310
- this.props.height,
311
- this.props.sx,
312
- this.props.sy,
313
- this.props.sw,
314
- this.props.sh,
315
- );
316
- }
317
-
318
- if (type === 'compressed') {
319
- return loadCompressedTexture(absoluteSrc);
320
- }
321
-
322
- if (isCompressedTextureContainer(src) === true) {
323
- return loadCompressedTexture(absoluteSrc);
324
- }
325
-
326
- // default
327
- return this.loadImage(absoluteSrc);
328
- }
329
-
330
- /**
331
- * Generates a cache key for the ImageTexture based on the provided props.
332
- * @param props - The props used to generate the cache key.
333
- * @returns The cache key as a string, or `false` if the key cannot be generated.
334
- */
335
- static override makeCacheKey(props: ImageTextureProps): string | false {
336
- const resolvedProps = ImageTexture.resolveDefaults(props);
337
- // Only cache key-able textures; prioritise key
338
- const key = resolvedProps.key || resolvedProps.src;
339
- if (typeof key !== 'string') {
340
- return false;
341
- }
342
-
343
- // if we have source dimensions, cache the texture separately
344
- let dimensionProps = '';
345
- if (resolvedProps.sh !== null && resolvedProps.sw !== null) {
346
- dimensionProps += ',';
347
- dimensionProps += resolvedProps.sx ?? '';
348
- dimensionProps += resolvedProps.sy ?? '';
349
- dimensionProps += resolvedProps.sw || '';
350
- dimensionProps += resolvedProps.sh || '';
351
- }
352
-
353
- return `ImageTexture,${key},${
354
- resolvedProps.premultiplyAlpha ?? 'true'
355
- }${dimensionProps}`;
356
- }
357
-
358
- static override resolveDefaults(
359
- props: ImageTextureProps,
360
- ): Required<ImageTextureProps> {
361
- return {
362
- src: props.src ?? '',
363
- premultiplyAlpha: props.premultiplyAlpha ?? true, // null,
364
- key: props.key ?? null,
365
- type: props.type ?? null,
366
- width: props.width ?? null,
367
- height: props.height ?? null,
368
- sx: props.sx ?? null,
369
- sy: props.sy ?? null,
370
- sw: props.sw ?? null,
371
- sh: props.sh ?? null,
372
- };
373
- }
374
-
375
- static z$__type__Props: ImageTextureProps;
376
- }
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 { Texture, TextureType, type TextureData } from './Texture.js';
22
+ import {
23
+ isCompressedTextureContainer,
24
+ loadCompressedTexture,
25
+ } from '../lib/textureCompression.js';
26
+ import {
27
+ convertUrlToAbsolute,
28
+ dataURIToBlob,
29
+ isBase64Image,
30
+ } from '../lib/utils.js';
31
+ import { isSvgImage, loadSvg } from '../lib/textureSvg.js';
32
+ import { fetchJson } from '../lib/utils.js';
33
+ import type { Platform } from '../platforms/Platform.js';
34
+ import { isProductionEnvironment } from '../../utils.js';
35
+
36
+ /**
37
+ * Properties of the {@link ImageTexture}
38
+ */
39
+ export interface ImageTextureProps {
40
+ /**
41
+ * Source URL or ImageData for the image to be used as a texture.
42
+ *
43
+ * @remarks
44
+ * The ImageData type is currently only supported internally. End users should
45
+ * only set this property to a URL string.
46
+ *
47
+ * @default ''
48
+ */
49
+ src?: string | Blob | ImageData | (() => ImageData | null);
50
+ /**
51
+ * Whether to premultiply the alpha channel into the color channels of the
52
+ * image.
53
+ *
54
+ * @remarks
55
+ * Generally this should be set to `true` (the default). However, if the
56
+ * texture's associated Shader expects straight (non-premultiplied) colors,
57
+ * this should be set to `false`.
58
+ *
59
+ * @default true
60
+ */
61
+ premultiplyAlpha?: boolean | null;
62
+ /**
63
+ * `ImageData` textures are not cached unless a `key` is provided
64
+ */
65
+ key?: string | null;
66
+ /**
67
+ * Width of the image to be used as a texture. If not provided, the image's
68
+ * natural width will be used.
69
+ */
70
+ width?: number | null;
71
+ /**
72
+ * Height of the image to be used as a texture. If not provided, the image's
73
+ * natural height will be used.
74
+ */
75
+ height?: number | null;
76
+ /**
77
+ * Type, indicate an image type for overriding type detection
78
+ *
79
+ * @default null
80
+ */
81
+ type?: 'regular' | 'compressed' | 'svg' | null;
82
+ /**
83
+ * The width of the rectangle from which the ImageBitmap will be extracted. This value
84
+ * can be negative. Only works when createImageBitmap is supported on the browser.
85
+ *
86
+ * @default null
87
+ */
88
+ sw?: number | null;
89
+ /**
90
+ * The height of the rectangle from which the ImageBitmap will be extracted. This value
91
+ * can be negative. Only works when createImageBitmap is supported on the browser.
92
+ *
93
+ * @default null
94
+ */
95
+ sh?: number | null;
96
+ /**
97
+ * The y coordinate of the reference point of the rectangle from which the ImageBitmap
98
+ * will be extracted. Only used when `sw` and `sh` are provided. And only works when
99
+ * createImageBitmap is available.
100
+ *
101
+ * @default null
102
+ */
103
+ sx?: number | null;
104
+ /**
105
+ * The x coordinate of the reference point of the rectangle from which the
106
+ * ImageBitmap will be extracted. Only used when source `sw` width and `sh` height
107
+ * are provided. Only works when createImageBitmap is supported on the browser.
108
+ *
109
+ * @default null
110
+ */
111
+ sy?: number | null;
112
+ }
113
+
114
+ /**
115
+ * Texture consisting of an image loaded from a URL
116
+ *
117
+ * @remarks
118
+ * The ImageTexture's {@link ImageTextureProps.src} prop defines the image URL
119
+ * to be downloaded.
120
+ *
121
+ * By default, the texture's alpha values will be premultiplied into its color
122
+ * values which is generally the desired setting before they are sent to the
123
+ * texture's associated {@link Shader}. However, in special cases you may want
124
+ * the Shader to receive straight (non-premultiplied) values. In that case you
125
+ * can disable the default behavior by setting the
126
+ * {@link ImageTextureProps.premultiplyAlpha} prop to `false`.
127
+ */
128
+ export class ImageTexture extends Texture {
129
+ private platform: Platform;
130
+
131
+ public props: Required<ImageTextureProps>;
132
+ public override type: TextureType = TextureType.image;
133
+
134
+ constructor(txManager: CoreTextureManager, props: ImageTextureProps) {
135
+ super(txManager);
136
+
137
+ this.platform = txManager.platform;
138
+ this.props = ImageTexture.resolveDefaults(props);
139
+ }
140
+
141
+ hasAlphaChannel(mimeType: string) {
142
+ return mimeType.indexOf('image/png') !== -1;
143
+ }
144
+
145
+ async loadImageFallback(src: string | Blob, hasAlpha: boolean) {
146
+ const img = new Image();
147
+
148
+ if (typeof src === 'string' && isBase64Image(src) === false) {
149
+ img.crossOrigin = 'anonymous';
150
+ }
151
+
152
+ return new Promise<{
153
+ data: HTMLImageElement | null;
154
+ premultiplyAlpha: boolean;
155
+ }>((resolve) => {
156
+ img.onload = () => {
157
+ resolve({ data: img, premultiplyAlpha: hasAlpha });
158
+ };
159
+
160
+ img.onerror = () => {
161
+ console.warn('Image loading failed, returning fallback object.');
162
+ resolve({ data: null, premultiplyAlpha: hasAlpha });
163
+ };
164
+
165
+ if (src instanceof Blob) {
166
+ img.src = URL.createObjectURL(src);
167
+ } else {
168
+ img.src = src;
169
+ }
170
+ });
171
+ }
172
+
173
+ async createImageBitmap(
174
+ blob: Blob,
175
+ premultiplyAlpha: boolean | null,
176
+ sx: number | null,
177
+ sy: number | null,
178
+ sw: number | null,
179
+ sh: number | null,
180
+ ): Promise<{
181
+ data: ImageBitmap | HTMLImageElement;
182
+ premultiplyAlpha: boolean;
183
+ }> {
184
+ const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
185
+ const imageBitmapSupported = this.txManager.imageBitmapSupported;
186
+
187
+ if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
188
+ // createImageBitmap with crop
189
+ const bitmap = await this.platform.createImageBitmap(
190
+ blob,
191
+ sx || 0,
192
+ sy || 0,
193
+ sw,
194
+ sh,
195
+ {
196
+ premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
197
+ colorSpaceConversion: 'none',
198
+ imageOrientation: 'none',
199
+ },
200
+ );
201
+ return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
202
+ } else if (imageBitmapSupported.basic === true) {
203
+ // basic createImageBitmap without options or crop
204
+ // this is supported for Chrome v50 to v52/54 that doesn't support options
205
+ return {
206
+ data: await this.platform.createImageBitmap(blob),
207
+ premultiplyAlpha: hasAlphaChannel,
208
+ };
209
+ }
210
+
211
+ // default createImageBitmap without crop but with options
212
+ const bitmap = await this.platform.createImageBitmap(blob, {
213
+ premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
214
+ colorSpaceConversion: 'none',
215
+ imageOrientation: 'none',
216
+ });
217
+ return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
218
+ }
219
+
220
+ async loadImage(src: string) {
221
+ const { premultiplyAlpha, sx, sy, sw, sh } = this.props;
222
+
223
+ if (this.txManager.hasCreateImageBitmap === true) {
224
+ if (
225
+ isBase64Image(src) === false &&
226
+ this.txManager.hasWorker === true &&
227
+ this.txManager.imageWorkerManager !== null
228
+ ) {
229
+ return this.txManager.imageWorkerManager.getImage(
230
+ src,
231
+ premultiplyAlpha,
232
+ sx,
233
+ sy,
234
+ sw,
235
+ sh,
236
+ );
237
+ }
238
+
239
+ let blob;
240
+
241
+ if (isBase64Image(src) === true) {
242
+ blob = dataURIToBlob(src);
243
+ } else {
244
+ blob = await fetchJson(src, 'blob').then(
245
+ (response) => response as Blob,
246
+ );
247
+ }
248
+
249
+ return this.createImageBitmap(blob, premultiplyAlpha, sx, sy, sw, sh);
250
+ }
251
+
252
+ return this.loadImageFallback(src, premultiplyAlpha ?? true);
253
+ }
254
+
255
+ override async getTextureSource(): Promise<TextureData> {
256
+ let resp;
257
+ try {
258
+ resp = await this.determineImageTypeAndLoadImage();
259
+ } catch (e) {
260
+ this.setState('failed', e as Error);
261
+
262
+ // log error only in development
263
+ if (isProductionEnvironment === false) {
264
+ console.error('ImageTexture:', e);
265
+ }
266
+
267
+ return {
268
+ data: null,
269
+ };
270
+ }
271
+
272
+ if (resp.data === null) {
273
+ this.setState('failed', Error('ImageTexture: No image data'));
274
+ return {
275
+ data: null,
276
+ };
277
+ }
278
+
279
+ let width, height;
280
+ // check if resp.data is typeof Uint8ClampedArray else
281
+ // use resp.data.width and resp.data.height
282
+ if (resp.data instanceof Uint8Array) {
283
+ width = this.props.width ?? 0;
284
+ height = this.props.height ?? 0;
285
+ } else {
286
+ width = resp.data?.width ?? (this.props.width || 0);
287
+ height = resp.data?.height ?? (this.props.height || 0);
288
+ }
289
+
290
+ // we're loaded!
291
+ this.setState('fetched', {
292
+ width,
293
+ height,
294
+ });
295
+
296
+ return {
297
+ data: resp.data,
298
+ premultiplyAlpha: this.props.premultiplyAlpha ?? true,
299
+ };
300
+ }
301
+
302
+ determineImageTypeAndLoadImage() {
303
+ const { src, premultiplyAlpha, type } = this.props;
304
+ if (src === null) {
305
+ return {
306
+ data: null,
307
+ };
308
+ }
309
+
310
+ if (typeof src !== 'string') {
311
+ if (src instanceof Blob) {
312
+ if (this.txManager.hasCreateImageBitmap === true) {
313
+ const { sx, sy, sw, sh } = this.props;
314
+ return this.createImageBitmap(src, premultiplyAlpha, sx, sy, sw, sh);
315
+ } else {
316
+ return this.loadImageFallback(src, premultiplyAlpha ?? true);
317
+ }
318
+ }
319
+ if (src instanceof ImageData) {
320
+ return {
321
+ data: src,
322
+ premultiplyAlpha,
323
+ };
324
+ }
325
+ return {
326
+ data: src(),
327
+ premultiplyAlpha,
328
+ };
329
+ }
330
+
331
+ const absoluteSrc = convertUrlToAbsolute(src);
332
+ if (type === 'regular') {
333
+ return this.loadImage(absoluteSrc);
334
+ }
335
+
336
+ if (type === 'svg') {
337
+ return loadSvg(
338
+ absoluteSrc,
339
+ this.props.width,
340
+ this.props.height,
341
+ this.props.sx,
342
+ this.props.sy,
343
+ this.props.sw,
344
+ this.props.sh,
345
+ );
346
+ }
347
+
348
+ if (isSvgImage(src) === true) {
349
+ return loadSvg(
350
+ absoluteSrc,
351
+ this.props.width,
352
+ this.props.height,
353
+ this.props.sx,
354
+ this.props.sy,
355
+ this.props.sw,
356
+ this.props.sh,
357
+ );
358
+ }
359
+
360
+ if (type === 'compressed') {
361
+ return loadCompressedTexture(absoluteSrc);
362
+ }
363
+
364
+ if (isCompressedTextureContainer(src) === true) {
365
+ return loadCompressedTexture(absoluteSrc);
366
+ }
367
+
368
+ // default
369
+ return this.loadImage(absoluteSrc);
370
+ }
371
+
372
+ /**
373
+ * Generates a cache key for the ImageTexture based on the provided props.
374
+ * @param props - The props used to generate the cache key.
375
+ * @returns The cache key as a string, or `false` if the key cannot be generated.
376
+ */
377
+ static override makeCacheKey(props: ImageTextureProps): string | false {
378
+ const resolvedProps = ImageTexture.resolveDefaults(props);
379
+ // Only cache key-able textures; prioritise key
380
+ const key = resolvedProps.key || resolvedProps.src;
381
+ if (typeof key !== 'string') {
382
+ return false;
383
+ }
384
+
385
+ // if we have source dimensions, cache the texture separately
386
+ let dimensionProps = '';
387
+ if (resolvedProps.sh !== null && resolvedProps.sw !== null) {
388
+ dimensionProps += ',';
389
+ dimensionProps += resolvedProps.sx ?? '';
390
+ dimensionProps += resolvedProps.sy ?? '';
391
+ dimensionProps += resolvedProps.sw || '';
392
+ dimensionProps += resolvedProps.sh || '';
393
+ }
394
+
395
+ return `ImageTexture,${key},${
396
+ resolvedProps.premultiplyAlpha ?? 'true'
397
+ }${dimensionProps}`;
398
+ }
399
+
400
+ static override resolveDefaults(
401
+ props: ImageTextureProps,
402
+ ): Required<ImageTextureProps> {
403
+ return {
404
+ src: props.src ?? '',
405
+ premultiplyAlpha: props.premultiplyAlpha ?? true, // null,
406
+ key: props.key ?? null,
407
+ type: props.type ?? null,
408
+ width: props.width ?? null,
409
+ height: props.height ?? null,
410
+ sx: props.sx ?? null,
411
+ sy: props.sy ?? null,
412
+ sw: props.sw ?? null,
413
+ sh: props.sh ?? null,
414
+ };
415
+ }
416
+
417
+ static z$__type__Props: ImageTextureProps;
418
+ }