@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta20

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 (551) 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 +73 -95
  19. package/dist/src/core/CoreNode.js +599 -461
  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 +357 -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 +92 -33
  30. package/dist/src/core/Stage.js +313 -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/CoreAnimation.d.ts +3 -3
  39. package/dist/src/core/animations/CoreAnimation.js +8 -3
  40. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  41. package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
  42. package/dist/src/core/animations/CoreAnimationController.js +11 -4
  43. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  44. package/dist/src/core/lib/ImageWorker.js +1 -1
  45. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  46. package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
  47. package/dist/src/core/lib/WebGlContextWrapper.js +104 -27
  48. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  49. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  50. package/dist/src/core/lib/collectionUtils.js +100 -0
  51. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  52. package/dist/src/core/lib/colorCache.d.ts +1 -0
  53. package/dist/src/core/lib/colorCache.js +19 -0
  54. package/dist/src/core/lib/colorCache.js.map +1 -0
  55. package/dist/src/core/lib/colorParser.d.ts +21 -0
  56. package/dist/src/core/lib/colorParser.js +72 -0
  57. package/dist/src/core/lib/colorParser.js.map +1 -0
  58. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  59. package/dist/src/core/lib/textureCompression.js +320 -67
  60. package/dist/src/core/lib/textureCompression.js.map +1 -1
  61. package/dist/src/core/lib/utils.d.ts +2 -0
  62. package/dist/src/core/lib/utils.js +22 -0
  63. package/dist/src/core/lib/utils.js.map +1 -1
  64. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  65. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  66. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  67. package/dist/src/core/platform.js +30 -5
  68. package/dist/src/core/platform.js.map +1 -1
  69. package/dist/src/core/platforms/Platform.d.ts +42 -0
  70. package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
  71. package/dist/src/core/platforms/Platform.js.map +1 -0
  72. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  73. package/dist/src/core/platforms/web/WebPlatform.js +87 -0
  74. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  75. package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
  76. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  77. package/dist/src/core/renderers/CoreRenderer.d.ts +7 -2
  78. package/dist/src/core/renderers/CoreRenderer.js +1 -0
  79. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  80. package/dist/src/core/renderers/CoreShaderNode.d.ts +8 -1
  81. package/dist/src/core/renderers/CoreShaderNode.js +11 -0
  82. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  83. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
  84. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
  85. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  86. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
  87. package/dist/src/core/renderers/canvas/CanvasRenderer.js +32 -59
  88. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  89. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
  90. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  91. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  92. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
  93. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  94. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
  95. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
  96. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  97. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
  98. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
  99. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  100. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  101. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  102. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
  103. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +86 -41
  104. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  105. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  106. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
  107. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  108. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
  109. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
  110. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  111. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  112. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
  113. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  114. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  115. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
  116. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  117. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  118. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +95 -49
  119. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
  121. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
  122. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  123. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
  124. package/dist/src/core/renderers/webgl/WebGlRenderer.js +141 -112
  125. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  126. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
  127. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  128. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +6 -3
  129. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +47 -18
  130. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  131. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
  132. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  133. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
  134. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  135. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
  136. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  137. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
  138. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  139. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
  140. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  141. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  142. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  143. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  144. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  145. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  146. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  147. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
  148. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  149. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
  150. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
  151. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  152. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  153. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  154. package/dist/src/core/shaders/canvas/Border.js +5 -5
  155. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  156. package/dist/src/core/shaders/canvas/HolePunch.js +3 -3
  157. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  158. package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
  159. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  160. package/dist/src/core/shaders/canvas/RadialGradient.js +14 -12
  161. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  162. package/dist/src/core/shaders/canvas/Rounded.js +1 -1
  163. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  164. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
  165. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  166. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
  167. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  168. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
  169. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  170. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +2 -2
  171. package/dist/src/core/shaders/templates/BorderTemplate.js +11 -11
  172. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  173. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  174. package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -3
  175. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  176. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  177. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
  178. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  179. package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
  180. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  181. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
  182. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
  183. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
  184. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
  185. package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
  186. package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
  187. package/dist/src/core/shaders/utils.js.map +1 -0
  188. package/dist/src/core/shaders/webgl/Border.js +57 -34
  189. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  190. package/dist/src/core/shaders/webgl/Default.js +6 -7
  191. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  192. package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
  193. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  194. package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
  195. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  196. package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
  197. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  198. package/dist/src/core/shaders/webgl/Rounded.js +4 -2
  199. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  200. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +81 -37
  201. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  202. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +93 -42
  203. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  204. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +3 -2
  205. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  206. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  207. package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
  208. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  209. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  210. package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
  211. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  212. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  213. package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
  214. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  215. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
  216. package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
  217. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  218. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  219. package/dist/src/core/text-rendering/SdfTextRenderer.js +311 -0
  220. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  221. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  222. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  223. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  224. package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
  225. package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
  226. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  227. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  228. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  229. package/dist/src/core/text-rendering/Utils.js +84 -0
  230. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  231. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  232. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  233. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
  234. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  235. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
  236. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
  237. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  238. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
  239. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  240. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  241. package/dist/src/core/textures/ColorTexture.js +3 -4
  242. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  243. package/dist/src/core/textures/ImageTexture.d.ts +11 -4
  244. package/dist/src/core/textures/ImageTexture.js +31 -40
  245. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  246. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  247. package/dist/src/core/textures/NoiseTexture.js +8 -8
  248. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  249. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  250. package/dist/src/core/textures/RenderTexture.js +12 -12
  251. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  252. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  253. package/dist/src/core/textures/SubTexture.js +19 -37
  254. package/dist/src/core/textures/SubTexture.js.map +1 -1
  255. package/dist/src/core/textures/Texture.d.ts +87 -10
  256. package/dist/src/core/textures/Texture.js +160 -17
  257. package/dist/src/core/textures/Texture.js.map +1 -1
  258. package/dist/src/core/utils.d.ts +3 -2
  259. package/dist/src/core/utils.js +1 -1
  260. package/dist/src/core/utils.js.map +1 -1
  261. package/dist/src/main-api/INode.d.ts +2 -2
  262. package/dist/src/main-api/Inspector.d.ts +130 -1
  263. package/dist/src/main-api/Inspector.js +341 -27
  264. package/dist/src/main-api/Inspector.js.map +1 -1
  265. package/dist/src/main-api/Renderer.d.ts +285 -82
  266. package/dist/src/main-api/Renderer.js +221 -76
  267. package/dist/src/main-api/Renderer.js.map +1 -1
  268. package/dist/src/utils.d.ts +1 -6
  269. package/dist/src/utils.js +2 -9
  270. package/dist/src/utils.js.map +1 -1
  271. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  272. package/dist/tsconfig.tsbuildinfo +1 -0
  273. package/exports/canvas.ts +1 -1
  274. package/exports/index.ts +2 -8
  275. package/exports/utils.ts +7 -1
  276. package/exports/webgl.ts +3 -1
  277. package/package.json +15 -17
  278. package/src/common/CommonTypes.ts +18 -2
  279. package/src/core/CoreNode.test.ts +63 -15
  280. package/src/core/CoreNode.ts +709 -582
  281. package/src/core/CoreShaderManager.ts +5 -10
  282. package/src/core/CoreTextNode.ts +424 -286
  283. package/src/core/CoreTextureManager.ts +110 -130
  284. package/src/core/Stage.ts +394 -195
  285. package/src/core/TextureError.ts +46 -0
  286. package/src/core/TextureMemoryManager.ts +164 -141
  287. package/src/core/animations/CoreAnimation.ts +15 -9
  288. package/src/core/animations/CoreAnimationController.ts +13 -4
  289. package/src/core/lib/ImageWorker.ts +7 -1
  290. package/src/core/lib/WebGlContextWrapper.ts +126 -78
  291. package/src/core/lib/collectionUtils.ts +118 -0
  292. package/src/core/lib/colorCache.ts +20 -0
  293. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
  294. package/src/core/lib/textureCompression.ts +433 -75
  295. package/src/core/lib/utils.ts +26 -0
  296. package/src/core/lib/validateImageBitmap.ts +17 -6
  297. package/src/core/platforms/Platform.ts +83 -0
  298. package/src/core/platforms/web/WebPlatform.ts +132 -0
  299. package/src/core/renderers/CoreContextTexture.ts +2 -1
  300. package/src/core/renderers/CoreRenderer.ts +7 -3
  301. package/src/core/renderers/CoreShaderNode.ts +18 -3
  302. package/src/core/renderers/canvas/CanvasRenderer.ts +48 -82
  303. package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
  304. package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
  305. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
  306. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
  307. package/src/core/renderers/webgl/WebGlCtxTexture.ts +124 -81
  308. package/src/core/renderers/webgl/WebGlRenderOp.ts +21 -12
  309. package/src/core/renderers/webgl/WebGlRenderer.ts +172 -137
  310. package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
  311. package/src/core/renderers/webgl/WebGlShaderProgram.ts +58 -20
  312. package/src/core/shaders/canvas/Border.ts +5 -8
  313. package/src/core/shaders/canvas/HolePunch.ts +4 -11
  314. package/src/core/shaders/canvas/LinearGradient.ts +10 -8
  315. package/src/core/shaders/canvas/RadialGradient.ts +23 -37
  316. package/src/core/shaders/canvas/Rounded.ts +2 -2
  317. package/src/core/shaders/canvas/RoundedWithBorder.ts +20 -16
  318. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +17 -17
  319. package/src/core/shaders/canvas/RoundedWithShadow.ts +10 -9
  320. package/src/core/shaders/templates/BorderTemplate.ts +12 -12
  321. package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
  322. package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
  323. package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
  324. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
  325. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
  326. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
  327. package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
  328. package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
  329. package/src/core/shaders/webgl/Border.ts +57 -37
  330. package/src/core/shaders/webgl/Default.ts +6 -7
  331. package/src/core/shaders/webgl/HolePunch.ts +4 -7
  332. package/src/core/shaders/webgl/LinearGradient.ts +33 -8
  333. package/src/core/shaders/webgl/RadialGradient.ts +58 -34
  334. package/src/core/shaders/webgl/Rounded.ts +4 -6
  335. package/src/core/shaders/webgl/RoundedWithBorder.ts +82 -44
  336. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +93 -50
  337. package/src/core/shaders/webgl/RoundedWithShadow.ts +3 -6
  338. package/src/core/shaders/webgl/SdfShader.ts +7 -19
  339. package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
  340. package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
  341. package/src/core/text-rendering/SdfFontHandler.ts +591 -0
  342. package/src/core/text-rendering/SdfTextRenderer.ts +411 -0
  343. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  344. package/src/core/text-rendering/TextRenderer.ts +444 -0
  345. package/src/core/text-rendering/Utils.ts +99 -0
  346. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
  347. package/src/core/textures/ColorTexture.ts +7 -5
  348. package/src/core/textures/ImageTexture.ts +78 -66
  349. package/src/core/textures/NoiseTexture.ts +14 -12
  350. package/src/core/textures/RenderTexture.ts +18 -16
  351. package/src/core/textures/SubTexture.ts +25 -46
  352. package/src/core/textures/Texture.ts +207 -24
  353. package/src/core/utils.ts +9 -7
  354. package/src/main-api/INode.ts +4 -3
  355. package/src/main-api/Inspector.ts +571 -33
  356. package/src/main-api/Renderer.ts +505 -139
  357. package/src/utils.ts +10 -10
  358. package/dist/exports/core-api.d.ts +0 -74
  359. package/dist/exports/core-api.js +0 -96
  360. package/dist/exports/core-api.js.map +0 -1
  361. package/dist/exports/main-api.d.ts +0 -30
  362. package/dist/exports/main-api.js +0 -45
  363. package/dist/exports/main-api.js.map +0 -1
  364. package/dist/src/core/CoreExtension.d.ts +0 -12
  365. package/dist/src/core/CoreExtension.js +0 -29
  366. package/dist/src/core/CoreExtension.js.map +0 -1
  367. package/dist/src/core/CoreStuff.d.ts +0 -1
  368. package/dist/src/core/CoreStuff.js +0 -138
  369. package/dist/src/core/CoreStuff.js.map +0 -1
  370. package/dist/src/core/CoreTexturizer.d.ts +0 -14
  371. package/dist/src/core/CoreTexturizer.js +0 -47
  372. package/dist/src/core/CoreTexturizer.js.map +0 -1
  373. package/dist/src/core/LngNode.d.ts +0 -736
  374. package/dist/src/core/LngNode.js +0 -1174
  375. package/dist/src/core/LngNode.js.map +0 -1
  376. package/dist/src/core/Matrix2DContext.d.ts +0 -15
  377. package/dist/src/core/Matrix2DContext.js +0 -45
  378. package/dist/src/core/Matrix2DContext.js.map +0 -1
  379. package/dist/src/core/ShaderNode.d.ts +0 -10
  380. package/dist/src/core/ShaderNode.js +0 -30
  381. package/dist/src/core/ShaderNode.js.map +0 -1
  382. package/dist/src/core/TextNode.d.ts +0 -103
  383. package/dist/src/core/TextNode.js +0 -331
  384. package/dist/src/core/TextNode.js.map +0 -1
  385. package/dist/src/core/lib/Coords.d.ts +0 -14
  386. package/dist/src/core/lib/Coords.js +0 -55
  387. package/dist/src/core/lib/Coords.js.map +0 -1
  388. package/dist/src/core/lib/glm/common.d.ts +0 -162
  389. package/dist/src/core/lib/glm/common.js +0 -81
  390. package/dist/src/core/lib/glm/common.js.map +0 -1
  391. package/dist/src/core/lib/glm/index.d.ts +0 -11
  392. package/dist/src/core/lib/glm/index.js +0 -30
  393. package/dist/src/core/lib/glm/index.js.map +0 -1
  394. package/dist/src/core/lib/glm/mat2.d.ts +0 -219
  395. package/dist/src/core/lib/glm/mat2.js +0 -396
  396. package/dist/src/core/lib/glm/mat2.js.map +0 -1
  397. package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
  398. package/dist/src/core/lib/glm/mat2d.js +0 -442
  399. package/dist/src/core/lib/glm/mat2d.js.map +0 -1
  400. package/dist/src/core/lib/glm/mat3.d.ts +0 -283
  401. package/dist/src/core/lib/glm/mat3.js +0 -680
  402. package/dist/src/core/lib/glm/mat3.js.map +0 -1
  403. package/dist/src/core/lib/glm/mat4.d.ts +0 -550
  404. package/dist/src/core/lib/glm/mat4.js +0 -1802
  405. package/dist/src/core/lib/glm/mat4.js.map +0 -1
  406. package/dist/src/core/lib/glm/quat.d.ts +0 -363
  407. package/dist/src/core/lib/glm/quat.js +0 -693
  408. package/dist/src/core/lib/glm/quat.js.map +0 -1
  409. package/dist/src/core/lib/glm/quat2.d.ts +0 -356
  410. package/dist/src/core/lib/glm/quat2.js +0 -754
  411. package/dist/src/core/lib/glm/quat2.js.map +0 -1
  412. package/dist/src/core/lib/glm/vec2.d.ts +0 -365
  413. package/dist/src/core/lib/glm/vec2.js +0 -569
  414. package/dist/src/core/lib/glm/vec2.js.map +0 -1
  415. package/dist/src/core/lib/glm/vec3.d.ts +0 -406
  416. package/dist/src/core/lib/glm/vec3.js +0 -720
  417. package/dist/src/core/lib/glm/vec3.js.map +0 -1
  418. package/dist/src/core/lib/glm/vec4.d.ts +0 -330
  419. package/dist/src/core/lib/glm/vec4.js +0 -608
  420. package/dist/src/core/lib/glm/vec4.js.map +0 -1
  421. package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
  422. package/dist/src/core/renderers/CoreShaderManager.js +0 -33
  423. package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
  424. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
  425. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
  426. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
  427. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
  428. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
  429. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
  430. package/dist/src/core/scene/Scene.d.ts +0 -59
  431. package/dist/src/core/scene/Scene.js +0 -106
  432. package/dist/src/core/scene/Scene.js.map +0 -1
  433. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  434. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
  435. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
  436. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
  437. package/dist/src/main-api/ICoreDriver.d.ts +0 -27
  438. package/dist/src/main-api/ICoreDriver.js.map +0 -1
  439. package/dist/src/main-api/IRenderDriver.d.ts +0 -20
  440. package/dist/src/main-api/IRenderDriver.js.map +0 -1
  441. package/dist/src/main-api/IShaderController.d.ts +0 -14
  442. package/dist/src/main-api/IShaderController.js +0 -30
  443. package/dist/src/main-api/IShaderController.js.map +0 -1
  444. package/dist/src/main-api/IShaderNode.d.ts +0 -17
  445. package/dist/src/main-api/IShaderNode.js +0 -19
  446. package/dist/src/main-api/IShaderNode.js.map +0 -1
  447. package/dist/src/main-api/RendererMain.d.ts +0 -375
  448. package/dist/src/main-api/RendererMain.js +0 -365
  449. package/dist/src/main-api/RendererMain.js.map +0 -1
  450. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
  451. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
  452. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
  453. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
  454. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
  455. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
  456. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
  457. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
  458. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
  459. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
  460. package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
  461. package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
  462. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
  463. package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
  464. package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
  465. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
  466. package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
  467. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
  468. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
  469. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
  470. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
  471. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
  472. package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
  473. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
  474. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
  475. package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
  476. package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
  477. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
  478. package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
  479. package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
  480. package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
  481. package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
  482. package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
  483. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
  484. package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
  485. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
  486. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
  487. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
  488. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
  489. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
  490. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
  491. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
  492. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
  493. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
  494. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
  495. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
  496. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
  497. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
  498. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
  499. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
  500. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
  501. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
  502. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
  503. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
  504. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
  505. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
  506. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
  507. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
  508. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
  509. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
  510. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
  511. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
  512. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
  513. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
  514. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
  515. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
  516. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
  517. package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
  518. package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
  519. package/dist/src/render-drivers/utils.d.ts +0 -12
  520. package/dist/src/render-drivers/utils.js +0 -69
  521. package/dist/src/render-drivers/utils.js.map +0 -1
  522. package/scripts/please-use-pnpm.js +0 -13
  523. package/src/core/platform.ts +0 -64
  524. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
  525. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  526. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  527. package/src/core/text-rendering/TrFontManager.ts +0 -183
  528. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  529. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  530. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  531. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  532. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  533. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  534. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  535. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  536. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
  537. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -840
  538. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  539. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  540. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  541. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  542. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  543. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  544. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  545. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  546. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  547. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  548. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  549. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  550. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  551. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
