@lightningtv/renderer 2.16.1 → 3.2.3

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 (625) hide show
  1. package/NOTICE +4 -0
  2. package/README.md +22 -28
  3. package/dist/exports/canvas-shaders.js +0 -16
  4. package/dist/exports/canvas-shaders.js.map +1 -1
  5. package/dist/exports/canvas.d.ts +8 -2
  6. package/dist/exports/canvas.js +8 -20
  7. package/dist/exports/canvas.js.map +1 -1
  8. package/dist/exports/index.d.ts +18 -13
  9. package/dist/exports/index.js +9 -27
  10. package/dist/exports/index.js.map +1 -1
  11. package/dist/exports/inspector.js +0 -18
  12. package/dist/exports/inspector.js.map +1 -1
  13. package/dist/exports/utils.d.ts +2 -1
  14. package/dist/exports/utils.js +2 -19
  15. package/dist/exports/utils.js.map +1 -1
  16. package/dist/exports/webgl-shaders.js +0 -16
  17. package/dist/exports/webgl-shaders.js.map +1 -1
  18. package/dist/exports/webgl.d.ts +11 -2
  19. package/dist/exports/webgl.js +11 -20
  20. package/dist/exports/webgl.js.map +1 -1
  21. package/dist/src/common/CommonTypes.d.ts +15 -3
  22. package/dist/src/common/CommonTypes.js +0 -18
  23. package/dist/src/common/CommonTypes.js.map +1 -1
  24. package/dist/src/common/EventEmitter.js +0 -18
  25. package/dist/src/common/EventEmitter.js.map +1 -1
  26. package/dist/src/common/IEventEmitter.js +0 -16
  27. package/dist/src/common/IEventEmitter.js.map +1 -1
  28. package/dist/src/core/Autosizer.d.ts +35 -0
  29. package/dist/src/core/Autosizer.js +178 -0
  30. package/dist/src/core/Autosizer.js.map +1 -0
  31. package/dist/src/core/CoreNode.d.ts +138 -105
  32. package/dist/src/core/CoreNode.js +805 -526
  33. package/dist/src/core/CoreNode.js.map +1 -1
  34. package/dist/src/core/CoreShaderManager.d.ts +29 -73
  35. package/dist/src/core/CoreShaderManager.js +92 -97
  36. package/dist/src/core/CoreShaderManager.js.map +1 -1
  37. package/dist/src/core/CoreTextNode.d.ts +75 -87
  38. package/dist/src/core/CoreTextNode.js +380 -258
  39. package/dist/src/core/CoreTextNode.js.map +1 -1
  40. package/dist/src/core/CoreTextureManager.d.ts +18 -3
  41. package/dist/src/core/CoreTextureManager.js +63 -107
  42. package/dist/src/core/CoreTextureManager.js.map +1 -1
  43. package/dist/src/core/Stage.d.ts +82 -55
  44. package/dist/src/core/Stage.js +410 -247
  45. package/dist/src/core/Stage.js.map +1 -1
  46. package/dist/src/core/TextureError.d.ts +11 -0
  47. package/dist/src/core/TextureError.js +37 -0
  48. package/dist/src/core/TextureError.js.map +1 -0
  49. package/dist/src/core/TextureMemoryManager.d.ts +4 -3
  50. package/dist/src/core/TextureMemoryManager.js +103 -135
  51. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  52. package/dist/src/core/animations/AnimationManager.js +0 -18
  53. package/dist/src/core/animations/AnimationManager.js.map +1 -1
  54. package/dist/src/core/animations/CoreAnimation.d.ts +3 -4
  55. package/dist/src/core/animations/CoreAnimation.js +9 -76
  56. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  57. package/dist/src/core/animations/CoreAnimationController.js +0 -18
  58. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  59. package/dist/src/core/lib/ContextSpy.js +0 -18
  60. package/dist/src/core/lib/ContextSpy.js.map +1 -1
  61. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  62. package/dist/src/core/lib/ImageWorker.js +31 -30
  63. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  64. package/dist/src/core/lib/Matrix3d.d.ts +1 -0
  65. package/dist/src/core/lib/Matrix3d.js +7 -19
  66. package/dist/src/core/lib/Matrix3d.js.map +1 -1
  67. package/dist/src/core/lib/RenderCoords.d.ts +9 -10
  68. package/dist/src/core/lib/RenderCoords.js +27 -55
  69. package/dist/src/core/lib/RenderCoords.js.map +1 -1
  70. package/dist/src/core/lib/WebGlContextWrapper.d.ts +147 -59
  71. package/dist/src/core/lib/WebGlContextWrapper.js +252 -158
  72. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  73. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  74. package/dist/src/core/lib/collectionUtils.js +82 -0
  75. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  76. package/dist/src/core/lib/colorCache.d.ts +1 -0
  77. package/dist/src/core/lib/colorCache.js +19 -0
  78. package/dist/src/core/lib/colorCache.js.map +1 -0
  79. package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +2 -0
  80. package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +15 -19
  81. package/dist/src/core/lib/colorParser.js.map +1 -0
  82. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  83. package/dist/src/core/lib/textureCompression.js +320 -86
  84. package/dist/src/core/lib/textureCompression.js.map +1 -1
  85. package/dist/src/core/lib/textureSvg.js +0 -18
  86. package/dist/src/core/lib/textureSvg.js.map +1 -1
  87. package/dist/src/core/lib/utils.d.ts +8 -2
  88. package/dist/src/core/lib/utils.js +21 -20
  89. package/dist/src/core/lib/utils.js.map +1 -1
  90. package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
  91. package/dist/src/core/lib/validateImageBitmap.js +4 -4
  92. package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
  93. package/dist/src/core/platforms/Platform.d.ts +5 -0
  94. package/dist/src/core/platforms/Platform.js +0 -18
  95. package/dist/src/core/platforms/Platform.js.map +1 -1
  96. package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
  97. package/dist/src/core/platforms/web/WebPlatform.js +39 -7
  98. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  99. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
  100. package/dist/src/core/renderers/CoreContextTexture.js +0 -18
  101. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
  102. package/dist/src/core/renderers/CoreRenderOp.js +0 -18
  103. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
  104. package/dist/src/core/renderers/CoreRenderer.d.ts +25 -23
  105. package/dist/src/core/renderers/CoreRenderer.js +1 -24
  106. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  107. package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
  108. package/dist/src/core/renderers/CoreShaderNode.js +19 -2
  109. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
  110. package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
  111. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
  112. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +3 -5
  113. package/dist/src/core/renderers/canvas/CanvasRenderer.js +86 -83
  114. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  115. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -17
  116. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
  117. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
  118. package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -31
  119. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
  121. package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
  122. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  123. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
  124. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
  125. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
  126. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
  127. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
  128. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
  129. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
  130. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -67
  131. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
  132. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +31 -19
  133. package/dist/src/core/renderers/webgl/WebGlRenderer.js +297 -200
  134. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  135. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
  136. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  137. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -5
  138. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -34
  139. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  140. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
  141. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
  142. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
  143. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
  144. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
  145. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  146. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -18
  147. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  148. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
  149. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
  150. package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
  151. package/dist/src/core/shaders/canvas/Border.js +67 -41
  152. package/dist/src/core/shaders/canvas/Border.js.map +1 -1
  153. package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
  154. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
  155. package/dist/src/core/shaders/canvas/LinearGradient.js +2 -18
  156. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
  157. package/dist/src/core/shaders/canvas/RadialGradient.js +5 -21
  158. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
  159. package/dist/src/core/shaders/canvas/Rounded.js +1 -17
  160. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
  161. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
  162. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +40 -26
  163. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  164. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
  165. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +43 -23
  166. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
  167. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +4 -18
  168. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
  169. package/dist/src/core/shaders/canvas/Shadow.js +0 -16
  170. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
  171. package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
  172. package/dist/src/core/shaders/canvas/utils/render.js +31 -34
  173. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
  174. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -2
  175. package/dist/src/core/shaders/templates/BorderTemplate.js +30 -26
  176. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
  177. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
  178. package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -18
  179. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
  180. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
  181. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
  182. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
  183. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
  184. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
  185. package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -16
  186. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
  187. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
  188. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
  189. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -2
  190. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
  191. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
  192. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
  193. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
  194. package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
  195. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
  196. package/dist/src/core/shaders/utils.js +0 -16
  197. package/dist/src/core/shaders/utils.js.map +1 -1
  198. package/dist/src/core/shaders/webgl/Border.js +75 -31
  199. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  200. package/dist/src/core/shaders/webgl/Default.js +6 -41
  201. package/dist/src/core/shaders/webgl/Default.js.map +1 -1
  202. package/dist/src/core/shaders/webgl/HolePunch.js +2 -18
  203. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
  204. package/dist/src/core/shaders/webgl/LinearGradient.js +68 -30
  205. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
  206. package/dist/src/core/shaders/webgl/RadialGradient.js +52 -45
  207. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
  208. package/dist/src/core/shaders/webgl/Rounded.js +25 -23
  209. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
  210. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +110 -48
  211. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  212. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +114 -54
  213. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  214. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
  215. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
  216. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
  217. package/dist/src/core/shaders/webgl/SdfShader.js +7 -35
  218. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
  219. package/dist/src/core/shaders/webgl/Shadow.js +39 -34
  220. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
  221. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  222. package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
  223. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  224. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  225. package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
  226. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  227. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
  228. package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
  229. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  230. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
  231. package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
  232. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  233. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  234. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  235. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  236. package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
  237. package/dist/src/core/text-rendering/TextRenderer.js +2 -0
  238. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  239. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  240. package/dist/src/core/text-rendering/Utils.js +66 -0
  241. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  242. package/dist/src/core/textures/ColorTexture.d.ts +1 -1
  243. package/dist/src/core/textures/ColorTexture.js +3 -22
  244. package/dist/src/core/textures/ColorTexture.js.map +1 -1
  245. package/dist/src/core/textures/ImageTexture.d.ts +10 -3
  246. package/dist/src/core/textures/ImageTexture.js +33 -62
  247. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  248. package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
  249. package/dist/src/core/textures/NoiseTexture.js +8 -26
  250. package/dist/src/core/textures/NoiseTexture.js.map +1 -1
  251. package/dist/src/core/textures/RenderTexture.d.ts +7 -7
  252. package/dist/src/core/textures/RenderTexture.js +12 -30
  253. package/dist/src/core/textures/RenderTexture.js.map +1 -1
  254. package/dist/src/core/textures/SubTexture.d.ts +6 -8
  255. package/dist/src/core/textures/SubTexture.js +19 -55
  256. package/dist/src/core/textures/SubTexture.js.map +1 -1
  257. package/dist/src/core/textures/Texture.d.ts +80 -16
  258. package/dist/src/core/textures/Texture.js +131 -37
  259. package/dist/src/core/textures/Texture.js.map +1 -1
  260. package/dist/src/core/utils.d.ts +2 -1
  261. package/dist/src/core/utils.js +1 -19
  262. package/dist/src/core/utils.js.map +1 -1
  263. package/dist/src/main-api/INode.d.ts +9 -9
  264. package/dist/src/main-api/INode.js.map +1 -1
  265. package/dist/src/main-api/Inspector.d.ts +135 -2
  266. package/dist/src/main-api/Inspector.js +507 -30
  267. package/dist/src/main-api/Inspector.js.map +1 -1
  268. package/dist/src/main-api/Renderer.d.ts +246 -162
  269. package/dist/src/main-api/Renderer.js +192 -152
  270. package/dist/src/main-api/Renderer.js.map +1 -1
  271. package/dist/src/utils.d.ts +23 -4
  272. package/dist/src/utils.js +50 -27
  273. package/dist/src/utils.js.map +1 -1
  274. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  275. package/dist/tsconfig.tsbuildinfo +1 -1
  276. package/exports/canvas-shaders.ts +11 -0
  277. package/exports/canvas.ts +8 -20
  278. package/exports/index.ts +24 -44
  279. package/exports/inspector.ts +0 -19
  280. package/exports/utils.ts +7 -19
  281. package/exports/webgl-shaders.ts +12 -0
  282. package/exports/webgl.ts +15 -20
  283. package/package.json +23 -20
  284. package/src/common/CommonTypes.ts +20 -22
  285. package/src/common/EventEmitter.ts +0 -19
  286. package/src/common/IAnimationController.ts +0 -18
  287. package/src/common/IEventEmitter.ts +0 -17
  288. package/src/core/Autosizer.ts +205 -0
  289. package/src/core/CoreNode.test.ts +378 -46
  290. package/src/core/CoreNode.ts +1007 -659
  291. package/src/core/CoreShaderManager.ts +128 -250
  292. package/src/core/CoreTextNode.ts +457 -321
  293. package/src/core/CoreTextureManager.ts +94 -115
  294. package/src/core/Stage.ts +516 -312
  295. package/src/core/TextureError.ts +46 -0
  296. package/src/core/TextureMemoryManager.ts +139 -175
  297. package/src/core/animations/AnimationManager.ts +0 -19
  298. package/src/core/animations/CoreAnimation.ts +16 -96
  299. package/src/core/animations/CoreAnimationController.ts +0 -19
  300. package/src/core/lib/ContextSpy.ts +0 -19
  301. package/src/core/lib/ImageWorker.ts +43 -31
  302. package/src/core/lib/Matrix3d.ts +7 -20
  303. package/src/core/lib/RenderCoords.ts +36 -67
  304. package/src/core/lib/WebGlContextWrapper.ts +353 -237
  305. package/src/core/lib/collectionUtils.ts +99 -0
  306. package/src/core/lib/colorCache.ts +20 -0
  307. package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +16 -19
  308. package/src/core/lib/textureCompression.ts +434 -94
  309. package/src/core/lib/textureSvg.ts +0 -19
  310. package/src/core/lib/utils.ts +31 -19
  311. package/src/core/lib/validateImageBitmap.ts +17 -6
  312. package/src/core/platforms/Platform.ts +64 -0
  313. package/src/core/platforms/web/WebPlatform.ts +132 -0
  314. package/src/core/renderers/CoreContextTexture.ts +1 -19
  315. package/src/core/renderers/CoreRenderOp.ts +0 -19
  316. package/src/core/renderers/CoreRenderer.ts +34 -49
  317. package/src/core/renderers/CoreShaderNode.ts +202 -0
  318. package/src/core/renderers/CoreShaderProgram.ts +4 -0
  319. package/src/core/renderers/canvas/CanvasRenderer.ts +270 -0
  320. package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
  321. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +15 -27
  322. package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
  323. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +15 -36
  324. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
  325. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +89 -70
  326. package/src/core/renderers/webgl/WebGlRenderer.ts +850 -0
  327. package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -0
  328. package/src/core/renderers/webgl/WebGlShaderProgram.ts +356 -0
  329. package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
  330. package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
  331. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -24
  332. package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
  333. package/src/core/shaders/canvas/Border.ts +119 -0
  334. package/src/core/shaders/canvas/HolePunch.ts +38 -0
  335. package/src/core/shaders/canvas/LinearGradient.ts +54 -0
  336. package/src/core/shaders/canvas/RadialGradient.ts +82 -0
  337. package/src/core/shaders/canvas/Rounded.ts +38 -0
  338. package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
  339. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
  340. package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
  341. package/src/core/shaders/canvas/Shadow.ts +35 -0
  342. package/src/core/shaders/canvas/utils/render.ts +143 -0
  343. package/src/core/shaders/templates/BorderTemplate.ts +128 -0
  344. package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
  345. package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
  346. package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
  347. package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
  348. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
  349. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
  350. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
  351. package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
  352. package/src/core/shaders/utils.ts +30 -0
  353. package/src/core/shaders/webgl/Border.ts +159 -0
  354. package/src/core/shaders/webgl/Default.ts +52 -0
  355. package/src/core/shaders/webgl/HolePunch.ts +58 -0
  356. package/src/core/shaders/webgl/LinearGradient.ts +119 -0
  357. package/src/core/shaders/webgl/RadialGradient.ts +91 -0
  358. package/src/core/shaders/webgl/Rounded.ts +97 -0
  359. package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
  360. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -0
  361. package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
  362. package/src/core/shaders/webgl/SdfShader.ts +104 -0
  363. package/src/core/shaders/webgl/Shadow.ts +119 -0
  364. package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
  365. package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
  366. package/src/core/text-rendering/SdfFontHandler.ts +566 -0
  367. package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
  368. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  369. package/src/core/text-rendering/TextRenderer.ts +426 -0
  370. package/src/core/text-rendering/Utils.ts +80 -0
  371. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
  372. package/src/core/textures/ColorTexture.ts +7 -24
  373. package/src/core/textures/ImageTexture.ts +72 -78
  374. package/src/core/textures/NoiseTexture.ts +14 -31
  375. package/src/core/textures/RenderTexture.ts +18 -35
  376. package/src/core/textures/SubTexture.ts +25 -65
  377. package/src/core/textures/Texture.ts +182 -53
  378. package/src/core/utils.ts +9 -26
  379. package/src/main-api/INode.ts +10 -29
  380. package/src/main-api/Inspector.ts +794 -38
  381. package/src/main-api/Renderer.ts +476 -274
  382. package/src/utils.ts +83 -29
  383. package/dist/src/core/animations/SimpleAnimation.d.ts +0 -28
  384. package/dist/src/core/animations/SimpleAnimation.js +0 -96
  385. package/dist/src/core/animations/SimpleAnimation.js.map +0 -1
  386. package/dist/src/core/platform.d.ts +0 -10
  387. package/dist/src/core/platform.js +0 -81
  388. package/dist/src/core/platform.js.map +0 -1
  389. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  390. package/dist/src/core/renderers/CoreShader.js +0 -28
  391. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  392. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  393. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  394. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  395. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
  396. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
  397. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  398. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
  399. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
  400. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  401. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  402. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  403. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  404. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  405. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  406. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  407. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  408. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  409. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  410. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  411. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
  412. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
  413. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  414. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  415. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  416. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  417. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  418. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
  419. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  420. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  421. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
  422. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  423. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  424. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
  425. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  426. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  427. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  428. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  429. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  430. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  431. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  432. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  433. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  434. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  435. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  436. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  437. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  438. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  439. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  440. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  441. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  442. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  443. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  444. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  445. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  446. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  447. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  448. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  449. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  450. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  451. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  452. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  453. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  454. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  455. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  456. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  457. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  458. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  459. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  460. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  461. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  462. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  463. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  464. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  465. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  466. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  467. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  468. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  469. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  470. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  471. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  472. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  473. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  474. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  475. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  476. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  477. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  478. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  479. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  480. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  481. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  482. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  483. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  484. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  485. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  486. package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
  487. package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
  488. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  489. package/dist/src/core/shaders/webgl/Magnifier.d.ts +0 -46
  490. package/dist/src/core/shaders/webgl/Magnifier.js +0 -107
  491. package/dist/src/core/shaders/webgl/Magnifier.js.map +0 -1
  492. package/dist/src/core/shaders/webgl/RoundedWithBorder copy.d.ts +0 -3
  493. package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js +0 -218
  494. package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js.map +0 -1
  495. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  496. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  497. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  498. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  499. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  500. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  501. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  502. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  503. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  504. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  505. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  506. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  507. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  508. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  509. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  510. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  511. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  512. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  513. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  514. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  515. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  516. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  517. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  518. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  519. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  520. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  521. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  522. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  523. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  524. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  525. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
  526. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  527. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  528. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
  529. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
  530. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  531. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  532. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  533. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  534. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  535. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  536. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  537. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  538. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  539. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  540. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  541. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  542. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  543. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  544. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  545. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  546. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  547. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  548. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  549. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  550. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  551. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  552. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  553. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  554. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  555. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  556. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  557. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  558. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
  559. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  560. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  561. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  562. package/dist/src/main-api/DynamicShaderController.js +0 -58
  563. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  564. package/dist/src/main-api/ShaderController.d.ts +0 -31
  565. package/dist/src/main-api/ShaderController.js +0 -37
  566. package/dist/src/main-api/ShaderController.js.map +0 -1
  567. package/scripts/please-use-pnpm.js +0 -13
  568. package/src/core/platform.ts +0 -100
  569. package/src/core/renderers/CoreShader.ts +0 -41
  570. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  571. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
  572. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
  573. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +0 -50
  574. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
  575. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +0 -821
  576. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
  577. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  578. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  579. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  580. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  581. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  582. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  583. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  584. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  585. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  586. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  587. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  588. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  589. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  590. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  591. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  592. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  593. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  594. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  595. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  596. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  597. package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
  598. package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
  599. package/src/core/text-rendering/TrFontManager.ts +0 -183
  600. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
  601. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
  602. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
  603. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
  604. package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
  605. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
  606. package/src/core/text-rendering/font-face-types/utils.ts +0 -39
  607. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
  608. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
  609. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
  610. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
  611. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
  612. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
  613. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
  614. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
  615. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
  616. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
  617. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
  618. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
  619. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
  620. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
  621. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
  622. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
  623. package/src/core/text-rendering/renderers/TextRenderer.ts +0 -557
  624. package/src/main-api/DynamicShaderController.ts +0 -104
  625. package/src/main-api/ShaderController.ts +0 -80
