@lightningjs/renderer 2.14.2 → 2.14.4

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 (310) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/src/core/CoreTextNode.js +2 -2
  5. package/dist/src/core/CoreTextNode.js.map +1 -1
  6. package/dist/src/core/CoreTextureManager.d.ts +4 -3
  7. package/dist/src/core/CoreTextureManager.js +33 -23
  8. package/dist/src/core/CoreTextureManager.js.map +1 -1
  9. package/dist/src/core/Stage.js +7 -2
  10. package/dist/src/core/Stage.js.map +1 -1
  11. package/dist/src/core/TextureMemoryManager.d.ts +1 -1
  12. package/dist/src/core/TextureMemoryManager.js +25 -2
  13. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  14. package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
  15. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -1
  16. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +7 -6
  17. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  18. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
  19. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  20. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +5 -6
  21. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +30 -18
  22. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  23. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js +2 -0
  24. package/dist/src/core/renderers/webgl/WebGlCoreShader.destroy.js.map +1 -0
  25. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  26. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  27. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  28. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  29. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  30. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  31. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  32. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  33. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  34. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  35. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  36. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  37. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  38. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  39. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  40. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  41. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  42. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  43. package/dist/src/core/textures/ImageTexture.d.ts +1 -1
  44. package/dist/src/core/textures/ImageTexture.js +1 -1
  45. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  46. package/dist/src/core/textures/Texture.d.ts +4 -0
  47. package/dist/src/core/textures/Texture.js +9 -3
  48. package/dist/src/core/textures/Texture.js.map +1 -1
  49. package/dist/src/main-api/Renderer.js +1 -1
  50. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  51. package/exports/canvas.ts +39 -39
  52. package/exports/index.ts +89 -89
  53. package/exports/inspector.ts +24 -24
  54. package/exports/utils.ts +44 -44
  55. package/exports/webgl.ts +38 -38
  56. package/package.json +1 -1
  57. package/scripts/please-use-pnpm.js +13 -13
  58. package/src/common/CommonTypes.ts +146 -146
  59. package/src/common/EventEmitter.ts +77 -77
  60. package/src/common/IAnimationController.ts +92 -92
  61. package/src/common/IEventEmitter.ts +28 -28
  62. package/src/core/CoreNode.test.ts +202 -202
  63. package/src/core/CoreNode.ts +2468 -2468
  64. package/src/core/CoreShaderManager.ts +292 -292
  65. package/src/core/CoreTextNode.ts +455 -455
  66. package/src/core/CoreTextureManager.ts +561 -558
  67. package/src/core/Stage.ts +748 -743
  68. package/src/core/TextureMemoryManager.ts +431 -404
  69. package/src/core/animations/AnimationManager.ts +38 -38
  70. package/src/core/animations/CoreAnimation.ts +347 -347
  71. package/src/core/animations/CoreAnimationController.ts +166 -166
  72. package/src/core/lib/ContextSpy.ts +41 -41
  73. package/src/core/lib/ImageWorker.ts +280 -280
  74. package/src/core/lib/Matrix3d.ts +244 -244
  75. package/src/core/lib/RenderCoords.ts +86 -86
  76. package/src/core/lib/WebGlContextWrapper.ts +1332 -1332
  77. package/src/core/lib/textureCompression.ts +152 -152
  78. package/src/core/lib/textureSvg.ts +78 -78
  79. package/src/core/lib/utils.ts +384 -384
  80. package/src/core/lib/validateImageBitmap.ts +76 -76
  81. package/src/core/platform.ts +63 -63
  82. package/src/core/renderers/CoreContextTexture.ts +43 -43
  83. package/src/core/renderers/CoreRenderOp.ts +22 -22
  84. package/src/core/renderers/CoreRenderer.ts +115 -115
  85. package/src/core/renderers/CoreShader.ts +41 -41
  86. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +375 -375
  87. package/src/core/renderers/canvas/CanvasCoreTexture.ts +153 -153
  88. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +231 -231
  89. package/src/core/renderers/canvas/internal/ColorUtils.ts +69 -69
  90. package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +48 -48
  91. package/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.ts +91 -86
  92. package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +50 -50
  93. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +313 -301
  94. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +125 -125
  95. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +821 -821
  96. package/src/core/renderers/webgl/WebGlCoreShader.ts +365 -365
  97. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  98. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  99. package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -143
  100. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  101. package/src/core/renderers/webgl/shaders/DefaultShader.ts +93 -93
  102. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +132 -132
  103. package/src/core/renderers/webgl/shaders/DynamicShader.ts +580 -580
  104. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +167 -167
  105. package/src/core/renderers/webgl/shaders/SdfShader.ts +204 -204
  106. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +101 -101
  107. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +87 -87
  108. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +101 -101
  109. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +101 -101
  110. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +101 -101
  111. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +159 -159
  112. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +127 -127
  113. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +148 -148
  114. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +67 -67
  115. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +157 -157
  116. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +171 -171
  117. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +168 -168
  118. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +187 -187
  119. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +110 -110
  120. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +196 -196
  121. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  122. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  123. package/src/core/text-rendering/TrFontManager.ts +183 -183
  124. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  125. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  126. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  127. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  128. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  129. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  130. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  131. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
  132. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +808 -808
  133. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +853 -853
  134. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  135. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  136. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  137. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  138. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  139. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  140. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  141. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
  142. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  143. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  144. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  145. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  146. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  147. package/src/core/text-rendering/renderers/TextRenderer.ts +557 -557
  148. package/src/core/textures/ColorTexture.ts +102 -102
  149. package/src/core/textures/ImageTexture.ts +400 -399
  150. package/src/core/textures/NoiseTexture.ts +104 -104
  151. package/src/core/textures/RenderTexture.ts +85 -85
  152. package/src/core/textures/SubTexture.ts +205 -205
  153. package/src/core/textures/Texture.ts +376 -367
  154. package/src/core/utils.ts +227 -227
  155. package/src/env.d.ts +7 -7
  156. package/src/main-api/DynamicShaderController.ts +104 -104
  157. package/src/main-api/INode.ts +101 -101
  158. package/src/main-api/Inspector.ts +522 -522
  159. package/src/main-api/Renderer.ts +751 -751
  160. package/src/main-api/ShaderController.ts +80 -80
  161. package/src/main-api/utils.ts +45 -45
  162. package/src/utils.ts +248 -248
  163. package/COPYING +0 -1
  164. package/dist/exports/canvas-shaders.d.ts +0 -10
  165. package/dist/exports/canvas-shaders.js +0 -27
  166. package/dist/exports/canvas-shaders.js.map +0 -1
  167. package/dist/exports/webgl-shaders.d.ts +0 -11
  168. package/dist/exports/webgl-shaders.js +0 -28
  169. package/dist/exports/webgl-shaders.js.map +0 -1
  170. package/dist/src/core/platforms/Platform.d.ts +0 -37
  171. package/dist/src/core/platforms/Platform.js +0 -22
  172. package/dist/src/core/platforms/Platform.js.map +0 -1
  173. package/dist/src/core/platforms/web/WebPlatform.d.ts +0 -9
  174. package/dist/src/core/platforms/web/WebPlatform.js +0 -58
  175. package/dist/src/core/platforms/web/WebPlatform.js.map +0 -1
  176. package/dist/src/core/renderers/CoreShaderNode.d.ts +0 -58
  177. package/dist/src/core/renderers/CoreShaderNode.js +0 -104
  178. package/dist/src/core/renderers/CoreShaderNode.js.map +0 -1
  179. package/dist/src/core/renderers/CoreShaderProgram.d.ts +0 -4
  180. package/dist/src/core/renderers/CoreShaderProgram.js +0 -20
  181. package/dist/src/core/renderers/CoreShaderProgram.js.map +0 -1
  182. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -36
  183. package/dist/src/core/renderers/canvas/CanvasRenderer.js +0 -212
  184. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +0 -1
  185. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -21
  186. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -60
  187. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +0 -1
  188. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +0 -16
  189. package/dist/src/core/renderers/canvas/CanvasTexture.js +0 -124
  190. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +0 -1
  191. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +0 -12
  192. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +0 -55
  193. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +0 -1
  194. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +0 -9
  195. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +0 -38
  196. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +0 -1
  197. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +0 -57
  198. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -227
  199. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +0 -1
  200. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  201. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
  202. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  203. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +0 -135
  204. package/dist/src/core/renderers/webgl/WebGlRenderer.js +0 -571
  205. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +0 -1
  206. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -222
  207. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -334
  208. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +0 -1
  209. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +0 -35
  210. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +0 -201
  211. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +0 -1
  212. package/dist/src/core/shaders/canvas/Border.d.ts +0 -9
  213. package/dist/src/core/shaders/canvas/Border.js +0 -57
  214. package/dist/src/core/shaders/canvas/Border.js.map +0 -1
  215. package/dist/src/core/shaders/canvas/HolePunch.d.ts +0 -7
  216. package/dist/src/core/shaders/canvas/HolePunch.js +0 -38
  217. package/dist/src/core/shaders/canvas/HolePunch.js.map +0 -1
  218. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +0 -10
  219. package/dist/src/core/shaders/canvas/LinearGradient.js +0 -46
  220. package/dist/src/core/shaders/canvas/LinearGradient.js.map +0 -1
  221. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +0 -11
  222. package/dist/src/core/shaders/canvas/RadialGradient.js +0 -68
  223. package/dist/src/core/shaders/canvas/RadialGradient.js.map +0 -1
  224. package/dist/src/core/shaders/canvas/Rounded.d.ts +0 -7
  225. package/dist/src/core/shaders/canvas/Rounded.js +0 -33
  226. package/dist/src/core/shaders/canvas/Rounded.js.map +0 -1
  227. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +0 -7
  228. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +0 -41
  229. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +0 -1
  230. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +0 -8
  231. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +0 -39
  232. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +0 -1
  233. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +0 -7
  234. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +0 -38
  235. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +0 -1
  236. package/dist/src/core/shaders/canvas/Shadow.d.ts +0 -8
  237. package/dist/src/core/shaders/canvas/Shadow.js +0 -31
  238. package/dist/src/core/shaders/canvas/Shadow.js.map +0 -1
  239. package/dist/src/core/shaders/canvas/utils/render.d.ts +0 -5
  240. package/dist/src/core/shaders/canvas/utils/render.js +0 -84
  241. package/dist/src/core/shaders/canvas/utils/render.js.map +0 -1
  242. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +0 -37
  243. package/dist/src/core/shaders/templates/BorderTemplate.js +0 -73
  244. package/dist/src/core/shaders/templates/BorderTemplate.js.map +0 -1
  245. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +0 -46
  246. package/dist/src/core/shaders/templates/HolePunchTemplate.js +0 -35
  247. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +0 -1
  248. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +0 -23
  249. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -47
  250. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +0 -1
  251. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +0 -31
  252. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +0 -49
  253. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +0 -1
  254. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +0 -29
  255. package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -67
  256. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +0 -1
  257. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +0 -7
  258. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -24
  259. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +0 -1
  260. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +0 -6
  261. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +0 -23
  262. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +0 -1
  263. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +0 -6
  264. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -23
  265. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +0 -1
  266. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +0 -34
  267. package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -66
  268. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +0 -1
  269. package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
  270. package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
  271. package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
  272. package/dist/src/core/shaders/webgl/Border.d.ts +0 -3
  273. package/dist/src/core/shaders/webgl/Border.js +0 -110
  274. package/dist/src/core/shaders/webgl/Border.js.map +0 -1
  275. package/dist/src/core/shaders/webgl/Default.d.ts +0 -2
  276. package/dist/src/core/shaders/webgl/Default.js +0 -86
  277. package/dist/src/core/shaders/webgl/Default.js.map +0 -1
  278. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
  279. package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
  280. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
  281. package/dist/src/core/shaders/webgl/HolePunch.d.ts +0 -3
  282. package/dist/src/core/shaders/webgl/HolePunch.js +0 -64
  283. package/dist/src/core/shaders/webgl/HolePunch.js.map +0 -1
  284. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +0 -3
  285. package/dist/src/core/shaders/webgl/LinearGradient.js +0 -75
  286. package/dist/src/core/shaders/webgl/LinearGradient.js.map +0 -1
  287. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +0 -3
  288. package/dist/src/core/shaders/webgl/RadialGradient.js +0 -73
  289. package/dist/src/core/shaders/webgl/RadialGradient.js.map +0 -1
  290. package/dist/src/core/shaders/webgl/Rounded.d.ts +0 -7
  291. package/dist/src/core/shaders/webgl/Rounded.js +0 -86
  292. package/dist/src/core/shaders/webgl/Rounded.js.map +0 -1
  293. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +0 -3
  294. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +0 -129
  295. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +0 -1
  296. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +0 -3
  297. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +0 -149
  298. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +0 -1
  299. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +0 -3
  300. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +0 -84
  301. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +0 -1
  302. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -32
  303. package/dist/src/core/shaders/webgl/SdfShader.js +0 -116
  304. package/dist/src/core/shaders/webgl/SdfShader.js.map +0 -1
  305. package/dist/src/core/shaders/webgl/Shadow.d.ts +0 -3
  306. package/dist/src/core/shaders/webgl/Shadow.js +0 -110
  307. package/dist/src/core/shaders/webgl/Shadow.js.map +0 -1
  308. package/dist/src/core/temp.js +0 -77
  309. package/dist/src/core/temp.js.map +0 -1
  310. /package/dist/src/core/{temp.d.ts → renderers/webgl/WebGlCoreShader.destroy.d.ts} +0 -0