@@ -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))) *
@@ -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.w;
43
+ const pHeight = props.h;
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.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
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();
@@ -34,8 +34,8 @@ 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
41
  render(ctx, quad, renderContext) {
@@ -35,33 +35,37 @@ 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
- node.width,
41
- node.height,
40
+ props.radius as Vec4,
41
+ node.w,
42
+ node.h,
42
43
  );
43
44
  this.computed.radius = radius;
44
- this.computed.borderColor = this.toColorString(this.props!['border-color']);
45
- this.computed.borderAsym = !valuesAreEqual(
46
- this.props!['border-width'] as number[],
47
- );
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;
45
+ this.computed.borderColor = this.toColorString(props['border-color']);
46
+ this.computed.borderAsym = !valuesAreEqual(props['border-w'] as number[]);
47
+ //following vec4 convention 0, 1, 2, 3 => x, y, z, w;
48
+ const [x, y, z, w] = props['border-w'] as Vec4;
49
+ this.computed.borderRadius = [
50
+ Math.max(0.0, radius[0] - Math.max(x, w) * 0.5),
51
+ Math.max(0.0, radius[1] - Math.max(x, y) * 0.5),
52
+ Math.max(0.0, radius[2] - Math.max(z, y) * 0.5),
53
+ Math.max(0.0, radius[3] - Math.max(z, w) * 0.5),
54
+ ];
52
55
  },
