@lightningjs/renderer 3.0.0-beta4 → 3.0.0-beta6

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 (359) hide show
  1. package/LICENSE +202 -202
  2. package/NOTICE +3 -3
  3. package/README.md +147 -147
  4. package/dist/exports/core-api.d.ts +74 -0
  5. package/dist/exports/core-api.js +96 -0
  6. package/dist/exports/core-api.js.map +1 -0
  7. package/dist/exports/main-api.d.ts +30 -0
  8. package/dist/exports/main-api.js +45 -0
  9. package/dist/exports/main-api.js.map +1 -0
  10. package/dist/src/core/CoreExtension.d.ts +12 -0
  11. package/dist/src/core/CoreExtension.js +29 -0
  12. package/dist/src/core/CoreExtension.js.map +1 -0
  13. package/dist/src/core/CoreNode.d.ts +6 -16
  14. package/dist/src/core/CoreNode.js +25 -38
  15. package/dist/src/core/CoreNode.js.map +1 -1
  16. package/dist/src/core/CoreStuff.js +138 -0
  17. package/dist/src/core/CoreStuff.js.map +1 -0
  18. package/dist/src/core/CoreTextNode.js +1 -1
  19. package/dist/src/core/CoreTextNode.js.map +1 -1
  20. package/dist/src/core/CoreTextureManager.js +4 -5
  21. package/dist/src/core/CoreTextureManager.js.map +1 -1
  22. package/dist/src/core/CoreTexturizer.d.ts +14 -0
  23. package/dist/src/core/CoreTexturizer.js +47 -0
  24. package/dist/src/core/CoreTexturizer.js.map +1 -0
  25. package/dist/src/core/LngNode.d.ts +736 -0
  26. package/dist/src/core/LngNode.js +1174 -0
  27. package/dist/src/core/LngNode.js.map +1 -0
  28. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  29. package/dist/src/core/Matrix2DContext.js +45 -0
  30. package/dist/src/core/Matrix2DContext.js.map +1 -0
  31. package/dist/src/core/ShaderNode.d.ts +10 -0
  32. package/dist/src/core/ShaderNode.js +30 -0
  33. package/dist/src/core/ShaderNode.js.map +1 -0
  34. package/dist/src/core/Stage.js +0 -3
  35. package/dist/src/core/Stage.js.map +1 -1
  36. package/dist/src/core/TextNode.d.ts +103 -0
  37. package/dist/src/core/TextNode.js +331 -0
  38. package/dist/src/core/TextNode.js.map +1 -0
  39. package/dist/src/core/TextureMemoryManager.js +3 -4
  40. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  41. package/dist/src/core/lib/Coords.d.ts +14 -0
  42. package/dist/src/core/lib/Coords.js +55 -0
  43. package/dist/src/core/lib/Coords.js.map +1 -0
  44. package/dist/src/core/lib/glm/common.d.ts +162 -0
  45. package/dist/src/core/lib/glm/common.js +81 -0
  46. package/dist/src/core/lib/glm/common.js.map +1 -0
  47. package/dist/src/core/lib/glm/index.d.ts +11 -0
  48. package/dist/src/core/lib/glm/index.js +30 -0
  49. package/dist/src/core/lib/glm/index.js.map +1 -0
  50. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  51. package/dist/src/core/lib/glm/mat2.js +396 -0
  52. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  53. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  54. package/dist/src/core/lib/glm/mat2d.js +442 -0
  55. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  56. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  57. package/dist/src/core/lib/glm/mat3.js +680 -0
  58. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  59. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  60. package/dist/src/core/lib/glm/mat4.js +1802 -0
  61. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  62. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  63. package/dist/src/core/lib/glm/quat.js +693 -0
  64. package/dist/src/core/lib/glm/quat.js.map +1 -0
  65. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  66. package/dist/src/core/lib/glm/quat2.js +754 -0
  67. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  68. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  69. package/dist/src/core/lib/glm/vec2.js +569 -0
  70. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  71. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  72. package/dist/src/core/lib/glm/vec3.js +720 -0
  73. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  74. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  75. package/dist/src/core/lib/glm/vec4.js +608 -0
  76. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  77. package/dist/src/core/renderers/CoreRenderer.d.ts +1 -1
  78. package/dist/src/core/renderers/CoreShaderManager.d.ts +19 -0
  79. package/dist/src/core/renderers/CoreShaderManager.js +33 -0
  80. package/dist/src/core/renderers/CoreShaderManager.js.map +1 -0
  81. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +27 -0
  82. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +82 -0
  83. package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +1 -0
  84. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +11 -0
  85. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +34 -0
  86. package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +1 -0
  87. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  89. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
  90. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +45 -45
  91. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +61 -61
  92. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +93 -93
  93. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +63 -63
  94. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +62 -62
  95. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +15 -15
  96. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +6 -6
  97. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +15 -15
  98. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +15 -15
  99. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +15 -15
  100. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +42 -42
  101. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +44 -44
  102. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +3 -3
  103. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +22 -22
  104. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +28 -28
  105. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +10 -10
  106. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +37 -37
  107. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +19 -19
  108. package/dist/src/core/scene/Scene.d.ts +59 -0
  109. package/dist/src/core/scene/Scene.js +106 -0
  110. package/dist/src/core/scene/Scene.js.map +1 -0
  111. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +8 -2
  112. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
  113. package/dist/src/core/shaders/webgl/Border.js +86 -63
  114. package/dist/src/core/shaders/webgl/Border.js.map +1 -1
  115. package/dist/src/core/shaders/webgl/Default.js +47 -47
  116. package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
  117. package/dist/src/core/shaders/webgl/HolePunch.js +32 -32
  118. package/dist/src/core/shaders/webgl/LinearGradient.js +36 -36
  119. package/dist/src/core/shaders/webgl/RadialGradient.js +33 -33
  120. package/dist/src/core/shaders/webgl/Rounded.js +71 -71
  121. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +104 -72
  122. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
  123. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +123 -86
  124. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
  125. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
  126. package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
  127. package/dist/src/core/shaders/webgl/Shadow.js +83 -83
  128. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +3 -1
  129. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  130. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  131. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  132. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  133. package/dist/src/main-api/ICoreDriver.d.ts +27 -0
  134. package/dist/src/main-api/ICoreDriver.js +20 -0
  135. package/dist/src/main-api/ICoreDriver.js.map +1 -0
  136. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  137. package/dist/src/main-api/IRenderDriver.js +20 -0
  138. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  139. package/dist/src/main-api/IShaderController.d.ts +14 -0
  140. package/dist/src/main-api/IShaderController.js +30 -0
  141. package/dist/src/main-api/IShaderController.js.map +1 -0
  142. package/dist/src/main-api/IShaderNode.d.ts +17 -0
  143. package/dist/src/main-api/IShaderNode.js +19 -0
  144. package/dist/src/main-api/IShaderNode.js.map +1 -0
  145. package/dist/src/main-api/Inspector.js +1 -1
  146. package/dist/src/main-api/Inspector.js.map +1 -1
  147. package/dist/src/main-api/Renderer.js +2 -3
  148. package/dist/src/main-api/Renderer.js.map +1 -1
  149. package/dist/src/main-api/RendererMain.d.ts +375 -0
  150. package/dist/src/main-api/RendererMain.js +365 -0
  151. package/dist/src/main-api/RendererMain.js.map +1 -0
  152. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +9 -0
  153. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +38 -0
  154. package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +1 -0
  155. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +56 -0
  156. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +101 -0
  157. package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +1 -0
  158. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +32 -0
  159. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +28 -0
  160. package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +1 -0
  161. package/dist/src/render-drivers/main/MainCoreDriver.d.ts +24 -0
  162. package/dist/src/render-drivers/main/MainCoreDriver.js +118 -0
  163. package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -0
  164. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +99 -0
  165. package/dist/src/render-drivers/main/MainOnlyNode.js +396 -0
  166. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  167. package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +6 -0
  168. package/dist/src/render-drivers/main/MainOnlyShaderController.js +15 -0
  169. package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +1 -0
  170. package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +7 -0
  171. package/dist/src/render-drivers/main/MainOnlyShaderNode.js +34 -0
  172. package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +1 -0
  173. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +47 -0
  174. package/dist/src/render-drivers/main/MainOnlyTextNode.js +205 -0
  175. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  176. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  177. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  178. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  179. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +90 -0
  180. package/dist/src/render-drivers/threadx/NodeStruct.js +281 -0
  181. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  182. package/dist/src/render-drivers/threadx/SharedNode.d.ts +39 -0
  183. package/dist/src/render-drivers/threadx/SharedNode.js +60 -0
  184. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  185. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +44 -0
  186. package/dist/src/render-drivers/threadx/TextNodeStruct.js +201 -0
  187. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  188. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +28 -0
  189. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +234 -0
  190. package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -0
  191. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  192. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  193. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  194. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +44 -0
  195. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +154 -0
  196. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  197. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +6 -0
  198. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +16 -0
  199. package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +1 -0
  200. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +7 -0
  201. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +15 -0
  202. package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +1 -0
  203. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +28 -0
  204. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +55 -0
  205. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  206. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  207. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +198 -0
  208. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  209. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +70 -0
  210. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  211. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  212. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  213. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +177 -0
  214. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  215. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +27 -0
  216. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +108 -0
  217. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  218. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  219. package/dist/src/render-drivers/threadx/worker/renderer.js +145 -0
  220. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  221. package/dist/src/render-drivers/utils.d.ts +12 -0
  222. package/dist/src/render-drivers/utils.js +69 -0
  223. package/dist/src/render-drivers/utils.js.map +1 -0
  224. package/dist/src/utils.d.ts +1 -6
  225. package/dist/src/utils.js +2 -9
  226. package/dist/src/utils.js.map +1 -1
  227. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  228. package/exports/canvas-shaders.ts +28 -28
  229. package/exports/canvas.ts +45 -45
  230. package/exports/index.ts +90 -90
  231. package/exports/inspector.ts +24 -24
  232. package/exports/utils.ts +44 -44
  233. package/exports/webgl-shaders.ts +28 -28
  234. package/exports/webgl.ts +50 -50
  235. package/package.json +2 -2
  236. package/src/common/CommonTypes.ts +146 -146
  237. package/src/common/EventEmitter.ts +77 -77
  238. package/src/common/IAnimationController.ts +92 -92
  239. package/src/common/IEventEmitter.ts +28 -28
  240. package/src/core/CoreNode.test.ts +202 -203
  241. package/src/core/CoreNode.ts +2469 -2494
  242. package/src/core/CoreShaderManager.ts +188 -188
  243. package/src/core/CoreTextNode.ts +448 -448
  244. package/src/core/CoreTextureManager.ts +600 -601
  245. package/src/core/Stage.ts +751 -754
  246. package/src/core/TextureMemoryManager.ts +394 -395
  247. package/src/core/animations/AnimationManager.ts +38 -38
  248. package/src/core/animations/CoreAnimation.ts +284 -284
  249. package/src/core/animations/CoreAnimationController.ts +157 -157
  250. package/src/core/lib/ContextSpy.ts +41 -41
  251. package/src/core/lib/ImageWorker.ts +280 -280
  252. package/src/core/lib/Matrix3d.ts +244 -244
  253. package/src/core/lib/RenderCoords.ts +71 -71
  254. package/src/core/lib/WebGlContextWrapper.ts +1374 -1374
  255. package/src/core/lib/textureCompression.ts +152 -152
  256. package/src/core/lib/textureSvg.ts +78 -78
  257. package/src/core/lib/utils.ts +386 -386
  258. package/src/core/lib/validateImageBitmap.ts +87 -87
  259. package/src/core/platforms/Platform.ts +77 -77
  260. package/src/core/platforms/web/WebPlatform.ts +84 -84
  261. package/src/core/renderers/CoreContextTexture.ts +43 -43
  262. package/src/core/renderers/CoreRenderOp.ts +22 -22
  263. package/src/core/renderers/CoreRenderer.ts +109 -109
  264. package/src/core/renderers/CoreShaderNode.ts +165 -165
  265. package/src/core/renderers/CoreShaderProgram.ts +23 -23
  266. package/src/core/renderers/canvas/CanvasRenderer.ts +298 -298
  267. package/src/core/renderers/canvas/CanvasShaderNode.ts +99 -99
  268. package/src/core/renderers/canvas/CanvasTexture.ts +156 -156
  269. package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +220 -220
  270. package/src/core/renderers/canvas/internal/ColorUtils.ts +85 -85
  271. package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +86 -86
  272. package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
  273. package/src/core/renderers/webgl/WebGlCtxTexture.ts +301 -301
  274. package/src/core/renderers/webgl/WebGlRenderOp.ts +161 -161
  275. package/src/core/renderers/webgl/WebGlRenderer.ts +750 -750
  276. package/src/core/renderers/webgl/WebGlShaderNode.ts +437 -437
  277. package/src/core/renderers/webgl/WebGlShaderProgram.ts +318 -318
  278. package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
  279. package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
  280. package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
  281. package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
  282. package/src/core/shaders/canvas/Border.ts +78 -78
  283. package/src/core/shaders/canvas/HolePunch.ts +62 -62
  284. package/src/core/shaders/canvas/LinearGradient.ts +69 -69
  285. package/src/core/shaders/canvas/RadialGradient.ts +113 -113
  286. package/src/core/shaders/canvas/Rounded.ts +55 -55
  287. package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -68
  288. package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +88 -88
  289. package/src/core/shaders/canvas/RoundedWithShadow.ts +69 -69
  290. package/src/core/shaders/canvas/Shadow.ts +52 -52
  291. package/src/core/shaders/canvas/utils/render.ts +151 -151
  292. package/src/core/shaders/templates/BorderTemplate.ts +115 -115
  293. package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
  294. package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
  295. package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
  296. package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
  297. package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
  298. package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
  299. package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
  300. package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
  301. package/src/core/shaders/templates/shaderUtils.ts +47 -47
  302. package/src/core/shaders/webgl/Border.ts +116 -96
  303. package/src/core/shaders/webgl/Default.ts +89 -89
  304. package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
  305. package/src/core/shaders/webgl/HolePunch.ts +78 -78
  306. package/src/core/shaders/webgl/LinearGradient.ts +81 -81
  307. package/src/core/shaders/webgl/RadialGradient.ts +84 -84
  308. package/src/core/shaders/webgl/Rounded.ts +117 -117
  309. package/src/core/shaders/webgl/RoundedWithBorder.ts +144 -114
  310. package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +166 -133
  311. package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
  312. package/src/core/shaders/webgl/SdfShader.ts +134 -134
  313. package/src/core/shaders/webgl/Shadow.ts +115 -115
  314. package/src/core/text-rendering/TextRenderingUtils.ts +36 -36
  315. package/src/core/text-rendering/TextTextureRendererUtils.ts +263 -263
  316. package/src/core/text-rendering/TrFontManager.ts +183 -183
  317. package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +176 -176
  318. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +139 -139
  319. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +173 -173
  320. package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +171 -171
  321. package/src/core/text-rendering/font-face-types/TrFontFace.ts +187 -187
  322. package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +94 -94
  323. package/src/core/text-rendering/font-face-types/utils.ts +39 -39
  324. package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +514 -514
  325. package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +863 -863
  326. package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +849 -846
  327. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +48 -48
  328. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +66 -66
  329. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +52 -52
  330. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +32 -32
  331. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +117 -117
  332. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +133 -133
  333. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +38 -38
  334. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +497 -497
  335. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +49 -49
  336. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +52 -52
  337. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -205
  338. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +93 -93
  339. package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -40
  340. package/src/core/text-rendering/renderers/TextRenderer.ts +567 -567
  341. package/src/core/textures/ColorTexture.ts +102 -102
  342. package/src/core/textures/ImageTexture.ts +410 -410
  343. package/src/core/textures/NoiseTexture.ts +104 -104
  344. package/src/core/textures/RenderTexture.ts +85 -85
  345. package/src/core/textures/SubTexture.ts +205 -205
  346. package/src/core/textures/Texture.ts +358 -358
  347. package/src/core/utils.ts +227 -227
  348. package/src/env.d.ts +7 -7
  349. package/src/main-api/INode.ts +100 -100
  350. package/src/main-api/Inspector.ts +522 -522
  351. package/src/main-api/Renderer.ts +673 -675
  352. package/src/main-api/utils.ts +45 -45
  353. package/src/utils.ts +267 -267
  354. package/COPYING +0 -1
  355. package/dist/src/core/temp.js +0 -77
  356. package/dist/src/core/temp.js.map +0 -1
  357. package/scripts/please-use-pnpm.js +0 -13
  358. package/src/core/platform.ts +0 -64
  359. /package/dist/src/core/{temp.d.ts → CoreStuff.d.ts} +0 -0