@@ -1,375 +1,375 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2023 Comcast Cable Communications Management, LLC.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
- import type { BaseShaderController } from '../../../main-api/ShaderController.js';
21
- import type { CoreNode } from '../../CoreNode.js';
22
- import type { CoreShaderManager } from '../../CoreShaderManager.js';
23
- import { getRgbaComponents, type RGBA } from '../../lib/utils.js';
24
- import { SubTexture } from '../../textures/SubTexture.js';
25
- import { TextureType, type Texture } from '../../textures/Texture.js';
26
- import type { CoreContextTexture } from '../CoreContextTexture.js';
27
- import {
28
- CoreRenderer,
29
- type CoreRendererOptions,
30
- type QuadOptions,
31
- } from '../CoreRenderer.js';
32
- import { CanvasCoreTexture } from './CanvasCoreTexture.js';
33
- import {
34
- getBorder,
35
- getRadius,
36
- roundRect,
37
- strokeLine,
38
- } from './internal/C2DShaderUtils.js';
39
- import {
40
- formatRgba,
41
- parseColorRgba,
42
- parseColor,
43
- type IParsedColor,
44
- } from './internal/ColorUtils.js';
45
- import { UnsupportedShader } from './shaders/UnsupportedShader.js';
46
- import { assertTruthy } from '../../../utils.js';
47
-
48
- export class CanvasCoreRenderer extends CoreRenderer {
49
- private context: CanvasRenderingContext2D;
50
- private canvas: HTMLCanvasElement;
51
- private pixelRatio: number;
52
- private clearColor: RGBA | undefined;
53
- public renderToTextureActive = false;
54
- activeRttNode: CoreNode | null = null;
55
- private defShaderCtr: BaseShaderController;
56
-
57
- constructor(options: CoreRendererOptions) {
58
- super(options);
59
-
60
- this.mode = 'canvas';
61
- this.shManager.renderer = this;
62
-
63
- const { canvas, pixelRatio, clearColor } = options;
64
- this.canvas = canvas as HTMLCanvasElement;
65
- this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
66
- this.pixelRatio = pixelRatio;
67
- this.clearColor = clearColor ? getRgbaComponents(clearColor) : undefined;
68
-
69
- // Stub for default shader controller since the canvas renderer does not
70
- // (really) support the concept of a shader (yet)
71
- this.defShaderCtr = {
72
- type: 'DefaultShader',
73
- props: {},
74
- shader: new UnsupportedShader('DefaultShader'),
75
- getResolvedProps: () => () => {
76
- return {};
77
- },
78
- };
79
- }
80
-
81
- reset(): void {
82
- this.canvas.width = this.canvas.width; // quick reset canvas
83
-
84
- const ctx = this.context;
85
-
86
- if (this.clearColor) {
87
- const [r, g, b, a] = this.clearColor;
88
- ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${a / 255})`;
89
- ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
90
- }
91
-
92
- ctx.scale(this.pixelRatio, this.pixelRatio);
93
- }
94
-
95
- render(): void {
96
- // noop
97
- }
98
-
99
- addQuad(quad: QuadOptions): void {
100
- const ctx = this.context;
101
- const {
102
- tx,
103
- ty,
104
- width,
105
- height,
106
- alpha,
107
- colorTl,
108
- colorTr,
109
- colorBr,
110
- ta,
111
- tb,
112
- tc,
113
- td,
114
- clippingRect,
115
- } = quad;
116
- let texture = quad.texture;
117
- let ctxTexture: CanvasCoreTexture | undefined = undefined;
118
- let frame:
119
- | { x: number; y: number; width: number; height: number }
120
- | undefined;
121
-
122
- const textureType = texture?.type;
123
- assertTruthy(textureType, 'Texture type is not defined');
124
-
125
- // The Canvas2D renderer only supports image and color textures and subTexture images
126
- if (
127
- textureType !== TextureType.image &&
128
- textureType !== TextureType.color &&
129
- textureType !== TextureType.subTexture &&
130
- textureType !== TextureType.noise
131
- ) {
132
- return;
133
- }
134
-
135
- if (texture) {
136
- if (texture instanceof SubTexture) {
137
- frame = texture.props;
138
- texture = texture.parentTexture;
139
- }
140
-
141
- ctxTexture = texture.ctxTexture as CanvasCoreTexture;
142
- if (texture.state === 'freed') {
143
- return;
144
- }
145
- if (texture.state !== 'loaded') {
146
- return;
147
- }
148
- }
149
-
150
- const color = parseColor(colorTl);
151
- const hasTransform = ta !== 1;
152
- const hasClipping = clippingRect.width !== 0 && clippingRect.height !== 0;
153
- const hasGradient = colorTl !== colorTr || colorTl !== colorBr;
154
- const hasQuadShader = Boolean(quad.shader);
155
- const radius = hasQuadShader ? getRadius(quad) : 0;
156
- const border = hasQuadShader ? getBorder(quad) : undefined;
157
-
158
- if (hasTransform || hasClipping || radius) {
159
- ctx.save();
160
- }
161
-
162
- if (hasClipping) {
163
- const path = new Path2D();
164
- const { x, y, width, height } = clippingRect;
165
- path.rect(x, y, width, height);
166
- ctx.clip(path);
167
- }
168
-
169
- if (hasTransform) {
170
- // Quad transform:
171
- // | ta tb tx |
172
- // | tc td ty |
173
- // | 0 0 1 |
174
- // C2D transform:
175
- // | a c e |
176
- // | b d f |
177
- // | 0 0 1 |
178
- const scale = this.pixelRatio;
179
- ctx.setTransform(ta, tc, tb, td, tx * scale, ty * scale);
180
- ctx.scale(scale, scale);
181
- ctx.translate(-tx, -ty);
182
- }
183
-
184
- if (radius) {
185
- const path = new Path2D();
186
- roundRect.call(path, tx, ty, width, height, radius);
187
- ctx.clip(path);
188
- }
189
-
190
- if (
191
- (textureType === TextureType.image ||
192
- textureType === TextureType.subTexture ||
193
- textureType === TextureType.noise) &&
194
- ctxTexture
195
- ) {
196
- const image = ctxTexture.getImage(color);
197
- ctx.globalAlpha = color.a ?? alpha;
198
- if (frame) {
199
- ctx.drawImage(
200
- image,
201
- frame.x,
202
- frame.y,
203
- frame.width,
204
- frame.height,
205
- tx,
206
- ty,
207
- width,
208
- height,
209
- );
210
- } else {
211
- try {
212
- ctx.drawImage(image, tx, ty, width, height);
213
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
214
- } catch (error) {
215
- // noop
216
- }
217
- }
218
- ctx.globalAlpha = 1;
219
- } else if (textureType === TextureType.color && hasGradient) {
220
- let endX: number = tx;
221
- let endY: number = ty;
222
- let endColor: IParsedColor;
223
- if (colorTl === colorTr) {
224
- // vertical
225
- endX = tx;
226
- endY = ty + height;
227
- endColor = parseColor(colorBr);
228
- } else {
229
- // horizontal
230
- endX = tx + width;
231
- endY = ty;
232
- endColor = parseColor(colorTr);
233
- }
234
- const gradient = ctx.createLinearGradient(tx, ty, endX, endY);
235
- gradient.addColorStop(0, formatRgba(color));
236
- gradient.addColorStop(1, formatRgba(endColor));
237
- ctx.fillStyle = gradient;
238
- ctx.fillRect(tx, ty, width, height);
239
- } else if (textureType === TextureType.color) {
240
- ctx.fillStyle = formatRgba(color);
241
- ctx.fillRect(tx, ty, width, height);
242
- }
243
-
244
- if (border && border.width) {
245
- const borderWidth = border.width;
246
- const borderInnerWidth = border.width / 2;
247
- const borderColor = formatRgba(parseColorRgba(border.color ?? 0));
248
-
249
- ctx.beginPath();
250
- ctx.lineWidth = borderWidth;
251
- ctx.strokeStyle = borderColor;
252
- ctx.globalAlpha = alpha;
253
- if (radius) {
254
- roundRect.call(
255
- ctx,
256
- tx + borderInnerWidth,
257
- ty + borderInnerWidth,
258
- width - borderWidth,
259
- height - borderWidth,
260
- radius,
261
- );
262
- ctx.stroke();
263
- } else {
264
- ctx.strokeRect(
265
- tx + borderInnerWidth,
266
- ty + borderInnerWidth,
267
- width - borderWidth,
268
- height - borderWidth,
269
- );
270
- }
271
- ctx.globalAlpha = 1;
272
- } else if (hasQuadShader) {
273
- const borderTop = getBorder(quad, 'Top');
274
- const borderRight = getBorder(quad, 'Right');
275
- const borderBottom = getBorder(quad, 'Bottom');
276
- const borderLeft = getBorder(quad, 'Left');
277
-
278
- if (borderTop) {
279
- strokeLine(
280
- ctx,
281
- tx,
282
- ty,
283
- width,
284
- height,
285
- borderTop.width,
286
- borderTop.color,
287
- 'Top',
288
- );
289
- }
290
-
291
- if (borderRight) {
292
- strokeLine(
293
- ctx,
294
- tx,
295
- ty,
296
- width,
297
- height,
298
- borderRight.width,
299
- borderRight.color,
300
- 'Right',
301
- );
302
- }
303
-
304
- if (borderBottom) {
305
- strokeLine(
306
- ctx,
307
- tx,
308
- ty,
309
- width,
310
- height,
311
- borderBottom.width,
312
- borderBottom.color,
313
- 'Bottom',
314
- );
315
- }
316
-
317
- if (borderLeft) {
318
- strokeLine(
319
- ctx,
320
- tx,
321
- ty,
322
- width,
323
- height,
324
- borderLeft.width,
325
- borderLeft.color,
326
- 'Left',
327
- );
328
- }
329
- }
330
-
331
- if (hasTransform || hasClipping || radius) {
332
- ctx.restore();
333
- }
334
- }
335
-
336
- createCtxTexture(textureSource: Texture): CoreContextTexture {
337
- return new CanvasCoreTexture(this.txMemManager, textureSource);
338
- }
339
-
340
- getShaderManager(): CoreShaderManager {
341
- return this.shManager;
342
- }
343
-
344
- override getDefShaderCtr(): BaseShaderController {
345
- return this.defShaderCtr;
346
- }
347
-
348
- renderRTTNodes(): void {
349
- // noop
350
- }
351
-
352
- removeRTTNode(node: CoreNode): void {
353
- // noop
354
- }
355
-
356
- renderToTexture(node: CoreNode): void {
357
- // noop
358
- }
359
- getBufferInfo(): null {
360
- return null;
361
- }
362
-
363
- getQuadCount(): null {
364
- return null;
365
- }
366
-
367
- /**
368
- * Updates the clear color of the canvas renderer.
369
- *
370
- * @param color - The color to set as the clear color.
371
- */
372
- updateClearColor(color: number) {
373
- this.clearColor = color ? getRgbaComponents(color) : undefined;
374
- }
375
- }
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+
20
+ import type { BaseShaderController } from '../../../main-api/ShaderController.js';
21
+ import type { CoreNode } from '../../CoreNode.js';
22
+ import type { CoreShaderManager } from '../../CoreShaderManager.js';
23
+ import { getRgbaComponents, type RGBA } from '../../lib/utils.js';
24
+ import { SubTexture } from '../../textures/SubTexture.js';
25
+ import { TextureType, type Texture } from '../../textures/Texture.js';
26
+ import type { CoreContextTexture } from '../CoreContextTexture.js';
27
+ import {
28
+ CoreRenderer,
29
+ type CoreRendererOptions,
30
+ type QuadOptions,
31
+ } from '../CoreRenderer.js';
32
+ import { CanvasCoreTexture } from './CanvasCoreTexture.js';
33
+ import {
34
+ getBorder,
35
+ getRadius,
36
+ roundRect,
37
+ strokeLine,
38
+ } from './internal/C2DShaderUtils.js';
39
+ import {
40
+ formatRgba,
41
+ parseColorRgba,
42
+ parseColor,
43
+ type IParsedColor,
44
+ } from './internal/ColorUtils.js';
45
+ import { UnsupportedShader } from './shaders/UnsupportedShader.js';
46
+ import { assertTruthy } from '../../../utils.js';
47
+
48
+ export class CanvasCoreRenderer extends CoreRenderer {
49
+ private context: CanvasRenderingContext2D;
50
+ private canvas: HTMLCanvasElement;
51
+ private pixelRatio: number;
52
+ private clearColor: RGBA | undefined;
53
+ public renderToTextureActive = false;
54
+ activeRttNode: CoreNode | null = null;
55
+ private defShaderCtr: BaseShaderController;
56
+
57
+ constructor(options: CoreRendererOptions) {
58
+ super(options);
59
+
60
+ this.mode = 'canvas';
61
+ this.shManager.renderer = this;
62
+
63
+ const { canvas, pixelRatio, clearColor } = options;
64
+ this.canvas = canvas as HTMLCanvasElement;
65
+ this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
66
+ this.pixelRatio = pixelRatio;
67
+ this.clearColor = clearColor ? getRgbaComponents(clearColor) : undefined;
68
+
69
+ // Stub for default shader controller since the canvas renderer does not
70
+ // (really) support the concept of a shader (yet)
71
+ this.defShaderCtr = {
72
+ type: 'DefaultShader',
73
+ props: {},
74
+ shader: new UnsupportedShader('DefaultShader'),
75
+ getResolvedProps: () => () => {
76
+ return {};
77
+ },
78
+ };
79
+ }
80
+
81
+ reset(): void {
82
+ this.canvas.width = this.canvas.width; // quick reset canvas
83
+
84
+ const ctx = this.context;
85
+
86
+ if (this.clearColor) {
87
+ const [r, g, b, a] = this.clearColor;
88
+ ctx.fillStyle = `rgba(${r}, ${g}, ${b}, ${a / 255})`;
89
+ ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
90
+ }
91
+
92
+ ctx.scale(this.pixelRatio, this.pixelRatio);
93
+ }
94
+
95
+ render(): void {
96
+ // noop
97
+ }
98
+
99
+ addQuad(quad: QuadOptions): void {
100
+ const ctx = this.context;
101
+ const {
102
+ tx,
103
+ ty,
104
+ width,
105
+ height,
106
+ alpha,
107
+ colorTl,
108
+ colorTr,
109
+ colorBr,
110
+ ta,
111
+ tb,
112
+ tc,
113
+ td,
114
+ clippingRect,
115
+ } = quad;
116
+ let texture = quad.texture;
117
+ let ctxTexture: CanvasCoreTexture | undefined = undefined;
118
+ let frame:
119
+ | { x: number; y: number; width: number; height: number }
120
+ | undefined;
121
+
122
+ const textureType = texture?.type;
123
+ assertTruthy(textureType, 'Texture type is not defined');
124
+
125
+ // The Canvas2D renderer only supports image and color textures and subTexture images
126
+ if (
127
+ textureType !== TextureType.image &&
128
+ textureType !== TextureType.color &&
129
+ textureType !== TextureType.subTexture &&
130
+ textureType !== TextureType.noise
131
+ ) {
132
+ return;
133
+ }
134
+
135
+ if (texture) {
136
+ if (texture instanceof SubTexture) {
137
+ frame = texture.props;
138
+ texture = texture.parentTexture;
139
+ }
140
+
141
+ ctxTexture = texture.ctxTexture as CanvasCoreTexture;
142
+ if (texture.state === 'freed') {
143
+ return;
144
+ }
145
+ if (texture.state !== 'loaded') {
146
+ return;
147
+ }
148
+ }
149
+
150
+ const color = parseColor(colorTl);
151
+ const hasTransform = ta !== 1;
152
+ const hasClipping = clippingRect.width !== 0 && clippingRect.height !== 0;
153
+ const hasGradient = colorTl !== colorTr || colorTl !== colorBr;
154
+ const hasQuadShader = Boolean(quad.shader);
155
+ const radius = hasQuadShader ? getRadius(quad) : 0;
156
+ const border = hasQuadShader ? getBorder(quad) : undefined;
157
+
158
+ if (hasTransform || hasClipping || radius) {
159
+ ctx.save();
160
+ }
161
+
162
+ if (hasClipping) {
163
+ const path = new Path2D();
164
+ const { x, y, width, height } = clippingRect;
165
+ path.rect(x, y, width, height);
166
+ ctx.clip(path);
167
+ }
168
+
169
+ if (hasTransform) {
170
+ // Quad transform:
171
+ // | ta tb tx |
172
+ // | tc td ty |
173
+ // | 0 0 1 |
174
+ // C2D transform:
175
+ // | a c e |
176
+ // | b d f |
177
+ // | 0 0 1 |
178
+ const scale = this.pixelRatio;
179
+ ctx.setTransform(ta, tc, tb, td, tx * scale, ty * scale);
180
+ ctx.scale(scale, scale);
181
+ ctx.translate(-tx, -ty);
182
+ }
183
+
184
+ if (radius) {
185
+ const path = new Path2D();
186
+ roundRect.call(path, tx, ty, width, height, radius);
187
+ ctx.clip(path);
188
+ }
189
+
190
+ if (
191
+ (textureType === TextureType.image ||
192
+ textureType === TextureType.subTexture ||
193
+ textureType === TextureType.noise) &&
194
+ ctxTexture
195
+ ) {
196
+ const image = ctxTexture.getImage(color);
197
+ ctx.globalAlpha = color.a ?? alpha;
198
+ if (frame) {
199
+ ctx.drawImage(
200
+ image,
201
+ frame.x,
202
+ frame.y,
203
+ frame.width,
204
+ frame.height,
205
+ tx,
206
+ ty,
207
+ width,
208
+ height,
209
+ );
210
+ } else {
211
+ try {
212
+ ctx.drawImage(image, tx, ty, width, height);
213
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
214
+ } catch (error) {
215
+ // noop
216
+ }
217
+ }
218
+ ctx.globalAlpha = 1;
219
+ } else if (textureType === TextureType.color && hasGradient) {
220
+ let endX: number = tx;
221
+ let endY: number = ty;
222
+ let endColor: IParsedColor;
223
+ if (colorTl === colorTr) {
224
+ // vertical
225
+ endX = tx;
226
+ endY = ty + height;
227
+ endColor = parseColor(colorBr);
228
+ } else {
229
+ // horizontal
230
+ endX = tx + width;
231
+ endY = ty;
232
+ endColor = parseColor(colorTr);
233
+ }
234
+ const gradient = ctx.createLinearGradient(tx, ty, endX, endY);
235
+ gradient.addColorStop(0, formatRgba(color));
236
+ gradient.addColorStop(1, formatRgba(endColor));
237
+ ctx.fillStyle = gradient;
238
+ ctx.fillRect(tx, ty, width, height);
239
+ } else if (textureType === TextureType.color) {
240
+ ctx.fillStyle = formatRgba(color);
241
+ ctx.fillRect(tx, ty, width, height);
242
+ }
243
+
244
+ if (border && border.width) {
245
+ const borderWidth = border.width;
246
+ const borderInnerWidth = border.width / 2;
247
+ const borderColor = formatRgba(parseColorRgba(border.color ?? 0));
248
+
249
+ ctx.beginPath();
250
+ ctx.lineWidth = borderWidth;
251
+ ctx.strokeStyle = borderColor;
252
+ ctx.globalAlpha = alpha;
253
+ if (radius) {
254
+ roundRect.call(
255
+ ctx,
256
+ tx + borderInnerWidth,
257
+ ty + borderInnerWidth,
258
+ width - borderWidth,
259
+ height - borderWidth,
260
+ radius,
261
+ );
262
+ ctx.stroke();
263
+ } else {
264
+ ctx.strokeRect(
265
+ tx + borderInnerWidth,
266
+ ty + borderInnerWidth,
267
+ width - borderWidth,
268
+ height - borderWidth,
269
+ );
270
+ }
271
+ ctx.globalAlpha = 1;
272
+ } else if (hasQuadShader) {
273
+ const borderTop = getBorder(quad, 'Top');
274
+ const borderRight = getBorder(quad, 'Right');
275
+ const borderBottom = getBorder(quad, 'Bottom');
276
+ const borderLeft = getBorder(quad, 'Left');
277
+
278
+ if (borderTop) {
279
+ strokeLine(
280
+ ctx,
281
+ tx,
282
+ ty,
283
+ width,
284
+ height,
285
+ borderTop.width,
286
+ borderTop.color,
287
+ 'Top',
288
+ );
289
+ }
290
+
291
+ if (borderRight) {
292
+ strokeLine(
293
+ ctx,
294
+ tx,
295
+ ty,
296
+ width,
297
+ height,
298
+ borderRight.width,
299
+ borderRight.color,
300
+ 'Right',
301
+ );
302
+ }
303
+
304
+ if (borderBottom) {
305
+ strokeLine(
306
+ ctx,
307
+ tx,
308
+ ty,
309
+ width,
310
+ height,
311
+ borderBottom.width,
312
+ borderBottom.color,
313
+ 'Bottom',
314
+ );
315
+ }
316
+
317
+ if (borderLeft) {
318
+ strokeLine(
319
+ ctx,
320
+ tx,
321
+ ty,
322
+ width,
323
+ height,
324
+ borderLeft.width,
325
+ borderLeft.color,
326
+ 'Left',
327
+ );
328
+ }
329
+ }
330
+
331
+ if (hasTransform || hasClipping || radius) {
332
+ ctx.restore();
333
+ }
334
+ }
335
+
336
+ createCtxTexture(textureSource: Texture): CoreContextTexture {
337
+ return new CanvasCoreTexture(this.txMemManager, textureSource);
338
+ }
339
+
340
+ getShaderManager(): CoreShaderManager {
341
+ return this.shManager;
342
+ }
343
+
344
+ override getDefShaderCtr(): BaseShaderController {
345
+ return this.defShaderCtr;
346
+ }
347
+
348
+ renderRTTNodes(): void {
349
+ // noop
350
+ }
351
+
352
+ removeRTTNode(node: CoreNode): void {
353
+ // noop
354
+ }
355
+
356
+ renderToTexture(node: CoreNode): void {
357
+ // noop
358
+ }
359
+ getBufferInfo(): null {
360
+ return null;
361
+ }
362
+
363
+ getQuadCount(): null {
364
+ return null;
365
+ }
366
+
367
+ /**
368
+ * Updates the clear color of the canvas renderer.
369
+ *
370
+ * @param color - The color to set as the clear color.
371
+ */
372
+ updateClearColor(color: number) {
373
+ this.clearColor = color ? getRgbaComponents(color) : undefined;
374
+ }
375
+ }