53
56
  render(ctx, quad, renderContext) {
57
+ const computed = this.computed as ComputedValues;
54
58
  roundedRectWithBorder(
55
59
  ctx,
56
60
  quad.tx,
57
61
  quad.ty,
58
62
  quad.width,
59
63
  quad.height,
60
- this.computed.radius!,
61
- this.props!['border-width'] as Vec4,
62
- this.computed.borderRadius!,
63
- this.computed.borderColor!,
64
- this.computed.borderAsym!,
64
+ computed.radius,
65
+ this.props!['border-w'] as Vec4,
66
+ computed.borderRadius,
67
+ computed.borderColor,
68
+ computed.borderAsym,
65
69
  renderContext,
66
70
  );
67
71
  },
@@ -38,37 +38,37 @@ 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
- node.width,
44
- node.height,
43
+ props.radius as Vec4,
44
+ node.w,
45
+ node.h,
45
46
  );
46
47
  this.computed.radius = radius;
47
- this.computed.borderColor = this.toColorString(this.props!['border-color']);
48
- this.computed.borderAsym = !valuesAreEqual(
49
- this.props!['border-width'] as number[],
50
- );
51
- const borderWidth = this.props!['border-width'] as Vec4;
48
+ this.computed.borderColor = this.toColorString(props['border-color']);
49
+ this.computed.borderAsym = !valuesAreEqual(props['border-w'] as number[]);
50
+ const borderWidth = props['border-w'] as Vec4;
52
51
  this.computed.borderRadius = radius.map((value, index) =>
53
52
  Math.max(0, value - borderWidth[index]! * 0.5),
54
53
  ) as Vec4;
