@lightningjs/renderer 2.13.0 → 3.0.0-beta1

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 (539) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/exports/canvas-shaders.d.ts +10 -0
  5. package/dist/exports/canvas-shaders.js +27 -0
  6. package/dist/exports/canvas-shaders.js.map +1 -0
  7. package/dist/exports/canvas.d.ts +7 -1
  8. package/dist/exports/canvas.js +7 -1
  9. package/dist/exports/canvas.js.map +1 -1
  10. package/dist/exports/core-api.d.ts +74 -0
  11. package/dist/exports/core-api.js +96 -0
  12. package/dist/exports/core-api.js.map +1 -0
  13. package/dist/exports/index.d.ts +15 -8
  14. package/dist/exports/index.js +7 -4
  15. package/dist/exports/index.js.map +1 -1
  16. package/dist/exports/main-api.d.ts +30 -0
  17. package/dist/exports/main-api.js +45 -0
  18. package/dist/exports/main-api.js.map +1 -0
  19. package/dist/exports/webgl-shaders.d.ts +11 -0
  20. package/dist/exports/webgl-shaders.js +28 -0
  21. package/dist/exports/webgl-shaders.js.map +1 -0
  22. package/dist/exports/webgl.d.ts +9 -1
  23. package/dist/exports/webgl.js +9 -1
  24. package/dist/exports/webgl.js.map +1 -1
  25. package/dist/src/core/CoreExtension.d.ts +12 -0
  26. package/{src/core/renderers/CoreShader.ts → dist/src/core/CoreExtension.js} +29 -41
  27. package/dist/src/core/CoreExtension.js.map +1 -0
  28. package/dist/src/core/CoreNode.d.ts +9 -5
  29. package/dist/src/core/CoreNode.js +27 -10
  30. package/dist/src/core/CoreNode.js.map +1 -1
  31. package/dist/src/core/CoreShaderManager.d.ts +29 -71
  32. package/dist/src/core/CoreShaderManager.js +110 -97
  33. package/dist/src/core/CoreShaderManager.js.map +1 -1
  34. package/dist/src/core/CoreStuff.d.ts +1 -0
  35. package/dist/src/core/CoreStuff.js +138 -0
  36. package/dist/src/core/CoreStuff.js.map +1 -0
  37. package/dist/src/core/CoreTextNode.js +1 -1
  38. package/dist/src/core/CoreTextNode.js.map +1 -1
  39. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  40. package/dist/src/core/CoreTexturizer.js +47 -0
  41. package/dist/src/core/CoreTexturizer.js.map +1 -0
  42. package/dist/src/core/LngNode.d.ts +736 -0
  43. package/dist/src/core/LngNode.js +1174 -0
  44. package/dist/src/core/LngNode.js.map +1 -0
  45. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  46. package/dist/src/core/Matrix2DContext.js +45 -0
  47. package/dist/src/core/Matrix2DContext.js.map +1 -0
  48. package/dist/src/core/ShaderNode.d.ts +10 -0
  49. package/dist/src/core/ShaderNode.js +30 -0
  50. package/dist/src/core/ShaderNode.js.map +1 -0
  51. package/dist/src/core/Stage.d.ts +11 -14
  52. package/dist/src/core/Stage.js +22 -25
  53. package/dist/src/core/Stage.js.map +1 -1
  54. package/dist/src/core/TextNode.d.ts +103 -0
  55. package/dist/src/core/TextNode.js +331 -0
  56. package/dist/src/core/TextNode.js.map +1 -0
  57. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  58. package/dist/src/core/animations/CoreAnimation.js +6 -52
  59. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  60. package/dist/src/core/lib/Coords.d.ts +14 -0
  61. package/dist/src/core/lib/Coords.js +55 -0
  62. package/dist/src/core/lib/Coords.js.map +1 -0
  63. package/dist/src/core/lib/WebGlContextWrapper.d.ts +67 -54
  64. package/dist/src/core/lib/WebGlContextWrapper.js +126 -157
  65. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  66. package/dist/src/core/lib/glm/common.d.ts +162 -0
  67. package/dist/src/core/lib/glm/common.js +81 -0
  68. package/dist/src/core/lib/glm/common.js.map +1 -0
  69. package/dist/src/core/lib/glm/index.d.ts +11 -0
  70. package/dist/src/core/lib/glm/index.js +30 -0
  71. package/dist/src/core/lib/glm/index.js.map +1 -0
  72. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  73. package/dist/src/core/lib/glm/mat2.js +396 -0
  74. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  75. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  76. package/dist/src/core/lib/glm/mat2d.js +442 -0
  77. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  78. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  79. package/dist/src/core/lib/glm/mat3.js +680 -0
  80. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  81. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  82. package/dist/src/core/lib/glm/mat4.js +1802 -0
  83. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  84. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  85. package/dist/src/core/lib/glm/quat.js +693 -0
  86. package/dist/src/core/lib/glm/quat.js.map +1 -0
  87. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  88. package/dist/src/core/lib/glm/quat2.js +754 -0
  89. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  90. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  91. package/dist/src/core/lib/glm/vec2.js +569 -0
  92. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  93. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  94. package/dist/src/core/lib/glm/vec3.js +720 -0
  95. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  96. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  97. package/dist/src/core/lib/glm/vec4.js +608 -0
  98. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  99. package/dist/src/core/lib/textureCompression.js +0 -1
  100. package/dist/src/core/lib/textureCompression.js.map +1 -1
  101. package/dist/src/core/lib/utils.d.ts +4 -0
  102. package/dist/src/core/lib/utils.js +26 -0
  103. package/dist/src/core/lib/utils.js.map +1 -1
  104. package/dist/src/core/platform.js +1 -0
  105. package/dist/src/core/platform.js.map +1 -1
  106. package/dist/src/core/renderers/CoreRenderer.d.ts +11 -21
  107. package/dist/src/core/renderers/CoreRenderer.js +0 -6
  108. package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
  109. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  110. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  111. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  112. package/dist/src/core/renderers/CoreShaderNode.d.ts +59 -0
  113. package/dist/src/core/renderers/CoreShaderNode.js +107 -0
  114. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  115. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  116. package/dist/src/core/renderers/CoreShaderProgram.js +20 -0
  117. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  118. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  119. package/dist/src/core/renderers/canvas/CanvasRenderer.js +212 -0
  120. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  121. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  122. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +60 -0
  123. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  124. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +16 -0
  125. package/dist/src/core/renderers/canvas/CanvasTexture.js +123 -0
  126. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  127. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  128. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  129. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  130. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  131. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  132. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  133. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  134. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  135. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  137. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  138. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +12 -0
  140. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +55 -0
  141. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +9 -0
  143. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +38 -0
  144. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +57 -0
  146. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +227 -0
  147. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +36 -0
  149. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +107 -0
  150. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +134 -0
  152. package/dist/src/core/renderers/webgl/WebGlRenderer.js +546 -0
  153. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +221 -0
  155. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +334 -0
  156. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +35 -0
  158. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +195 -0
  159. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
  161. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  162. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  163. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  164. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  165. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  166. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  167. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  168. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  169. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  170. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  171. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  172. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  173. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  174. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  175. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  176. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  177. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  178. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  179. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  180. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  181. package/dist/src/core/scene/Scene.d.ts +59 -0
  182. package/dist/src/core/scene/Scene.js +106 -0
  183. package/dist/src/core/scene/Scene.js.map +1 -0
  184. package/dist/src/core/shaders/canvas/Border.d.ts +9 -0
  185. package/dist/src/core/shaders/canvas/Border.js +57 -0
  186. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  187. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  188. package/dist/src/core/shaders/canvas/HolePunch.js +38 -0
  189. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  190. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  191. package/dist/src/core/shaders/canvas/LinearGradient.js +46 -0
  192. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  193. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  194. package/dist/src/core/shaders/canvas/RadialGradient.js +68 -0
  195. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  196. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  197. package/dist/src/core/shaders/canvas/Rounded.js +33 -0
  198. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  199. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +7 -0
  200. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +35 -0
  201. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  202. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +8 -0
  203. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +39 -0
  204. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  205. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  206. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +38 -0
  207. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  208. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  209. package/dist/src/core/shaders/canvas/Shadow.js +31 -0
  210. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  211. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  212. package/dist/src/core/shaders/canvas/utils/render.js +84 -0
  213. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  214. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +37 -0
  215. package/dist/src/core/shaders/templates/BorderTemplate.js +73 -0
  216. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  217. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  218. package/dist/src/core/shaders/templates/HolePunchTemplate.js +35 -0
  219. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  220. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  221. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +47 -0
  222. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  223. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +31 -0
  224. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +49 -0
  225. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  226. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  227. package/dist/src/core/shaders/templates/RoundedTemplate.js +67 -0
  228. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  229. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  230. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +24 -0
  231. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  232. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +6 -0
  233. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +23 -0
  234. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  235. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  236. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +23 -0
  237. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  238. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  239. package/dist/src/core/shaders/templates/ShadowTemplate.js +66 -0
  240. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  241. package/dist/src/core/shaders/templates/shaderUtils.d.ts +5 -0
  242. package/dist/src/core/shaders/templates/shaderUtils.js +41 -0
  243. package/dist/src/core/shaders/templates/shaderUtils.js.map +1 -0
  244. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  245. package/dist/src/core/shaders/webgl/Border.js +87 -0
  246. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  247. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  248. package/dist/src/core/shaders/webgl/Default.js +86 -0
  249. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  250. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +2 -0
  251. package/dist/src/core/shaders/webgl/DefaultBatched.js +104 -0
  252. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +1 -0
  253. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  254. package/dist/src/core/shaders/webgl/HolePunch.js +64 -0
  255. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  256. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  257. package/dist/src/core/shaders/webgl/LinearGradient.js +75 -0
  258. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  259. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  260. package/dist/src/core/shaders/webgl/RadialGradient.js +73 -0
  261. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  262. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  263. package/dist/src/core/shaders/webgl/Rounded.js +86 -0
  264. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  265. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  266. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +97 -0
  267. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  268. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  269. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +112 -0
  270. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  271. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  272. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +84 -0
  273. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  274. package/dist/src/core/shaders/webgl/SdfShader.d.ts +32 -0
  275. package/dist/src/core/shaders/webgl/SdfShader.js +116 -0
  276. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  277. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  278. package/dist/src/core/shaders/webgl/Shadow.js +110 -0
  279. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  280. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
  281. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  282. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  283. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +6 -0
  284. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
  285. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
  286. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +34 -30
  287. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  288. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  289. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  290. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  291. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -4
  292. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
  293. package/dist/src/core/textures/Texture.d.ts +1 -1
  294. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  295. package/dist/src/main-api/ICoreDriver.js +20 -0
  296. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  297. package/dist/src/main-api/INode.d.ts +9 -9
  298. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  299. package/dist/src/main-api/IRenderDriver.js +20 -0
  300. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  301. package/dist/src/main-api/IShaderController.d.ts +14 -0
  302. package/dist/src/main-api/IShaderController.js +30 -0
  303. package/dist/src/main-api/IShaderController.js.map +1 -0
  304. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  305. package/dist/src/main-api/IShaderNode.js +19 -0
  306. package/dist/src/main-api/IShaderNode.js.map +1 -0
  307. package/dist/src/main-api/Renderer.d.ts +8 -91
  308. package/dist/src/main-api/Renderer.js +3 -54
  309. package/dist/src/main-api/Renderer.js.map +1 -1
  310. package/dist/src/main-api/RendererMain.d.ts +375 -0
  311. package/dist/src/main-api/RendererMain.js +365 -0
  312. package/dist/src/main-api/RendererMain.js.map +1 -0
  313. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  314. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  315. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  316. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  317. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  318. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  319. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  320. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  321. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  322. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  323. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  324. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  325. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  326. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  327. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  328. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  329. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  330. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  331. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  332. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  333. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  334. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  335. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  336. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  337. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  338. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  339. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  340. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  341. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  342. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  343. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  344. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  345. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  346. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  347. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  348. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  349. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  350. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  351. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  352. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  353. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  354. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  355. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  356. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  357. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  358. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  359. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  360. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  361. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  362. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  363. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  364. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  365. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  366. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  367. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  368. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  369. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  370. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  371. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  372. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  373. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  374. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  375. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  376. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  377. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  378. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  379. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  380. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  381. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  382. package/dist/src/render-drivers/utils.d.ts +12 -0
  383. package/dist/src/render-drivers/utils.js +69 -0
  384. package/dist/src/render-drivers/utils.js.map +1 -0
  385. package/dist/src/utils.d.ts +6 -0
  386. package/dist/src/utils.js +18 -0
  387. package/dist/src/utils.js.map +1 -1
  388. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  389. package/exports/canvas-shaders.ts +28 -0
  390. package/exports/canvas.ts +45 -39
  391. package/exports/index.ts +89 -89
  392. package/exports/inspector.ts +24 -24
  393. package/exports/utils.ts +44 -44
  394. package/exports/webgl-shaders.ts +28 -0
  395. package/exports/webgl.ts +50 -38
  396. package/package.json +4 -1
  397. package/scripts/please-use-pnpm.js +13 -13
  398. package/src/common/CommonTypes.ts +146 -146
  399. package/src/common/EventEmitter.ts +77 -77
  400. package/src/common/IAnimationController.ts +92 -92
  401. package/src/common/IEventEmitter.ts +28 -28
  402. package/src/core/CoreNode.test.ts +203 -202
  403. package/src/core/CoreNode.ts +2476 -2455
  404. package/src/core/CoreShaderManager.ts +193 -292
  405. package/src/core/CoreTextNode.ts +448 -455
  406. package/src/core/CoreTextureManager.ts +597 -597
  407. package/src/core/Stage.ts +740 -743
  408. package/src/core/TextureMemoryManager.ts +395 -395
  409. package/src/core/animations/AnimationManager.ts +38 -38
  410. package/src/core/animations/CoreAnimation.ts +284 -340
  411. package/src/core/animations/CoreAnimationController.ts +157 -157
  412. package/src/core/lib/ContextSpy.ts +41 -41
  413. package/src/core/lib/ImageWorker.ts +279 -279
  414. package/src/core/lib/Matrix3d.ts +244 -244
  415. package/src/core/lib/RenderCoords.ts +86 -86
  416. package/src/core/lib/WebGlContextWrapper.ts +1324 -1332
  417. package/src/core/lib/textureCompression.ts +152 -152
  418. package/src/core/lib/textureSvg.ts +78 -78
  419. package/src/core/lib/utils.ts +361 -310
  420. package/src/core/lib/validateImageBitmap.ts +76 -76
  421. package/src/core/platform.ts +64 -63
  422. package/src/core/renderers/CoreContextTexture.ts +43 -43
  423. package/src/core/renderers/CoreRenderOp.ts +22 -22
  424. package/src/core/renderers/CoreRenderer.ts +107 -115
  425. package/src/core/renderers/CoreShaderNode.ts +171 -0
  426. package/src/core/renderers/{canvas/shaders/UnsupportedShader.ts → CoreShaderProgram.ts} +23 -48
  427. package/src/core/renderers/canvas/CanvasRenderer.ts +299 -0
  428. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -0
  429. package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +153 -153
  430. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -231
  431. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -69
  432. package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +86 -86
  433. package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +50 -50
  434. package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +301 -301
  435. package/src/core/renderers/webgl/{WebGlCoreRenderOp.ts → WebGlRenderOp.ts} +145 -125
  436. package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +715 -815
  437. package/src/core/renderers/webgl/WebGlShaderNode.ts +433 -0
  438. package/src/core/renderers/webgl/WebGlShaderProgram.ts +310 -0
  439. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  440. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  441. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -143
  442. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  443. package/src/core/shaders/canvas/Border.ts +78 -0
  444. package/src/core/shaders/canvas/HolePunch.ts +62 -0
  445. package/src/core/shaders/canvas/LinearGradient.ts +69 -0
  446. package/src/core/shaders/canvas/RadialGradient.ts +113 -0
  447. package/src/core/shaders/canvas/Rounded.ts +55 -0
  448. package/src/core/shaders/canvas/RoundedWithBorder.ts +68 -0
  449. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -0
  450. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -0
  451. package/src/core/shaders/canvas/Shadow.ts +52 -0
  452. package/src/core/shaders/canvas/utils/render.ts +151 -0
  453. package/src/core/shaders/templates/BorderTemplate.ts +115 -0
  454. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
  455. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
  456. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
  457. package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
  458. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
  459. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -0
  460. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
  461. package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
  462. package/src/core/shaders/templates/shaderUtils.ts +47 -0
  463. package/src/core/shaders/webgl/Border.ts +96 -0
  464. package/src/core/shaders/webgl/Default.ts +89 -0
  465. package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
  466. package/src/core/shaders/webgl/HolePunch.ts +78 -0
  467. package/src/core/shaders/webgl/LinearGradient.ts +81 -0
  468. package/src/core/shaders/webgl/RadialGradient.ts +84 -0
  469. package/src/core/shaders/webgl/Rounded.ts +117 -0
  470. package/src/core/shaders/webgl/RoundedWithBorder.ts +114 -0
  471. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +133 -0
  472. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
  473. package/src/core/shaders/webgl/SdfShader.ts +137 -0
  474. package/src/core/shaders/webgl/Shadow.ts +115 -0
  475. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  476. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  477. package/src/core/text-rendering/TrFontManager.ts +183 -183
  478. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  479. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  480. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  481. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  482. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  483. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  484. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  485. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +509 -509
  486. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +815 -808
  487. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +841 -853
  488. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  489. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  490. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  491. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  492. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  493. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  494. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  495. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +408 -408
  496. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  497. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  498. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  499. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  500. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  501. package/src/core/text-rendering/renderers/TextRenderer.ts +550 -557
  502. package/src/core/textures/ColorTexture.ts +102 -102
  503. package/src/core/textures/ImageTexture.ts +376 -376
  504. package/src/core/textures/NoiseTexture.ts +104 -104
  505. package/src/core/textures/RenderTexture.ts +85 -85
  506. package/src/core/textures/SubTexture.ts +205 -205
  507. package/src/core/textures/Texture.ts +337 -337
  508. package/src/core/utils.ts +227 -227
  509. package/src/env.d.ts +7 -7
  510. package/src/main-api/INode.ts +99 -101
  511. package/src/main-api/Inspector.ts +522 -522
  512. package/src/main-api/Renderer.ts +649 -751
  513. package/src/main-api/utils.ts +45 -45
  514. package/src/utils.ts +267 -248
  515. package/COPYING +0 -1
  516. package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
  517. package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -362
  518. package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
  519. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
  520. package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
  521. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
  522. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
  523. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
  524. package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
  525. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
  526. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
  527. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
  528. package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
  529. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
  530. package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
  531. package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
  532. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
  533. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
  534. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
  535. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
  536. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
  537. package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
  538. package/src/main-api/DynamicShaderController.ts +0 -104
  539. package/src/main-api/ShaderController.ts +0 -80
@@ -1,375 +0,0 @@
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
- }