@@ -0,0 +1,119 @@
1
+ import { formatRgba, parseColorRgba } from '../../lib/colorParser.js';
2
+ import { valuesAreEqual } from '../../lib/utils.js';
3
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
4
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
5
+ import {
6
+ BorderTemplate,
7
+ type BorderProps,
8
+ } from '../templates/BorderTemplate.js';
9
+
10
+ export interface ComputedBorderValues {
11
+ borderColor: string;
12
+ borderAsym: boolean;
13
+ innerX: number;
14
+ innerY: number;
15
+ innerW: number;
16
+ innerH: number;
17
+ outerX: number;
18
+ outerY: number;
19
+ outerW: number;
20
+ outerH: number;
21
+ }
22
+
23
+ export const Border: CanvasShaderType<BorderProps, ComputedBorderValues> = {
24
+ props: BorderTemplate.props,
25
+ update() {
26
+ this.computed.borderColor = formatRgba(parseColorRgba(this.props!.color));
27
+ this.computed.borderAsym = !valuesAreEqual(this.props!.w as number[]);
28
+ const borderAlign = this.props!.align as number;
29
+ const borderGap = this.props!.gap as number;
30
+
31
+ const borderW = this.props!.w as Vec4;
32
+
33
+ if (this.computed.borderAsym === false) {
34
+ const bWidth = borderW[0] * 0.5;
35
+ //inside
36
+ const baseline = bWidth - borderW[0] * borderAlign - borderGap;
37
+ this.computed.outerX = baseline;
38
+ this.computed.outerY = baseline;
39
+
40
+ this.computed.outerW = -baseline * 2;
41
+ this.computed.outerH = -baseline * 2;
42
+ return;
43
+ }
44
+
45
+ // Calculate outer and inner rectangle dimensions
46
+ const [t, r, b, l] = this.props!.w as Vec4;
47
+
48
+ const outerX = (this.computed.outerX = -l * borderAlign - borderGap);
49
+ const outerY = (this.computed.outerY = -t * borderAlign - borderGap);
50
+ let outerW = 0;
51
+ let outerH = 0;
52
+
53
+ if (r > 0) {
54
+ outerW += r * borderAlign + borderGap;
55
+ }
56
+ if (l > 0) {
57
+ outerW += l * borderAlign + borderGap;
58
+ }
59
+
60
+ if (b > 0) {
61
+ outerH += b * borderAlign + borderGap;
62
+ }
63
+ if (t > 0) {
64
+ outerH += t * borderAlign + borderGap;
65
+ }
66
+
67
+ this.computed.outerW = outerW;
68
+ this.computed.outerH = outerH;
69
+
70
+ this.computed.innerX = outerX + l;
71
+ this.computed.innerY = outerY + t;
72
+ this.computed.innerW = outerW - l - r;
73
+ this.computed.innerH = outerH - t - b;
74
+ },
75
+ render(ctx, quad, renderContext) {
76
+ renderContext();
77
+ const computed = this.computed as ComputedBorderValues;
78
+ ctx.strokeStyle = computed.borderColor!;
79
+ if (computed.borderAsym === false && this.props!.w[0] > 0) {
80
+ ctx.lineWidth = this.props!.w[0];
81
+ ctx.beginPath();
82
+ ctx.strokeRect(
83
+ quad.tx + computed.outerX,
84
+ quad.ty + computed.outerY,
85
+ quad.width + computed.outerW,
86
+ quad.height + computed.outerH,
87
+ );
88
+ return;
89
+ }
90
+
91
+ // Pre-calculate common values
92
+ const tx = quad.tx;
93
+ const ty = quad.ty;
94
+ const width = quad.width;
95
+ const height = quad.height;
96
+
97
+ // Calculate outer rectangle (including border)
98
+ const outerX = tx + computed.outerX;
99
+ const outerY = ty + computed.outerY;
100
+ const outerW = width + computed.outerW;
101
+ const outerH = height + computed.outerH;
102
+
103
+ // Calculate inner rectangle (excluding border)
104
+ const innerX = tx + computed.innerX;
105
+ const innerY = ty + computed.innerY;
106
+ const innerW = width + computed.innerW;
107
+ const innerH = height + computed.innerH;
108
+
109
+ // Use clip to subtract inner from outer
110
+ ctx.save();
111
+ ctx.beginPath();
112
+ ctx.rect(outerX, outerY, outerW, outerH);
113
+ ctx.rect(innerX, innerY, innerW, innerH);
114
+ ctx.clip('evenodd');
115
+ ctx.fillStyle = this.computed.borderColor!;
116
+ ctx.fillRect(outerX, outerY, outerW, outerH);
117
+ ctx.restore();
118
+ },
119
+ };
@@ -0,0 +1,38 @@
1
+ import { calcFactoredRadiusArray } from '../../lib/utils.js';
2
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
3
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
4
+ import {
5
+ HolePunchTemplate,
6
+ type HolePunchProps,
7
+ } from '../templates/HolePunchTemplate.js';
8
+ import { roundRect } from './utils/render.js';
9
+
10
+ export interface ComputedHolePunchValues {
11
+ radius: Vec4;
12
+ }
13
+
14
+ export const HolePunch: CanvasShaderType<
15
+ HolePunchProps,
16
+ ComputedHolePunchValues
17
+ > = {
18
+ props: HolePunchTemplate.props,
19
+ update() {
20
+ this.computed.radius = calcFactoredRadiusArray(
21
+ this.props!.radius as Vec4,
22
+ this.props!.w,
23
+ this.props!.h,
24
+ );
25
+ },
26
+ render(ctx, quad, renderContext) {
27
+ ctx.save();
28
+ renderContext();
29
+ const { x, y, w, h } = this.props!;
30
+ ctx.beginPath();
31
+ roundRect(ctx, quad.tx + x, quad.ty + y, w, h, this.computed.radius!);
32
+ ctx.closePath();
33
+ ctx.fillStyle = 'black';
34
+ ctx.globalCompositeOperation = 'destination-out';
35
+ ctx.fill();
36
+ ctx.restore();
37
+ },
38
+ };
@@ -0,0 +1,54 @@
1
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
2
+ import {
3
+ LinearGradientTemplate,
4
+ type LinearGradientProps,
5
+ } from '../templates/LinearGradientTemplate.js';
6
+
7
+ export interface ComputedLinearGradientValues {
8
+ x0: number;
9
+ y0: number;
10
+ x1: number;
11
+ y1: number;
12
+ colors: string[];
13
+ }
14
+
15
+ export const LinearGradient: CanvasShaderType<
16
+ LinearGradientProps,
17
+ ComputedLinearGradientValues
18
+ > = {
19
+ props: LinearGradientTemplate.props,
20
+ update(node) {
21
+ const angle = this.props!.angle - (Math.PI / 180) * 90;
22
+ const nWidth = node.w;
23
+ const nHeight = node.h;
24
+ const line =
25
+ (Math.abs(nWidth * Math.sin(angle)) +
26
+ Math.abs(nHeight * Math.cos(angle))) *
27
+ 0.5;
28
+
29
+ this.computed = {
30
+ x0: line * Math.cos(angle) + nWidth * 0.5,
31
+ y0: line * Math.sin(angle) + nHeight * 0.5,
32
+ x1: line * Math.cos(angle + Math.PI) + nWidth * 0.5,
33
+ y1: line * Math.sin(angle + Math.PI) + nHeight * 0.5,
34
+ colors: this.props!.colors.map((value) => this.toColorString(value)),
35
+ };
36
+ },
37
+ render(ctx, quad, renderContext) {
38
+ renderContext();
39
+ const computed = this.computed as ComputedLinearGradientValues;
40
+ const gradient = ctx.createLinearGradient(
41
+ quad.tx + computed.x0,
42
+ quad.ty + computed.y0,
43
+ quad.tx + computed.x1,
44
+ quad.ty + computed.y1,
45
+ );
46
+ const colors = computed.colors;
47
+ const stops = this.props!.stops;
48
+ for (let i = 0; i < colors.length; i++) {
49
+ gradient.addColorStop(stops[i]!, colors[i]!);
50
+ }
51
+ ctx.fillStyle = gradient;
52
+ ctx.fillRect(quad.tx, quad.ty, quad.width, quad.height);
53
+ },
54
+ };
@@ -0,0 +1,82 @@
1
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
2
+ import {
3
+ RadialGradientTemplate,
4
+ type RadialGradientProps,
5
+ } from '../templates/RadialGradientTemplate.js';
6
+
7
+ export interface ComputedRadialGradientValues {
8
+ pivotX: number;
9
+ pivotY: number;
10
+ scaleX: number;
11
+ scaleY: number;
12
+ size: number;
13
+ colors: string[];
14
+ }
15
+
16
+ export const RadialGradient: CanvasShaderType<
17
+ RadialGradientProps,
18
+ ComputedRadialGradientValues
19
+ > = {
20
+ props: RadialGradientTemplate.props,
21
+ update(node) {
22
+ let scaleX = 1;
23
+ let scaleY = 1;
24
+ const props = this.props as RadialGradientProps;
25
+ const pWidth = props.w;
26
+ const pHeight = props.h;
27
+ if (pWidth > pHeight) {
28
+ scaleX = pWidth / pHeight;
29
+ } else if (pHeight > pWidth) {
30
+ scaleY = pHeight / pWidth;
31
+ }
32
+
33
+ this.computed = {
34
+ pivotX: props.pivot[0] * node.w,
35
+ pivotY: props.pivot[1] * node.h,
36
+ scaleX,
37
+ scaleY,
38
+ size: Math.min(pWidth, pHeight),
39
+ colors: props.colors.map((value) => this.toColorString(value)),
40
+ };
41
+ },
42
+ render(ctx, quad, renderContext) {
43
+ renderContext();
44
+ const { scaleX, scaleY, pivotX, pivotY, colors, size } = this
45
+ .computed as ComputedRadialGradientValues;
46
+ let x = quad.tx + pivotX;
47
+ let y = quad.ty + pivotY;
48
+ const stops = this.props!.stops;
49
+
50
+ if (scaleX === scaleY) {
51
+ const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
52
+
53
+ for (let i = 0; i < colors.length; i++) {
54
+ gradient.addColorStop(stops[i]!, colors[i]!);
55
+ }
56
+
57
+ ctx.fillStyle = gradient;
58
+ ctx.fillRect(quad.tx, quad.ty, quad.width, quad.height);
59
+ return;
60
+ }
61
+
62
+ ctx.save();
63
+ ctx.scale(scaleX, scaleY);
64
+ x = x / scaleX;
65
+ y = y / scaleY;
66
+ const gradient = ctx.createRadialGradient(x, y, 0, x, y, size);
67
+
68
+ for (let i = 0; i < colors.length; i++) {
69
+ gradient.addColorStop(stops[i]!, colors[i]!);
70
+ }
71
+
72
+ ctx.fillStyle = gradient;
73
+ ctx.fillRect(
74
+ quad.tx / scaleX,
75
+ quad.ty / scaleY,
76
+ quad.width / scaleX,
77
+ quad.height / scaleY,
78
+ );
79
+
80
+ ctx.restore();
81
+ },
82
+ };
@@ -0,0 +1,38 @@
1
+ import { calcFactoredRadiusArray } from '../../lib/utils.js';
2
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
3
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
4
+ import {
5
+ RoundedTemplate,
6
+ type RoundedProps,
7
+ } from '../templates/RoundedTemplate.js';
8
+ import { roundRect } from './utils/render.js';
9
+
10
+ export interface ComputedRoundedValues {
11
+ radius: Vec4;
12
+ }
13
+
14
+ export const Rounded: CanvasShaderType<RoundedProps, ComputedRoundedValues> = {
15
+ props: RoundedTemplate.props,
16
+ saveAndRestore: true,
17
+ update(node) {
18
+ this.computed.radius = calcFactoredRadiusArray(
19
+ this.props!.radius as Vec4,
20
+ node.w,
21
+ node.h,
22
+ );
23
+ },
24
+ render(ctx, quad, renderContext) {
25
+ const path = new Path2D();
26
+ roundRect(
27
+ path,
28
+ quad.tx,
29
+ quad.ty,
30
+ quad.width,
31
+ quad.height,
32
+ this.computed.radius!,
33
+ );
34
+ ctx.clip(path);
35
+
36
+ renderContext();
37
+ },
38
+ };
@@ -0,0 +1,105 @@
1
+ import { calcFactoredRadiusArray, valuesAreEqual } from '../../lib/utils.js';
2
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
3
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
4
+ import {
5
+ RoundedWithBorderTemplate,
6
+ type RoundedWithBorderProps,
7
+ } from '../templates/RoundedWithBorderTemplate.js';
8
+ import type { ComputedBorderValues } from './Border.js';
9
+ import type { ComputedRoundedValues } from './Rounded.js';
10
+ import { roundedRectWithBorder } from './utils/render.js';
11
+
12
+ export type ComputedRoundedWithBorderValues = ComputedRoundedValues &
13
+ ComputedBorderValues & {
14
+ outerBorderRadius: Vec4;
15
+ innerBorderRadius: Vec4;
16
+ };
17
+
18
+ export const RoundedWithBorder: CanvasShaderType<
19
+ RoundedWithBorderProps,
20
+ ComputedRoundedWithBorderValues
21
+ > = {
22
+ props: RoundedWithBorderTemplate.props,
23
+ saveAndRestore: true,
24
+ update(node) {
25
+ const props = this.props!;
26
+ const radius = calcFactoredRadiusArray(
27
+ props.radius as Vec4,
28
+ node.w,
29
+ node.h,
30
+ );
31
+ this.computed.radius = radius;
32
+ this.computed.borderColor = this.toColorString(props['border-color']);
33
+ this.computed.borderAsym = !valuesAreEqual(props['border-w'] as number[]);
34
+ const borderAlign = this.props!['border-align'] as number;
35
+ const borderGap = this.props!['border-gap'] as number;
36
+
37
+ // Calculate outer and inner rectangle dimensions
38
+ const [t, r, b, l] = this.props!['border-w'] as Vec4;
39
+
40
+ const outerX = (this.computed.outerX = -l * borderAlign - borderGap);
41
+ const outerY = (this.computed.outerY = -t * borderAlign - borderGap);
42
+ let outerW = 0;
43
+ let outerH = 0;
44
+
45
+ if (r > 0) {
46
+ outerW += r * borderAlign + borderGap;
47
+ }
48
+ if (l > 0) {
49
+ outerW += l * borderAlign + borderGap;
50
+ }
51
+
52
+ if (b > 0) {
53
+ outerH += b * borderAlign + borderGap;
54
+ }
55
+ if (t > 0) {
56
+ outerH += t * borderAlign + borderGap;
57
+ }
58
+
59
+ this.computed.outerW = outerW;
60
+ this.computed.outerH = outerH;
61
+
62
+ this.computed.innerX = outerX + l;
63
+ this.computed.innerY = outerY + t;
64
+ this.computed.innerW = outerW - l - r;
65
+ this.computed.innerH = outerH - t - b;
66
+
67
+ this.computed.outerBorderRadius = [
68
+ Math.max(0.0, radius[0] + (Math.max(l, r) * borderAlign + borderGap)),
69
+ Math.max(0.0, radius[1] + (Math.max(t, b) * borderAlign + borderGap)),
70
+ Math.max(0.0, radius[2] + (Math.max(b, t) * borderAlign + borderGap)),
71
+ Math.max(0.0, radius[3] + (Math.max(l, r) * borderAlign + borderGap)),
72
+ ];
73
+
74
+ this.computed.innerBorderRadius = [
75
+ Math.max(0.0, this.computed.outerBorderRadius[0] - Math.max(l, r)),
76
+ Math.max(0.0, this.computed.outerBorderRadius[1] - Math.max(t, b)),
77
+ Math.max(0.0, this.computed.outerBorderRadius[2] - Math.max(b, t)),
78
+ Math.max(0.0, this.computed.outerBorderRadius[3] - Math.max(l, r)),
79
+ ];
80
+ },
81
+ render(ctx, quad, renderContext) {
82
+ const computed = this.computed as ComputedRoundedWithBorderValues;
83
+ roundedRectWithBorder(
84
+ ctx,
85
+ quad.tx,
86
+ quad.ty,
87
+ quad.width,
88
+ quad.height,
89
+ computed.radius,
90
+ this.props!['border-gap'] as number,
91
+ computed.outerX,
92
+ computed.outerY,
93
+ computed.outerW,
94
+ computed.outerH,
95
+ computed.outerBorderRadius,
96
+ computed.innerX,
97
+ computed.innerY,
98
+ computed.innerW,
99
+ computed.innerH,
100
+ computed.innerBorderRadius,
101
+ computed.borderColor,
102
+ renderContext,
103
+ );
104
+ },
105
+ };
@@ -0,0 +1,118 @@
1
+ import { calcFactoredRadiusArray, valuesAreEqual } from '../../lib/utils.js';
2
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
3
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
4
+ import {
5
+ RoundedWithBorderAndShadowTemplate,
6
+ type RoundedWithBorderAndShadowProps,
7
+ } from '../templates/RoundedWithBorderAndShadowTemplate.js';
8
+ import type { ComputedRoundedWithBorderValues } from './RoundedWithBorder.js';
9
+ import type { ComputedShadowValues } from './Shadow.js';
10
+ import * as render from './utils/render.js';
11
+
12
+ type ComputedValues = ComputedRoundedWithBorderValues & ComputedShadowValues;
13
+
14
+ export const RoundedWithBorderAndShadow: CanvasShaderType<
15
+ RoundedWithBorderAndShadowProps,
16
+ ComputedValues
17
+ > = {
18
+ props: RoundedWithBorderAndShadowTemplate.props,
19
+ saveAndRestore: true,
20
+ update(node) {
21
+ const props = this.props!;
22
+ const radius = calcFactoredRadiusArray(
23
+ props.radius as Vec4,
24
+ node.w,
25
+ node.h,
26
+ );
27
+ this.computed.radius = radius;
28
+ this.computed.borderColor = this.toColorString(props['border-color']);
29
+ this.computed.borderAsym = !valuesAreEqual(props['border-w'] as number[]);
30
+ const borderAlign = this.props!['border-align'] as number;
31
+ const borderGap = this.props!['border-gap'] as number;
32
+
33
+ // Calculate outer and inner rectangle dimensions
34
+ const [t, r, b, l] = this.props!['border-w'] as Vec4;
35
+
36
+ const outerX = (this.computed.outerX = -l * borderAlign - borderGap);
37
+ const outerY = (this.computed.outerY = -t * borderAlign - borderGap);
38
+ let outerW = 0;
39
+ let outerH = 0;
40
+
41
+ if (r > 0) {
42
+ outerW += r * borderAlign + borderGap;
43
+ }
44
+ if (l > 0) {
45
+ outerW += l * borderAlign + borderGap;
46
+ }
47
+
48
+ if (b > 0) {
49
+ outerH += b * borderAlign + borderGap;
50
+ }
51
+ if (t > 0) {
52
+ outerH += t * borderAlign + borderGap;
53
+ }
54
+
55
+ this.computed.outerW = outerW;
56
+ this.computed.outerH = outerH;
57
+
58
+ this.computed.innerX = outerX + l;
59
+ this.computed.innerY = outerY + t;
60
+ this.computed.innerW = outerW - l - r;
61
+ this.computed.innerH = outerH - t - b;
62
+
63
+ this.computed.outerBorderRadius = [
64
+ Math.max(0.0, radius[0] + (Math.max(l, r) * borderAlign + borderGap)),
65
+ Math.max(0.0, radius[1] + (Math.max(t, b) * borderAlign + borderGap)),
66
+ Math.max(0.0, radius[2] + (Math.max(b, t) * borderAlign + borderGap)),
67
+ Math.max(0.0, radius[3] + (Math.max(l, r) * borderAlign + borderGap)),
68
+ ];
69
+
70
+ this.computed.innerBorderRadius = [
71
+ Math.max(0.0, this.computed.outerBorderRadius[0] - Math.max(l, r)),
72
+ Math.max(0.0, this.computed.outerBorderRadius[1] - Math.max(t, b)),
73
+ Math.max(0.0, this.computed.outerBorderRadius[2] - Math.max(b, t)),
74
+ Math.max(0.0, this.computed.outerBorderRadius[3] - Math.max(l, r)),
75
+ ];
76
+
77
+ this.computed.shadowColor = this.toColorString(props['shadow-color']);
78
+ this.computed.shadowRadius = this.computed.outerBorderRadius.map(
79
+ (value) => value + props['shadow-blur'],
80
+ ) as Vec4;
81
+ },
82
+ render(ctx, quad, renderContext) {
83
+ const { tx, ty, width, height } = quad;
84
+ const computed = this.computed as ComputedValues;
85
+ render.shadow(
86
+ ctx,
87
+ tx + computed.outerX,
88
+ ty + computed.outerY,
89
+ height + computed.outerH,
90
+ width + computed.outerW,
91
+ computed.shadowColor,
92
+ this.props!['shadow-projection'],
93
+ computed.shadowRadius,
94
+ this.stage.pixelRatio,
95
+ );
96
+ render.roundedRectWithBorder(
97
+ ctx,
98
+ quad.tx,
99
+ quad.ty,
100
+ quad.width,
101
+ quad.height,
102
+ computed.radius,
103
+ this.props!['border-gap'] as number,
104
+ computed.outerX,
105
+ computed.outerY,
106
+ computed.outerW,
107
+ computed.outerH,
108
+ computed.outerBorderRadius,
109
+ computed.innerX,
110
+ computed.innerY,
111
+ computed.innerW,
112
+ computed.innerH,
113
+ computed.innerBorderRadius,
114
+ computed.borderColor,
115
+ renderContext,
116
+ );
117
+ },
118
+ };
@@ -0,0 +1,56 @@
1
+ import { calcFactoredRadiusArray } from '../../lib/utils.js';
2
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
3
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
4
+ import {
5
+ RoundedWithShadowTemplate,
6
+ type RoundedWithShadowProps,
7
+ } from '../templates/RoundedWithShadowTemplate.js';
8
+ import type { ComputedRoundedValues } from './Rounded.js';
9
+ import type { ComputedShadowValues } from './Shadow.js';
10
+ import * as render from './utils/render.js';
11
+
12
+ type ComputedValues = ComputedRoundedValues & ComputedShadowValues;
13
+
14
+ export const RoundedWithShadow: CanvasShaderType<
15
+ RoundedWithShadowProps,
16
+ ComputedValues
17
+ > = {
18
+ props: RoundedWithShadowTemplate.props,
19
+ saveAndRestore: true,
20
+ update(node) {
21
+ const props = this.props!;
22
+ const radius = calcFactoredRadiusArray(
23
+ props.radius as Vec4,
24
+ node.w,
25
+ node.h,
26
+ );
27
+ this.computed.radius = radius;
28
+ this.computed.shadowColor = this.toColorString(props['shadow-color']);
29
+ this.computed.shadowRadius = radius.map(
30
+ (value) => value + props['shadow-blur'],
31
+ ) as Vec4;
32
+ },
33
+ render(ctx, quad, renderContext) {
34
+ const { tx, ty, width, height } = quad;
35
+ const computed = this.computed as ComputedValues;
36
+
37
+ if (this.props!['shadow-color'] !== 0) {
38
+ render.shadow(
39
+ ctx,
40
+ tx,
41
+ ty,
42
+ width,
43
+ height,
44
+ computed.shadowColor,
45
+ this.props!['shadow-projection'],
46
+ computed.shadowRadius,
47
+ this.stage.pixelRatio,
48
+ );
49
+ }
50
+
51
+ const path = new Path2D();
52
+ render.roundRect(path, tx, ty, width, height, computed.radius);
53
+ ctx.clip(path);
54
+ renderContext();
55
+ },
56
+ };
@@ -0,0 +1,35 @@
1
+ import type { CanvasShaderType } from '../../renderers/canvas/CanvasShaderNode.js';
2
+ import type { Vec4 } from '../../renderers/webgl/internal/ShaderUtils.js';
3
+ import {
4
+ ShadowTemplate,
5
+ type ShadowProps,
6
+ } from '../templates/ShadowTemplate.js';
7
+ import { shadow } from './utils/render.js';
8
+
9
+ export interface ComputedShadowValues {
10
+ shadowColor: string;
11
+ shadowRadius: Vec4;
12
+ }
13
+
14
+ export const Shadow: CanvasShaderType<ShadowProps, ComputedShadowValues> = {
15
+ props: ShadowTemplate.props,
16
+ update() {
17
+ this.computed.shadowColor = this.toColorString(this.props!['color']);
18
+ const blur = this.props!['blur'];
19
+ this.computed.shadowRadius = [blur, blur, blur, blur];
20
+ },
21
+ render(ctx, quad, renderContext) {
22
+ shadow(
23
+ ctx,
24
+ quad.tx,
25
+ quad.ty,
26
+ quad.width,
27
+ quad.height,
28
+ this.computed.shadowColor!,
29
+ this.props!['projection'],
30
+ this.computed.shadowRadius!,
31
+ this.stage.pixelRatio,
32
+ );
33
+ renderContext();
34
+ },
35
+ };