@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta11

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 (490) hide show
  1. package/README.md +13 -27
  2. package/dist/exports/canvas.d.ts +1 -1
  3. package/dist/exports/canvas.js +1 -1
  4. package/dist/exports/canvas.js.map +1 -1
  5. package/dist/exports/index.d.ts +1 -5
  6. package/dist/exports/index.js +1 -5
  7. package/dist/exports/index.js.map +1 -1
  8. package/dist/exports/utils.d.ts +2 -1
  9. package/dist/exports/utils.js +2 -1
  10. package/dist/exports/utils.js.map +1 -1
  11. package/dist/exports/webgl.d.ts +2 -1
  12. package/dist/exports/webgl.js +2 -1
  13. package/dist/exports/webgl.js.map +1 -1
  14. package/dist/src/core/CoreNode.d.ts +45 -69
  15. package/dist/src/core/CoreNode.js +323 -305
  16. package/dist/src/core/CoreNode.js.map +1 -1
  17. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  18. package/dist/src/core/CoreShaderManager.js.map +1 -1
  19. package/dist/src/core/CoreTextNode.d.ts +61 -87
  20. package/dist/src/core/CoreTextNode.js +276 -235
  21. package/dist/src/core/CoreTextNode.js.map +1 -1
  22. package/dist/src/core/CoreTextureManager.d.ts +9 -11
  23. package/dist/src/core/CoreTextureManager.js +80 -91
  24. package/dist/src/core/CoreTextureManager.js.map +1 -1
  25. package/dist/src/core/Stage.d.ts +75 -31
  26. package/dist/src/core/Stage.js +270 -136
  27. package/dist/src/core/Stage.js.map +1 -1
  28. package/dist/src/core/TextureMemoryManager.d.ts +10 -1
  29. package/dist/src/core/TextureMemoryManager.js +112 -78
  30. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  31. package/dist/src/core/animations/CoreAnimation.js +5 -0
  32. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  33. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  34. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  35. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  36. package/dist/src/core/lib/ImageWorker.js +3 -2
  37. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  38. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  39. package/dist/src/core/lib/RenderCoords.js +43 -55
  40. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  41. package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
  42. package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
  43. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  44. package/dist/src/core/lib/colorCache.d.ts +1 -0
  45. package/dist/src/core/lib/colorCache.js +19 -0
  46. package/dist/src/core/lib/colorCache.js.map +1 -0
  47. package/dist/src/core/lib/colorParser.d.ts +21 -0
  48. package/dist/src/core/lib/colorParser.js +72 -0
  49. package/dist/src/core/lib/colorParser.js.map +1 -0
  50. package/dist/src/core/lib/utils.d.ts +3 -0
  51. package/dist/src/core/lib/utils.js +42 -0
  52. package/dist/src/core/lib/utils.js.map +1 -1
  53. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  54. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  55. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  56. package/dist/src/core/platform.js +29 -4
  57. package/dist/src/core/platform.js.map +1 -1
  58. package/dist/src/core/platforms/Platform.d.ts +37 -0
  59. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  60. package/dist/src/core/platforms/Platform.js.map +1 -0
  61. package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
  62. package/dist/src/core/platforms/web/WebPlatform.js +84 -0
  63. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  64. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
  65. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
  66. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  67. package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
  68. package/dist/src/core/renderers/CoreShaderNode.js +8 -2
  69. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  70. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -1
  71. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +7 -6
  72. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  73. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
  74. package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
  75. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  76. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  77. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  78. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
  79. package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
  80. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  81. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  82. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  83. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  84. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  85. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  86. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  87. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  88. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  89. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +5 -6
  90. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +30 -18
  91. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  92. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +5 -2
  93. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  94. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +3 -1
  95. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  96. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
  97. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  98. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
  99. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
  100. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  101. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
  102. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
  103. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  104. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
  105. package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
  106. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  107. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
  108. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  109. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  110. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
  111. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
  112. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  113. package/dist/src/core/shaders/canvas/Border.js +1 -1
  114. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  115. package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
  116. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  117. package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
  118. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  119. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
  120. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  121. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  122. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  123. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  124. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  125. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
  126. package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
  127. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  128. package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
  129. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  130. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  131. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  132. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  133. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  134. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  135. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  136. package/dist/src/core/shaders/utils.d.ts +5 -0
  137. package/dist/src/core/shaders/utils.js +41 -0
  138. package/dist/src/core/shaders/utils.js.map +1 -0
  139. package/dist/src/core/shaders/webgl/Border.js +57 -34
  140. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  141. package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
  142. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  143. package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
  144. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  145. package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
  146. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  147. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +79 -36
  148. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  149. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +92 -42
  150. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  151. package/dist/src/core/shaders/webgl/SdfShader.js +1 -1
  152. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  153. package/dist/src/core/shaders/webgl/Spinner.js +2 -0
  154. package/dist/src/core/shaders/webgl/Spinner.js.map +1 -0
  155. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +41 -0
  156. package/dist/src/core/text-rendering/CanvasFontHandler.js +159 -0
  157. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  158. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
  159. package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
  160. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  161. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +152 -0
  162. package/dist/src/core/text-rendering/SdfFontHandler.js +368 -0
  163. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  164. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  165. package/dist/src/core/text-rendering/SdfTextRenderer.js +355 -0
  166. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  167. package/dist/src/core/text-rendering/TextRenderer.d.ts +351 -0
  168. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  169. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  170. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  171. package/dist/src/core/text-rendering/Utils.d.ts +71 -0
  172. package/dist/src/core/text-rendering/Utils.js +212 -0
  173. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  174. package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
  175. package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/canvas/Settings.js} +3 -11
  176. package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
  177. package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
  178. package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
  179. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
  180. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
  181. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
  182. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
  183. package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
  184. package/dist/src/core/text-rendering/canvas/draw.js +132 -0
  185. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
  186. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  187. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  188. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
  189. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  190. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  191. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +30 -34
  192. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  193. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
  194. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  195. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
  196. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
  197. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
  198. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
  199. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
  200. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
  201. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  202. package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
  203. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  204. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  205. package/dist/src/core/{CoreExtension.js → text-rendering/sdf/index.js} +3 -12
  206. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  207. package/dist/src/core/textures/ImageTexture.d.ts +4 -3
  208. package/dist/src/core/textures/ImageTexture.js +36 -9
  209. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  210. package/dist/src/core/textures/Texture.d.ts +21 -2
  211. package/dist/src/core/textures/Texture.js +37 -6
  212. package/dist/src/core/textures/Texture.js.map +1 -1
  213. package/dist/src/core/utils.d.ts +1 -1
  214. package/dist/src/main-api/INode.d.ts +2 -2
  215. package/dist/src/main-api/Inspector.d.ts +6 -1
  216. package/dist/src/main-api/Inspector.js +43 -7
  217. package/dist/src/main-api/Inspector.js.map +1 -1
  218. package/dist/src/main-api/Renderer.d.ts +122 -46
  219. package/dist/src/main-api/Renderer.js +174 -37
  220. package/dist/src/main-api/Renderer.js.map +1 -1
  221. package/dist/src/utils.d.ts +1 -6
  222. package/dist/src/utils.js +2 -9
  223. package/dist/src/utils.js.map +1 -1
  224. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  225. package/exports/canvas.ts +1 -1
  226. package/exports/index.ts +1 -8
  227. package/exports/utils.ts +7 -1
  228. package/exports/webgl.ts +3 -1
  229. package/package.json +2 -3
  230. package/src/core/CoreNode.test.ts +0 -1
  231. package/src/core/CoreNode.ts +403 -388
  232. package/src/core/CoreShaderManager.ts +5 -10
  233. package/src/core/CoreTextNode.ts +337 -302
  234. package/src/core/CoreTextureManager.ts +78 -110
  235. package/src/core/Stage.ts +344 -178
  236. package/src/core/TextureMemoryManager.ts +150 -100
  237. package/src/core/animations/CoreAnimation.ts +7 -0
  238. package/src/core/animations/CoreAnimationController.ts +13 -4
  239. package/src/core/lib/ImageWorker.ts +9 -2
  240. package/src/core/lib/RenderCoords.ts +52 -67
  241. package/src/core/lib/WebGlContextWrapper.ts +125 -68
  242. package/src/core/lib/colorCache.ts +20 -0
  243. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
  244. package/src/core/lib/utils.ts +51 -0
  245. package/src/core/lib/validateImageBitmap.ts +17 -6
  246. package/src/core/platforms/Platform.ts +77 -0
  247. package/src/core/platforms/web/WebPlatform.ts +121 -0
  248. package/src/core/renderers/CoreContextTexture.ts +1 -1
  249. package/src/core/renderers/CoreRenderer.ts +5 -2
  250. package/src/core/renderers/CoreShaderNode.ts +10 -6
  251. package/src/core/renderers/canvas/CanvasRenderer.ts +12 -28
  252. package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
  253. package/src/core/renderers/canvas/CanvasTexture.ts +17 -14
  254. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +5 -0
  255. package/src/core/renderers/webgl/WebGlCtxTexture.ts +52 -43
  256. package/src/core/renderers/webgl/WebGlRenderOp.ts +46 -24
  257. package/src/core/renderers/webgl/WebGlRenderer.ts +177 -145
  258. package/src/core/renderers/webgl/WebGlShaderNode.ts +7 -5
  259. package/src/core/renderers/webgl/WebGlShaderProgram.ts +68 -37
  260. package/src/core/shaders/canvas/Border.ts +1 -4
  261. package/src/core/shaders/canvas/LinearGradient.ts +8 -6
  262. package/src/core/shaders/canvas/RadialGradient.ts +22 -36
  263. package/src/core/shaders/canvas/RoundedWithBorder.ts +17 -11
  264. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
  265. package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
  266. package/src/core/shaders/templates/BorderTemplate.ts +1 -1
  267. package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
  268. package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
  269. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
  270. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
  271. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
  272. package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
  273. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
  274. package/src/core/shaders/webgl/Border.ts +57 -37
  275. package/src/core/shaders/webgl/HolePunch.ts +4 -7
  276. package/src/core/shaders/webgl/LinearGradient.ts +5 -4
  277. package/src/core/shaders/webgl/RadialGradient.ts +7 -6
  278. package/src/core/shaders/webgl/RoundedWithBorder.ts +80 -39
  279. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +92 -50
  280. package/src/core/shaders/webgl/SdfShader.ts +1 -4
  281. package/src/core/text-rendering/CanvasFontHandler.ts +210 -0
  282. package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
  283. package/src/core/text-rendering/SdfFontHandler.ts +554 -0
  284. package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
  285. package/src/core/text-rendering/TextRenderer.ts +406 -0
  286. package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +5 -11
  287. package/src/core/text-rendering/canvas/Settings.ts +99 -0
  288. package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
  289. package/src/core/text-rendering/canvas/Utils.ts +178 -0
  290. package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
  291. package/src/core/text-rendering/canvas/draw.ts +165 -0
  292. package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
  293. package/src/core/text-rendering/sdf/Utils.ts +436 -0
  294. package/src/core/text-rendering/sdf/index.ts +20 -0
  295. package/src/core/textures/ImageTexture.ts +69 -27
  296. package/src/core/textures/Texture.ts +50 -6
  297. package/src/main-api/INode.ts +4 -3
  298. package/src/main-api/Inspector.ts +53 -8
  299. package/src/main-api/Renderer.ts +311 -87
  300. package/src/utils.ts +10 -10
  301. package/dist/exports/core-api.d.ts +0 -74
  302. package/dist/exports/core-api.js +0 -96
  303. package/dist/exports/core-api.js.map +0 -1
  304. package/dist/exports/main-api.d.ts +0 -30
  305. package/dist/exports/main-api.js +0 -45
  306. package/dist/exports/main-api.js.map +0 -1
  307. package/dist/src/core/CoreExtension.d.ts +0 -12
  308. package/dist/src/core/CoreExtension.js.map +0 -1
  309. package/dist/src/core/CoreStuff.js +0 -138
  310. package/dist/src/core/CoreStuff.js.map +0 -1
  311. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  312. package/dist/src/core/CoreTexturizer.js +0 -47
  313. package/dist/src/core/CoreTexturizer.js.map +0 -1
  314. package/dist/src/core/LngNode.d.ts +0 -736
  315. package/dist/src/core/LngNode.js +0 -1174
  316. package/dist/src/core/LngNode.js.map +0 -1
  317. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  318. package/dist/src/core/Matrix2DContext.js +0 -45
  319. package/dist/src/core/Matrix2DContext.js.map +0 -1
  320. package/dist/src/core/ShaderNode.d.ts +0 -10
  321. package/dist/src/core/ShaderNode.js +0 -30
  322. package/dist/src/core/ShaderNode.js.map +0 -1
  323. package/dist/src/core/TextNode.d.ts +0 -103
  324. package/dist/src/core/TextNode.js +0 -331
  325. package/dist/src/core/TextNode.js.map +0 -1
  326. package/dist/src/core/lib/Coords.d.ts +0 -14
  327. package/dist/src/core/lib/Coords.js +0 -55
  328. package/dist/src/core/lib/Coords.js.map +0 -1
  329. package/dist/src/core/lib/glm/common.d.ts +0 -162
  330. package/dist/src/core/lib/glm/common.js +0 -81
  331. package/dist/src/core/lib/glm/common.js.map +0 -1
  332. package/dist/src/core/lib/glm/index.d.ts +0 -11
  333. package/dist/src/core/lib/glm/index.js +0 -30
  334. package/dist/src/core/lib/glm/index.js.map +0 -1
  335. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  336. package/dist/src/core/lib/glm/mat2.js +0 -396
  337. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  338. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  339. package/dist/src/core/lib/glm/mat2d.js +0 -442
  340. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  341. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  342. package/dist/src/core/lib/glm/mat3.js +0 -680
  343. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  344. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  345. package/dist/src/core/lib/glm/mat4.js +0 -1802
  346. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  347. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  348. package/dist/src/core/lib/glm/quat.js +0 -693
  349. package/dist/src/core/lib/glm/quat.js.map +0 -1
  350. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  351. package/dist/src/core/lib/glm/quat2.js +0 -754
  352. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  353. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  354. package/dist/src/core/lib/glm/vec2.js +0 -569
  355. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  356. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  357. package/dist/src/core/lib/glm/vec3.js +0 -720
  358. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  359. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  360. package/dist/src/core/lib/glm/vec4.js +0 -608
  361. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  362. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  363. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  364. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  365. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  366. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  367. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  368. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  369. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  370. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  371. package/dist/src/core/scene/Scene.d.ts +0 -59
  372. package/dist/src/core/scene/Scene.js +0 -106
  373. package/dist/src/core/scene/Scene.js.map +0 -1
  374. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  375. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  376. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  377. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  378. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  379. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  380. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  381. package/dist/src/main-api/IShaderController.d.ts +0 -14
  382. package/dist/src/main-api/IShaderController.js +0 -30
  383. package/dist/src/main-api/IShaderController.js.map +0 -1
  384. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  385. package/dist/src/main-api/IShaderNode.js +0 -19
  386. package/dist/src/main-api/IShaderNode.js.map +0 -1
  387. package/dist/src/main-api/RendererMain.d.ts +0 -375
  388. package/dist/src/main-api/RendererMain.js +0 -365
  389. package/dist/src/main-api/RendererMain.js.map +0 -1
  390. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  391. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  392. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  393. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  394. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  395. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  396. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  397. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  398. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  399. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  400. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  401. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  402. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  403. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  404. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  405. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  406. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  407. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  408. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  409. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  410. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  411. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  412. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  413. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  414. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  415. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  416. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  417. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  418. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  419. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  420. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  421. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  422. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  423. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  424. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  425. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  426. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  427. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  428. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  429. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  430. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  431. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  432. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  433. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  434. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  435. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  436. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  437. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  438. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  439. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  440. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  441. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  442. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  443. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  444. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  445. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  446. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  447. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  448. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  449. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  450. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  451. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  452. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  453. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  454. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  455. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  456. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  457. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  458. package/dist/src/render-drivers/utils.d.ts +0 -12
  459. package/dist/src/render-drivers/utils.js +0 -69
  460. package/dist/src/render-drivers/utils.js.map +0 -1
  461. package/scripts/please-use-pnpm.js +0 -13
  462. package/src/core/platform.ts +0 -64
  463. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  464. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  465. package/src/core/text-rendering/TrFontManager.ts +0 -183
  466. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  467. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  468. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  469. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  470. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  471. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  472. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  473. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  474. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  475. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
  476. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  477. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  478. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  479. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  480. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  481. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  482. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  483. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  484. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  485. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  486. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  487. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  488. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  489. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
  490. /package/dist/src/core/{CoreStuff.d.ts → shaders/webgl/Spinner.d.ts} +0 -0