55
54
 
56
- this.computed.shadowColor = this.toColorString(this.props!['shadow-color']);
55
+ this.computed.shadowColor = this.toColorString(props['shadow-color']);
57
56
  this.computed.shadowRadius = radius.map(
58
- (value) => value + this.props!['shadow-blur'],
57
+ (value) => value + props['shadow-blur'],
59
58
  ) as Vec4;
60
59
  },
61
60
  render(ctx, quad, renderContext) {
62
61
  const { tx, ty, width, height } = quad;
62
+ const computed = this.computed as ComputedValues;
63
63
  render.shadow(
64
64
  ctx,
65
65
  tx,
66
66
  ty,
67
67
  height,
68
68
  width,
69
- this.computed.shadowColor!,
69
+ computed.shadowColor,
70
70
  this.props!['shadow-projection'],
71
- this.computed.shadowRadius!,
71
+ computed.shadowRadius,
72
72
  this.stage.pixelRatio,
73
73
  );
74
74
  render.roundedRectWithBorder(
@@ -77,11 +77,11 @@ export const RoundedWithBorderAndShadow: CanvasShaderType<
77
77
  quad.ty,
78
78
  quad.width,
79
79
  quad.height,
80
- this.computed.radius!,
81
- this.props!['border-width'] as Vec4,
82
- this.computed.borderRadius!,
83
- this.computed.borderColor!,
84
- this.computed.borderAsym!,
80
+ computed.radius,
81
+ this.props!['border-w'] as Vec4,
82
+ computed.borderRadius,
83
+ computed.borderColor,
84
+ computed.borderAsym,
85
85
  renderContext,
86
86
  );
87
87
  },