@@ -0,0 +1,736 @@
1
+ import type { ShaderMap } from './CoreShaderManager.js';
2
+ import type { ExtractProps, TextureOptions } from './CoreTextureManager.js';
3
+ import type { CoreRenderer } from './renderers/CoreRenderer.js';
4
+ import type { CoreShader } from './renderers/CoreShader.js';
5
+ import type { Stage } from './Stage.js';
6
+ import type { Texture } from './textures/Texture.js';
7
+ import type { Dimensions } from '../common/CommonTypes.js';
8
+ import { EventEmitter } from '../common/EventEmitter.js';
9
+ import { type Bound, type RectWithValid } from './lib/utils.js';
10
+ import { Matrix3d } from './lib/Matrix3d.js';
11
+ import { RenderCoords } from './lib/RenderCoords.js';
12
+ import type { AnimationSettings } from './animations/CoreAnimation.js';
13
+ import type { IAnimationController } from '../common/IAnimationController.js';
14
+ import type { ShaderRef } from '../main-api/Renderer.js';
15
+ export declare enum LngNodeRenderState {
16
+ Init = 0,
17
+ OutOfBounds = 2,
18
+ InBounds = 4,
19
+ InViewport = 8
20
+ }
21
+ export declare enum UpdateType {
22
+ /**
23
+ * Child updates
24
+ */
25
+ Children = 1,
26
+ /**
27
+ * Scale/Rotate transform update
28
+ *
29
+ * @remarks
30
+ * LngNode Properties Updated:
31
+ * - `scaleRotateTransform`
32
+ */
33
+ ScaleRotate = 2,
34
+ /**
35
+ * Translate transform update (x/y/width/height/pivot/mount)
36
+ *
37
+ * @remarks
38
+ * LngNode Properties Updated:
39
+ * - `localTransform`
40
+ */
41
+ Local = 4,
42
+ /**
43
+ * Global Transform update
44
+ *
45
+ * @remarks
46
+ * LngNode Properties Updated:
47
+ * - `globalTransform`
48
+ * - `renderCoords`
49
+ * - `renderBound`
50
+ */
51
+ Global = 8,
52
+ /**
53
+ * Clipping rect update
54
+ *
55
+ * @remarks
56
+ * LngNode Properties Updated:
57
+ * - `clippingRect`
58
+ */
59
+ Clipping = 16,
60
+ /**
61
+ * Calculated ZIndex update
62
+ *
63
+ * @remarks
64
+ * LngNode Properties Updated:
65
+ * - `calcZIndex`
66
+ */
67
+ CalculatedZIndex = 32,
68
+ /**
69
+ * Z-Index Sorted Children update
70
+ *
71
+ * @remarks
72
+ * LngNode Properties Updated:
73
+ * - `children` (sorts children by their `calcZIndex`)
74
+ */
75
+ ZIndexSortedChildren = 64,
76
+ /**
77
+ * Premultiplied Colors update
78
+ *
79
+ * @remarks
80
+ * LngNode Properties Updated:
81
+ * - `premultipliedColorTl`
82
+ * - `premultipliedColorTr`
83
+ * - `premultipliedColorBl`
84
+ * - `premultipliedColorBr`
85
+ */
86
+ PremultipliedColors = 128,
87
+ /**
88
+ * World Alpha update
89
+ *
90
+ * @remarks
91
+ * LngNode Properties Updated:
92
+ * - `worldAlpha` = `parent.worldAlpha` * `alpha`
93
+ */
94
+ WorldAlpha = 256,
95
+ /**
96
+ * Render State update
97
+ *
98
+ * @remarks
99
+ * LngNode Properties Updated:
100
+ * - `renderState`
101
+ */
102
+ RenderState = 512,
103
+ /**
104
+ * Is Renderable update
105
+ *
106
+ * @remarks
107
+ * LngNode Properties Updated:
108
+ * - `isRenderable`
109
+ */
110
+ IsRenderable = 1024,
111
+ /**
112
+ * Render Texture update
113
+ */
114
+ RenderTexture = 2048,
115
+ /**
116
+ * Track if parent has render texture
117
+ */
118
+ ParentRenderTexture = 4096,
119
+ /**
120
+ * None
121
+ */
122
+ None = 0,
123
+ /**
124
+ * All
125
+ */
126
+ All = 8191
127
+ }
128
+ /**
129
+ * A custom data map which can be stored on an LngNode
130
+ *
131
+ * @remarks
132
+ * This is a map of key-value pairs that can be stored on an INode. It is used
133
+ * to store custom data that can be used by the application.
134
+ * The data stored can only be of type string, number or boolean.
135
+ */
136
+ export type CustomDataMap = {
137
+ [key: string]: string | number | boolean | undefined;
138
+ };
139
+ /**
140
+ * Writable properties of a Node.
141
+ */
142
+ export interface LngNodeWritableProps {
143
+ /**
144
+ * The x coordinate of the Node's Mount Point.
145
+ *
146
+ * @remarks
147
+ * See {@link mountX} and {@link mountY} for more information about setting
148
+ * the Mount Point.
149
+ *
150
+ * @default `0`
151
+ */
152
+ x: number;
153
+ /**
154
+ * The y coordinate of the Node's Mount Point.
155
+ *
156
+ * @remarks
157
+ * See {@link mountX} and {@link mountY} for more information about setting
158
+ * the Mount Point.
159
+ *
160
+ * @default `0`
161
+ */
162
+ y: number;
163
+ /**
164
+ * The width of the Node.
165
+ *
166
+ * @default `0`
167
+ */
168
+ width: number;
169
+ /**
170
+ * The height of the Node.
171
+ *
172
+ * @default `0`
173
+ */
174
+ height: 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 mode
187
+ *
188
+ * @remarks
189
+ * When enabled, when a texture is loaded into the Node, the Node will
190
+ * automatically resize to the dimensions of the texture.
191
+ *
192
+ * Text Nodes are always autosized based on their text content regardless
193
+ * of this mode setting.
194
+ *
195
+ * @default `false`
196
+ */
197
+ autosize: boolean;
198
+ /**
199
+ * Clipping Mode
200
+ *
201
+ * @remarks
202
+ * Enable Clipping Mode when you want to prevent the drawing of a Node and
203
+ * its descendants from overflowing outside of the Node's x/y/width/height
204
+ * bounds.
205
+ *
206
+ * For WebGL, clipping is implemented using the high-performance WebGL
207
+ * operation scissor. As a consequence, clipping does not work for
208
+ * non-rectangular areas. So, if the element is rotated
209
+ * (by itself or by any of its ancestors), clipping will not work as intended.
210
+ *
211
+ * TODO: Add support for non-rectangular clipping either automatically or
212
+ * via Render-To-Texture.
213
+ *
214
+ * @default `false`
215
+ */
216
+ clipping: boolean;
217
+ /**
218
+ * The color of the Node.
219
+ *
220
+ * @remarks
221
+ * The color value is a number in the format 0xRRGGBBAA, where RR is the red
222
+ * component, GG is the green component, BB is the blue component, and AA is
223
+ * the alpha component.
224
+ *
225
+ * Gradient colors may be set by setting the different color sub-properties:
226
+ * {@link colorTop}, {@link colorBottom}, {@link colorLeft}, {@link colorRight},
227
+ * {@link colorTl}, {@link colorTr}, {@link colorBr}, {@link colorBl} accordingly.
228
+ *
229
+ * @default `0xffffffff` (opaque white)
230
+ */
231
+ color: number;
232
+ /**
233
+ * The color of the top edge of the Node for gradient rendering.
234
+ *
235
+ * @remarks
236
+ * See {@link color} for more information about color values and gradient
237
+ * rendering.
238
+ */
239
+ colorTop: number;
240
+ /**
241
+ * The color of the bottom edge of the Node for gradient rendering.
242
+ *
243
+ * @remarks
244
+ * See {@link color} for more information about color values and gradient
245
+ * rendering.
246
+ */
247
+ colorBottom: number;
248
+ /**
249
+ * The color of the left edge of the Node for gradient rendering.
250
+ *
251
+ * @remarks
252
+ * See {@link color} for more information about color values and gradient
253
+ * rendering.
254
+ */
255
+ colorLeft: number;
256
+ /**
257
+ * The color of the right edge of the Node for gradient rendering.
258
+ *
259
+ * @remarks
260
+ * See {@link color} for more information about color values and gradient
261
+ * rendering.
262
+ */
263
+ colorRight: number;
264
+ /**
265
+ * The color of the top-left corner of the Node for gradient rendering.
266
+ *
267
+ * @remarks
268
+ * See {@link color} for more information about color values and gradient
269
+ * rendering.
270
+ */
271
+ colorTl: number;
272
+ /**
273
+ * The color of the top-right corner of the Node for gradient rendering.
274
+ *
275
+ * @remarks
276
+ * See {@link color} for more information about color values and gradient
277
+ * rendering.
278
+ */
279
+ colorTr: number;
280
+ /**
281
+ * The color of the bottom-right corner of the Node for gradient rendering.
282
+ *
283
+ * @remarks
284
+ * See {@link color} for more information about color values and gradient
285
+ * rendering.
286
+ */
287
+ colorBr: number;
288
+ /**
289
+ * The color of the bottom-left corner of the Node for gradient rendering.
290
+ *
291
+ * @remarks
292
+ * See {@link color} for more information about color values and gradient
293
+ * rendering.
294
+ */
295
+ colorBl: number;
296
+ /**
297
+ * The Node's parent Node.
298
+ *
299
+ * @remarks
300
+ * The value `null` indicates that the Node has no parent. This may either be
301
+ * because the Node is the root Node of the scene graph, or because the Node
302
+ * has been removed from the scene graph.
303
+ *
304
+ * In order to make sure that a Node can be rendered on the screen, it must
305
+ * be added to the scene graph by setting it's parent property to a Node that
306
+ * is already in the scene graph such as the root Node.
307
+ *
308
+ * @default `null`
309
+ */
310
+ parent: LngNode | null;
311
+ /**
312
+ * The Node's z-index.
313
+ *
314
+ * @remarks
315
+ * TBD
316
+ */
317
+ zIndex: number;
318
+ /**
319
+ * The Node's Texture.
320
+ *
321
+ * @remarks
322
+ * The `texture` defines a rasterized image that is contained within the
323
+ * {@link width} and {@link height} dimensions of the Node. If null, the
324
+ * Node will use an opaque white {@link ColorTexture} when being drawn, which
325
+ * essentially enables colors (including gradients) to be drawn.
326
+ *
327
+ * If set, by default, the texture will be drawn, as is, stretched to the
328
+ * dimensions of the Node. This behavior can be modified by setting the TBD
329
+ * and TBD properties.
330
+ *
331
+ * To create a Texture in order to set it on this property, call
332
+ * {@link RendererMain.createTexture}.
333
+ *
334
+ * If the {@link src} is set on a Node, the Node will use the
335
+ * {@link ImageTexture} by default and the Node will simply load the image at
336
+ * the specified URL.
337
+ *
338
+ * Note: If this is a Text Node, the Texture will be managed by the Node's
339
+ * {@link TextRenderer} and should not be set explicitly.
340
+ */
341
+ texture: Texture | null;
342
+ /**
343
+ * Options to associate with the Node's Texture
344
+ */
345
+ textureOptions: TextureOptions;
346
+ /**
347
+ * The Node's shader
348
+ *
349
+ * @remarks
350
+ * The `shader` defines a {@link Shader} used to draw the Node. By default,
351
+ * the Default Shader is used which simply draws the defined {@link texture}
352
+ * or {@link color}(s) within the Node without any special effects.
353
+ *
354
+ * To create a Shader in order to set it on this property, call
355
+ * {@link RendererMain.createShader}.
356
+ *
357
+ * Note: If this is a Text Node, the Shader will be managed by the Node's
358
+ * {@link TextRenderer} and should not be set explicitly.
359
+ */
360
+ shader: ShaderRef | null;
361
+ /**
362
+ * Shader properties
363
+ */
364
+ shaderProps: Record<string, unknown> | null;
365
+ /**
366
+ * Image URL
367
+ *
368
+ * @remarks
369
+ * When set, the Node's {@link texture} is automatically set to an
370
+ * {@link ImageTexture} using the source image URL provided (with all other
371
+ * settings being defaults)
372
+ */
373
+ src: string | null;
374
+ zIndexLocked: number;
375
+ /**
376
+ * Scale to render the Node at
377
+ *
378
+ * @remarks
379
+ * The scale value multiplies the provided {@link width} and {@link height}
380
+ * of the Node around the Node's Pivot Point (defined by the {@link pivot}
381
+ * props).
382
+ *
383
+ * Behind the scenes, setting this property sets both the {@link scaleX} and
384
+ * {@link scaleY} props to the same value.
385
+ *
386
+ * NOTE: When the scaleX and scaleY props are explicitly set to different values,
387
+ * this property returns `null`. Setting `null` on this property will have no
388
+ * effect.
389
+ *
390
+ * @default 1.0
391
+ */
392
+ scale: number | null;
393
+ /**
394
+ * Scale to render the Node at (X-Axis)
395
+ *
396
+ * @remarks
397
+ * The scaleX value multiplies the provided {@link width} of the Node around
398
+ * the Node's Pivot Point (defined by the {@link pivot} props).
399
+ *
400
+ * @default 1.0
401
+ */
402
+ scaleX: number;
403
+ /**
404
+ * Scale to render the Node at (Y-Axis)
405
+ *
406
+ * @remarks
407
+ * The scaleY value multiplies the provided {@link height} of the Node around
408
+ * the Node's Pivot Point (defined by the {@link pivot} props).
409
+ *
410
+ * @default 1.0
411
+ */
412
+ scaleY: number;
413
+ /**
414
+ * Combined position of the Node's Mount Point
415
+ *
416
+ * @remarks
417
+ * The value can be any number between `0.0` and `1.0`:
418
+ * - `0.0` defines the Mount Point at the top-left corner of the Node.
419
+ * - `0.5` defines it at the center of the Node.
420
+ * - `1.0` defines it at the bottom-right corner of the node.
421
+ *
422
+ * Use the {@link mountX} and {@link mountY} props seperately for more control
423
+ * of the Mount Point.
424
+ *
425
+ * When assigned, the same value is also passed to both the {@link mountX} and
426
+ * {@link mountY} props.
427
+ *
428
+ * @default 0 (top-left)
429
+ */
430
+ mount: number;
431
+ /**
432
+ * X position of the Node's Mount Point
433
+ *
434
+ * @remarks
435
+ * The value can be any number between `0.0` and `1.0`:
436
+ * - `0.0` defines the Mount Point's X position as the left-most edge of the
437
+ * Node
438
+ * - `0.5` defines it as the horizontal center of the Node
439
+ * - `1.0` defines it as the right-most edge of the Node.
440
+ *
441
+ * The combination of {@link mountX} and {@link mountY} define the Mount Point
442
+ *
443
+ * @default 0 (left-most edge)
444
+ */
445
+ mountX: number;
446
+ /**
447
+ * Y position of the Node's Mount Point
448
+ *
449
+ * @remarks
450
+ * The value can be any number between `0.0` and `1.0`:
451
+ * - `0.0` defines the Mount Point's Y position as the top-most edge of the
452
+ * Node
453
+ * - `0.5` defines it as the vertical center of the Node
454
+ * - `1.0` defines it as the bottom-most edge of the Node.
455
+ *
456
+ * The combination of {@link mountX} and {@link mountY} define the Mount Point
457
+ *
458
+ * @default 0 (top-most edge)
459
+ */
460
+ mountY: number;
461
+ /**
462
+ * Combined position of the Node's Pivot Point
463
+ *
464
+ * @remarks
465
+ * The value can be any number between `0.0` and `1.0`:
466
+ * - `0.0` defines the Pivot Point at the top-left corner of the Node.
467
+ * - `0.5` defines it at the center of the Node.
468
+ * - `1.0` defines it at the bottom-right corner of the node.
469
+ *
470
+ * Use the {@link pivotX} and {@link pivotY} props seperately for more control
471
+ * of the Pivot Point.
472
+ *
473
+ * When assigned, the same value is also passed to both the {@link pivotX} and
474
+ * {@link pivotY} props.
475
+ *
476
+ * @default 0.5 (center)
477
+ */
478
+ pivot: number;
479
+ /**
480
+ * X position of the Node's Pivot Point
481
+ *
482
+ * @remarks
483
+ * The value can be any number between `0.0` and `1.0`:
484
+ * - `0.0` defines the Pivot Point's X position as the left-most edge of the
485
+ * Node
486
+ * - `0.5` defines it as the horizontal center of the Node
487
+ * - `1.0` defines it as the right-most edge of the Node.
488
+ *
489
+ * The combination of {@link pivotX} and {@link pivotY} define the Pivot Point
490
+ *
491
+ * @default 0.5 (centered on x-axis)
492
+ */
493
+ pivotX: number;
494
+ /**
495
+ * Y position of the Node's Pivot Point
496
+ *
497
+ * @remarks
498
+ * The value can be any number between `0.0` and `1.0`:
499
+ * - `0.0` defines the Pivot Point's Y position as the top-most edge of the
500
+ * Node
501
+ * - `0.5` defines it as the vertical center of the Node
502
+ * - `1.0` defines it as the bottom-most edge of the Node.
503
+ *
504
+ * The combination of {@link pivotX} and {@link pivotY} define the Pivot Point
505
+ *
506
+ * @default 0.5 (centered on y-axis)
507
+ */
508
+ pivotY: number;
509
+ /**
510
+ * Rotation of the Node (in Radians)
511
+ *
512
+ * @remarks
513
+ * Sets the amount to rotate the Node by around it's Pivot Point (defined by
514
+ * the {@link pivot} props). Positive values rotate the Node clockwise, while
515
+ * negative values rotate it counter-clockwise.
516
+ *
517
+ * Example values:
518
+ * - `-Math.PI / 2`: 90 degree rotation counter-clockwise
519
+ * - `0`: No rotation
520
+ * - `Math.PI / 2`: 90 degree rotation clockwise
521
+ * - `Math.PI`: 180 degree rotation clockwise
522
+ * - `3 * Math.PI / 2`: 270 degree rotation clockwise
523
+ * - `2 * Math.PI`: 360 rotation clockwise
524
+ */
525
+ rotation: number;
526
+ /**
527
+ * Whether the Node is rendered to a texture
528
+ *
529
+ * @remarks
530
+ * TBD
531
+ *
532
+ * @default false
533
+ */
534
+ rtt: boolean;
535
+ /**
536
+ * Node data element for custom data storage (optional)
537
+ *
538
+ * @remarks
539
+ * This property is used to store custom data on the Node as a key/value data store.
540
+ * Data values are limited to string, numbers, booleans. Strings will be truncated
541
+ * to a 2048 character limit for performance reasons.
542
+ *
543
+ * This is not a data storage mechanism for large amounts of data please use a
544
+ * dedicated data storage mechanism for that.
545
+ *
546
+ * The custom data will be reflected in the inspector as part of `data-*` attributes
547
+ *
548
+ * @default `undefined`
549
+ */
550
+ data?: CustomDataMap;
551
+ }
552
+ /**
553
+ * Animatable properties of a Node
554
+ */
555
+ export type LngNodeAnimatableProps = {
556
+ [Key in keyof LngNodeWritableProps as NonNullable<LngNodeWritableProps[Key]> extends number ? Key : never]: number;
557
+ };
558
+ /**
559
+ * A visual Node in the Renderer scene graph.
560
+ *
561
+ * @remarks
562
+ * A Node is a basic building block of the Renderer scene graph. It can be a
563
+ * container for other Nodes, or it can be a leaf Node that renders a solid
564
+ * color, gradient, image, or specific texture, using a specific shader.
565
+ *
566
+ * For text rendering, see {@link TextNode}.
567
+ *
568
+ * This is named `LngNode` because the browser already defines a `Node` class.
569
+ */
570
+ export declare class LngNode extends EventEmitter {
571
+ protected stage: Stage;
572
+ readonly children: LngNode[];
573
+ protected _id: number;
574
+ protected props: Required<LngNodeWritableProps>;
575
+ updateType: UpdateType;
576
+ globalTransform?: Matrix3d;
577
+ scaleRotateTransform?: Matrix3d;
578
+ localTransform?: Matrix3d;
579
+ renderCoords?: RenderCoords;
580
+ renderBound?: Bound;
581
+ strictBound?: Bound;
582
+ preloadBound?: Bound;
583
+ clippingRect: RectWithValid;
584
+ isRenderable: boolean;
585
+ renderState: LngNodeRenderState;
586
+ worldAlpha: number;
587
+ premultipliedColorTl: number;
588
+ premultipliedColorTr: number;
589
+ premultipliedColorBl: number;
590
+ premultipliedColorBr: number;
591
+ calcZIndex: number;
592
+ hasRTTupdates: boolean;
593
+ parentHasRenderTexture: boolean;
594
+ _shader: CoreShader | null;
595
+ _src: string;
596
+ constructor(stage: Stage, props: LngNodeWritableProps);
597
+ loadTexture(): void;
598
+ unloadTexture(): void;
599
+ autosizeNode(dimensions: Dimensions): void;
600
+ private onTextureLoaded;
601
+ private onTextureFailed;
602
+ private onTextureFreed;
603
+ loadShader<Type extends keyof ShaderMap>(shaderType: Type, props: ExtractProps<ShaderMap[Type]>): void;
604
+ /**
605
+ * Change types types is used to determine the scope of the changes being applied
606
+ *
607
+ * @remarks
608
+ * See {@link UpdateType} for more information on each type
609
+ *
610
+ * @param type
611
+ */
612
+ setUpdateType(type: UpdateType): void;
613
+ sortChildren(): void;
614
+ updateScaleRotateTransform(): void;
615
+ updateLocalTransform(): void;
616
+ /**
617
+ * @todo: test for correct calculation flag
618
+ * @param delta
619
+ */
620
+ update(delta: number, parentClippingRect: RectWithValid): void;
621
+ checkRenderProps(): boolean;
622
+ checkRenderBounds(parentClippingRect: RectWithValid): LngNodeRenderState;
623
+ updateRenderState(parentClippingRect: RectWithValid): void;
624
+ setRenderState(state: LngNodeRenderState): void;
625
+ /**
626
+ * This function updates the `isRenderable` property based on certain conditions.
627
+ *
628
+ * @returns
629
+ */
630
+ updateIsRenderable(): void;
631
+ onChangeIsRenderable(isRenderable: boolean): void;
632
+ calculateRenderCoords(): void;
633
+ updateBoundingRect(): void;
634
+ /**
635
+ * This function calculates the clipping rectangle for a node.
636
+ *
637
+ * 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.
638
+ * 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.
639
+ *
640
+ * Finally, the node's parentClippingRect and clippingRect properties are updated.
641
+ */
642
+ calculateClippingRect(parentClippingRect: RectWithValid): void;
643
+ calculateZIndex(): void;
644
+ /**
645
+ * Destroy the node and cleanup all resources
646
+ */
647
+ destroy(): void;
648
+ renderQuads(renderer: CoreRenderer): void;
649
+ get id(): number;
650
+ get x(): number;
651
+ set x(value: number);
652
+ get absX(): number;
653
+ get absY(): number;
654
+ get y(): number;
655
+ set y(value: number);
656
+ get width(): number;
657
+ set width(value: number);
658
+ get height(): number;
659
+ set height(value: number);
660
+ get scale(): number;
661
+ set scale(value: number);
662
+ get scaleX(): number;
663
+ set scaleX(value: number);
664
+ get scaleY(): number;
665
+ set scaleY(value: number);
666
+ get mount(): number;
667
+ set mount(value: number);
668
+ get mountX(): number;
669
+ set mountX(value: number);
670
+ get mountY(): number;
671
+ set mountY(value: number);
672
+ get pivot(): number;
673
+ set pivot(value: number);
674
+ get pivotX(): number;
675
+ set pivotX(value: number);
676
+ get pivotY(): number;
677
+ set pivotY(value: number);
678
+ get rotation(): number;
679
+ set rotation(value: number);
680
+ get alpha(): number;
681
+ set alpha(value: number);
682
+ get autosize(): boolean;
683
+ set autosize(value: boolean);
684
+ get clipping(): boolean;
685
+ set clipping(value: boolean);
686
+ get color(): number;
687
+ set color(value: number);
688
+ get colorTop(): number;
689
+ set colorTop(value: number);
690
+ get colorBottom(): number;
691
+ set colorBottom(value: number);
692
+ get colorLeft(): number;
693
+ set colorLeft(value: number);
694
+ get colorRight(): number;
695
+ set colorRight(value: number);
696
+ get colorTl(): number;
697
+ set colorTl(value: number);
698
+ get colorTr(): number;
699
+ set colorTr(value: number);
700
+ get colorBl(): number;
701
+ set colorBl(value: number);
702
+ get colorBr(): number;
703
+ set colorBr(value: number);
704
+ get zIndexLocked(): number;
705
+ set zIndexLocked(value: number);
706
+ get zIndex(): number;
707
+ set zIndex(value: number);
708
+ get parent(): LngNode | null;
709
+ set parent(newParent: LngNode | null);
710
+ get rtt(): boolean;
711
+ set rtt(value: boolean);
712
+ get shader(): ShaderRef | null;
713
+ set shader(value: ShaderRef | null);
714
+ get shaderProps(): Record<string, unknown> | null;
715
+ set shaderProps(value: Record<string, unknown> | null);
716
+ get src(): string;
717
+ set src(imageUrl: string);
718
+ /**
719
+ * Returns the framebuffer dimensions of the node.
720
+ * If the node has a render texture, the dimensions are the same as the node's dimensions.
721
+ * If the node does not have a render texture, the dimensions are inherited from the parent.
722
+ * If the node parent has a render texture and the node is a render texture, the nodes dimensions are used.
723
+ */
724
+ get framebufferDimensions(): Dimensions;
725
+ /**
726
+ * Returns the parent render texture node if it exists.
727
+ */
728
+ get parentRenderTexture(): LngNode | null;
729
+ get texture(): Texture | null;
730
+ set texture(value: Texture | null);
731
+ set textureOptions(value: TextureOptions);
732
+ get textureOptions(): TextureOptions;
733
+ setRTTUpdates(type: number): void;
734
+ animate(props: Partial<LngNodeAnimatableProps>, settings: Partial<AnimationSettings>): IAnimationController;
735
+ flush(): void;
736
+ }