@@ -35,8 +35,7 @@ import {
35
35
  } from './internal/ShaderUtils.js';
36
36
 
37
37
  export class WebGlShaderProgram implements CoreShaderProgram {
38
- protected boundBufferCollection: BufferCollection | null = null;
39
- protected program: WebGLProgram;
38
+ protected program: WebGLProgram | null;
40
39
  /**
41
40
  * Vertex Array Object
42
41
  *
@@ -47,9 +46,11 @@ export class WebGlShaderProgram implements CoreShaderProgram {
47
46
  protected renderer: WebGlRenderer;
48
47
  protected glw: WebGlContextWrapper;
49
48
  protected attributeLocations: Record<string, number>;
49
+ protected uniformLocations: Record<string, WebGLUniformLocation> | null;
50
50
  protected lifecycle: Pick<WebGlShaderType, 'update' | 'canBatch'>;
51
51
  protected useSystemAlpha = false;
52
52
  protected useSystemDimensions = false;
53
+ public isDestroyed = false;
53
54
  supportsIndexedTextures = false;
54
55
 
55
56
  constructor(
@@ -117,10 +118,10 @@ export class WebGlShaderProgram implements CoreShaderProgram {
117
118
  this.program = program;
118
119
  this.attributeLocations = glw.getAttributeLocations(program);
119
120
 
120
- this.useSystemAlpha =
121
- this.glw.getUniformLocation(program, 'u_alpha') !== null;
122
- this.useSystemDimensions =
123
- this.glw.getUniformLocation(program, 'u_dimensions') !== null;
121
+ const uniLocs = (this.uniformLocations = glw.getUniformLocations(program));
122
+
123
+ this.useSystemAlpha = uniLocs['u_alpha'] !== undefined;
124
+ this.useSystemDimensions = uniLocs['u_dimensions'] !== undefined;
124
125
 
125
126
  this.lifecycle = {
126
127
  update: config.update,
@@ -133,7 +134,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
133
134
  }
134
135
 
135
136
  disableAttributes() {
136
- const { glw } = this;
137
+ const glw = this.glw;
137
138
  const attribs = Object.keys(this.attributeLocations);
138
139
  const attribLen = attribs.length;
139
140
  for (let i = 0; i < attribLen; i++) {
@@ -141,31 +142,45 @@ export class WebGlShaderProgram implements CoreShaderProgram {
141
142
  }
142
143
  }
143
144
 
144
- reuseRenderOp(renderOpA: QuadOptions, renderOpB: QuadOptions): boolean {
145
- const lifecycleCheck = this.lifecycle.canBatch
146
- ? this.lifecycle.canBatch(renderOpA, renderOpB)
147
- : true;
148
- if (!lifecycleCheck) {
149
- return false;
145
+ reuseRenderOp(
146
+ incomingQuad: QuadOptions,
147
+ currentRenderOp: WebGlRenderOp,
148
+ ): boolean {
149
+ if (this.lifecycle.canBatch !== undefined) {
150
+ return this.lifecycle.canBatch(incomingQuad, currentRenderOp);
150
151
  }
151
152
 
152
- if (this.useSystemAlpha) {
153
- if (renderOpA.alpha !== renderOpB.alpha) {
153
+ if (this.useSystemAlpha === true) {
154
+ if (incomingQuad.alpha !== currentRenderOp.alpha) {
154
155
  return false;
155
156
  }
156
157
  }
157
158
 
158
- if (this.useSystemDimensions) {
159
+ if (this.useSystemDimensions === true) {
159
160
  if (
160
- renderOpA.width !== renderOpB.width ||
161
- renderOpA.height !== renderOpB.height
161
+ incomingQuad.width !== currentRenderOp.width ||
162
+ incomingQuad.height !== currentRenderOp.height
162
163
  ) {
163
164
  return false;
164
165
  }
165
166
  }
167
+ let shaderPropsA: Record<string, unknown> | undefined = undefined;
168
+ let shaderPropsB: Record<string, unknown> | undefined = undefined;
169
+
170
+ if (incomingQuad.shader !== null) {
171
+ shaderPropsA = incomingQuad.shader.resolvedProps;
172
+ }
173
+ if (currentRenderOp.shader !== null) {
174
+ shaderPropsB = currentRenderOp.shader.resolvedProps;
175
+ }
176
+
177
+ if (
178
+ (shaderPropsA === undefined && shaderPropsB !== undefined) ||
179
+ (shaderPropsA !== undefined && shaderPropsB === undefined)
180
+ ) {
181
+ return false;
182
+ }
166
183
 
167
- const shaderPropsA = renderOpA.shader?.getResolvedProps();
168
- const shaderPropsB = renderOpB.shader?.getResolvedProps();
169
184
  if (shaderPropsA !== undefined && shaderPropsB !== undefined) {
170
185
  for (const key in shaderPropsA) {
171
186
  if (shaderPropsA[key] !== shaderPropsB[key]) {
@@ -181,17 +196,17 @@ export class WebGlShaderProgram implements CoreShaderProgram {
181
196
  this.bindBufferCollection(renderOp.buffers);
182
197
  this.bindTextures(renderOp.textures);
183
198
 
184
- const { parentHasRenderTexture } = renderOp.quad;
199
+ const { parentHasRenderTexture } = renderOp;
185
200
 
186
201
  // Skip if the parent and current operation both have render textures
187
- if (renderOp.quad.rtt && parentHasRenderTexture) {
202
+ if (renderOp.rtt === true && parentHasRenderTexture === true) {
188
203
  return;
189
204
  }
190
205
 
191
206
  // Bind render texture framebuffer dimensions as resolution
192
207
  // if the parent has a render texture
193
- if (parentHasRenderTexture) {
194
- const { width, height } = renderOp.quad.framebufferDimensions!;
208
+ if (parentHasRenderTexture === true) {
209
+ const { width, height } = renderOp.framebufferDimensions!;
195
210
  // Force pixel ratio to 1.0 for render textures since they are always 1:1
196
211
  // the final render texture will be rendered to the screen with the correct pixel ratio
197
212
  this.glw.uniform1f('u_pixelRatio', 1.0);
@@ -207,18 +222,12 @@ export class WebGlShaderProgram implements CoreShaderProgram {
207
222
  );
208
223
  }
209
224
 
210
- this.glw.uniform1f('u_rtt', renderOp.quad.rtt ? 1 : 0);
211
-
212
- if (this.useSystemAlpha) {
213
- this.glw.uniform1f('u_alpha', renderOp.quad.alpha);
225
+ if (this.useSystemAlpha === true) {
226
+ this.glw.uniform1f('u_alpha', renderOp.alpha);
214
227
  }
215
228
 
216
- if (this.useSystemDimensions) {
217
- this.glw.uniform2f(
218
- 'u_dimensions',
219
- renderOp.quad.width,
220
- renderOp.quad.height,
221
- );
229
+ if (this.useSystemDimensions === true) {
230
+ this.glw.uniform2f('u_dimensions', renderOp.width, renderOp.height);
222
231
  }
223
232
 
224
233
  /**temporary fix to make sdf texts work */
@@ -230,7 +239,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
230
239
  return;
231
240
  }
