@lightningjs/renderer 0.0.1

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 (314) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +184 -0
  4. package/dist/exports/core-api.d.ts +73 -0
  5. package/dist/exports/core-api.js +95 -0
  6. package/dist/exports/core-api.js.map +1 -0
  7. package/dist/exports/main-api.d.ts +28 -0
  8. package/dist/exports/main-api.js +45 -0
  9. package/dist/exports/main-api.js.map +1 -0
  10. package/dist/exports/utils.d.ts +23 -0
  11. package/dist/exports/utils.js +42 -0
  12. package/dist/exports/utils.js.map +1 -0
  13. package/dist/src/common/CommonTypes.d.ts +38 -0
  14. package/dist/src/common/CommonTypes.js +20 -0
  15. package/dist/src/common/CommonTypes.js.map +1 -0
  16. package/dist/src/common/EventEmitter.d.ts +12 -0
  17. package/dist/src/common/EventEmitter.js +66 -0
  18. package/dist/src/common/EventEmitter.js.map +1 -0
  19. package/dist/src/common/IAnimationController.d.ts +9 -0
  20. package/dist/src/common/IAnimationController.js +20 -0
  21. package/dist/src/common/IAnimationController.js.map +1 -0
  22. package/dist/src/core/CoreExtension.d.ts +12 -0
  23. package/dist/src/core/CoreExtension.js +29 -0
  24. package/dist/src/core/CoreExtension.js.map +1 -0
  25. package/dist/src/core/CoreNode.d.ts +147 -0
  26. package/dist/src/core/CoreNode.js +498 -0
  27. package/dist/src/core/CoreNode.js.map +1 -0
  28. package/dist/src/core/CoreShaderManager.d.ts +29 -0
  29. package/dist/src/core/CoreShaderManager.js +58 -0
  30. package/dist/src/core/CoreShaderManager.js.map +1 -0
  31. package/dist/src/core/CoreTextNode.d.ts +64 -0
  32. package/dist/src/core/CoreTextNode.js +251 -0
  33. package/dist/src/core/CoreTextNode.js.map +1 -0
  34. package/dist/src/core/CoreTextureManager.d.ts +173 -0
  35. package/dist/src/core/CoreTextureManager.js +190 -0
  36. package/dist/src/core/CoreTextureManager.js.map +1 -0
  37. package/dist/src/core/Matrix2DContext.d.ts +15 -0
  38. package/dist/src/core/Matrix2DContext.js +45 -0
  39. package/dist/src/core/Matrix2DContext.js.map +1 -0
  40. package/dist/src/core/Stage.d.ts +53 -0
  41. package/dist/src/core/Stage.js +214 -0
  42. package/dist/src/core/Stage.js.map +1 -0
  43. package/dist/src/core/animations/AnimationManager.d.ts +7 -0
  44. package/dist/src/core/animations/AnimationManager.js +34 -0
  45. package/dist/src/core/animations/AnimationManager.js.map +1 -0
  46. package/dist/src/core/animations/CoreAnimation.d.ts +27 -0
  47. package/dist/src/core/animations/CoreAnimation.js +103 -0
  48. package/dist/src/core/animations/CoreAnimation.js.map +1 -0
  49. package/dist/src/core/animations/CoreAnimationController.d.ts +21 -0
  50. package/dist/src/core/animations/CoreAnimationController.js +96 -0
  51. package/dist/src/core/animations/CoreAnimationController.js.map +1 -0
  52. package/dist/src/core/lib/glm/common.d.ts +162 -0
  53. package/dist/src/core/lib/glm/common.js +81 -0
  54. package/dist/src/core/lib/glm/common.js.map +1 -0
  55. package/dist/src/core/lib/glm/index.d.ts +11 -0
  56. package/dist/src/core/lib/glm/index.js +30 -0
  57. package/dist/src/core/lib/glm/index.js.map +1 -0
  58. package/dist/src/core/lib/glm/mat2.d.ts +219 -0
  59. package/dist/src/core/lib/glm/mat2.js +396 -0
  60. package/dist/src/core/lib/glm/mat2.js.map +1 -0
  61. package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
  62. package/dist/src/core/lib/glm/mat2d.js +442 -0
  63. package/dist/src/core/lib/glm/mat2d.js.map +1 -0
  64. package/dist/src/core/lib/glm/mat3.d.ts +283 -0
  65. package/dist/src/core/lib/glm/mat3.js +680 -0
  66. package/dist/src/core/lib/glm/mat3.js.map +1 -0
  67. package/dist/src/core/lib/glm/mat4.d.ts +550 -0
  68. package/dist/src/core/lib/glm/mat4.js +1802 -0
  69. package/dist/src/core/lib/glm/mat4.js.map +1 -0
  70. package/dist/src/core/lib/glm/quat.d.ts +363 -0
  71. package/dist/src/core/lib/glm/quat.js +693 -0
  72. package/dist/src/core/lib/glm/quat.js.map +1 -0
  73. package/dist/src/core/lib/glm/quat2.d.ts +356 -0
  74. package/dist/src/core/lib/glm/quat2.js +754 -0
  75. package/dist/src/core/lib/glm/quat2.js.map +1 -0
  76. package/dist/src/core/lib/glm/vec2.d.ts +365 -0
  77. package/dist/src/core/lib/glm/vec2.js +569 -0
  78. package/dist/src/core/lib/glm/vec2.js.map +1 -0
  79. package/dist/src/core/lib/glm/vec3.d.ts +406 -0
  80. package/dist/src/core/lib/glm/vec3.js +720 -0
  81. package/dist/src/core/lib/glm/vec3.js.map +1 -0
  82. package/dist/src/core/lib/glm/vec4.d.ts +330 -0
  83. package/dist/src/core/lib/glm/vec4.js +608 -0
  84. package/dist/src/core/lib/glm/vec4.js.map +1 -0
  85. package/dist/src/core/lib/utils.d.ts +27 -0
  86. package/dist/src/core/lib/utils.js +108 -0
  87. package/dist/src/core/lib/utils.js.map +1 -0
  88. package/dist/src/core/platform.d.ts +10 -0
  89. package/dist/src/core/platform.js +37 -0
  90. package/dist/src/core/platform.js.map +1 -0
  91. package/dist/src/core/renderers/CoreContextTexture.d.ts +6 -0
  92. package/dist/src/core/renderers/CoreContextTexture.js +25 -0
  93. package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
  94. package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
  95. package/dist/src/core/renderers/CoreRenderOp.js +21 -0
  96. package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
  97. package/dist/src/core/renderers/CoreRenderer.d.ts +39 -0
  98. package/dist/src/core/renderers/CoreRenderer.js +26 -0
  99. package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
  100. package/dist/src/core/renderers/CoreShader.d.ts +9 -0
  101. package/dist/src/core/renderers/CoreShader.js +28 -0
  102. package/dist/src/core/renderers/CoreShader.js.map +1 -0
  103. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +7 -0
  104. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +32 -0
  105. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
  106. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +46 -0
  107. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +163 -0
  108. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
  109. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +27 -0
  110. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +82 -0
  111. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
  112. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +100 -0
  113. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +372 -0
  114. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
  115. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +39 -0
  116. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +187 -0
  117. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
  118. package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +27 -0
  119. package/dist/src/core/renderers/webgl/internal/BufferCollection.js +48 -0
  120. package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
  121. package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +39 -0
  122. package/dist/src/core/renderers/webgl/internal/RendererUtils.js +92 -0
  123. package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
  124. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +46 -0
  125. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
  126. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
  127. package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
  128. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +31 -0
  129. package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
  130. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
  131. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +89 -0
  132. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
  133. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
  134. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
  135. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
  136. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +53 -0
  137. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +299 -0
  138. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
  139. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +29 -0
  140. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +135 -0
  141. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
  142. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +45 -0
  143. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +137 -0
  144. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
  145. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +15 -0
  146. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +68 -0
  147. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
  148. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +14 -0
  149. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +54 -0
  150. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
  151. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +15 -0
  152. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +68 -0
  153. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
  154. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +15 -0
  155. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +68 -0
  156. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
  157. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +15 -0
  158. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +68 -0
  159. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
  160. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +1 -0
  161. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +33 -0
  162. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
  163. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +17 -0
  164. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +98 -0
  165. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
  166. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +6 -0
  167. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +32 -0
  168. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
  169. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +16 -0
  170. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +140 -0
  171. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
  172. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +14 -0
  173. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +82 -0
  174. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
  175. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +44 -0
  176. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
  177. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
  178. package/dist/src/core/scene/Scene.d.ts +59 -0
  179. package/dist/src/core/scene/Scene.js +106 -0
  180. package/dist/src/core/scene/Scene.js.map +1 -0
  181. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +53 -0
  182. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +156 -0
  183. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
  184. package/dist/src/core/text-rendering/TrFontManager.d.ts +25 -0
  185. package/dist/src/core/text-rendering/TrFontManager.js +75 -0
  186. package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
  187. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +29 -0
  188. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +88 -0
  189. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
  190. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
  191. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
  192. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
  193. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +59 -0
  194. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +86 -0
  195. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
  196. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +48 -0
  197. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +54 -0
  198. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
  199. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +11 -0
  200. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +54 -0
  201. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
  202. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +45 -0
  203. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +492 -0
  204. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
  205. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +115 -0
  206. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +493 -0
  207. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
  208. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +67 -0
  209. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +452 -0
  210. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
  211. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
  212. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
  213. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
  214. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
  215. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
  216. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
  217. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
  218. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
  219. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
  220. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +21 -0
  221. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +53 -0
  222. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
  223. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
  224. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
  225. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
  226. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +18 -0
  227. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +294 -0
  228. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
  229. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
  230. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
  231. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
  232. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
  233. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +39 -0
  234. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
  235. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +254 -0
  236. package/dist/src/core/text-rendering/renderers/TextRenderer.js +100 -0
  237. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
  238. package/dist/src/core/textures/ColorTexture.d.ts +35 -0
  239. package/dist/src/core/textures/ColorTexture.js +62 -0
  240. package/dist/src/core/textures/ColorTexture.js.map +1 -0
  241. package/dist/src/core/textures/ImageTexture.d.ts +51 -0
  242. package/dist/src/core/textures/ImageTexture.js +76 -0
  243. package/dist/src/core/textures/ImageTexture.js.map +1 -0
  244. package/dist/src/core/textures/NoiseTexture.d.ts +42 -0
  245. package/dist/src/core/textures/NoiseTexture.js +63 -0
  246. package/dist/src/core/textures/NoiseTexture.js.map +1 -0
  247. package/dist/src/core/textures/SubTexture.d.ts +57 -0
  248. package/dist/src/core/textures/SubTexture.js +82 -0
  249. package/dist/src/core/textures/SubTexture.js.map +1 -0
  250. package/dist/src/core/textures/Texture.d.ts +92 -0
  251. package/dist/src/core/textures/Texture.js +105 -0
  252. package/dist/src/core/textures/Texture.js.map +1 -0
  253. package/dist/src/core/utils.d.ts +15 -0
  254. package/dist/src/core/utils.js +183 -0
  255. package/dist/src/core/utils.js.map +1 -0
  256. package/dist/src/main-api/INode.d.ts +390 -0
  257. package/dist/src/main-api/INode.js +20 -0
  258. package/dist/src/main-api/INode.js.map +1 -0
  259. package/dist/src/main-api/IRenderDriver.d.ts +20 -0
  260. package/dist/src/main-api/IRenderDriver.js +20 -0
  261. package/dist/src/main-api/IRenderDriver.js.map +1 -0
  262. package/dist/src/main-api/RendererMain.d.ts +232 -0
  263. package/dist/src/main-api/RendererMain.js +303 -0
  264. package/dist/src/main-api/RendererMain.js.map +1 -0
  265. package/dist/src/render-drivers/main/MainOnlyNode.d.ts +84 -0
  266. package/dist/src/render-drivers/main/MainOnlyNode.js +324 -0
  267. package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
  268. package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +39 -0
  269. package/dist/src/render-drivers/main/MainOnlyTextNode.js +165 -0
  270. package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
  271. package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
  272. package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
  273. package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
  274. package/dist/src/render-drivers/threadx/NodeStruct.d.ts +81 -0
  275. package/dist/src/render-drivers/threadx/NodeStruct.js +254 -0
  276. package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
  277. package/dist/src/render-drivers/threadx/SharedNode.d.ts +36 -0
  278. package/dist/src/render-drivers/threadx/SharedNode.js +57 -0
  279. package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
  280. package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +34 -0
  281. package/dist/src/render-drivers/threadx/TextNodeStruct.js +156 -0
  282. package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
  283. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
  284. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
  285. package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
  286. package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +37 -0
  287. package/dist/src/render-drivers/threadx/ThreadXMainNode.js +121 -0
  288. package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
  289. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +23 -0
  290. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +50 -0
  291. package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
  292. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
  293. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +194 -0
  294. package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
  295. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +48 -0
  296. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
  297. package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
  298. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
  299. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +172 -0
  300. package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
  301. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +22 -0
  302. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +101 -0
  303. package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
  304. package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
  305. package/dist/src/render-drivers/threadx/worker/renderer.js +130 -0
  306. package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
  307. package/dist/src/render-drivers/utils.d.ts +10 -0
  308. package/dist/src/render-drivers/utils.js +41 -0
  309. package/dist/src/render-drivers/utils.js.map +1 -0
  310. package/dist/src/utils.d.ts +79 -0
  311. package/dist/src/utils.js +162 -0
  312. package/dist/src/utils.js.map +1 -0
  313. package/dist/tsconfig.dist.tsbuildinfo +1 -0
  314. package/package.json +74 -0