@@ -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
- node.width,
41
- node.height,
40
+ props.radius as Vec4,
41
+ node.w,
42
+ node.h,
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
@@ -28,7 +28,7 @@ export interface BorderProps {
28
28
  *
29
29
  * @default 0
30
30
  */
31
- width: number | [number, number, number, number];
31
+ w: number | [number, number, number, number];
32
32
  /**
33
33
  * Color of the border in 0xRRGGBBAA
34
34
  *
@@ -57,9 +57,9 @@ export function getBorderProps<P extends string>(
57
57
  prefix?: P,
58
58
  ): PrefixedType<BorderProps, P> {
59
59
  const pf = prefix && prefix.length > 0 ? `${prefix}-` : '';
60
- const width = pf + 'width';
60
+ const w = pf + 'w';
61
61
  return {
62
- [width]: {
62
+ [w]: {
63
63
  default: [0, 0, 0, 0],
64
64
  resolve(value) {
65
65
  if (value !== undefined) {
@@ -72,37 +72,37 @@ export function getBorderProps<P extends string>(
72
72
  [pf + 'top']: {
73
73
  default: 0,
74
74
  set(value, props) {
75
- (props[width] as Vec4)[0] = value;
75
+ (props[w] as Vec4)[0] = value;
76
76
  },
77
77
  get(props) {
78
- return (props[width] as Vec4)[0];
78
+ return (props[w] as Vec4)[0];
79
79
  },
80
80
  },
81
81
  [pf + 'right']: {
82
82
  default: 0,
83
83
  set(value, props) {
84
- (props[width] as Vec4)[1] = value;
84
+ (props[w] as Vec4)[1] = value;
85
85
  },
86
86
  get(props) {
87
- return (props[width] as Vec4)[1];
87
+ return (props[w] as Vec4)[1];
88
88
  },
89
89
  },
90
90
  [pf + 'bottom']: {
91
91
  default: 0,
92
92
  set(value, props) {
93
- (props[width] as Vec4)[2] = value;
93
+ (props[w] as Vec4)[2] = value;
94
94
  },
95
95
  get(props) {
96
- return (props[width] as Vec4)[2];
96
+ return (props[w] as Vec4)[2];
97
97
  },
98
98
  },
99
99
  [pf + 'left']: {
100
100
  default: 0,
101
101
  set(value, props) {
102
- (props[width] as Vec4)[3] = value;
102
+ (props[w] as Vec4)[3] = value;
103
103
  },
104
104
  get(props) {
105
- return (props[width] as Vec4)[3];
105
+ return (props[w] as Vec4)[3];
106
106
  },
107
107
  },
108
108
  } as PrefixedType<BorderProps, P>;
@@ -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
@@ -33,13 +33,13 @@ export interface HolePunchProps {
33
33
  /**
34
34
  * Width of the hole punch
35
35
  */
36
- width: number;
36
+ w: number;
37
37
  /**
38
38
  * height of the hole punch
39
39
  *
40
40
  * @remarks if not defined uses the width value
41
41
  */
42
- height: number;
42
+ h: number;
43
43
  /**
44
44
  * Corner radius in pixels, to cut out of the corners of the hole punch
45
45
  *
@@ -67,8 +67,8 @@ export const HolePunchTemplate: CoreShaderType<HolePunchProps> = {
67
67
  props: {
68
68
  x: 0,
69
69
  y: 0,
70
- width: 50,
71
- height: 50,
70
+ w: 50,
71
+ h: 50,
72
72
  radius: {
73
73
  default: [0, 0, 0, 0],
74
74
  resolve(value) {
@@ -32,15 +32,17 @@ export interface RadialGradientProps {
32
32
  */
33
33
  stops: number[];
34
34
  /**
35
- * Width of the RadialGradientEffect
35
+ * radial width of the RadialGradientEffect
36
+ *
37
+ * @remarks from the center to the outer edge of the gradient
36
38
  */
37
- width: number;
39
+ w: number;
38
40
  /**
39
- * height of the RadialGradientEffect
40
- *
41
- * @remarks if not defined uses the width value
41
+ * radial height of the RadialGradientEffect
42
+ * if not defined uses the width value
43
+ * @remarks from the center to the outer edge of the gradient
42
44
  */
43
- height: number;
45
+ h: number;
44
46
  /**
45
47
  * center point of where the RadialGradientEffect is drawn
46
48
  */
@@ -74,8 +76,8 @@ export const RadialGradientTemplate: CoreShaderType<RadialGradientProps> = {
74
76
  return value;
75
77
  },
76
78
  },
