@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta21

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 (587) hide show
  1. package/README.md +16 -26
  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 +2 -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/common/CommonTypes.d.ts +13 -2
  15. package/dist/src/core/Autosizer.d.ts +35 -0
  16. package/dist/src/core/Autosizer.js +196 -0
  17. package/dist/src/core/Autosizer.js.map +1 -0
  18. package/dist/src/core/CoreNode.d.ts +124 -100
  19. package/dist/src/core/CoreNode.js +720 -472
  20. package/dist/src/core/CoreNode.js.map +1 -1
  21. package/dist/src/core/CoreShaderManager.d.ts +3 -5
  22. package/dist/src/core/CoreShaderManager.js.map +1 -1
  23. package/dist/src/core/CoreTextNode.d.ts +74 -87
  24. package/dist/src/core/CoreTextNode.js +355 -232
  25. package/dist/src/core/CoreTextNode.js.map +1 -1
  26. package/dist/src/core/CoreTextureManager.d.ts +25 -13
  27. package/dist/src/core/CoreTextureManager.js +80 -104
  28. package/dist/src/core/CoreTextureManager.js.map +1 -1
  29. package/dist/src/core/Stage.d.ts +93 -33
  30. package/dist/src/core/Stage.js +315 -151
  31. package/dist/src/core/Stage.js.map +1 -1
  32. package/dist/src/core/TextureError.d.ts +11 -0
  33. package/dist/src/core/TextureError.js +37 -0
  34. package/dist/src/core/TextureError.js.map +1 -0
  35. package/dist/src/core/TextureMemoryManager.d.ts +11 -4
  36. package/dist/src/core/TextureMemoryManager.js +128 -109
  37. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  38. package/dist/src/core/animations/Animation.d.ts +21 -0
  39. package/dist/src/core/animations/Animation.js +194 -0
  40. package/dist/src/core/animations/Animation.js.map +1 -0
  41. package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
  42. package/dist/src/core/animations/CoreAnimation.js +8 -3
  43. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  44. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  45. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  46. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  47. package/dist/src/core/animations/Playback.d.ts +64 -0
  48. package/dist/src/core/animations/Playback.js +169 -0
  49. package/dist/src/core/animations/Playback.js.map +1 -0
  50. package/dist/src/core/animations/Transition.d.ts +27 -0
  51. package/dist/src/core/animations/Transition.js +52 -0
  52. package/dist/src/core/animations/Transition.js.map +1 -0
  53. package/dist/src/core/animations/utils.d.ts +2 -0
  54. package/dist/src/core/animations/utils.js +136 -0
  55. package/dist/src/core/animations/utils.js.map +1 -0
  56. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  57. package/dist/src/core/lib/ImageWorker.js +31 -12
  58. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  59. package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
  60. package/dist/src/core/lib/WebGlContextWrapper.js +105 -28
  61. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  62. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  63. package/dist/src/core/lib/collectionUtils.js +100 -0
  64. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  65. package/dist/src/core/lib/colorCache.d.ts +1 -0
  66. package/dist/src/core/lib/colorCache.js +19 -0
  67. package/dist/src/core/lib/colorCache.js.map +1 -0
  68. package/dist/src/core/lib/colorParser.d.ts +21 -0
  69. package/dist/src/core/lib/colorParser.js +72 -0
  70. package/dist/src/core/lib/colorParser.js.map +1 -0
  71. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  72. package/dist/src/core/lib/textureCompression.js +320 -67
  73. package/dist/src/core/lib/textureCompression.js.map +1 -1
  74. package/dist/src/core/lib/utils.d.ts +8 -2
  75. package/dist/src/core/lib/utils.js +43 -21
  76. package/dist/src/core/lib/utils.js.map +1 -1
  77. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  78. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  79. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  80. package/dist/src/core/platform.js +30 -5
  81. package/dist/src/core/platform.js.map +1 -1
  82. package/dist/src/core/platforms/Platform.d.ts +42 -0
  83. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  84. package/dist/src/core/platforms/Platform.js.map +1 -0
  85. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  86. package/dist/src/core/platforms/web/WebPlatform.js +87 -0
  87. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  88. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  89. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  90. package/dist/src/core/renderers/CoreRenderer.d.ts +5 -30
  91. package/dist/src/core/renderers/CoreRenderer.js +1 -0
  92. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  93. package/dist/src/core/renderers/CoreShaderNode.d.ts +12 -1
  94. package/dist/src/core/renderers/CoreShaderNode.js +26 -0
  95. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  96. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
  97. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
  98. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  99. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
  100. package/dist/src/core/renderers/canvas/CanvasRenderer.js +65 -87
  101. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  102. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
  103. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  104. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  105. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  106. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  107. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  108. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  109. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  110. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  111. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  112. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  113. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  114. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  115. package/dist/src/core/renderers/webgl/SdfRenderOp.js +97 -0
  116. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  117. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  118. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  119. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
  120. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +87 -42
  121. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  122. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  123. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
  124. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  125. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
  126. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
  127. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  128. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  129. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  130. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  131. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  132. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  133. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  134. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  135. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -52
  136. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  137. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
  138. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +11 -4
  139. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  140. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -21
  141. package/dist/src/core/renderers/webgl/WebGlRenderer.js +168 -152
  142. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  143. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
  144. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  145. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  146. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
  147. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +83 -43
  148. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  149. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
  150. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  151. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
  152. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  153. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
  154. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  155. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
  156. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  157. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
  158. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  159. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  160. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  161. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  162. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  163. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  164. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  165. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
  166. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  167. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
  168. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
  169. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  170. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  171. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  172. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  173. package/dist/src/core/shaders/canvas/Border.js +64 -25
  174. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  175. package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
  176. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  177. package/dist/src/core/shaders/canvas/LinearGradient.js +11 -7
  178. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  179. package/dist/src/core/shaders/canvas/RadialGradient.js +21 -17
  180. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  181. package/dist/src/core/shaders/canvas/Rounded.js +3 -3
  182. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  183. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  184. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +45 -7
  185. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  186. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  187. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +50 -11
  188. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  189. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +10 -7
  190. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  191. package/dist/src/core/shaders/canvas/Shadow.js +4 -2
  192. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  193. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  194. package/dist/src/core/shaders/canvas/utils/render.js +31 -18
  195. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  196. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
  197. package/dist/src/core/shaders/templates/BorderTemplate.js +31 -11
  198. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  199. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  200. package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -3
  201. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  202. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  203. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  204. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  205. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  206. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  207. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  208. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  209. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  210. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  211. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  212. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  213. package/dist/src/core/shaders/utils.js.map +1 -0
  214. package/dist/src/core/shaders/webgl/Border.js +116 -35
  215. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  216. package/dist/src/core/shaders/webgl/Default.js +6 -7
  217. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  218. package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
  219. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  220. package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
  221. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  222. package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
  223. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  224. package/dist/src/core/shaders/webgl/Rounded.js +4 -2
  225. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  226. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +153 -39
  227. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  228. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +158 -43
  229. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  230. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +6 -4
  231. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  232. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  233. package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
  234. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  235. package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
  236. package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
  237. package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
  238. package/dist/src/core/shaders/webgl/Shadow.js +12 -6
  239. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  240. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  241. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  242. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  243. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  244. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  245. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  246. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  247. package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
  248. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  249. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  250. package/dist/src/core/text-rendering/SdfTextRenderer.js +303 -0
  251. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  252. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  253. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  254. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  255. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  256. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  257. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  258. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  259. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  260. package/dist/src/core/text-rendering/Utils.js +84 -0
  261. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  262. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  263. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  264. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
  265. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  266. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  267. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
  268. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  269. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
  270. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  271. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  272. package/dist/src/core/textures/ColorTexture.js +3 -4
  273. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  274. package/dist/src/core/textures/ImageTexture.d.ts +11 -4
  275. package/dist/src/core/textures/ImageTexture.js +31 -40
  276. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  277. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  278. package/dist/src/core/textures/NoiseTexture.js +8 -8
  279. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  280. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  281. package/dist/src/core/textures/RenderTexture.js +12 -12
  282. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  283. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  284. package/dist/src/core/textures/SubTexture.js +19 -37
  285. package/dist/src/core/textures/SubTexture.js.map +1 -1
  286. package/dist/src/core/textures/Texture.d.ts +87 -10
  287. package/dist/src/core/textures/Texture.js +160 -17
  288. package/dist/src/core/textures/Texture.js.map +1 -1
  289. package/dist/src/core/utils.d.ts +2 -1
  290. package/dist/src/core/utils.js +1 -1
  291. package/dist/src/core/utils.js.map +1 -1
  292. package/dist/src/main-api/INode.d.ts +2 -2
  293. package/dist/src/main-api/Inspector.d.ts +131 -2
  294. package/dist/src/main-api/Inspector.js +345 -28
  295. package/dist/src/main-api/Inspector.js.map +1 -1
  296. package/dist/src/main-api/Renderer.d.ts +295 -82
  297. package/dist/src/main-api/Renderer.js +223 -76
  298. package/dist/src/main-api/Renderer.js.map +1 -1
  299. package/dist/src/utils.d.ts +1 -6
  300. package/dist/src/utils.js +2 -9
  301. package/dist/src/utils.js.map +1 -1
  302. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  303. package/dist/tsconfig.tsbuildinfo +1 -0
  304. package/exports/canvas.ts +1 -1
  305. package/exports/index.ts +2 -8
  306. package/exports/utils.ts +7 -1
  307. package/exports/webgl.ts +3 -1
  308. package/package.json +15 -17
  309. package/src/common/CommonTypes.ts +18 -2
  310. package/src/core/Autosizer.ts +224 -0
  311. package/src/core/CoreNode.test.ts +179 -17
  312. package/src/core/CoreNode.ts +895 -599
  313. package/src/core/CoreShaderManager.ts +5 -10
  314. package/src/core/CoreTextNode.ts +422 -286
  315. package/src/core/CoreTextureManager.ts +110 -130
  316. package/src/core/Stage.ts +397 -195
  317. package/src/core/TextureError.ts +46 -0
  318. package/src/core/TextureMemoryManager.ts +164 -141
  319. package/src/core/animations/CoreAnimation.ts +15 -9
  320. package/src/core/animations/CoreAnimationController.ts +13 -4
  321. package/src/core/lib/ImageWorker.ts +43 -12
  322. package/src/core/lib/WebGlContextWrapper.ts +127 -79
  323. package/src/core/lib/collectionUtils.ts +118 -0
  324. package/src/core/lib/colorCache.ts +20 -0
  325. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
  326. package/src/core/lib/textureCompression.ts +433 -75
  327. package/src/core/lib/utils.ts +54 -25
  328. package/src/core/lib/validateImageBitmap.ts +17 -6
  329. package/src/core/platforms/Platform.ts +83 -0
  330. package/src/core/platforms/web/WebPlatform.ts +132 -0
  331. package/src/core/renderers/CoreContextTexture.ts +2 -1
  332. package/src/core/renderers/CoreRenderer.ts +5 -32
  333. package/src/core/renderers/CoreShaderNode.ts +38 -3
  334. package/src/core/renderers/canvas/CanvasRenderer.ts +84 -126
  335. package/src/core/renderers/canvas/CanvasShaderNode.ts +4 -8
  336. package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
  337. package/src/core/renderers/webgl/SdfRenderOp.ts +105 -0
  338. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
  339. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
  340. package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -84
  341. package/src/core/renderers/webgl/WebGlRenderer.ts +203 -190
  342. package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -11
  343. package/src/core/renderers/webgl/WebGlShaderProgram.ts +101 -53
  344. package/src/core/shaders/canvas/Border.ts +88 -34
  345. package/src/core/shaders/canvas/HolePunch.ts +5 -11
  346. package/src/core/shaders/canvas/LinearGradient.ts +14 -10
  347. package/src/core/shaders/canvas/RadialGradient.ts +24 -41
  348. package/src/core/shaders/canvas/Rounded.ts +7 -7
  349. package/src/core/shaders/canvas/RoundedWithBorder.ts +77 -23
  350. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +84 -36
  351. package/src/core/shaders/canvas/RoundedWithShadow.ts +15 -13
  352. package/src/core/shaders/canvas/Shadow.ts +7 -5
  353. package/src/core/shaders/canvas/utils/render.ts +45 -36
  354. package/src/core/shaders/templates/BorderTemplate.ts +42 -12
  355. package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
  356. package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
  357. package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
  358. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
  359. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
  360. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
  361. package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
  362. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
  363. package/src/core/shaders/webgl/Border.ts +116 -39
  364. package/src/core/shaders/webgl/Default.ts +6 -7
  365. package/src/core/shaders/webgl/HolePunch.ts +4 -7
  366. package/src/core/shaders/webgl/LinearGradient.ts +33 -8
  367. package/src/core/shaders/webgl/RadialGradient.ts +58 -34
  368. package/src/core/shaders/webgl/Rounded.ts +4 -6
  369. package/src/core/shaders/webgl/RoundedWithBorder.ts +154 -46
  370. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +159 -52
  371. package/src/core/shaders/webgl/RoundedWithShadow.ts +6 -8
  372. package/src/core/shaders/webgl/SdfShader.ts +7 -19
  373. package/src/core/shaders/webgl/Shadow.ts +12 -6
  374. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  375. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  376. package/src/core/text-rendering/SdfFontHandler.ts +591 -0
  377. package/src/core/text-rendering/SdfTextRenderer.ts +408 -0
  378. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  379. package/src/core/text-rendering/TextRenderer.ts +444 -0
  380. package/src/core/text-rendering/Utils.ts +99 -0
  381. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  382. package/src/core/textures/ColorTexture.ts +7 -5
  383. package/src/core/textures/ImageTexture.ts +78 -66
  384. package/src/core/textures/NoiseTexture.ts +14 -12
  385. package/src/core/textures/RenderTexture.ts +18 -16
  386. package/src/core/textures/SubTexture.ts +25 -46
  387. package/src/core/textures/Texture.ts +207 -24
  388. package/src/core/utils.ts +9 -7
  389. package/src/main-api/INode.ts +4 -3
  390. package/src/main-api/Inspector.ts +577 -36
  391. package/src/main-api/Renderer.ts +518 -139
  392. package/src/utils.ts +10 -10
  393. package/dist/exports/core-api.d.ts +0 -74
  394. package/dist/exports/core-api.js +0 -96
  395. package/dist/exports/core-api.js.map +0 -1
  396. package/dist/exports/main-api.d.ts +0 -30
  397. package/dist/exports/main-api.js +0 -45
  398. package/dist/exports/main-api.js.map +0 -1
  399. package/dist/src/core/CoreExtension.d.ts +0 -12
  400. package/dist/src/core/CoreExtension.js +0 -29
  401. package/dist/src/core/CoreExtension.js.map +0 -1
  402. package/dist/src/core/CoreStuff.d.ts +0 -1
  403. package/dist/src/core/CoreStuff.js +0 -138
  404. package/dist/src/core/CoreStuff.js.map +0 -1
  405. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  406. package/dist/src/core/CoreTexturizer.js +0 -47
  407. package/dist/src/core/CoreTexturizer.js.map +0 -1
  408. package/dist/src/core/LngNode.d.ts +0 -736
  409. package/dist/src/core/LngNode.js +0 -1174
  410. package/dist/src/core/LngNode.js.map +0 -1
  411. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  412. package/dist/src/core/Matrix2DContext.js +0 -45
  413. package/dist/src/core/Matrix2DContext.js.map +0 -1
  414. package/dist/src/core/ShaderNode.d.ts +0 -10
  415. package/dist/src/core/ShaderNode.js +0 -30
  416. package/dist/src/core/ShaderNode.js.map +0 -1
  417. package/dist/src/core/TextNode.d.ts +0 -103
  418. package/dist/src/core/TextNode.js +0 -331
  419. package/dist/src/core/TextNode.js.map +0 -1
  420. package/dist/src/core/lib/Coords.d.ts +0 -14
  421. package/dist/src/core/lib/Coords.js +0 -55
  422. package/dist/src/core/lib/Coords.js.map +0 -1
  423. package/dist/src/core/lib/glm/common.d.ts +0 -162
  424. package/dist/src/core/lib/glm/common.js +0 -81
  425. package/dist/src/core/lib/glm/common.js.map +0 -1
  426. package/dist/src/core/lib/glm/index.d.ts +0 -11
  427. package/dist/src/core/lib/glm/index.js +0 -30
  428. package/dist/src/core/lib/glm/index.js.map +0 -1
  429. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  430. package/dist/src/core/lib/glm/mat2.js +0 -396
  431. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  432. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  433. package/dist/src/core/lib/glm/mat2d.js +0 -442
  434. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  435. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  436. package/dist/src/core/lib/glm/mat3.js +0 -680
  437. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  438. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  439. package/dist/src/core/lib/glm/mat4.js +0 -1802
  440. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  441. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  442. package/dist/src/core/lib/glm/quat.js +0 -693
  443. package/dist/src/core/lib/glm/quat.js.map +0 -1
  444. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  445. package/dist/src/core/lib/glm/quat2.js +0 -754
  446. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  447. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  448. package/dist/src/core/lib/glm/vec2.js +0 -569
  449. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  450. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  451. package/dist/src/core/lib/glm/vec3.js +0 -720
  452. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  453. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  454. package/dist/src/core/lib/glm/vec4.js +0 -608
  455. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  456. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  457. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  458. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  459. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  460. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  461. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  462. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  463. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  464. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  465. package/dist/src/core/scene/Scene.d.ts +0 -59
  466. package/dist/src/core/scene/Scene.js +0 -106
  467. package/dist/src/core/scene/Scene.js.map +0 -1
  468. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  469. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  470. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  471. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  472. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  473. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  474. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  475. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  476. package/dist/src/main-api/IShaderController.d.ts +0 -14
  477. package/dist/src/main-api/IShaderController.js +0 -30
  478. package/dist/src/main-api/IShaderController.js.map +0 -1
  479. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  480. package/dist/src/main-api/IShaderNode.js +0 -19
  481. package/dist/src/main-api/IShaderNode.js.map +0 -1
  482. package/dist/src/main-api/RendererMain.d.ts +0 -375
  483. package/dist/src/main-api/RendererMain.js +0 -365
  484. package/dist/src/main-api/RendererMain.js.map +0 -1
  485. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  486. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  487. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  488. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  489. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  490. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  491. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  492. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  493. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  494. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  495. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  496. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  497. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  498. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  499. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  500. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  501. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  502. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  503. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  504. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  505. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  506. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  507. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  508. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  509. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  510. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  511. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  512. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  513. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  514. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  515. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  516. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  517. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  518. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  519. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  520. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  521. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  522. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  523. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  524. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  525. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  526. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  527. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  528. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  529. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  530. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  531. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  532. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  533. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  534. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  535. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  536. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  537. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  538. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  539. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  540. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  541. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  542. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  543. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  544. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  545. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  546. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  547. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  548. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  549. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  550. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  551. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  552. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  553. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  554. package/dist/src/render-drivers/utils.d.ts +0 -12
  555. package/dist/src/render-drivers/utils.js +0 -69
  556. package/dist/src/render-drivers/utils.js.map +0 -1
  557. package/scripts/please-use-pnpm.js +0 -13
  558. package/src/core/platform.ts +0 -64
  559. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  560. package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
  561. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  562. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  563. package/src/core/text-rendering/TrFontManager.ts +0 -183
  564. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  565. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  566. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  567. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  568. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  569. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  570. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  571. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  572. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  573. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -840
  574. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  575. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  576. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  577. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  578. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  579. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  580. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  581. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  582. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  583. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  584. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  585. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  586. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  587. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