@@ -0,0 +1,390 @@
1
+ import type { IEventEmitter } from '@lightningjs/threadx';
2
+ import type { IAnimationController } from '../common/IAnimationController.js';
3
+ import type { ShaderDesc, TextureDesc } from './RendererMain.js';
4
+ import type { TextRendererMap, TrProps } from '../core/text-rendering/renderers/TextRenderer.js';
5
+ import type { IAnimationSettings } from '../core/animations/CoreAnimation.js';
6
+ /**
7
+ * Writable properties of a Node.
8
+ */
9
+ export interface INodeWritableProps {
10
+ /**
11
+ * The x coordinate of the Node's Mount Point.
12
+ *
13
+ * @remarks
14
+ * See {@link mountX} and {@link mountY} for more information about setting
15
+ * the Mount Point.
16
+ *
17
+ * @default `0`
18
+ */
19
+ x: number;
20
+ /**
21
+ * The y coordinate of the Node's Mount Point.
22
+ *
23
+ * @remarks
24
+ * See {@link mountX} and {@link mountY} for more information about setting
25
+ * the Mount Point.
26
+ *
27
+ * @default `0`
28
+ */
29
+ y: number;
30
+ /**
31
+ * The width of the Node.
32
+ *
33
+ * @default `0`
34
+ */
35
+ width: number;
36
+ /**
37
+ * The height of the Node.
38
+ *
39
+ * @default `0`
40
+ */
41
+ height: number;
42
+ /**
43
+ * The alpha opacity of the Node.
44
+ *
45
+ * @remarks
46
+ * The alpha value is a number between 0 and 1, where 0 is fully transparent
47
+ * and 1 is fully opaque.
48
+ *
49
+ * @default `1`
50
+ */
51
+ alpha: number;
52
+ /**
53
+ * The color of the Node.
54
+ *
55
+ * @remarks
56
+ * The color value is a number in the format 0xRRGGBBAA, where RR is the red
57
+ * component, GG is the green component, BB is the blue component, and AA is
58
+ * the alpha component.
59
+ *
60
+ * Gradient colors may be set by setting the different color sub-properties:
61
+ * {@link colorTop}, {@link colorBottom}, {@link colorLeft}, {@link colorRight},
62
+ * {@link colorTl}, {@link colorTr}, {@link colorBr}, {@link colorBl} accordingly.
63
+ *
64
+ * @default `0xffffffff` (opaque white)
65
+ */
66
+ color: number;
67
+ /**
68
+ * The color of the top edge of the Node for gradient rendering.
69
+ *
70
+ * @remarks
71
+ * See {@link color} for more information about color values and gradient
72
+ * rendering.
73
+ */
74
+ colorTop: number;
75
+ /**
76
+ * The color of the bottom edge of the Node for gradient rendering.
77
+ *
78
+ * @remarks
79
+ * See {@link color} for more information about color values and gradient
80
+ * rendering.
81
+ */
82
+ colorBottom: number;
83
+ /**
84
+ * The color of the left edge of the Node for gradient rendering.
85
+ *
86
+ * @remarks
87
+ * See {@link color} for more information about color values and gradient
88
+ * rendering.
89
+ */
90
+ colorLeft: number;
91
+ /**
92
+ * The color of the right edge of the Node for gradient rendering.
93
+ *
94
+ * @remarks
95
+ * See {@link color} for more information about color values and gradient
96
+ * rendering.
97
+ */
98
+ colorRight: number;
99
+ /**
100
+ * The color of the top-left corner of the Node for gradient rendering.
101
+ *
102
+ * @remarks
103
+ * See {@link color} for more information about color values and gradient
104
+ * rendering.
105
+ */
106
+ colorTl: number;
107
+ /**
108
+ * The color of the top-right corner of the Node for gradient rendering.
109
+ *
110
+ * @remarks
111
+ * See {@link color} for more information about color values and gradient
112
+ * rendering.
113
+ */
114
+ colorTr: number;
115
+ /**
116
+ * The color of the bottom-right corner of the Node for gradient rendering.
117
+ *
118
+ * @remarks
119
+ * See {@link color} for more information about color values and gradient
120
+ * rendering.
121
+ */
122
+ colorBr: number;
123
+ /**
124
+ * The color of the bottom-left corner of the Node for gradient rendering.
125
+ *
126
+ * @remarks
127
+ * See {@link color} for more information about color values and gradient
128
+ * rendering.
129
+ */
130
+ colorBl: number;
131
+ /**
132
+ * The Node's parent Node.
133
+ *
134
+ * @remarks
135
+ * The value `null` indicates that the Node has no parent. This may either be
136
+ * because the Node is the root Node of the scene graph, or because the Node
137
+ * has been removed from the scene graph.
138
+ *
139
+ * In order to make sure that a Node can be rendered on the screen, it must
140
+ * be added to the scene graph by setting it's parent property to a Node that
141
+ * is already in the scene graph such as the root Node.
142
+ *
143
+ * @default `null`
144
+ */
145
+ parent: INode | null;
146
+ /**
147
+ * The Node's z-index.
148
+ *
149
+ * @remarks
150
+ * TBD
151
+ */
152
+ zIndex: number;
153
+ /**
154
+ * The Node's Texture.
155
+ *
156
+ * @remarks
157
+ * The `texture` defines a rasterized image that is contained within the
158
+ * {@link width} and {@link height} dimensions of the Node. If null, the
159
+ * Node will use an opaque white {@link ColorTexture} when being drawn, which
160
+ * essentially enables colors (including gradients) to be drawn.
161
+ *
162
+ * If set, by default, the texture will be drawn, as is, stretched to the
163
+ * dimensions of the Node. This behavior can be modified by setting the TBD
164
+ * and TBD properties.
165
+ *
166
+ * To create a Texture in order to set it on this property, call
167
+ * {@link RendererMain.makeTexture}.
168
+ *
169
+ * If the {@link src} is set on a Node, the Node will use the
170
+ * {@link ImageTexture} by default and the Node will simply load the image at
171
+ * the specified URL.
172
+ *
173
+ * Note: If this is a Text Node, the Texture will be managed by the Node's
174
+ * {@link TextRenderer} and should not be set explicitly.
175
+ */
176
+ texture: TextureDesc | null;
177
+ /**
178
+ * The Node's shader
179
+ *
180
+ * @remarks
181
+ * The `shader` defines a {@link Shader} used to draw the Node. By default,
182
+ * the Default Shader is used which simply draws the defined {@link texture}
183
+ * or {@link color}(s) within the Node without any special effects.
184
+ *
185
+ * To create a Shader in order to set it on this property, call
186
+ * {@link RendererMain.makeShader}.
187
+ *
188
+ * Note: If this is a Text Node, the Shader will be managed by the Node's
189
+ * {@link TextRenderer} and should not be set explicitly.
190
+ */
191
+ shader: ShaderDesc | null;
192
+ /**
193
+ * Image URL
194
+ *
195
+ * @remarks
196
+ * When set, the Node's {@link texture} is automatically set to an
197
+ * {@link ImageTexture} using the source image URL provided (with all other
198
+ * settings being defaults)
199
+ */
200
+ src: string;
201
+ zIndexLocked: number;
202
+ /**
203
+ * Scale to render the Node at
204
+ *
205
+ * @remarks
206
+ * The scale value multiplies the provided {@link width} and {@link height}
207
+ * of the Node around the Node's Mount Point (defined by the {@link mount}
208
+ * props).
209
+ *
210
+ * @default 1.0
211
+ */
212
+ scale: number;
213
+ /**
214
+ * Combined position of the Node's Mount Point
215
+ *
216
+ * @remarks
217
+ * The value can be any number between `0.0` and `1.0`:
218
+ * - `0.0` defines the Mount Point at the top-left corner of the Node.
219
+ * - `0.5` defines it at the center of the Node.
220
+ * - `1.0` defines it at the bottom-right corner of the node.
221
+ *
222
+ * Use the {@link mountX} and {@link mountY} props seperately for more control
223
+ * of the Mount Point.
224
+ *
225
+ * When assigned, the same value is also passed to both the {@link mountX} and
226
+ * {@link mountY} props.
227
+ *
228
+ * @default 0 (top-left)
229
+ */
230
+ mount: number;
231
+ /**
232
+ * X position of the Node's Mount Point
233
+ *
234
+ * @remarks
235
+ * The value can be any number between `0.0` and `1.0`:
236
+ * - `0.0` defines the Mount Point's X position as the left-most edge of the
237
+ * Node
238
+ * - `0.5` defines it as the horizontal center of the Node
239
+ * - `1.0` defines it as the right-most edge of the Node.
240
+ *
241
+ * The combination of {@link mountX} and {@link mountY} define the Mount Point
242
+ *
243
+ * @default 0 (left-most edge)
244
+ */
245
+ mountX: number;
246
+ /**
247
+ * Y position of the Node's Mount Point
248
+ *
249
+ * @remarks
250
+ * The value can be any number between `0.0` and `1.0`:
251
+ * - `0.0` defines the Mount Point's Y position as the top-most edge of the
252
+ * Node
253
+ * - `0.5` defines it as the vertical center of the Node
254
+ * - `1.0` defines it as the bottom-most edge of the Node.
255
+ *
256
+ * The combination of {@link mountX} and {@link mountY} define the Mount Point
257
+ *
258
+ * @default 0 (top-most edge)
259
+ */
260
+ mountY: number;
261
+ /**
262
+ * Combined position of the Node's Pivot Point
263
+ *
264
+ * @remarks
265
+ * The value can be any number between `0.0` and `1.0`:
266
+ * - `0.0` defines the Pivot Point at the top-left corner of the Node.
267
+ * - `0.5` defines it at the center of the Node.
268
+ * - `1.0` defines it at the bottom-right corner of the node.
269
+ *
270
+ * Use the {@link pivotX} and {@link pivotY} props seperately for more control
271
+ * of the Pivot Point.
272
+ *
273
+ * When assigned, the same value is also passed to both the {@link pivotX} and
274
+ * {@link pivotY} props.
275
+ *
276
+ * @default 0.5 (center)
277
+ */
278
+ pivot: number;
279
+ /**
280
+ * X position of the Node's Pivot Point
281
+ *
282
+ * @remarks
283
+ * The value can be any number between `0.0` and `1.0`:
284
+ * - `0.0` defines the Pivot Point's X position as the left-most edge of the
285
+ * Node
286
+ * - `0.5` defines it as the horizontal center of the Node
287
+ * - `1.0` defines it as the right-most edge of the Node.
288
+ *
289
+ * The combination of {@link pivotX} and {@link pivotY} define the Pivot Point
290
+ *
291
+ * @default 0.5 (centered on x-axis)
292
+ */
293
+ pivotX: number;
294
+ /**
295
+ * Y position of the Node's Pivot Point
296
+ *
297
+ * @remarks
298
+ * The value can be any number between `0.0` and `1.0`:
299
+ * - `0.0` defines the Pivot Point's Y position as the top-most edge of the
300
+ * Node
301
+ * - `0.5` defines it as the vertical center of the Node
302
+ * - `1.0` defines it as the bottom-most edge of the Node.
303
+ *
304
+ * The combination of {@link pivotX} and {@link pivotY} define the Pivot Point
305
+ *
306
+ * @default 0.5 (centered on y-axis)
307
+ */
308
+ pivotY: number;
309
+ /**
310
+ * Rotation of the Node (in Radians)
311
+ *
312
+ * @remarks
313
+ * Sets the amount to rotate the Node by around it's Pivot Point (defined by
314
+ * the {@link pivot} props). Positive values rotate the Node clockwise, while
315
+ * negative values rotate it counter-clockwise.
316
+ *
317
+ * Example values:
318
+ * - `-Math.PI / 2`: 90 degree rotation counter-clockwise
319
+ * - `0`: No rotation
320
+ * - `Math.PI / 2`: 90 degree rotation clockwise
321
+ * - `Math.PI`: 180 degree rotation clockwise
322
+ * - `3 * Math.PI / 2`: 270 degree rotation clockwise
323
+ * - `2 * Math.PI`: 360 rotation clockwise
324
+ */
325
+ rotation: number;
326
+ worldX?: number;
327
+ worldY?: number;
328
+ }
329
+ export type INodeAnimatableProps = {
330
+ [Key in keyof INodeWritableProps as INodeWritableProps[Key] extends number ? Key : never]: number;
331
+ };
332
+ export interface INodeEvents {
333
+ [s: string]: (target: INode, data: any) => void;
334
+ }
335
+ /**
336
+ * Main API interface representing a Node in the Renderer scene graph.
337
+ *
338
+ * @remarks
339
+ * A Node is a basic building block of the Renderer scene graph. It can be a
340
+ * container for other Nodes, or it can be a leaf Node that renders a solid
341
+ * color, gradient, image, or specific texture, using a specific shader.
342
+ *
343
+ * For text rendering, see {@link ITextNode}.
344
+ *
345
+ * Nodes are represented by an interface since they may be implemented in
346
+ * different ways depending on the Core Driver. For example, the MainRenderDriver
347
+ * implements it with it's `MainOnlyNode` while the ThreadXRenderDriver implements
348
+ * it with it's `ThreadXMainNode`.
349
+ */
350
+ export interface INode extends INodeWritableProps, IEventEmitter<INodeEvents> {
351
+ id: number;
352
+ readonly children: INode[];
353
+ animate(props: Partial<INodeAnimatableProps>, settings: Partial<IAnimationSettings>): IAnimationController;
354
+ destroy(): void;
355
+ flush(): void;
356
+ }
357
+ export interface ITextNodeWritableProps extends INodeWritableProps, TrProps {
358
+ /**
359
+ * Force Text Node to use a specific Text Renderer
360
+ *
361
+ * @remarks
362
+ * By default, Text Nodes resolve the Text Renderer to use based on the font
363
+ * that is matched using the font family and other font selection properties.
364
+ *
365
+ * If two fonts supported by two separate Text Renderers are matched setting
366
+ * this override forces the Text Node to resolve to the Text Renderer defined
367
+ * here.
368
+ *
369
+ * @default null
370
+ */
371
+ textRendererOverride: keyof TextRendererMap | null;
372
+ }
373
+ /**
374
+ * Main API interface representing a Node in the Renderer scene graph that renders text.
375
+ *
376
+ * @remarks
377
+ * A Text Node is the second graphical building block of the Renderer scene
378
+ * graph. It renders text using a specific text renderer that is automatically
379
+ * chosen based on the font requested and what type of fonts are installed
380
+ * into an app via a CoreExtension.
381
+ *
382
+ * The text renderer can be overridden by setting the `textRendererOverride`
383
+ *
384
+ * The `texture` and `shader` properties are managed by loaded text renderer and
385
+ * should not be set directly.
386
+ *
387
+ * For non-text rendering, see {@link INode}.
388
+ */
389
+ export interface ITextNode extends INode, ITextNodeWritableProps {
390
+ }
@@ -0,0 +1,20 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=INode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"INode.js","sourceRoot":"","sources":["../../../src/main-api/INode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,20 @@
1
+ import type { INode, INodeWritableProps, ITextNode, ITextNodeWritableProps } from './INode.js';
2
+ import type { RendererMain, RendererMainSettings } from './RendererMain.js';
3
+ /**
4
+ * This interface is to be implemented by Core Drivers
5
+ *
6
+ * @remarks
7
+ * Both the {@link MainRenderDriver} and the {@link ThreadXRenderDriver} exist
8
+ * that implement this interface to support both the single-threaded and
9
+ * multi-threaded Core modes.
10
+ */
11
+ export interface IRenderDriver {
12
+ init(rendererMain: RendererMain, rendererSettings: Required<RendererMainSettings>, canvas: HTMLCanvasElement): Promise<void>;
13
+ createNode(props: INodeWritableProps): INode;
14
+ createTextNode(props: ITextNodeWritableProps): ITextNode;
15
+ destroyNode(node: INode): void;
16
+ getRootNode(): INode;
17
+ releaseTexture(textureDescId: number): void;
18
+ onCreateNode(node: INode): void;
19
+ onBeforeDestroyNode(node: INode): void;
20
+ }
@@ -0,0 +1,20 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=IRenderDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IRenderDriver.js","sourceRoot":"","sources":["../../../src/main-api/IRenderDriver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
@@ -0,0 +1,232 @@
1
+ import type { ShaderMap } from '../core/CoreShaderManager.js';
2
+ import type { ExtractProps, TextureMap, TextureOptions } from '../core/CoreTextureManager.js';
3
+ import type { INode, INodeWritableProps, ITextNode, ITextNodeWritableProps } from './INode.js';
4
+ import type { IRenderDriver } from './IRenderDriver.js';
5
+ /**
6
+ * A description of a Texture
7
+ *
8
+ * @remarks
9
+ * This structure should only be created by the RendererMain's `makeTexture`
10
+ * method. The structure is immutable and should not be modified once created.
11
+ */
12
+ export interface TextureDesc<TxType extends keyof TextureMap = keyof TextureMap> {
13
+ readonly descType: 'texture';
14
+ readonly txType: TxType;
15
+ readonly props: ExtractProps<TextureMap[TxType]>;
16
+ readonly options?: Readonly<TextureOptions>;
17
+ }
18
+ export interface ShaderDesc<ShType extends keyof ShaderMap = keyof ShaderMap> {
19
+ readonly descType: 'shader';
20
+ readonly shType: ShType;
21
+ readonly props: ExtractProps<ShaderMap[ShType]>;
22
+ }
23
+ /**
24
+ * Configuration settings for {@link RendererMain}
25
+ */
26
+ export interface RendererMainSettings {
27
+ /**
28
+ * Authored logical pixel width of the application
29
+ *
30
+ * @defaultValue `1920`
31
+ */
32
+ appWidth?: number;
33
+ /**
34
+ * Authored logical pixel height of the application
35
+ *
36
+ * @defaultValue `1080`
37
+ */
38
+ appHeight?: number;
39
+ /**
40
+ * Factor to convert app-authored logical coorindates to device logical coordinates
41
+ *
42
+ * @remarks
43
+ * This value allows auto-scaling to support larger/small resolutions than the
44
+ * app was authored for.
45
+ *
46
+ * If the app was authored for 1920x1080 and this value is 2, the app's canvas
47
+ * will be rendered at 3840x2160 logical pixels.
48
+ *
49
+ * Likewise, if the app was authored for 1920x1080 and this value is 0.66667,
50
+ * the app's canvas will be rendered at 1280x720 logical pixels.
51
+ *
52
+ * @defaultValue `1`
53
+ */
54
+ deviceLogicalPixelRatio?: number;
55
+ /**
56
+ * Factor to convert device logical coordinates to device physical coordinates
57
+ *
58
+ * @remarks
59
+ * This value allows auto-scaling to support devices with different pixel densities.
60
+ *
61
+ * This controls the number of physical pixels that are used to render each logical
62
+ * pixel. For example, if the device has a pixel density of 2, each logical pixel
63
+ * will be rendered using 2x2 physical pixels.
64
+ *
65
+ * By default, it will be set to `window.devicePixelRatio` which is the pixel
66
+ * density of the device the app is running on reported by the browser.
67
+ *
68
+ * @defaultValue `window.devicePixelRatio`
69
+ */
70
+ devicePhysicalPixelRatio?: number;
71
+ /**
72
+ * RGBA encoded number of the background to use
73
+ *
74
+ * @defaultValue `0x00000000`
75
+ */
76
+ clearColor?: number;
77
+ /**
78
+ * Path to a custom core module to use
79
+ */
80
+ coreExtensionModule?: string | null;
81
+ }
82
+ /**
83
+ * The Renderer Main API
84
+ *
85
+ * @remarks
86
+ * This is the primary class used to configure and operate the Renderer.
87
+ *
88
+ * It is used to create and destroy Nodes, as well as Texture and Shader
89
+ * references.
90
+ *
91
+ * Example:
92
+ * ```ts
93
+ * import { RendererMain, MainRenderDriver } from '@lightningjs/renderer';
94
+ *
95
+ * // Initialize the Renderer
96
+ * const renderer = new RendererMain(
97
+ * {
98
+ * appWidth: 1920,
99
+ * appHeight: 1080
100
+ * },
101
+ * 'app',
102
+ * new MainRenderDriver(),
103
+ * );
104
+ * ```
105
+ */
106
+ export declare class RendererMain {
107
+ readonly root: INode | null;
108
+ readonly driver: IRenderDriver;
109
+ private canvas;
110
+ private settings;
111
+ private nodes;
112
+ private nextTextureId;
113
+ private textureRegistry;
114
+ /**
115
+ * Constructs a new Renderer instance
116
+ *
117
+ * @param settings Renderer settings
118
+ * @param target Element ID or HTMLElement to insert the canvas into
119
+ * @param driver Core Driver to use
120
+ */
121
+ constructor(settings: RendererMainSettings, target: string | HTMLElement, driver: IRenderDriver);
122
+ /**
123
+ * Initialize the renderer
124
+ *
125
+ * @remarks
126
+ * This method must be called and resolved asyncronously before any other
127
+ * methods are called.
128
+ */
129
+ init(): Promise<void>;
130
+ /**
131
+ * Create a new scene graph node
132
+ *
133
+ * @remarks
134
+ * A node is the main graphical building block of the Renderer scene graph. It
135
+ * can be a container for other nodes, or it can be a leaf node that renders a
136
+ * solid color, gradient, image, or specific texture, using a specific shader.
137
+ *
138
+ * To create a text node, see {@link createTextNode}.
139
+ *
140
+ * See {@link INode} for more details.
141
+ *
142
+ * @param props
143
+ * @returns
144
+ */
145
+ createNode(props: Partial<INodeWritableProps>): INode;
146
+ /**
147
+ * Create a new scene graph text node
148
+ *
149
+ * @remarks
150
+ * A text node is the second graphical building block of the Renderer scene
151
+ * graph. It renders text using a specific text renderer that is automatically
152
+ * chosen based on the font requested and what type of fonts are installed
153
+ * into an app via a CoreExtension.
154
+ *
155
+ * See {@link ITextNode} for more details.
156
+ *
157
+ * @param props
158
+ * @returns
159
+ */
160
+ createTextNode(props: Partial<ITextNodeWritableProps>): ITextNode;
161
+ /**
162
+ * Resolves the default property values for a Node
163
+ *
164
+ * @remarks
165
+ * This method is used internally by the RendererMain to resolve the default
166
+ * property values for a Node. It is exposed publicly so that it can be used
167
+ * by Core Driver implementations.
168
+ *
169
+ * @param props
170
+ * @returns
171
+ */
172
+ resolveNodeDefaults(props: Partial<INodeWritableProps>): INodeWritableProps;
173
+ /**
174
+ * Destroy a node
175
+ *
176
+ * @remarks
177
+ * This method destroys a node but does not destroy its children.
178
+ *
179
+ * @param node
180
+ * @returns
181
+ */
182
+ destroyNode(node: INode): void;
183
+ /**
184
+ * Create a new texture reference
185
+ *
186
+ * @remarks
187
+ * This method creates a new reference to a texture. The texture is not
188
+ * loaded until it is used on a node.
189
+ *
190
+ * It can be assigned to a node's `texture` property, or it can be used
191
+ * when creating a SubTexture.
192
+ *
193
+ * @param textureType
194
+ * @param props
195
+ * @param options
196
+ * @returns
197
+ */
198
+ makeTexture<Type extends keyof TextureMap>(textureType: Type, props: TextureDesc<Type>['props'], options?: TextureOptions): TextureDesc<Type>;
199
+ /**
200
+ * Create a new shader reference
201
+ *
202
+ * @remarks
203
+ * This method creates a new reference to a shader. The shader is not
204
+ * loaded until it is used on a Node.
205
+ *
206
+ * It can be assigned to a Node's `shader` property.
207
+ *
208
+ * @param shaderType
209
+ * @param props
210
+ * @returns
211
+ */
212
+ makeShader<ShType extends keyof ShaderMap>(shaderType: ShType, props?: ShaderDesc<ShType>['props']): ShaderDesc<ShType>;
213
+ /**
214
+ * Get a Node by its ID
215
+ *
216
+ * @param id
217
+ * @returns
218
+ */
219
+ getNodeById(id: number): INode | null;
220
+ toggleFreeze(): void;
221
+ advanceFrame(): void;
222
+ /**
223
+ * Re-render the current frame without advancing any running animations.
224
+ *
225
+ * @remarks
226
+ * Any state changes will be reflected in the re-rendered frame. Useful for
227
+ * debugging.
228
+ *
229
+ * May not do anything if the render loop is running on a separate worker.
230
+ */
231
+ rerender(): void;
232
+ }