@solidtv/renderer 1.0.0

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 (424) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +7 -0
  3. package/README.md +137 -0
  4. package/dist/exports/canvas-shaders.d.ts +10 -0
  5. package/dist/exports/canvas-shaders.js +11 -0
  6. package/dist/exports/canvas-shaders.js.map +1 -0
  7. package/dist/exports/canvas.d.ts +26 -0
  8. package/dist/exports/canvas.js +27 -0
  9. package/dist/exports/canvas.js.map +1 -0
  10. package/dist/exports/index.d.ts +50 -0
  11. package/dist/exports/index.js +40 -0
  12. package/dist/exports/index.js.map +1 -0
  13. package/dist/exports/inspector.d.ts +4 -0
  14. package/dist/exports/inspector.js +5 -0
  15. package/dist/exports/inspector.js.map +1 -0
  16. package/dist/exports/utils.d.ts +27 -0
  17. package/dist/exports/utils.js +28 -0
  18. package/dist/exports/utils.js.map +1 -0
  19. package/dist/exports/webgl-shaders.d.ts +11 -0
  20. package/dist/exports/webgl-shaders.js +12 -0
  21. package/dist/exports/webgl-shaders.js.map +1 -0
  22. package/dist/exports/webgl.d.ts +28 -0
  23. package/dist/exports/webgl.js +29 -0
  24. package/dist/exports/webgl.js.map +1 -0
  25. package/dist/src/common/CommonTypes.d.ts +110 -0
  26. package/dist/src/common/CommonTypes.js +2 -0
  27. package/dist/src/common/CommonTypes.js.map +1 -0
  28. package/dist/src/common/EventEmitter.d.ts +12 -0
  29. package/dist/src/common/EventEmitter.js +48 -0
  30. package/dist/src/common/EventEmitter.js.map +1 -0
  31. package/dist/src/common/IAnimationController.d.ts +58 -0
  32. package/dist/src/common/IAnimationController.js +2 -0
  33. package/dist/src/common/IAnimationController.js.map +1 -0
  34. package/dist/src/common/IEventEmitter.d.ts +8 -0
  35. package/dist/src/common/IEventEmitter.js +2 -0
  36. package/dist/src/common/IEventEmitter.js.map +1 -0
  37. package/dist/src/core/Autosizer.d.ts +35 -0
  38. package/dist/src/core/Autosizer.js +178 -0
  39. package/dist/src/core/Autosizer.js.map +1 -0
  40. package/dist/src/core/CoreNode.d.ts +908 -0
  41. package/dist/src/core/CoreNode.js +1837 -0
  42. package/dist/src/core/CoreNode.js.map +1 -0
  43. package/dist/src/core/CoreShaderManager.d.ts +38 -0
  44. package/dist/src/core/CoreShaderManager.js +123 -0
  45. package/dist/src/core/CoreShaderManager.js.map +1 -0
  46. package/dist/src/core/CoreTextNode.d.ts +91 -0
  47. package/dist/src/core/CoreTextNode.js +440 -0
  48. package/dist/src/core/CoreTextNode.js.map +1 -0
  49. package/dist/src/core/CoreTextureManager.d.ts +264 -0
  50. package/dist/src/core/CoreTextureManager.js +318 -0
  51. package/dist/src/core/CoreTextureManager.js.map +1 -0
  52. package/dist/src/core/Stage.d.ts +238 -0
  53. package/dist/src/core/Stage.js +804 -0
  54. package/dist/src/core/Stage.js.map +1 -0
  55. package/dist/src/core/TextureError.d.ts +11 -0
  56. package/dist/src/core/TextureError.js +37 -0
  57. package/dist/src/core/TextureError.js.map +1 -0
  58. package/dist/src/core/TextureMemoryManager.d.ts +150 -0
  59. package/dist/src/core/TextureMemoryManager.js +239 -0
  60. package/dist/src/core/TextureMemoryManager.js.map +1 -0
  61. package/dist/src/core/animations/AnimationManager.d.ts +33 -0
  62. package/dist/src/core/animations/AnimationManager.js +137 -0
  63. package/dist/src/core/animations/AnimationManager.js.map +1 -0
  64. package/dist/src/core/animations/CoreAnimation.d.ts +12 -0
  65. package/dist/src/core/animations/CoreAnimation.js +107 -0
  66. package/dist/src/core/animations/CoreAnimation.js.map +1 -0
  67. package/dist/src/core/lib/ContextSpy.d.ts +12 -0
  68. package/dist/src/core/lib/ContextSpy.js +20 -0
  69. package/dist/src/core/lib/ContextSpy.js.map +1 -0
  70. package/dist/src/core/lib/ImageWorker.d.ts +16 -0
  71. package/dist/src/core/lib/ImageWorker.js +202 -0
  72. package/dist/src/core/lib/ImageWorker.js.map +1 -0
  73. package/dist/src/core/lib/Matrix3d.d.ts +74 -0
  74. package/dist/src/core/lib/Matrix3d.js +218 -0
  75. package/dist/src/core/lib/Matrix3d.js.map +1 -0
  76. package/dist/src/core/lib/RenderCoords.d.ts +12 -0
  77. package/dist/src/core/lib/RenderCoords.js +35 -0
  78. package/dist/src/core/lib/RenderCoords.js.map +1 -0
  79. package/dist/src/core/lib/WebGlContextWrapper.d.ts +782 -0
  80. package/dist/src/core/lib/WebGlContextWrapper.js +1143 -0
  81. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -0
  82. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  83. package/dist/src/core/lib/collectionUtils.js +82 -0
  84. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  85. package/dist/src/core/lib/colorCache.d.ts +1 -0
  86. package/dist/src/core/lib/colorCache.js +19 -0
  87. package/dist/src/core/lib/colorCache.js.map +1 -0
  88. package/dist/src/core/lib/colorParser.d.ts +21 -0
  89. package/dist/src/core/lib/colorParser.js +54 -0
  90. package/dist/src/core/lib/colorParser.js.map +1 -0
  91. package/dist/src/core/lib/textureCompression.d.ts +28 -0
  92. package/dist/src/core/lib/textureCompression.js +363 -0
  93. package/dist/src/core/lib/textureCompression.js.map +1 -0
  94. package/dist/src/core/lib/textureSvg.d.ts +16 -0
  95. package/dist/src/core/lib/textureSvg.js +45 -0
  96. package/dist/src/core/lib/textureSvg.js.map +1 -0
  97. package/dist/src/core/lib/utils.d.ts +66 -0
  98. package/dist/src/core/lib/utils.js +268 -0
  99. package/dist/src/core/lib/utils.js.map +1 -0
  100. package/dist/src/core/lib/validateImageBitmap.d.ts +7 -0
  101. package/dist/src/core/lib/validateImageBitmap.js +68 -0
  102. package/dist/src/core/lib/validateImageBitmap.js.map +1 -0
  103. package/dist/src/core/platforms/Platform.d.ts +42 -0
  104. package/dist/src/core/platforms/Platform.js +4 -0
  105. package/dist/src/core/platforms/Platform.js.map +1 -0
  106. package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
  107. package/dist/src/core/platforms/web/WebPlatform.js +90 -0
  108. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
  109. package/dist/src/core/renderers/CoreContextTexture.d.ts +13 -0
  110. package/dist/src/core/renderers/CoreContextTexture.js +16 -0
  111. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
  112. package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
  113. package/dist/src/core/renderers/CoreRenderOp.js +3 -0
  114. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
  115. package/dist/src/core/renderers/CoreRenderer.d.ts +81 -0
  116. package/dist/src/core/renderers/CoreRenderer.js +14 -0
  117. package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
  118. package/dist/src/core/renderers/CoreShaderNode.d.ts +69 -0
  119. package/dist/src/core/renderers/CoreShaderNode.js +130 -0
  120. package/dist/src/core/renderers/CoreShaderNode.js.map +1 -0
  121. package/dist/src/core/renderers/CoreShaderProgram.d.ts +4 -0
  122. package/dist/src/core/renderers/CoreShaderProgram.js +2 -0
  123. package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -0
  124. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +36 -0
  125. package/dist/src/core/renderers/canvas/CanvasRenderer.js +221 -0
  126. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -0
  127. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +21 -0
  128. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +42 -0
  129. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -0
  130. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +17 -0
  131. package/dist/src/core/renderers/canvas/CanvasTexture.js +110 -0
  132. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -0
  133. package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +41 -0
  134. package/dist/src/core/renderers/webgl/SdfRenderOp.js +88 -0
  135. package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +14 -0
  137. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +45 -0
  138. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +22 -0
  140. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +49 -0
  141. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +67 -0
  143. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +259 -0
  144. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +221 -0
  146. package/dist/src/core/renderers/webgl/WebGlRenderer.js +1015 -0
  147. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +213 -0
  149. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +331 -0
  150. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +37 -0
  152. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +240 -0
  153. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +28 -0
  155. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +39 -0
  156. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +55 -0
  158. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +88 -0
  159. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +74 -0
  161. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +83 -0
  162. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
  163. package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
  164. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +13 -0
  165. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
  166. package/dist/src/core/shaders/canvas/Border.d.ts +15 -0
  167. package/dist/src/core/shaders/canvas/Border.js +83 -0
  168. package/dist/src/core/shaders/canvas/Border.js.map +1 -0
  169. package/dist/src/core/shaders/canvas/HolePunch.d.ts +7 -0
  170. package/dist/src/core/shaders/canvas/HolePunch.js +22 -0
  171. package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -0
  172. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +10 -0
  173. package/dist/src/core/shaders/canvas/LinearGradient.js +32 -0
  174. package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -0
  175. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +11 -0
  176. package/dist/src/core/shaders/canvas/RadialGradient.js +54 -0
  177. package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -0
  178. package/dist/src/core/shaders/canvas/Rounded.d.ts +7 -0
  179. package/dist/src/core/shaders/canvas/Rounded.js +17 -0
  180. package/dist/src/core/shaders/canvas/Rounded.js.map +1 -0
  181. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +10 -0
  182. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +57 -0
  183. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -0
  184. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +7 -0
  185. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +61 -0
  186. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -0
  187. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +7 -0
  188. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +26 -0
  189. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -0
  190. package/dist/src/core/shaders/canvas/Shadow.d.ts +8 -0
  191. package/dist/src/core/shaders/canvas/Shadow.js +15 -0
  192. package/dist/src/core/shaders/canvas/Shadow.js.map +1 -0
  193. package/dist/src/core/shaders/canvas/utils/render.d.ts +5 -0
  194. package/dist/src/core/shaders/canvas/utils/render.js +81 -0
  195. package/dist/src/core/shaders/canvas/utils/render.js.map +1 -0
  196. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +47 -0
  197. package/dist/src/core/shaders/templates/BorderTemplate.js +77 -0
  198. package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -0
  199. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +46 -0
  200. package/dist/src/core/shaders/templates/HolePunchTemplate.js +19 -0
  201. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -0
  202. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +23 -0
  203. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +31 -0
  204. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -0
  205. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +33 -0
  206. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +33 -0
  207. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -0
  208. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +29 -0
  209. package/dist/src/core/shaders/templates/RoundedTemplate.js +51 -0
  210. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -0
  211. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +7 -0
  212. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +8 -0
  213. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -0
  214. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +8 -0
  215. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +9 -0
  216. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -0
  217. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +6 -0
  218. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +7 -0
  219. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -0
  220. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +34 -0
  221. package/dist/src/core/shaders/templates/ShadowTemplate.js +50 -0
  222. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -0
  223. package/dist/src/core/shaders/utils.d.ts +5 -0
  224. package/dist/src/core/shaders/utils.js +25 -0
  225. package/dist/src/core/shaders/utils.js.map +1 -0
  226. package/dist/src/core/shaders/webgl/Border.d.ts +3 -0
  227. package/dist/src/core/shaders/webgl/Border.js +153 -0
  228. package/dist/src/core/shaders/webgl/Border.js.map +1 -0
  229. package/dist/src/core/shaders/webgl/Default.d.ts +2 -0
  230. package/dist/src/core/shaders/webgl/Default.js +51 -0
  231. package/dist/src/core/shaders/webgl/Default.js.map +1 -0
  232. package/dist/src/core/shaders/webgl/HolePunch.d.ts +3 -0
  233. package/dist/src/core/shaders/webgl/HolePunch.js +49 -0
  234. package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -0
  235. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +3 -0
  236. package/dist/src/core/shaders/webgl/LinearGradient.js +114 -0
  237. package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -0
  238. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +3 -0
  239. package/dist/src/core/shaders/webgl/RadialGradient.js +81 -0
  240. package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -0
  241. package/dist/src/core/shaders/webgl/Rounded.d.ts +7 -0
  242. package/dist/src/core/shaders/webgl/Rounded.js +88 -0
  243. package/dist/src/core/shaders/webgl/Rounded.js.map +1 -0
  244. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +3 -0
  245. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +202 -0
  246. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -0
  247. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +3 -0
  248. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +223 -0
  249. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -0
  250. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +3 -0
  251. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +123 -0
  252. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -0
  253. package/dist/src/core/shaders/webgl/SdfShader.d.ts +13 -0
  254. package/dist/src/core/shaders/webgl/SdfShader.js +72 -0
  255. package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -0
  256. package/dist/src/core/shaders/webgl/Shadow.d.ts +3 -0
  257. package/dist/src/core/shaders/webgl/Shadow.js +115 -0
  258. package/dist/src/core/shaders/webgl/Shadow.js.map +1 -0
  259. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
  260. package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
  261. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
  262. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
  263. package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
  264. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
  265. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
  266. package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
  267. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
  268. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
  269. package/dist/src/core/text-rendering/SdfTextRenderer.js +249 -0
  270. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
  271. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
  272. package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
  273. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
  274. package/dist/src/core/text-rendering/TextRenderer.d.ts +406 -0
  275. package/dist/src/core/text-rendering/TextRenderer.js +2 -0
  276. package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
  277. package/dist/src/core/text-rendering/Utils.d.ts +30 -0
  278. package/dist/src/core/text-rendering/Utils.js +66 -0
  279. package/dist/src/core/text-rendering/Utils.js.map +1 -0
  280. package/dist/src/core/textures/ColorTexture.d.ts +36 -0
  281. package/dist/src/core/textures/ColorTexture.js +57 -0
  282. package/dist/src/core/textures/ColorTexture.js.map +1 -0
  283. package/dist/src/core/textures/ImageTexture.d.ts +131 -0
  284. package/dist/src/core/textures/ImageTexture.js +211 -0
  285. package/dist/src/core/textures/ImageTexture.js.map +1 -0
  286. package/dist/src/core/textures/NoiseTexture.d.ts +43 -0
  287. package/dist/src/core/textures/NoiseTexture.js +50 -0
  288. package/dist/src/core/textures/NoiseTexture.js.map +1 -0
  289. package/dist/src/core/textures/RenderTexture.d.ts +29 -0
  290. package/dist/src/core/textures/RenderTexture.js +36 -0
  291. package/dist/src/core/textures/RenderTexture.js.map +1 -0
  292. package/dist/src/core/textures/SubTexture.d.ts +61 -0
  293. package/dist/src/core/textures/SubTexture.js +99 -0
  294. package/dist/src/core/textures/SubTexture.js.map +1 -0
  295. package/dist/src/core/textures/Texture.d.ts +275 -0
  296. package/dist/src/core/textures/Texture.js +326 -0
  297. package/dist/src/core/textures/Texture.js.map +1 -0
  298. package/dist/src/core/utils.d.ts +23 -0
  299. package/dist/src/core/utils.js +155 -0
  300. package/dist/src/core/utils.js.map +1 -0
  301. package/dist/src/main-api/INode.d.ts +65 -0
  302. package/dist/src/main-api/INode.js +2 -0
  303. package/dist/src/main-api/INode.js.map +1 -0
  304. package/dist/src/main-api/Inspector.d.ts +154 -0
  305. package/dist/src/main-api/Inspector.js +844 -0
  306. package/dist/src/main-api/Inspector.js.map +1 -0
  307. package/dist/src/main-api/Renderer.d.ts +629 -0
  308. package/dist/src/main-api/Renderer.js +471 -0
  309. package/dist/src/main-api/Renderer.js.map +1 -0
  310. package/dist/src/main-api/utils.d.ts +2 -0
  311. package/dist/src/main-api/utils.js +34 -0
  312. package/dist/src/main-api/utils.js.map +1 -0
  313. package/dist/src/utils.d.ts +123 -0
  314. package/dist/src/utils.js +234 -0
  315. package/dist/src/utils.js.map +1 -0
  316. package/dist/tsconfig.dist.tsbuildinfo +1 -0
  317. package/exports/canvas-shaders.ts +11 -0
  318. package/exports/canvas.ts +27 -0
  319. package/exports/index.ts +69 -0
  320. package/exports/inspector.ts +5 -0
  321. package/exports/utils.ts +32 -0
  322. package/exports/webgl-shaders.ts +12 -0
  323. package/exports/webgl.ts +33 -0
  324. package/package.json +99 -0
  325. package/src/common/CommonTypes.ts +145 -0
  326. package/src/common/EventEmitter.ts +58 -0
  327. package/src/common/IAnimationController.ts +65 -0
  328. package/src/common/IEventEmitter.ts +11 -0
  329. package/src/core/Autosizer.ts +205 -0
  330. package/src/core/CoreNode.test.ts +535 -0
  331. package/src/core/CoreNode.ts +2883 -0
  332. package/src/core/CoreShaderManager.ts +170 -0
  333. package/src/core/CoreTextNode.ts +573 -0
  334. package/src/core/CoreTextureManager.ts +552 -0
  335. package/src/core/Stage.ts +1037 -0
  336. package/src/core/TextureError.ts +46 -0
  337. package/src/core/TextureMemoryManager.ts +378 -0
  338. package/src/core/animations/AnimationManager.ts +178 -0
  339. package/src/core/animations/CoreAnimation.ts +138 -0
  340. package/src/core/lib/ContextSpy.ts +22 -0
  341. package/src/core/lib/ImageWorker.ts +292 -0
  342. package/src/core/lib/Matrix3d.ts +231 -0
  343. package/src/core/lib/RenderCoords.ts +55 -0
  344. package/src/core/lib/WebGlContextWrapper.ts +1448 -0
  345. package/src/core/lib/collectionUtils.ts +99 -0
  346. package/src/core/lib/colorCache.ts +20 -0
  347. package/src/core/lib/colorParser.ts +66 -0
  348. package/src/core/lib/textureCompression.ts +492 -0
  349. package/src/core/lib/textureSvg.ts +59 -0
  350. package/src/core/lib/utils.ts +400 -0
  351. package/src/core/lib/validateImageBitmap.ts +87 -0
  352. package/src/core/platforms/Platform.ts +64 -0
  353. package/src/core/platforms/web/WebPlatform.ts +132 -0
  354. package/src/core/renderers/CoreContextTexture.ts +25 -0
  355. package/src/core/renderers/CoreRenderOp.ts +3 -0
  356. package/src/core/renderers/CoreRenderer.ts +101 -0
  357. package/src/core/renderers/CoreShaderNode.ts +202 -0
  358. package/src/core/renderers/CoreShaderProgram.ts +4 -0
  359. package/src/core/renderers/canvas/CanvasRenderer.ts +274 -0
  360. package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
  361. package/src/core/renderers/canvas/CanvasTexture.ts +141 -0
  362. package/src/core/renderers/webgl/SdfRenderOp.ts +103 -0
  363. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +70 -0
  364. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
  365. package/src/core/renderers/webgl/WebGlCtxTexture.ts +332 -0
  366. package/src/core/renderers/webgl/WebGlRenderer.ts +1323 -0
  367. package/src/core/renderers/webgl/WebGlShaderNode.ts +423 -0
  368. package/src/core/renderers/webgl/WebGlShaderProgram.ts +346 -0
  369. package/src/core/renderers/webgl/internal/BufferCollection.ts +46 -0
  370. package/src/core/renderers/webgl/internal/RendererUtils.ts +136 -0
  371. package/src/core/renderers/webgl/internal/ShaderUtils.ts +262 -0
  372. package/src/core/renderers/webgl/internal/WebGlUtils.ts +16 -0
  373. package/src/core/shaders/canvas/Border.ts +119 -0
  374. package/src/core/shaders/canvas/HolePunch.ts +38 -0
  375. package/src/core/shaders/canvas/LinearGradient.ts +54 -0
  376. package/src/core/shaders/canvas/RadialGradient.ts +82 -0
  377. package/src/core/shaders/canvas/Rounded.ts +38 -0
  378. package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
  379. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
  380. package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
  381. package/src/core/shaders/canvas/Shadow.ts +35 -0
  382. package/src/core/shaders/canvas/utils/render.ts +143 -0
  383. package/src/core/shaders/templates/BorderTemplate.ts +128 -0
  384. package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
  385. package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
  386. package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
  387. package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
  388. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
  389. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
  390. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
  391. package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
  392. package/src/core/shaders/utils.ts +30 -0
  393. package/src/core/shaders/webgl/Border.ts +158 -0
  394. package/src/core/shaders/webgl/Default.ts +52 -0
  395. package/src/core/shaders/webgl/HolePunch.ts +58 -0
  396. package/src/core/shaders/webgl/LinearGradient.ts +119 -0
  397. package/src/core/shaders/webgl/RadialGradient.ts +91 -0
  398. package/src/core/shaders/webgl/Rounded.ts +97 -0
  399. package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
  400. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +235 -0
  401. package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
  402. package/src/core/shaders/webgl/SdfShader.ts +73 -0
  403. package/src/core/shaders/webgl/Shadow.ts +119 -0
  404. package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
  405. package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
  406. package/src/core/text-rendering/SdfFontHandler.ts +566 -0
  407. package/src/core/text-rendering/SdfTextRenderer.ts +352 -0
  408. package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
  409. package/src/core/text-rendering/TextRenderer.ts +449 -0
  410. package/src/core/text-rendering/Utils.ts +80 -0
  411. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
  412. package/src/core/textures/ColorTexture.ts +85 -0
  413. package/src/core/textures/ImageTexture.ts +394 -0
  414. package/src/core/textures/NoiseTexture.ts +87 -0
  415. package/src/core/textures/RenderTexture.ts +68 -0
  416. package/src/core/textures/SubTexture.ts +165 -0
  417. package/src/core/textures/Texture.ts +505 -0
  418. package/src/core/utils.ts +210 -0
  419. package/src/env.d.ts +7 -0
  420. package/src/main-api/INode.ts +92 -0
  421. package/src/main-api/Inspector.ts +1267 -0
  422. package/src/main-api/Renderer.ts +1011 -0
  423. package/src/main-api/utils.ts +45 -0
  424. package/src/utils.ts +302 -0