@@ -18,12 +18,11 @@
18
18
  */
19
19
  import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
20
20
  import { Default } from '../../shaders/webgl/Default.js';
21
- import type { QuadOptions } from '../CoreRenderer.js';
22
21
  import type { CoreShaderProgram } from '../CoreShaderProgram.js';
23
22
  import type { WebGlCtxTexture } from './WebGlCtxTexture.js';
24
- import type { WebGlRenderOp } from './WebGlRenderOp.js';
25
- import type { WebGlRenderer } from './WebGlRenderer.js';
23
+ import type { WebGlRenderer, WebGlRenderOp } from './WebGlRenderer.js';
26
24
  import type { WebGlShaderType } from './WebGlShaderNode.js';
25
+ import { WebGlShaderNode } from './WebGlShaderNode.js';
27
26
  import type { BufferCollection } from './internal/BufferCollection.js';
28
27
  import {
29
28
  createProgram,
@@ -33,10 +32,10 @@ import {
33
32
  type UniformSet3Params,
34
33
  type UniformSet4Params,
35
34
  } from './internal/ShaderUtils.js';
35
+ import { CoreNode } from '../../CoreNode.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
  *
@@ -46,10 +45,13 @@ export class WebGlShaderProgram implements CoreShaderProgram {
46
45
  protected vao: WebGLVertexArrayObject | undefined;
47
46
  protected renderer: WebGlRenderer;
48
47
  protected glw: WebGlContextWrapper;
49
- protected attributeLocations: Record<string, number>;
48
+ protected attributeLocations: string[];
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
+ protected useTimeValue = false;
54
+ public isDestroyed = false;
53
55
  supportsIndexedTextures = false;
54
56
 
55
57
  constructor(
@@ -117,10 +119,14 @@ export class WebGlShaderProgram implements CoreShaderProgram {
117
119
  this.program = program;
118
120
  this.attributeLocations = glw.getAttributeLocations(program);
119
121
 
120
- this.useSystemAlpha =
121
- this.glw.getUniformLocation(program, 'u_alpha') !== null;
122
- this.useSystemDimensions =
123
- this.glw.getUniformLocation(program, 'u_dimensions') !== null;
122
+ const uniLocs = (this.uniformLocations = glw.getUniformLocations(program));
123
+
124
+ this.useSystemAlpha = uniLocs['u_alpha'] !== undefined;
125
+ this.useSystemDimensions = uniLocs['u_dimensions'] !== undefined;
126
+
127
+ this.useTimeValue =
128
+ this.glw.getUniformLocation(program, 'u_dimensions') !== null &&
129
+ config.time !== undefined;
124
130
 
125
131
  this.lifecycle = {
126
132
  update: config.update,
@@ -133,44 +139,50 @@ export class WebGlShaderProgram implements CoreShaderProgram {
133
139
  }
134
140
 
135
141
  disableAttributes() {
136
- const { glw } = this;
137
- const attribs = Object.keys(this.attributeLocations);
138
- const attribLen = attribs.length;
142
+ const glw = this.glw;
143
+ const attribLen = this.attributeLocations.length;
139
144
  for (let i = 0; i < attribLen; i++) {
140
145
  glw.disableVertexAttribArray(i);
141
146
  }
142
147
  }
143
148
 
144
- reuseRenderOp(
145
- incomingQuad: QuadOptions,
146
- currentRenderOp: WebGlRenderOp,
147
- ): boolean {
149
+ reuseRenderOp(node: CoreNode, currentRenderOp: WebGlRenderOp): boolean {
148
150
  if (this.lifecycle.canBatch !== undefined) {
149
- return this.lifecycle.canBatch(incomingQuad, currentRenderOp);
151
+ return this.lifecycle.canBatch(node, currentRenderOp);
152
+ }
153
+
154
+ const { time, worldAlpha, w, h } = node;
155
+
156
+ if (this.useTimeValue === true) {
157
+ if (time !== currentRenderOp.time) {
158
+ return false;
159
+ }
150
160
  }
151
161
 
152
162
  if (this.useSystemAlpha === true) {
153
- if (incomingQuad.alpha !== currentRenderOp.alpha) {
163
+ if (worldAlpha !== currentRenderOp.worldAlpha) {
154
164
  return false;
155
165
  }
156
166
  }
157
167
 
158
168
  if (this.useSystemDimensions === true) {
159
- if (
160
- incomingQuad.width !== currentRenderOp.width ||
161
- incomingQuad.height !== currentRenderOp.height
162
- ) {
169
+ if (w !== currentRenderOp.w || h !== currentRenderOp.h) {
163
170
  return false;
164
171
  }
165
172
  }
173
+
166
174
  let shaderPropsA: Record<string, unknown> | undefined = undefined;
167
175
  let shaderPropsB: Record<string, unknown> | undefined = undefined;
168
176
 
169
- if (incomingQuad.shader !== null) {
170
- shaderPropsA = incomingQuad.shader.resolvedProps;
177
+ const shader = node.props.shader;
178
+
179
+ if (shader !== null) {
180
+ shaderPropsA = (shader as WebGlShaderNode).resolvedProps;
171
181
  }
172
- if (currentRenderOp.shader !== null) {
173
- shaderPropsB = currentRenderOp.shader.resolvedProps;
182
+
183
+ const opShader = currentRenderOp.shader;
184
+ if (opShader !== null) {
185
+ shaderPropsB = (opShader as WebGlShaderNode).resolvedProps;
174
186
  }
175
187
 
176
188
  if (
@@ -192,10 +204,15 @@ export class WebGlShaderProgram implements CoreShaderProgram {
192
204
  }
193
205
 
194
206
  bindRenderOp(renderOp: WebGlRenderOp) {
195
- this.bindBufferCollection(renderOp.buffers);
196
- this.bindTextures(renderOp.textures);
207
+ const isCoreNode = renderOp.isCoreNode;
197
208
 
198
- const { parentHasRenderTexture } = renderOp;
209
+ this.bindTextures(renderOp.renderOpTextures);
210
+ this.bindBufferCollection(renderOp.quadBufferCollection);
211
+
212
+ const parentHasRenderTexture = renderOp.parentHasRenderTexture;
213
+ const framebufferDimensions = isCoreNode
214
+ ? renderOp.parentFramebufferDimensions
215
+ : renderOp.framebufferDimensions;
199
216
 
200
217
  // Skip if the parent and current operation both have render textures
201
218
  if (renderOp.rtt === true && parentHasRenderTexture === true) {
@@ -204,16 +221,17 @@ export class WebGlShaderProgram implements CoreShaderProgram {
204
221
 
205
222
  // Bind render texture framebuffer dimensions as resolution
206
223
  // if the parent has a render texture
207
- if (parentHasRenderTexture === true) {
208
- const { width, height } = renderOp.framebufferDimensions!;
224
+ if (parentHasRenderTexture === true && framebufferDimensions) {
225
+ const { w, h } = framebufferDimensions;
209
226
  // Force pixel ratio to 1.0 for render textures since they are always 1:1
210
227
  // the final render texture will be rendered to the screen with the correct pixel ratio
211
228
  this.glw.uniform1f('u_pixelRatio', 1.0);
212
229
 
213
230
  // Set resolution to the framebuffer dimensions
214
- this.glw.uniform2f('u_resolution', width, height);
231
+ this.glw.uniform2f('u_resolution', w, h);
215
232
  } else {
216
- this.glw.uniform1f('u_pixelRatio', renderOp.renderer.stage.pixelRatio);
233
+ this.glw.uniform1f('u_pixelRatio', renderOp.stage.pixelRatio);
234
+
217
235
  this.glw.uniform2f(
218
236
  'u_resolution',
219
237
  this.glw.canvas.width,
@@ -221,39 +239,47 @@ export class WebGlShaderProgram implements CoreShaderProgram {
221
239
  );
222
240
  }
223
241
 
224
- // if (this.useSystemAlpha) {
225
- this.glw.uniform1f('u_alpha', renderOp.alpha);
226
- // }
242
+ if (this.useTimeValue === true) {
243
+ this.glw.uniform1f('u_time', renderOp.time);
244
+ }
245
+
246
+ if (this.useSystemAlpha === true) {
247
+ this.glw.uniform1f('u_alpha', renderOp.worldAlpha);
248
+ }
227
249
 
228
- // if (this.useSystemDimensions) {
229
- this.glw.uniform2f('u_dimensions', renderOp.width, renderOp.height);
230
- // }
250
+ if (this.useSystemDimensions === true) {
251
+ this.glw.uniform2f('u_dimensions', renderOp.w, renderOp.h);
252
+ }
231
253
 
232
254
  /**temporary fix to make sdf texts work */
233
- if (renderOp.sdfShaderProps !== undefined) {
234
- (renderOp.shader.shaderType as WebGlShaderType).onSdfBind?.call(
255
+ if (isCoreNode === false && renderOp.sdfShaderProps !== undefined) {
256
+ const opShader = renderOp.shader; // SdfRenderOp has .shader
257
+ (opShader.shaderType as WebGlShaderType).onSdfBind?.call(
235
258
  this.glw,
236
259
  renderOp.sdfShaderProps,
237
260
  );
238
261
  return;
239
262
  }
240
263
 
241
- if (renderOp.shader.props !== undefined) {
264
+ const shader = renderOp.shader as WebGlShaderNode;
265
+ if (shader.props !== undefined) {
242
266
  /**
243
267
  * loop over all precalculated uniform types
244
268
  */
245
- for (const key in renderOp.shader.uniforms.single) {
246
- const { method, value } = renderOp.shader.uniforms.single[key]!;
269
+ const uniforms = shader.uniforms;
270
+
271
+ for (const key in uniforms.single) {
272
+ const { method, value } = uniforms.single[key]!;
247
273
  this.glw[method as keyof UniformSet1Param](key, value as never);
248
274
  }
249
275
 
250
- for (const key in renderOp.shader.uniforms.vec2) {
251
- const { method, value } = renderOp.shader.uniforms.vec2[key]!;
276
+ for (const key in uniforms.vec2) {
277
+ const { method, value } = uniforms.vec2[key]!;
252
278
  this.glw[method as keyof UniformSet2Params](key, value[0], value[1]);
253
279
  }
254
280
 
255
- for (const key in renderOp.shader.uniforms.vec3) {
256
- const { method, value } = renderOp.shader.uniforms.vec3[key]!;
281
+ for (const key in uniforms.vec3) {
282
+ const { method, value } = uniforms.vec3[key]!;
257
283
  this.glw[method as keyof UniformSet3Params](
258
284
  key,
259
285
  value[0],
@@ -262,8 +288,8 @@ export class WebGlShaderProgram implements CoreShaderProgram {
262
288
  );
263
289
  }
264
290
 
265
- for (const key in renderOp.shader.uniforms.vec4) {
266
- const { method, value } = renderOp.shader.uniforms.vec4[key]!;
291
+ for (const key in uniforms.vec4) {
292
+ const { method, value } = uniforms.vec4[key]!;
267
293
  this.glw[method as keyof UniformSet4Params](
268
294
  key,
269
295
  value[0],
@@ -277,7 +303,7 @@ export class WebGlShaderProgram implements CoreShaderProgram {
277
303
 
278
304
  bindBufferCollection(buffer: BufferCollection) {
279
305
  const { glw } = this;
280
- const attribs = Object.keys(this.attributeLocations);
306
+ const attribs = this.attributeLocations;
281
307
  const attribLen = attribs.length;
282
308
 
283
309
  for (let i = 0; i < attribLen; i++) {
@@ -306,7 +332,10 @@ export class WebGlShaderProgram implements CoreShaderProgram {
306
332
  }
307
333
 
308
334
  attach(): void {
309
- this.glw.useProgram(this.program);
335
+ if (this.isDestroyed === true) {
336
+ return;
337
+ }
338
+ this.glw.useProgram(this.program, this.uniformLocations!);
310
339
  if (this.glw.isWebGl2() && this.vao) {
311
340
  this.glw.bindVertexArray(this.vao);
312
341
  }
@@ -315,4 +344,23 @@ export class WebGlShaderProgram implements CoreShaderProgram {
315
344
  detach(): void {
316
345
  this.disableAttributes();
317
346
  }
347
+
348
+ destroy() {
349
+ if (this.isDestroyed === true) {
350
+ return;
351
+ }
352
+ const glw = this.glw;
353
+
354
+ this.detach();
355
+
356
+ glw.deleteProgram(this.program!);
357
+ this.program = null;
358
+ this.uniformLocations = null;
359
+
360
+ const attribs = this.attributeLocations;
361
+ const attribLen = this.attributeLocations.length;
362
+ for (let i = 0; i < attribLen; i++) {
363
+ this.glw.deleteBuffer(attribs[i]!);
364
+ }
365
+ }
318
366
  }
@@ -15,64 +15,118 @@
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,
27
24
  type BorderProps,
28
25
  } from '../templates/BorderTemplate.js';
29
- import { strokeLine } from './utils/render.js';
30
26
 
31
27
  export interface ComputedBorderValues {
32
28
  borderColor: string;
33
29
  borderAsym: boolean;
34
- borderRadius: Vec4;
30
+ innerX: number;
31
+ innerY: number;
32
+ innerW: number;
33
+ innerH: number;
34
+ outerX: number;
35
+ outerY: number;
36
+ outerW: number;
37
+ outerH: number;
35
38
  }
36
39
 
37
40
  export const Border: CanvasShaderType<BorderProps, ComputedBorderValues> = {
38
41
  props: BorderTemplate.props,
39
42
  update() {
40
43
  this.computed.borderColor = formatRgba(parseColorRgba(this.props!.color));
41
- this.computed.borderAsym = !valuesAreEqual(this.props!.width as number[]);
42
- },
43
- render(ctx, quad, renderContext) {
44
- renderContext();
45
- ctx.strokeStyle = this.computed.borderColor!;
46
- if (this.computed.borderAsym === false && this.props!.width[0] > 0) {
47
- const bWidth = this.props!.width[0];
48
- const bHalfWidth = bWidth * 0.5;
49
- ctx.lineWidth = bWidth;
50
- ctx.beginPath();
51
- ctx.strokeRect(
52
- quad.tx + bHalfWidth,
53
- quad.ty + bHalfWidth,
54
- quad.width - bWidth,
55
- quad.height - bWidth,
56
- );
44
+ this.computed.borderAsym = !valuesAreEqual(this.props!.w as number[]);
45
+ const borderAlign = this.props!.align as number;
46
+ const borderGap = this.props!.gap as number;
47
+
48
+ const borderW = this.props!.w as Vec4;
49
+
50
+ if (this.computed.borderAsym === false) {
51
+ const bWidth = borderW[0] * 0.5;
52
+ //inside
53
+ const baseline = bWidth - borderW[0] * borderAlign - borderGap;
54
+ this.computed.outerX = baseline;
55
+ this.computed.outerY = baseline;
56
+
57
+ this.computed.outerW = -baseline * 2;
58
+ this.computed.outerH = -baseline * 2;
57
59
  return;
58
60
  }
59
61
 
60
- const { 0: t, 1: r, 2: b, 3: l } = this.props!.width as Vec4;
61
- if (t > 0) {
62
- const y = quad.ty + t * 0.5;
63
- strokeLine(ctx, quad.tx, y, quad.tx + quad.width, y, t);
64
- }
62
+ // Calculate outer and inner rectangle dimensions
63
+ const [t, r, b, l] = this.props!.w as Vec4;
64
+
65
+ const outerX = (this.computed.outerX = -l * borderAlign - borderGap);
66
+ const outerY = (this.computed.outerY = -t * borderAlign - borderGap);
67
+ let outerW = 0;
68
+ let outerH = 0;
69
+
65
70
  if (r > 0) {
66
- const x = quad.tx + quad.width - r * 0.5;
67
- strokeLine(ctx, x, quad.ty, x, quad.ty + quad.height, r);
71
+ outerW += r * borderAlign + borderGap;
72
+ }
73
+ if (l > 0) {
74
+ outerW += l * borderAlign + borderGap;
68
75
  }
76
+
69
77
  if (b > 0) {
70
- const y = quad.ty + quad.height - b * 0.5;
71
- strokeLine(ctx, quad.tx, y, quad.tx + quad.width, y, b);
78
+ outerH += b * borderAlign + borderGap;
72
79
  }
73
- if (l > 0) {
74
- const x = quad.tx + l * 0.5;
75
- strokeLine(ctx, x, quad.ty, x, quad.ty + quad.height, l);
80
+ if (t > 0) {
81
+ outerH += t * borderAlign + borderGap;
76
82
  }
83
+
84
+ this.computed.outerW = outerW;
85
+ this.computed.outerH = outerH;
86
+
87
+ this.computed.innerX = outerX + l;
88
+ this.computed.innerY = outerY + t;
89
+ this.computed.innerW = outerW - l - r;
90
+ this.computed.innerH = outerH - t - b;
91
+ },
92
+ render(ctx, node, renderContext) {
93
+ renderContext();
94
+ const computed = this.computed as ComputedBorderValues;
95
+ const { tx, ty } = node.globalTransform!;
96
+ const { w, h } = node.props;
97
+ ctx.strokeStyle = computed.borderColor!;
98
+ if (computed.borderAsym === false && this.props!.w[0] > 0) {
99
+ ctx.lineWidth = this.props!.w[0];
100
+ ctx.beginPath();
101
+ ctx.strokeRect(
102
+ tx + computed.outerX,
103
+ ty + computed.outerY,
104
+ w + computed.outerW,
105
+ h + computed.outerH,
106
+ );
107
+ return;
108
+ }
109
+
110
+ // Calculate outer rectangle (including border)
111
+ const outerX = tx + computed.outerX;
112
+ const outerY = ty + computed.outerY;
113
+ const outerW = w + computed.outerW;
114
+ const outerH = h + computed.outerH;
115
+
116
+ // Calculate inner rectangle (excluding border)
117
+ const innerX = tx + computed.innerX;
118
+ const innerY = ty + computed.innerY;
119
+ const innerW = w + computed.innerW;
120
+ const innerH = h + computed.innerH;
121
+
122
+ // Use clip to subtract inner from outer
123
+ ctx.save();
124
+ ctx.beginPath();
125
+ ctx.rect(outerX, outerY, outerW, outerH);
126
+ ctx.rect(innerX, innerY, innerW, innerH);
127
+ ctx.clip('evenodd');
128
+ ctx.fillStyle = this.computed.borderColor!;
129
+ ctx.fillRect(outerX, outerY, outerW, outerH);
130
+ ctx.restore();
77
131
  },
78
132
  };
@@ -36,23 +36,17 @@ export const HolePunch: CanvasShaderType<
36
36
  update() {
37
37
  this.computed.radius = calcFactoredRadiusArray(
38
38
  this.props!.radius as Vec4,
39
- this.props!.width,
40
- this.props!.height,
39
+ this.props!.w,
40
+ this.props!.h,
41
41
  );
42
42
  },
43
43
  render(ctx, quad, renderContext) {
44
44
  ctx.save();
45
45
  renderContext();
46
- const { x, y, width, height } = this.props!;
46
+ const { x, y, w, h } = this.props!;
47
+ const gt = quad.globalTransform!;
47
48
  ctx.beginPath();
48
- roundRect(
49
- ctx,
50
- quad.tx + x,
51
- quad.ty + y,
52
- width,
53
- height,
54
- this.computed.radius!,
55
- );
49
+ roundRect(ctx, gt.tx + x, gt.ty + y, w, h, this.computed.radius!);
56
50
  ctx.closePath();
57
51
  ctx.fillStyle = 'black';
58
52
  ctx.globalCompositeOperation = 'destination-out';
@@ -36,8 +36,8 @@ export const LinearGradient: CanvasShaderType<
36
36
  props: LinearGradientTemplate.props,
37
37
  update(node) {
38
38
  const angle = this.props!.angle - (Math.PI / 180) * 90;
39
- const nWidth = node.width;
40
- const nHeight = node.height;
39
+ const nWidth = node.w;
40
+ const nHeight = node.h;
41
41
  const line =
42
42
  (Math.abs(nWidth * Math.sin(angle)) +
43
43
  Math.abs(nHeight * Math.cos(angle))) *
@@ -51,19 +51,23 @@ export const LinearGradient: CanvasShaderType<
51
51
  colors: this.props!.colors.map((value) => this.toColorString(value)),
52
52
  };
53
53
  },
54
- render(ctx, quad, renderContext) {
54
+ render(ctx, node, renderContext) {
55
55
  renderContext();
56
+ const computed = this.computed as ComputedLinearGradientValues;
57
+ const { tx, ty } = node.globalTransform!;
58
+ const { w, h } = node.props;
56
59
  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!,
60
+ tx + computed.x0,
61
+ ty + computed.y0,
62
+ tx + computed.x1,
63
+ ty + computed.y1,
61
64
  );
62
- const colors = this.computed.colors!;
65
+ const colors = computed.colors;
66
+ const stops = this.props!.stops;
63
67
  for (let i = 0; i < colors.length; i++) {
64
- gradient.addColorStop(this.props!['stops'][i]!, colors[i]!);
68
+ gradient.addColorStop(stops[i]!, colors[i]!);
65
69
  }
66
70
  ctx.fillStyle = gradient;
67
- ctx.fillRect(quad.tx, quad.ty, quad.width, quad.height);
71
+ ctx.fillRect(tx, ty, w, h);
68
72
  },
69
73
  };
@@ -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.w;
43
+ const pHeight = props.h;
44
44
  if (pWidth > pHeight) {
45
45
  scaleX = pWidth / pHeight;
46
46
  } else if (pHeight > pWidth) {
@@ -48,65 +48,48 @@ 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.w,
52
+ pivotY: props.pivot[1] * node.h,
53
53
  scaleX,
54
54
  scaleY,
55
- size: Math.min(pWidth, pHeight) * 0.5,
56
- colors: this.props!.colors.map((value) => this.toColorString(value)),
55
+ size: Math.min(pWidth, pHeight),
56
+ colors: props.colors.map((value) => this.toColorString(value)),
57
57
  };
58
58
  },
59
- render(ctx, quad, renderContext) {
59
+ render(ctx, node, 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
+ const { tx, ty } = node.globalTransform!;
64
+ const { w, h } = node.props;
65
+ let x = tx + pivotX;
66
+ let y = ty + pivotY;
67
+ const stops = this.props!.stops;
66
68
 
67
69
  if (scaleX === scaleY) {
68
- const gradient = ctx.createRadialGradient(
69
- x,
70
- y,
71
- 0,
72
- x,
73
- y,
74
- this.computed.size!,
75
- );
70
+ const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
76
71
 
77
72
  for (let i = 0; i < colors.length; i++) {
78
- gradient.addColorStop(this.props!['stops'][i]!, colors[i]!);
73
+ gradient.addColorStop(stops[i]!, colors[i]!);
79
74
  }
80
75
 
81
76
  ctx.fillStyle = gradient;
82
- ctx.fillRect(quad.tx, quad.ty, quad.width, quad.height);
77
+ ctx.fillRect(tx, ty, w, h);
83
78
  return;
84
79
  }
85
80
 
86
81
  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
- );
82
+ ctx.scale(scaleX, scaleY);
83
+ x = x / scaleX;
84
+ y = y / scaleY;
85
+ const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
98
86
 
99
87
  for (let i = 0; i < colors.length; i++) {
100
- gradient.addColorStop(this.props!['stops'][i]!, colors[i]!);
88
+ gradient.addColorStop(stops[i]!, colors[i]!);
101
89
  }
102
90
 
103
91
  ctx.fillStyle = gradient;
104
- ctx.fillRect(
105
- quad.tx / scaleX!,
106
- quad.ty / scaleY!,
107
- quad.width / scaleX!,
108
- quad.height / scaleY!,
109
- );
92
+ ctx.fillRect(tx / scaleX, ty / scaleY, w / scaleX, h / scaleY);
110
93
 
111
94
  ctx.restore();
112
95
  },
@@ -34,18 +34,18 @@ export const Rounded: CanvasShaderType<RoundedProps, ComputedRoundedValues> = {
34
34
  update(node) {
35
35
  this.computed.radius = calcFactoredRadiusArray(
36
36
  this.props!.radius as Vec4,
37
- node.width,
38
- node.height,
37
+ node.w,
38
+ node.h,
39
39
  );
40
40
  },
41
- render(ctx, quad, renderContext) {
41
+ render(ctx, node, renderContext) {
42
42
  const path = new Path2D();
43
43
  roundRect(
44
44
  path,
45
- quad.tx,
46
- quad.ty,
47
- quad.width,
48
- quad.height,
45
+ node.globalTransform!.tx,
46
+ node.globalTransform!.ty,
47
+ node.props.w,
48
+ node.props.h,
49
49
  this.computed.radius!,
50
50
  );
51
51
  ctx.clip(path);