77
- width: 50,
78
- height: 50,
79
+ w: 50,
80
+ h: 50,
79
81
  pivot: [0.5, 0.5],
80
82
  },
81
83
  };
@@ -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)) {
@@ -25,14 +25,51 @@ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
25
25
 
26
26
  export const Border: WebGlShaderType<BorderProps> = {
27
27
  props: BorderTemplate.props,
28
- update() {
29
- this.uniform4fa('u_width', this.props!.width as Vec4);
30
- this.uniform1i(
31
- 'u_asymWidth',
32
- valuesAreEqual(this.props!.width as number[]) ? 0 : 1,
33
- );
34
- this.uniformRGBA('u_color', this.props!.color);
28
+ update(node) {
29
+ this.uniform4fa('u_borderWidth', this.props!.w as Vec4);
30
+ this.uniformRGBA('u_borderColor', this.props!.color);
35
31
  },
32
+ vertex: `
33
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
34
+ precision highp float;
35
+ # else
36
+ precision mediump float;
37
+ # endif
38
+
39
+ attribute vec2 a_position;
40
+ attribute vec2 a_textureCoords;
41
+ attribute vec4 a_color;
42
+ attribute vec2 a_nodeCoords;
43
+
44
+ uniform vec2 u_resolution;
45
+ uniform float u_pixelRatio;
46
+ uniform vec2 u_dimensions;
47
+
48
+ uniform vec4 u_radius;
49
+ uniform vec4 u_borderWidth;
50
+
51
+ varying vec4 v_color;
52
+ varying vec2 v_textureCoords;
53
+ varying vec2 v_nodeCoords;
54
+
55
+ varying vec2 v_innerSize;
56
+ varying vec2 v_halfDimensions;
57
+
58
+ void main() {
59
+ vec2 normalized = a_position * u_pixelRatio;
60
+ vec2 screenSpace = vec2(2.0 / u_resolution.x, -2.0 / u_resolution.y);
61
+
62
+ v_color = a_color;
63
+ v_nodeCoords = a_nodeCoords;
64
+ v_textureCoords = a_textureCoords;
65
+
66
+ v_halfDimensions = u_dimensions * 0.5;
67
+ v_innerSize = vec2(u_dimensions.x - (u_borderWidth[3] + u_borderWidth[1]), u_dimensions.y - (u_borderWidth[0] + u_borderWidth[2])) * 0.5 - 0.5;
68
+
69
+ gl_Position = vec4(normalized.x * screenSpace.x - 1.0, normalized.y * -abs(screenSpace.y) + 1.0, 0.0, 1.0);
70
+ gl_Position.y = -sign(screenSpace.y) * gl_Position.y;
71
+ }
72
+ `,
36
73
  fragment: `
37
74
  # ifdef GL_FRAGMENT_PRECISION_HIGH
38
75
  precision highp float;
@@ -47,49 +84,32 @@ export const Border: WebGlShaderType<BorderProps> = {
47
84
  uniform vec2 u_dimensions;
48
85
  uniform sampler2D u_texture;
49
86
 
50
- uniform vec4 u_width;
51
- uniform vec4 u_color;
52
-
53
- uniform int u_asymWidth;
87
+ uniform vec4 u_borderWidth;
88
+ uniform vec4 u_borderColor;
54
89
 
55
90
  varying vec4 v_color;
56
- varying vec2 v_position;
91
+ varying vec2 v_nodeCoords;
57
92
  varying vec2 v_textureCoords;
58
93
 
94
+ varying vec2 v_innerSize;
95
+ varying vec2 v_halfDimensions;
96
+
59
97
  float box(vec2 p, vec2 s) {
60
- vec2 q = abs(p) - (s - (4.0 - u_pixelRatio));
98
+ vec2 q = abs(p) - s;
61
99
  return (min(max(q.x, q.y), 0.0) + length(max(q, 0.0)));
62
100
  }
63
101
 
64
- float asymBorderWidth(vec2 p, float d, vec4 w) {
65
- p.x += w.y > w.w ? (w.y - w.w) * 0.5 : -(w.w - w.y) * 0.5;
66
- p.y += w.z > w.x ? (w.z - w.x) * 0.5 : -(w.x - w.z) * 0.5;
67
-
68
- vec2 size = vec2(u_dimensions.x - (w[3] + w[1]), u_dimensions.y - (w[0] + w[2])) * 0.5;
69
- float borderDist = box(p, size + 2.0);
70
- return 1.0 - smoothstep(0.0, u_pixelRatio, max(-borderDist, d));
71
- }
72
-
73
102
  void main() {
74
103
  vec4 color = texture2D(u_texture, v_textureCoords) * v_color;
75
- vec2 halfDimensions = (u_dimensions * 0.5);
76
-
77
- vec2 boxUv = v_textureCoords.xy * u_dimensions - halfDimensions;
78
- float boxDist = box(boxUv, halfDimensions);
104
+ vec2 boxUv = v_nodeCoords.xy * u_dimensions - v_halfDimensions;
79
105
 
80
- float boxAlpha = 1.0 - smoothstep(0.0, u_pixelRatio, boxDist);
81
- float borderAlpha = 0.0;
106
+ boxUv.x += u_borderWidth.y > u_borderWidth.w ? (u_borderWidth.y - u_borderWidth.w) * 0.5 : -(u_borderWidth.w - u_borderWidth.y) * 0.5;
107
+ boxUv.y += u_borderWidth.z > u_borderWidth.x ? (u_borderWidth.z - u_borderWidth.x) * 0.5 : -(u_borderWidth.x - u_borderWidth.z) * 0.5;
82
108
 
83
- if(u_asymWidth == 1) {
84
- borderAlpha = asymBorderWidth(boxUv, boxDist, u_width);
85
- }
86
- else {
87
- borderAlpha = 1.0 - smoothstep(u_width[0], u_width[0], abs(boxDist));
88
- }
109
+ float innerDist = box(boxUv, v_innerSize);
110
+ float innerAlpha = 1.0 - smoothstep(0.0, 1.0, innerDist);
89
111
 
90
- vec4 resColor = vec4(0.0);
91
- resColor = mix(resColor, color, min(color.a, boxAlpha));
92
- resColor = mix(resColor, u_color, min(u_color.a, min(borderAlpha, boxAlpha)));
112
+ vec4 resColor = mix(u_borderColor, color, innerAlpha);
93
113
  gl_FragColor = resColor * u_alpha;
94
114
  }
95
115
  `,