@@ -0,0 +1,908 @@
1
+ import type { TextureOptions } from './CoreTextureManager.js';
2
+ import type { WebGlRenderer } from './renderers/webgl/WebGlRenderer.js';
3
+ import type { WebGlCtxTexture } from './renderers/webgl/WebGlCtxTexture.js';
4
+ import type { BufferCollection } from './renderers/webgl/internal/BufferCollection.js';
5
+ import type { CoreRenderer } from './renderers/CoreRenderer.js';
6
+ import type { Stage } from './Stage.js';
7
+ import { type Texture, type TextureCoords, type TextureLoadedEventHandler } from './textures/Texture.js';
8
+ import type { Dimensions } from '../common/CommonTypes.js';
9
+ import { EventEmitter } from '../common/EventEmitter.js';
10
+ import { type Bound, type RectWithValid } from './lib/utils.js';
11
+ import { Matrix3d } from './lib/Matrix3d.js';
12
+ import { RenderCoords } from './lib/RenderCoords.js';
13
+ import type { AnimationSettings } from './animations/CoreAnimation.js';
14
+ import type { IAnimationController } from '../common/IAnimationController.js';
15
+ import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
16
+ import { Autosizer } from './Autosizer.js';
17
+ export declare enum CoreNodeRenderState {
18
+ Init = 0,
19
+ OutOfBounds = 2,
20
+ InBounds = 4,
21
+ InViewport = 8
22
+ }
23
+ export declare enum UpdateType {
24
+ /**
25
+ * Child updates
26
+ */
27
+ Children = 1,
28
+ /**
29
+ * localTransform
30
+ *
31
+ * @remarks
32
+ * CoreNode Properties Updated:
33
+ * - `localTransform`
34
+ */
35
+ Local = 2,
36
+ /**
37
+ * globalTransform
38
+ *
39
+ * * @remarks
40
+ * CoreNode Properties Updated:
41
+ * - `globalTransform`
42
+ * - `renderBounds`
43
+ * - `renderCoords`
44
+ */
45
+ Global = 4,
46
+ /**
47
+ * Clipping rect update
48
+ *
49
+ * @remarks
50
+ * CoreNode Properties Updated:
51
+ * - `clippingRect`
52
+ */
53
+ Clipping = 8,
54
+ /**
55
+ * Sort Z-Index Children update
56
+ *
57
+ * @remarks
58
+ * CoreNode Properties Updated:
59
+ * - `children` (sorts children by their `calcZIndex`)
60
+ */
61
+ SortZIndexChildren = 16,
62
+ /**
63
+ * Premultiplied Colors update
64
+ *
65
+ * @remarks
66
+ * CoreNode Properties Updated:
67
+ * - `premultipliedColorTl`
68
+ * - `premultipliedColorTr`
69
+ * - `premultipliedColorBl`
70
+ * - `premultipliedColorBr`
71
+ */
72
+ PremultipliedColors = 32,
73
+ /**
74
+ * World Alpha update
75
+ *
76
+ * @remarks
77
+ * CoreNode Properties Updated:
78
+ * - `worldAlpha` = `parent.worldAlpha` * `alpha`
79
+ */
80
+ WorldAlpha = 64,
81
+ /**
82
+ * Render State update
83
+ *
84
+ * @remarks
85
+ * CoreNode Properties Updated:
86
+ * - `renderState`
87
+ */
88
+ RenderState = 128,
89
+ /**
90
+ * Is Renderable update
91
+ *
92
+ * @remarks
93
+ * CoreNode Properties Updated:
94
+ * - `isRenderable`
95
+ */
96
+ IsRenderable = 256,
97
+ /**
98
+ * Render Texture update
99
+ */
100
+ RenderTexture = 512,
101
+ /**
102
+ * Track if parent has render texture
103
+ */
104
+ ParentRenderTexture = 1024,
105
+ /**
106
+ * Render Bounds update
107
+ */
108
+ RenderBounds = 2048,
109
+ /**
110
+ * RecalcUniforms
111
+ */
112
+ RecalcUniforms = 4096,
113
+ /**
114
+ * Autosize update
115
+ */
116
+ Autosize = 8192,
117
+ /**
118
+ * None
119
+ */
120
+ None = 0,
121
+ /**
122
+ * All
123
+ */
124
+ All = 16383
125
+ }
126
+ /**
127
+ * A custom data map which can be stored on an CoreNode
128
+ *
129
+ * @remarks
130
+ * This is a map of key-value pairs that can be stored on an INode. It is used
131
+ * to store custom data that can be used by the application.
132
+ * The data stored can only be of type string, number or boolean.
133
+ */
134
+ export type CustomDataMap = {
135
+ [key: string]: string | number | boolean | undefined;
136
+ };
137
+ /**
138
+ * Writable properties of a Node.
139
+ */
140
+ export interface CoreNodeProps {
141
+ /**
142
+ * The x coordinate of the Node's Mount Point.
143
+ *
144
+ * @remarks
145
+ * See {@link mountX} and {@link mountY} for more information about setting
146
+ * the Mount Point.
147
+ *
148
+ * @default `0`
149
+ */
150
+ x: number;
151
+ /**
152
+ * The y coordinate of the Node's Mount Point.
153
+ *
154
+ * @remarks
155
+ * See {@link mountX} and {@link mountY} for more information about setting
156
+ * the Mount Point.
157
+ *
158
+ * @default `0`
159
+ */
160
+ y: number;
161
+ /**
162
+ * The width of the Node.
163
+ * @warning This will be deprecated in favor of `w` and `h` properties in the future.
164
+ *
165
+ * @default `0`
166
+ */
167
+ w: number;
168
+ /**
169
+ * The height of the Node.
170
+ * @warning This will be deprecated in favor of `w` and `h` properties in the future.
171
+ *
172
+ * @default `0`
173
+ */
174
+ h: number;
175
+ /**
176
+ * The alpha opacity of the Node.
177
+ *
178
+ * @remarks
179
+ * The alpha value is a number between 0 and 1, where 0 is fully transparent
180
+ * and 1 is fully opaque.
181
+ *
182
+ * @default `1`
183
+ */
184
+ alpha: number;
185
+ /**
186
+ * Autosize
187
+ *
188
+ * @remarks
189
+ * When enabled, the Node automatically resizes based on its content
190
+ *
191
+ * **Texture Autosize Mode:**
192
+ * - When the Node has a texture, it automatically resizes to match the
193
+ * texture's dimensions when the texture loads
194
+ * - This ensures images display at their natural size without manual sizing
195
+ * - Text Nodes always use this mode regardless of this setting
196
+ *
197
+ * **Children Autosize Mode:**
198
+ * - When the Node has no texture but contains children, it automatically
199
+ * resizes to encompass all children's bounds
200
+ * - Calculates the bounding box that contains all child positions, dimensions,
201
+ * and transforms (scale, rotation, mount/pivot points)
202
+ * - Creates container behavior where the parent grows to fit its content
203
+ * - Updates dynamically as children are added, removed, or transformed
204
+ *
205
+ * **Mode Selection Logic:**
206
+ * - Texture mode takes precedence over children mode
207
+ * - Mode switches automatically when texture is added/removed
208
+ * - If no texture and no children, autosize has no effect
209
+ *
210
+ * **Performance:**
211
+ * - Children mode uses efficient transform caching and differential updates
212
+ * - Only recalculates when child transforms actually change
213
+ * - Minimal memory allocation with factory function patterns
214
+ *
215
+ *
216
+ * @default `false`
217
+ */
218
+ autosize: boolean;
219
+ /**
220
+ * Margin around the Node's bounds for preloading
221
+ *
222
+ * @default `null`
223
+ */
224
+ boundsMargin: number | [number, number, number, number] | null;
225
+ /**
226
+ * Clipping Mode
227
+ *
228
+ * @remarks
229
+ * Enable Clipping Mode when you want to prevent the drawing of a Node and
230
+ * its descendants from overflowing outside of the Node's x/y/width/height
231
+ * bounds.
232
+ *
233
+ * For WebGL, clipping is implemented using the high-performance WebGL
234
+ * operation scissor. As a consequence, clipping does not work for
235
+ * non-rectangular areas. So, if the element is rotated
236
+ * (by itself or by any of its ancestors), clipping will not work as intended.
237
+ *
238
+ * TODO: Add support for non-rectangular clipping either automatically or
239
+ * via Render-To-Texture.
240
+ *
241
+ * @default `false`
242
+ */
243
+ clipping: boolean;
244
+ /**
245
+ * The color of the Node.
246
+ *
247
+ * @remarks
248
+ * The color value is a number in the format 0xRRGGBBAA, where RR is the red
249
+ * component, GG is the green component, BB is the blue component, and AA is
250
+ * the alpha component.
251
+ *
252
+ * Gradient colors may be set by setting the different color sub-properties:
253
+ * {@link colorTop}, {@link colorBottom}, {@link colorLeft}, {@link colorRight},
254
+ * {@link colorTl}, {@link colorTr}, {@link colorBr}, {@link colorBl} accordingly.
255
+ *
256
+ * @default `0xffffffff` (opaque white)
257
+ */
258
+ color: number;
259
+ /**
260
+ * The color of the top edge of the Node for gradient rendering.
261
+ *
262
+ * @remarks
263
+ * See {@link color} for more information about color values and gradient
264
+ * rendering.
265
+ */
266
+ colorTop: number;
267
+ /**
268
+ * The color of the bottom edge of the Node for gradient rendering.
269
+ *
270
+ * @remarks
271
+ * See {@link color} for more information about color values and gradient
272
+ * rendering.
273
+ */
274
+ colorBottom: number;
275
+ /**
276
+ * The color of the left edge of the Node for gradient rendering.
277
+ *
278
+ * @remarks
279
+ * See {@link color} for more information about color values and gradient
280
+ * rendering.
281
+ */
282
+ colorLeft: number;
283
+ /**
284
+ * The color of the right edge of the Node for gradient rendering.
285
+ *
286
+ * @remarks
287
+ * See {@link color} for more information about color values and gradient
288
+ * rendering.
289
+ */
290
+ colorRight: number;
291
+ /**
292
+ * The color of the top-left corner of the Node for gradient rendering.
293
+ *
294
+ * @remarks
295
+ * See {@link color} for more information about color values and gradient
296
+ * rendering.
297
+ */
298
+ colorTl: number;
299
+ /**
300
+ * The color of the top-right corner of the Node for gradient rendering.
301
+ *
302
+ * @remarks
303
+ * See {@link color} for more information about color values and gradient
304
+ * rendering.
305
+ */
306
+ colorTr: number;
307
+ /**
308
+ * The color of the bottom-right corner of the Node for gradient rendering.
309
+ *
310
+ * @remarks
311
+ * See {@link color} for more information about color values and gradient
312
+ * rendering.
313
+ */
314
+ colorBr: number;
315
+ /**
316
+ * The color of the bottom-left corner of the Node for gradient rendering.
317
+ *
318
+ * @remarks
319
+ * See {@link color} for more information about color values and gradient
320
+ * rendering.
321
+ */
322
+ colorBl: number;
323
+ /**
324
+ * The Node's parent Node.
325
+ *
326
+ * @remarks
327
+ * The value `null` indicates that the Node has no parent. This may either be
328
+ * because the Node is the root Node of the scene graph, or because the Node
329
+ * has been removed from the scene graph.
330
+ *
331
+ * In order to make sure that a Node can be rendered on the screen, it must
332
+ * be added to the scene graph by setting it's parent property to a Node that
333
+ * is already in the scene graph such as the root Node.
334
+ *
335
+ * @default `null`
336
+ */
337
+ parent: CoreNode | null;
338
+ /**
339
+ * The Node's z-index.
340
+ *
341
+ * @remarks
342
+ * Max z-index of children under the same parent determines which child
343
+ * is rendered on top. Higher z-index means the Node is rendered on top of
344
+ * children with lower z-index.
345
+ *
346
+ * Max value is 1000 and min value is -1000. Values outside of this range will be clamped.
347
+ */
348
+ zIndex: number;
349
+ /**
350
+ * The Node's Texture.
351
+ *
352
+ * @remarks
353
+ * The `texture` defines a rasterized image that is contained within the
354
+ * {@link width} and {@link height} dimensions of the Node. If null, the
355
+ * Node will use an opaque white {@link ColorTexture} when being drawn, which
356
+ * essentially enables colors (including gradients) to be drawn.
357
+ *
358
+ * If set, by default, the texture will be drawn, as is, stretched to the
359
+ * dimensions of the Node. This behavior can be modified by setting the TBD
360
+ * and TBD properties.
361
+ *
362
+ * To create a Texture in order to set it on this property, call
363
+ * {@link RendererMain.createTexture}.
364
+ *
365
+ * If the {@link src} is set on a Node, the Node will use the
366
+ * {@link ImageTexture} by default and the Node will simply load the image at
367
+ * the specified URL.
368
+ *
369
+ * Note: If this is a Text Node, the Texture will be managed by the Node's
370
+ * {@link TextRenderer} and should not be set explicitly.
371
+ */
372
+ texture: Texture | null;
373
+ /**
374
+ * Options to associate with the Node's Texture
375
+ */
376
+ textureOptions: TextureOptions;
377
+ /**
378
+ * The Node's shader
379
+ *
380
+ * @remarks
381
+ * The `shader` defines a {@link Shader} used to draw the Node. By default,
382
+ * the Default Shader is used which simply draws the defined {@link texture}
383
+ * or {@link color}(s) within the Node without any special effects.
384
+ *
385
+ * To create a Shader in order to set it on this property, call
386
+ * {@link RendererMain.createShader}.
387
+ *
388
+ * Note: If this is a Text Node, the Shader will be managed by the Node's
389
+ * {@link TextRenderer} and should not be set explicitly.
390
+ */
391
+ shader: CoreShaderNode<any> | null;
392
+ /**
393
+ * Image URL
394
+ *
395
+ * @remarks
396
+ * When set, the Node's {@link texture} is automatically set to an
397
+ * {@link ImageTexture} using the source image URL provided (with all other
398
+ * settings being defaults)
399
+ */
400
+ src: string | null;
401
+ /**
402
+ * Scale to render the Node at
403
+ *
404
+ * @remarks
405
+ * The scale value multiplies the provided {@link width} and {@link height}
406
+ * of the Node around the Node's Pivot Point (defined by the {@link pivot}
407
+ * props).
408
+ *
409
+ * Behind the scenes, setting this property sets both the {@link scaleX} and
410
+ * {@link scaleY} props to the same value.
411
+ *
412
+ * NOTE: When the scaleX and scaleY props are explicitly set to different values,
413
+ * this property returns `null`. Setting `null` on this property will have no
414
+ * effect.
415
+ *
416
+ * @default 1.0
417
+ */
418
+ scale: number | null;
419
+ /**
420
+ * Scale to render the Node at (X-Axis)
421
+ *
422
+ * @remarks
423
+ * The scaleX value multiplies the provided {@link width} of the Node around
424
+ * the Node's Pivot Point (defined by the {@link pivot} props).
425
+ *
426
+ * @default 1.0
427
+ */
428
+ scaleX: number;
429
+ /**
430
+ * Scale to render the Node at (Y-Axis)
431
+ *
432
+ * @remarks
433
+ * The scaleY value multiplies the provided {@link height} of the Node around
434
+ * the Node's Pivot Point (defined by the {@link pivot} props).
435
+ *
436
+ * @default 1.0
437
+ */
438
+ scaleY: number;
439
+ /**
440
+ * Combined position of the Node's Mount Point
441
+ *
442
+ * @remarks
443
+ * The value can be any number between `0.0` and `1.0`:
444
+ * - `0.0` defines the Mount Point at the top-left corner of the Node.
445
+ * - `0.5` defines it at the center of the Node.
446
+ * - `1.0` defines it at the bottom-right corner of the node.
447
+ *
448
+ * Use the {@link mountX} and {@link mountY} props seperately for more control
449
+ * of the Mount Point.
450
+ *
451
+ * When assigned, the same value is also passed to both the {@link mountX} and
452
+ * {@link mountY} props.
453
+ *
454
+ * @default 0 (top-left)
455
+ */
456
+ mount: number;
457
+ /**
458
+ * X position of the Node's Mount Point
459
+ *
460
+ * @remarks
461
+ * The value can be any number between `0.0` and `1.0`:
462
+ * - `0.0` defines the Mount Point's X position as the left-most edge of the
463
+ * Node
464
+ * - `0.5` defines it as the horizontal center of the Node
465
+ * - `1.0` defines it as the right-most edge of the Node.
466
+ *
467
+ * The combination of {@link mountX} and {@link mountY} define the Mount Point
468
+ *
469
+ * @default 0 (left-most edge)
470
+ */
471
+ mountX: number;
472
+ /**
473
+ * Y position of the Node's Mount Point
474
+ *
475
+ * @remarks
476
+ * The value can be any number between `0.0` and `1.0`:
477
+ * - `0.0` defines the Mount Point's Y position as the top-most edge of the
478
+ * Node
479
+ * - `0.5` defines it as the vertical center of the Node
480
+ * - `1.0` defines it as the bottom-most edge of the Node.
481
+ *
482
+ * The combination of {@link mountX} and {@link mountY} define the Mount Point
483
+ *
484
+ * @default 0 (top-most edge)
485
+ */
486
+ mountY: number;
487
+ /**
488
+ * Combined position of the Node's Pivot Point
489
+ *
490
+ * @remarks
491
+ * The value can be any number between `0.0` and `1.0`:
492
+ * - `0.0` defines the Pivot Point at the top-left corner of the Node.
493
+ * - `0.5` defines it at the center of the Node.
494
+ * - `1.0` defines it at the bottom-right corner of the node.
495
+ *
496
+ * Use the {@link pivotX} and {@link pivotY} props seperately for more control
497
+ * of the Pivot Point.
498
+ *
499
+ * When assigned, the same value is also passed to both the {@link pivotX} and
500
+ * {@link pivotY} props.
501
+ *
502
+ * @default 0.5 (center)
503
+ */
504
+ pivot: number;
505
+ /**
506
+ * X position of the Node's Pivot Point
507
+ *
508
+ * @remarks
509
+ * The value can be any number between `0.0` and `1.0`:
510
+ * - `0.0` defines the Pivot Point's X position as the left-most edge of the
511
+ * Node
512
+ * - `0.5` defines it as the horizontal center of the Node
513
+ * - `1.0` defines it as the right-most edge of the Node.
514
+ *
515
+ * The combination of {@link pivotX} and {@link pivotY} define the Pivot Point
516
+ *
517
+ * @default 0.5 (centered on x-axis)
518
+ */
519
+ pivotX: number;
520
+ /**
521
+ * Y position of the Node's Pivot Point
522
+ *
523
+ * @remarks
524
+ * The value can be any number between `0.0` and `1.0`:
525
+ * - `0.0` defines the Pivot Point's Y position as the top-most edge of the
526
+ * Node
527
+ * - `0.5` defines it as the vertical center of the Node
528
+ * - `1.0` defines it as the bottom-most edge of the Node.
529
+ *
530
+ * The combination of {@link pivotX} and {@link pivotY} define the Pivot Point
531
+ *
532
+ * @default 0.5 (centered on y-axis)
533
+ */
534
+ pivotY: number;
535
+ /**
536
+ * Rotation of the Node (in Radians)
537
+ *
538
+ * @remarks
539
+ * Sets the amount to rotate the Node by around it's Pivot Point (defined by
540
+ * the {@link pivot} props). Positive values rotate the Node clockwise, while
541
+ * negative values rotate it counter-clockwise.
542
+ *
543
+ * Example values:
544
+ * - `-Math.PI / 2`: 90 degree rotation counter-clockwise
545
+ * - `0`: No rotation
546
+ * - `Math.PI / 2`: 90 degree rotation clockwise
547
+ * - `Math.PI`: 180 degree rotation clockwise
548
+ * - `3 * Math.PI / 2`: 270 degree rotation clockwise
549
+ * - `2 * Math.PI`: 360 rotation clockwise
550
+ */
551
+ rotation: number;
552
+ /**
553
+ * Whether the Node is rendered to a texture
554
+ *
555
+ * @remarks
556
+ * TBD
557
+ *
558
+ * @default false
559
+ */
560
+ rtt: boolean;
561
+ /**
562
+ * Node data element for custom data storage (optional)
563
+ *
564
+ * @remarks
565
+ * This property is used to store custom data on the Node as a key/value data store.
566
+ * Data values are limited to string, numbers, booleans. Strings will be truncated
567
+ * to a 2048 character limit for performance reasons.
568
+ *
569
+ * This is not a data storage mechanism for large amounts of data please use a
570
+ * dedicated data storage mechanism for that.
571
+ *
572
+ * The custom data will be reflected in the inspector as part of `data-*` attributes
573
+ *
574
+ * @default `undefined`
575
+ */
576
+ data?: CustomDataMap;
577
+ /**
578
+ * Image Type to explicitly set the image type that is being loaded
579
+ *
580
+ * @remarks
581
+ * This property must be used with a `src` that points at an image. In some cases
582
+ * the extension doesn't provide a reliable representation of the image type. In such
583
+ * cases set the ImageType explicitly.
584
+ *
585
+ * `regular` is used for normal images such as png, jpg, etc
586
+ * `compressed` is used for ETC1/ETC2 compressed images with a PVR or KTX container
587
+ * `svg` is used for scalable vector graphics
588
+ *
589
+ * @default `undefined`
590
+ */
591
+ imageType?: 'regular' | 'compressed' | 'svg' | null;
592
+ /**
593
+ * She width of the rectangle from which the Image Texture will be extracted.
594
+ * This value can be negative. If not provided, the image's source natural
595
+ * width will be used.
596
+ */
597
+ srcWidth?: number;
598
+ /**
599
+ * The height of the rectangle from which the Image Texture will be extracted.
600
+ * This value can be negative. If not provided, the image's source natural
601
+ * height will be used.
602
+ */
603
+ srcHeight?: number;
604
+ /**
605
+ * The x coordinate of the reference point of the rectangle from which the Texture
606
+ * will be extracted. `width` and `height` are provided. And only works when
607
+ * createImageBitmap is available. Only works when createImageBitmap is supported on the browser.
608
+ */
609
+ srcX?: number;
610
+ /**
611
+ * The y coordinate of the reference point of the rectangle from which the Texture
612
+ * will be extracted. Only used when source `srcWidth` width and `srcHeight` height
613
+ * are provided. Only works when createImageBitmap is supported on the browser.
614
+ */
615
+ srcY?: number;
616
+ /**
617
+ * Mark the node as interactive so we can perform hit tests on it
618
+ * when pointer events are registered.
619
+ * @default false
620
+ */
621
+ interactive?: boolean;
622
+ /**
623
+ * preventDestroy flag prevents the node and its children from being destroyed
624
+ * when the parent is destroyed.
625
+ * @default false
626
+ */
627
+ preventDestroy?: boolean;
628
+ }
629
+ /**
630
+ * Grab all the number properties of type T
631
+ */
632
+ type NumberProps<T> = {
633
+ [Key in keyof T as NonNullable<T[Key]> extends number ? Key : never]: number;
634
+ };
635
+ /**
636
+ * Properties of a Node used by the animate() function
637
+ */
638
+ export interface CoreNodeAnimateProps extends NumberProps<CoreNodeProps> {
639
+ /**
640
+ * Shader properties to animate
641
+ */
642
+ shaderProps: Record<string, number>;
643
+ }
644
+ /**
645
+ * A visual Node in the Renderer scene graph.
646
+ *
647
+ * @remarks
648
+ * CoreNode is an internally used class that represents a Renderer Node in the
649
+ * scene graph. See INode.ts for the public APIs exposed to Renderer users
650
+ * that include generic types for Shaders.
651
+ */
652
+ export declare class CoreNode extends EventEmitter {
653
+ readonly stage: Stage;
654
+ readonly children: CoreNode[];
655
+ protected _id: number;
656
+ readonly props: CoreNodeProps;
657
+ readonly isCoreNode: true;
658
+ private _animations;
659
+ renderOpBufferIdx: number;
660
+ numQuads: number;
661
+ renderOpTextures: WebGlCtxTexture[];
662
+ /**
663
+ * Permanent index (in float32 units) into the renderer's quad buffer.
664
+ * -1 means this node has not yet been assigned a slot.
665
+ */
666
+ quadBufferIndex: number;
667
+ /**
668
+ * True when renderCoords, premultiplied colors, or textureCoords changed
669
+ * since the node's quad was last written to the GPU.
670
+ */
671
+ isQuadDirty: boolean;
672
+ private hasShaderUpdater;
673
+ hasShaderTimeFn: boolean;
674
+ private hasColorProps;
675
+ textureLoaded: boolean;
676
+ updateType: UpdateType;
677
+ childUpdateType: UpdateType;
678
+ globalTransform?: Matrix3d;
679
+ localTransform?: Matrix3d;
680
+ sceneGlobalTransform?: Matrix3d;
681
+ renderCoords?: RenderCoords;
682
+ sceneRenderCoords?: RenderCoords;
683
+ renderBound?: Bound;
684
+ strictBound?: Bound;
685
+ preloadBound?: Bound;
686
+ clippingRect: RectWithValid;
687
+ textureCoords?: TextureCoords;
688
+ updateShaderUniforms: boolean;
689
+ isRenderable: boolean;
690
+ renderState: CoreNodeRenderState;
691
+ isSimple: boolean;
692
+ worldAlpha: number;
693
+ premultipliedColorTl: number;
694
+ premultipliedColorTr: number;
695
+ premultipliedColorBl: number;
696
+ premultipliedColorBr: number;
697
+ calcZIndex: number;
698
+ hasRTTupdates: boolean;
699
+ parentHasRenderTexture: boolean;
700
+ rttParent: CoreNode | null;
701
+ /**
702
+ * only used when rtt = true
703
+ */
704
+ framebufferDimensions: Dimensions | null;
705
+ /**Autosize properties */
706
+ autosizer: Autosizer | null;
707
+ parentAutosizer: Autosizer | null;
708
+ destroyed: boolean;
709
+ constructor(stage: Stage, props: CoreNodeProps);
710
+ loadTexture(): void;
711
+ /**
712
+ * Task for queueMicrotask to loadTexture
713
+ *
714
+ * @remarks
715
+ * This method is called in a microtask to release the texture.
716
+ */
717
+ private loadTextureTask;
718
+ unloadTexture(): void;
719
+ protected onTextureLoaded: TextureLoadedEventHandler;
720
+ private onTextureFailed;
721
+ private onTextureFreed;
722
+ /**
723
+ * Change types types is used to determine the scope of the changes being applied
724
+ *
725
+ * @remarks
726
+ * See {@link UpdateType} for more information on each type
727
+ *
728
+ * @param type
729
+ */
730
+ setUpdateType(type: UpdateType): void;
731
+ updateLocalTransform(): void;
732
+ updateIsSimple(): void;
733
+ /**
734
+ * @todo: test for correct calculation flag
735
+ * @param delta
736
+ */
737
+ update(delta: number, parentClippingRect: RectWithValid): void;
738
+ private findParentRTTNode;
739
+ private notifyChildrenRTTOfUpdate;
740
+ protected notifyParentRTTOfUpdate(): void;
741
+ checkRenderBounds(): CoreNodeRenderState;
742
+ updateBoundingRect(): void;
743
+ createRenderBounds(): void;
744
+ updateRenderState(renderState: CoreNodeRenderState): void;
745
+ /**
746
+ * Checks if the node is renderable based on world alpha, dimensions and out of bounds status.
747
+ */
748
+ checkBasicRenderability(): boolean;
749
+ /**
750
+ * Updates the `isRenderable` property based on various conditions.
751
+ */
752
+ updateIsRenderable(): void;
753
+ /**
754
+ * Sets the renderable state and triggers changes if necessary.
755
+ * @param isRenderable - The new renderable state
756
+ */
757
+ setRenderable(isRenderable: boolean): void;
758
+ /**
759
+ * Changes the renderable state of the node.
760
+ */
761
+ updateTextureOwnership(isRenderable: boolean): void;
762
+ /**
763
+ * Checks if the node is out of the viewport bounds.
764
+ */
765
+ isOutOfBounds(): boolean;
766
+ /**
767
+ * Checks if the node has dimensions (width/height)
768
+ */
769
+ hasDimensions(): boolean;
770
+ calculateRenderCoords(): void;
771
+ /**
772
+ * This function calculates the clipping rectangle for a node.
773
+ *
774
+ * The function then checks if the node is rotated. If the node requires clipping and is not rotated, a new clipping rectangle is created based on the node's global transform and dimensions.
775
+ * If a parent clipping rectangle exists, it is intersected with the node's clipping rectangle (if it exists), or replaces the node's clipping rectangle.
776
+ *
777
+ * Finally, the node's parentClippingRect and clippingRect properties are updated.
778
+ */
779
+ calculateClippingRect(parentClippingRect: RectWithValid): void;
780
+ /**
781
+ * Destroy the node and cleanup all resources
782
+ */
783
+ destroy(isChild?: boolean): void;
784
+ renderQuads(renderer: CoreRenderer): void;
785
+ get renderTexture(): Texture | null;
786
+ get renderTextureCoords(): TextureCoords | undefined;
787
+ get quadBufferCollection(): BufferCollection;
788
+ get width(): number;
789
+ get height(): number;
790
+ get time(): number;
791
+ getTimerValue(): number;
792
+ sortChildren(): void;
793
+ removeChild(node: CoreNode, targetParent?: CoreNode | null): void;
794
+ addChild(node: CoreNode, previousParent?: CoreNode | null): void;
795
+ get id(): number;
796
+ get data(): CustomDataMap | undefined;
797
+ set data(d: CustomDataMap | undefined);
798
+ get x(): number;
799
+ set x(value: number);
800
+ get absX(): number;
801
+ get absY(): number;
802
+ get y(): number;
803
+ set y(value: number);
804
+ get w(): number;
805
+ set w(value: number);
806
+ get h(): number;
807
+ set h(value: number);
808
+ get scale(): number;
809
+ set scale(value: number);
810
+ get scaleX(): number;
811
+ set scaleX(value: number);
812
+ get scaleY(): number;
813
+ set scaleY(value: number);
814
+ get mount(): number;
815
+ set mount(value: number);
816
+ get mountX(): number;
817
+ set mountX(value: number);
818
+ get mountY(): number;
819
+ set mountY(value: number);
820
+ get pivot(): number;
821
+ set pivot(value: number);
822
+ get pivotX(): number;
823
+ set pivotX(value: number);
824
+ get pivotY(): number;
825
+ set pivotY(value: number);
826
+ get rotation(): number;
827
+ set rotation(value: number);
828
+ get alpha(): number;
829
+ set alpha(value: number);
830
+ get autosize(): boolean;
831
+ set autosize(value: boolean);
832
+ get boundsMargin(): number | [number, number, number, number] | null;
833
+ set boundsMargin(value: number | [number, number, number, number] | null);
834
+ get clipping(): boolean;
835
+ set clipping(value: boolean);
836
+ get color(): number;
837
+ set color(value: number);
838
+ get colorTop(): number;
839
+ set colorTop(value: number);
840
+ get colorBottom(): number;
841
+ set colorBottom(value: number);
842
+ get colorLeft(): number;
843
+ set colorLeft(value: number);
844
+ get colorRight(): number;
845
+ set colorRight(value: number);
846
+ get colorTl(): number;
847
+ set colorTl(value: number);
848
+ get colorTr(): number;
849
+ set colorTr(value: number);
850
+ get colorBl(): number;
851
+ set colorBl(value: number);
852
+ get colorBr(): number;
853
+ set colorBr(value: number);
854
+ get zIndex(): number;
855
+ set zIndex(value: number);
856
+ get parent(): CoreNode | null;
857
+ set parent(newParent: CoreNode | null);
858
+ get rtt(): boolean;
859
+ set rtt(value: boolean);
860
+ get preventDestroy(): boolean | undefined;
861
+ set preventDestroy(value: boolean | undefined);
862
+ private initRenderTexture;
863
+ private cleanupRenderTexture;
864
+ private markChildrenWithRTT;
865
+ private applyRTTInheritance;
866
+ private clearRTTInheritance;
867
+ get shader(): CoreShaderNode<any> | null;
868
+ set shader(shader: CoreShaderNode<any> | null);
869
+ get src(): string | null;
870
+ set src(imageUrl: string | null);
871
+ set imageType(type: 'regular' | 'compressed' | 'svg' | null);
872
+ get imageType(): "regular" | "compressed" | "svg" | null;
873
+ get srcHeight(): number | undefined;
874
+ set srcHeight(value: number);
875
+ get srcWidth(): number | undefined;
876
+ set srcWidth(value: number);
877
+ get srcX(): number | undefined;
878
+ set srcX(value: number);
879
+ get srcY(): number | undefined;
880
+ set srcY(value: number);
881
+ /**
882
+ * Returns the framebuffer dimensions of the RTT parent
883
+ */
884
+ get parentFramebufferDimensions(): Dimensions | null;
885
+ /**
886
+ * Returns the parent render texture node if it exists.
887
+ */
888
+ get parentRenderTexture(): CoreNode | null;
889
+ get texture(): Texture | null;
890
+ set texture(value: Texture | null);
891
+ set textureOptions(value: TextureOptions);
892
+ get textureOptions(): TextureOptions;
893
+ set interactive(value: boolean | undefined);
894
+ get interactive(): boolean | undefined;
895
+ setRTTUpdates(type: number): void;
896
+ animate(props: Partial<CoreNodeAnimateProps>, settings: Partial<AnimationSettings>): IAnimationController;
897
+ animateProp(name: string, value: number, settings: Partial<AnimationSettings>): IAnimationController;
898
+ flush(): void;
899
+ /**
900
+ * Add a texture to the current RenderOp.
901
+ *
902
+ * @param texture
903
+ * @returns Assigned Texture Index of the texture in the render op
904
+ */
905
+ addTexture(texture: WebGlCtxTexture): number;
906
+ draw(renderer: WebGlRenderer): void;
907
+ }
908
+ export {};