232
241
 
233
- if (renderOp.shader.props) {
242
+ if (renderOp.shader.props !== undefined) {
234
243
  /**
235
244
  * loop over all precalculated uniform types
236
245
  */
@@ -276,7 +285,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
276
285
  const name = attribs[i]!;
277
286
  const resolvedBuffer = buffer.getBuffer(name);
278
287
  const resolvedInfo = buffer.getAttributeInfo(name);
279
- if (!resolvedBuffer || !resolvedInfo) {
288
+ if (resolvedBuffer === undefined || resolvedInfo === undefined) {
280
289
  continue;
281
290
  }
282
291
  glw.enableVertexAttribArray(i);
@@ -298,7 +307,10 @@ export class WebGlShaderProgram implements CoreShaderProgram {
298
307
  }
299
308
 
300
309
  attach(): void {
301
- this.glw.useProgram(this.program);
310
+ if (this.isDestroyed === true) {
311
+ return;
312
+ }
313
+ this.glw.useProgram(this.program, this.uniformLocations!);
302
314
  if (this.glw.isWebGl2() && this.vao) {
303
315
  this.glw.bindVertexArray(this.vao);
304
316
  }
@@ -307,4 +319,23 @@ export class WebGlShaderProgram implements CoreShaderProgram {
307
319
  detach(): void {
308
320
  this.disableAttributes();
309
321
  }
322
+
323
+ destroy() {
324
+ if (this.isDestroyed === true) {
325
+ return;
326
+ }
327
+ const glw = this.glw;
328
+
329
+ this.detach();
330
+
331
+ glw.deleteProgram(this.program!);
332
+ this.program = null;
333
+ this.uniformLocations = null;
334
+
335
+ const attribs = Object.keys(this.attributeLocations);
336
+ const attribLen = attribs.length;
337
+ for (let i = 0; i < attribLen; i++) {
338
+ this.glw.deleteBuffer(attribs[i]!);
339
+ }
340
+ }
310
341
  }
@@ -15,12 +15,9 @@
15
15
  * SPDX-License-Identifier: Apache-2.0
16
16
  */
17
17
 
18
+ import { formatRgba, parseColorRgba } from '../../lib/colorParser.js';
18
19
  import { valuesAreEqual } from '../../lib/utils.js';
19
20
  import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
20
- import {
21
- formatRgba,
22
- parseColorRgba,
23
- } from '../../renderers/canvas/internal/ColorUtils.js';
24
21
  import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
25
22
  import {
26
23
  BorderTemplate,
@@ -53,15 +53,17 @@ export const LinearGradient: CanvasShaderType<
53
53
  },
54
54
  render(ctx, quad, renderContext) {
55
55
  renderContext();
56
+ const computed = this.computed as ComputedLinearGradientValues;
56
57
  const gradient = ctx.createLinearGradient(
57
- quad.tx + this.computed.x0!,
58
- quad.ty + this.computed.y0!,
59
- quad.tx + this.computed.x1!,
60
- quad.ty + this.computed.y1!,
58
+ quad.tx + computed.x0,
59
+ quad.ty + computed.y0,
60
+ quad.tx + computed.x1,
61
+ quad.ty + computed.y1,
61
62
  );
62
- const colors = this.computed.colors!;
63
+ const colors = computed.colors;
64
+ const stops = this.props!.stops;
63
65
  for (let i = 0; i < colors.length; i++) {
64
- gradient.addColorStop(this.props!['stops'][i]!, colors[i]!);
66
+ gradient.addColorStop(stops[i]!, colors[i]!);
65
67
  }
66
68
  ctx.fillStyle = gradient;
67
69
  ctx.fillRect(quad.tx, quad.ty, quad.width, quad.height);
@@ -38,9 +38,9 @@ export const RadialGradient: CanvasShaderType<
38
38
  update(node) {
39
39
  let scaleX = 1;
40
40
  let scaleY = 1;
41
-
42
- const pWidth = this.props!.width;
43
- const pHeight = this.props!.height;
41
+ const props = this.props as RadialGradientProps;
42
+ const pWidth = props.width;
43
+ const pHeight = props.height;
44
44
  if (pWidth > pHeight) {
45
45
  scaleX = pWidth / pHeight;
46
46
  } else if (pHeight > pWidth) {
@@ -48,34 +48,27 @@ export const RadialGradient: CanvasShaderType<
48
48
  }
49
49
 
50
50
  this.computed = {
51
- pivotX: this.props!.pivot[0] * node.width,
52
- pivotY: this.props!.pivot[1] * node.height,
51
+ pivotX: props.pivot[0] * node.width,
52
+ pivotY: props.pivot[1] * node.height,
53
53
  scaleX,
54
54
  scaleY,
55
55
  size: Math.min(pWidth, pHeight) * 0.5,
56
- colors: this.props!.colors.map((value) => this.toColorString(value)),
56
+ colors: props.colors.map((value) => this.toColorString(value)),
57
57
  };
58
58
  },
59
59
  render(ctx, quad, renderContext) {
60
60
  renderContext();
61
-
62
- const { scaleX, scaleY, pivotX, pivotY } = this.computed!;
63
- const colors = this.computed.colors!;
64
- let x = quad.tx + pivotX!;
65
- let y = quad.ty + pivotY!;
61
+ const { scaleX, scaleY, pivotX, pivotY, colors, size } = this
62
+ .computed as ComputedRadialGradientValues;
63
+ let x = quad.tx + pivotX;
64
+ let y = quad.ty + pivotY;
65
+ const stops = this.props!.stops;
66
66
 
67
67
  if (scaleX === scaleY) {
68
- const gradient = ctx.createRadialGradient(
69
- x,
70
- y,
71
- 0,
72
- x,
73
- y,
74
- this.computed.size!,
75
- );
68
+ const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
76
69
 
77
70
  for (let i = 0; i < colors.length; i++) {
78
- gradient.addColorStop(this.props!['stops'][i]!, colors[i]!);
71
+ gradient.addColorStop(stops[i]!, colors[i]!);
79
72
  }
80
73
 
81
74
  ctx.fillStyle = gradient;
@@ -84,28 +77,21 @@ export const RadialGradient: CanvasShaderType<
84
77
  }
85
78
 
86
79
  ctx.save();
87
- ctx.scale(scaleX!, scaleY!);
88
- x = x / scaleX!;
89
- y = y / scaleY!;
90
- const gradient = ctx.createRadialGradient(
91
- x,
92
- y,
93
- 0,
94
- x,
95
- y,
96
- this.computed.size!,
97
- );
80
+ ctx.scale(scaleX, scaleY);
81
+ x = x / scaleX;
82
+ y = y / scaleY;
83
+ const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
98
84
 
99
85
  for (let i = 0; i < colors.length; i++) {
100
- gradient.addColorStop(this.props!['stops'][i]!, colors[i]!);
86
+ gradient.addColorStop(stops[i]!, colors[i]!);
101
87
  }
102
88
 
103
89
  ctx.fillStyle = gradient;
104
90
  ctx.fillRect(
105
- quad.tx / scaleX!,
106
- quad.ty / scaleY!,
107
- quad.width / scaleX!,
108
- quad.height / scaleY!,
91
+ quad.tx / scaleX,
92
+ quad.ty / scaleY,
93
+ quad.width / scaleX,
94
+ quad.height / scaleY,
109
95
  );
110
96
 
111
97
  ctx.restore();
@@ -35,33 +35,39 @@ export const RoundedWithBorder: CanvasShaderType<
35
35
  props: RoundedWithBorderTemplate.props,
36
36
  saveAndRestore: true,
37
37
  update(node) {
38
+ const props = this.props!;
38
39
  const radius = calcFactoredRadiusArray(
39
- this.props!.radius as Vec4,
40
+ props.radius as Vec4,
40
41
  node.width,
41
42
  node.height,
42
43
  );
43
44
  this.computed.radius = radius;
44
- this.computed.borderColor = this.toColorString(this.props!['border-color']);
45
+ this.computed.borderColor = this.toColorString(props['border-color']);
45
46
  this.computed.borderAsym = !valuesAreEqual(
46
- this.props!['border-width'] as number[],
47
+ props['border-width'] as number[],
47
48
  );
48
- const borderWidth = this.props!['border-width'] as Vec4;
49
- this.computed.borderRadius = radius.map((value, index) =>
50
- Math.max(0, value - borderWidth[index]! * 0.5),
51
- ) as Vec4;
49
+ //following vec4 convention 0, 1, 2, 3 => x, y, z, w;
50
+ const [x, y, z, w] = props['border-width'] as Vec4;
51
+ this.computed.borderRadius = [
52
+ Math.max(0.0, radius[0] - Math.max(x, w) * 0.5),
53
+ Math.max(0.0, radius[1] - Math.max(x, y) * 0.5),
54
+ Math.max(0.0, radius[2] - Math.max(z, y) * 0.5),
55
+ Math.max(0.0, radius[3] - Math.max(z, w) * 0.5),
56
+ ];
52
57
  },
53
58
  render(ctx, quad, renderContext) {
59
+ const computed = this.computed as ComputedValues;
54
60
  roundedRectWithBorder(
55
61
  ctx,
56
62
  quad.tx,
57
63
  quad.ty,
58
64
  quad.width,
59
65
  quad.height,
60
- this.computed.radius!,
66
+ computed.radius,
61
67
  this.props!['border-width'] as Vec4,
62
- this.computed.borderRadius!,
63
- this.computed.borderColor!,
64
- this.computed.borderAsym!,
68
+ computed.borderRadius,
69
+ computed.borderColor,
70
+ computed.borderAsym,
65
71
  renderContext,
66
72
  );
67
73
  },
@@ -38,37 +38,39 @@ export const RoundedWithBorderAndShadow: CanvasShaderType<
38
38
  props: RoundedWithBorderAndShadowTemplate.props,
39
39
  saveAndRestore: true,
40
40
  update(node) {
41
+ const props = this.props!;
41
42
  const radius = calcFactoredRadiusArray(
42
- this.props!.radius as Vec4,
43
+ props.radius as Vec4,
43
44
  node.width,
44
45
  node.height,
45
46
  );
46
47
  this.computed.radius = radius;
47
- this.computed.borderColor = this.toColorString(this.props!['border-color']);
48
+ this.computed.borderColor = this.toColorString(props['border-color']);
48
49
  this.computed.borderAsym = !valuesAreEqual(
49
- this.props!['border-width'] as number[],
50
+ props['border-width'] as number[],
50
51
  );
51
- const borderWidth = this.props!['border-width'] as Vec4;
52
+ const borderWidth = props['border-width'] as Vec4;
52
53
  this.computed.borderRadius = radius.map((value, index) =>
53
54
  Math.max(0, value - borderWidth[index]! * 0.5),
54
55
  ) as Vec4;
55
56
 
56
- this.computed.shadowColor = this.toColorString(this.props!['shadow-color']);
57
+ this.computed.shadowColor = this.toColorString(props['shadow-color']);
57
58
  this.computed.shadowRadius = radius.map(
58
- (value) => value + this.props!['shadow-blur'],
59
+ (value) => value + props['shadow-blur'],
59
60
  ) as Vec4;
60
61
  },
61
62
  render(ctx, quad, renderContext) {
62
63
  const { tx, ty, width, height } = quad;
64
+ const computed = this.computed as ComputedValues;
63
65
  render.shadow(
64
66
  ctx,
65
67
  tx,
66
68
  ty,
67
69
  height,
68
70
  width,
69
- this.computed.shadowColor!,
71
+ computed.shadowColor,
70
72
  this.props!['shadow-projection'],
71
- this.computed.shadowRadius!,
73
+ computed.shadowRadius,
72
74
  this.stage.pixelRatio,
73
75
  );
74
76
  render.roundedRectWithBorder(
@@ -77,11 +79,11 @@ export const RoundedWithBorderAndShadow: CanvasShaderType<
77
79
  quad.ty,
78
80
  quad.width,
79
81
  quad.height,
80
- this.computed.radius!,
82
+ computed.radius,
81
83
  this.props!['border-width'] as Vec4,
82
- this.computed.borderRadius!,
83
- this.computed.borderColor!,
84
- this.computed.borderAsym!,
84
+ computed.borderRadius,
85
+ computed.borderColor,
86
+ computed.borderAsym,
85
87
  renderContext,
86
88
  );
87
89
  },
@@ -35,34 +35,35 @@ export const RoundedWithShadow: CanvasShaderType<
35
35
  props: RoundedWithShadowTemplate.props,
36
36
  saveAndRestore: true,
37
37
  update(node) {
38
+ const props = this.props!;
38
39
  const radius = calcFactoredRadiusArray(
39
- this.props!.radius as Vec4,
40
+ props.radius as Vec4,
40
41
  node.width,
41
42
  node.height,
42
43
  );
43
44
  this.computed.radius = radius;
44
- this.computed.shadowColor = this.toColorString(this.props!['shadow-color']);
45
+ this.computed.shadowColor = this.toColorString(props['shadow-color']);
45
46
  this.computed.shadowRadius = radius.map(
46
- (value) => value + this.props!['shadow-blur'],
47
+ (value) => value + props['shadow-blur'],
47
48
  ) as Vec4;
48
49
  },
49
50
  render(ctx, quad, renderContext) {
50
51
  const { tx, ty, width, height } = quad;
51
-
52
+ const computed = this.computed as ComputedValues;
52
53
  render.shadow(
53
54
  ctx,
54
55
  tx,
55
56
  ty,
56
57
  width,
57
58
  height,
58
- this.computed.shadowColor!,
59
+ computed.shadowColor,
59
60
  this.props!['shadow-projection'],
60
- this.computed.shadowRadius!,
61
+ computed.shadowRadius,
61
62
  this.stage.pixelRatio,
62
63
  );
63
64
 
64
65
  const path = new Path2D();
65
- render.roundRect(path, tx, ty, width, height, this.computed.radius!);
66
+ render.roundRect(path, tx, ty, width, height, computed.radius);
66
67
  ctx.clip(path);
67
68
  renderContext();
68
69
  },
@@ -17,7 +17,7 @@
17
17
 
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
19
  import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
20
- import { validateArrayLength4, type PrefixedType } from './shaderUtils.js';
20
+ import { validateArrayLength4, type PrefixedType } from '../utils.js';
21
21
 
22
22
  /**
23
23
  * Properties of the {@link Border} shader
@@ -16,7 +16,7 @@
16
16
  */
17
17
 
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
- import { validateArrayLength4 } from './shaderUtils.js';
19
+ import { validateArrayLength4 } from '../utils.js';
20
20
 
21
21
  /**
22
22
  * Properties of the {@link HolePunch} shader
@@ -17,7 +17,7 @@
17
17
 
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
19
  import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
20
- import { validateArrayLength4 } from './shaderUtils.js';
20
+ import { validateArrayLength4 } from '../utils.js';
21
21
 
22
22
  /**
23
23
  * Properties of the {@link RoundedRectangle} shader
@@ -18,7 +18,7 @@
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
19
  import { getBorderProps, type BorderProps } from './BorderTemplate.js';
20
20
  import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
21
- import type { PrefixedType } from './shaderUtils.js';
21
+ import type { PrefixedType } from '../utils.js';
22
22
  import { getShadowProps, type ShadowProps } from './ShadowTemplate.js';
23
23
 
24
24
  export type RoundedWithBorderAndShadowProps = RoundedProps &
@@ -18,7 +18,7 @@
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
19
  import { getBorderProps, type BorderProps } from './BorderTemplate.js';
20
20
  import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
21
- import type { PrefixedType } from './shaderUtils.js';
21
+ import type { PrefixedType } from '../utils.js';
22
22
 
23
23
  export type RoundedWithBorderProps = RoundedProps &
24
24
  PrefixedType<BorderProps, 'border'>;
@@ -17,7 +17,7 @@
17
17
 
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
19
  import { RoundedTemplate, type RoundedProps } from './RoundedTemplate.js';
20
- import type { PrefixedType } from './shaderUtils.js';
20
+ import type { PrefixedType } from '../utils.js';
21
21
  import { getShadowProps, type ShadowProps } from './ShadowTemplate.js';
22
22
 
23
23
  export type RoundedWithShadowProps = RoundedProps &
@@ -16,7 +16,7 @@
16
16
  */
17
17
 
18
18
  import type { CoreShaderType } from '../../renderers/CoreShaderNode.js';
19
- import type { PrefixedType } from './shaderUtils.js';
19
+ import type { PrefixedType } from '../utils.js';
20
20
 
21
21
  export interface ShadowProps {
22
22
  /**
@@ -14,9 +14,8 @@
14
14
  *
15
15
  * SPDX-License-Identifier: Apache-2.0
16
16
  */
17
-
18
- import { assertTruthy } from '../../../utils.js';
19
- import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
17
+ import { assertTruthy } from '../../utils.js';
18
+ import type { Vec4 } from '../renderers/webgl/internal/ShaderUtils.js';
20
19
 
21
20
  export const validateArrayLength4 = (value: number | number[]): Vec4 => {
22
21
  if (!Array.isArray(value)) {