@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.
- package/LICENSE +202 -0
- package/NOTICE +4 -0
- package/README.md +184 -0
- package/dist/exports/core-api.d.ts +73 -0
- package/dist/exports/core-api.js +95 -0
- package/dist/exports/core-api.js.map +1 -0
- package/dist/exports/main-api.d.ts +28 -0
- package/dist/exports/main-api.js +45 -0
- package/dist/exports/main-api.js.map +1 -0
- package/dist/exports/utils.d.ts +23 -0
- package/dist/exports/utils.js +42 -0
- package/dist/exports/utils.js.map +1 -0
- package/dist/src/common/CommonTypes.d.ts +38 -0
- package/dist/src/common/CommonTypes.js +20 -0
- package/dist/src/common/CommonTypes.js.map +1 -0
- package/dist/src/common/EventEmitter.d.ts +12 -0
- package/dist/src/common/EventEmitter.js +66 -0
- package/dist/src/common/EventEmitter.js.map +1 -0
- package/dist/src/common/IAnimationController.d.ts +9 -0
- package/dist/src/common/IAnimationController.js +20 -0
- package/dist/src/common/IAnimationController.js.map +1 -0
- package/dist/src/core/CoreExtension.d.ts +12 -0
- package/dist/src/core/CoreExtension.js +29 -0
- package/dist/src/core/CoreExtension.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +147 -0
- package/dist/src/core/CoreNode.js +498 -0
- package/dist/src/core/CoreNode.js.map +1 -0
- package/dist/src/core/CoreShaderManager.d.ts +29 -0
- package/dist/src/core/CoreShaderManager.js +58 -0
- package/dist/src/core/CoreShaderManager.js.map +1 -0
- package/dist/src/core/CoreTextNode.d.ts +64 -0
- package/dist/src/core/CoreTextNode.js +251 -0
- package/dist/src/core/CoreTextNode.js.map +1 -0
- package/dist/src/core/CoreTextureManager.d.ts +173 -0
- package/dist/src/core/CoreTextureManager.js +190 -0
- package/dist/src/core/CoreTextureManager.js.map +1 -0
- package/dist/src/core/Matrix2DContext.d.ts +15 -0
- package/dist/src/core/Matrix2DContext.js +45 -0
- package/dist/src/core/Matrix2DContext.js.map +1 -0
- package/dist/src/core/Stage.d.ts +53 -0
- package/dist/src/core/Stage.js +214 -0
- package/dist/src/core/Stage.js.map +1 -0
- package/dist/src/core/animations/AnimationManager.d.ts +7 -0
- package/dist/src/core/animations/AnimationManager.js +34 -0
- package/dist/src/core/animations/AnimationManager.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +27 -0
- package/dist/src/core/animations/CoreAnimation.js +103 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -0
- package/dist/src/core/animations/CoreAnimationController.d.ts +21 -0
- package/dist/src/core/animations/CoreAnimationController.js +96 -0
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -0
- package/dist/src/core/lib/glm/common.d.ts +162 -0
- package/dist/src/core/lib/glm/common.js +81 -0
- package/dist/src/core/lib/glm/common.js.map +1 -0
- package/dist/src/core/lib/glm/index.d.ts +11 -0
- package/dist/src/core/lib/glm/index.js +30 -0
- package/dist/src/core/lib/glm/index.js.map +1 -0
- package/dist/src/core/lib/glm/mat2.d.ts +219 -0
- package/dist/src/core/lib/glm/mat2.js +396 -0
- package/dist/src/core/lib/glm/mat2.js.map +1 -0
- package/dist/src/core/lib/glm/mat2d.d.ts +237 -0
- package/dist/src/core/lib/glm/mat2d.js +442 -0
- package/dist/src/core/lib/glm/mat2d.js.map +1 -0
- package/dist/src/core/lib/glm/mat3.d.ts +283 -0
- package/dist/src/core/lib/glm/mat3.js +680 -0
- package/dist/src/core/lib/glm/mat3.js.map +1 -0
- package/dist/src/core/lib/glm/mat4.d.ts +550 -0
- package/dist/src/core/lib/glm/mat4.js +1802 -0
- package/dist/src/core/lib/glm/mat4.js.map +1 -0
- package/dist/src/core/lib/glm/quat.d.ts +363 -0
- package/dist/src/core/lib/glm/quat.js +693 -0
- package/dist/src/core/lib/glm/quat.js.map +1 -0
- package/dist/src/core/lib/glm/quat2.d.ts +356 -0
- package/dist/src/core/lib/glm/quat2.js +754 -0
- package/dist/src/core/lib/glm/quat2.js.map +1 -0
- package/dist/src/core/lib/glm/vec2.d.ts +365 -0
- package/dist/src/core/lib/glm/vec2.js +569 -0
- package/dist/src/core/lib/glm/vec2.js.map +1 -0
- package/dist/src/core/lib/glm/vec3.d.ts +406 -0
- package/dist/src/core/lib/glm/vec3.js +720 -0
- package/dist/src/core/lib/glm/vec3.js.map +1 -0
- package/dist/src/core/lib/glm/vec4.d.ts +330 -0
- package/dist/src/core/lib/glm/vec4.js +608 -0
- package/dist/src/core/lib/glm/vec4.js.map +1 -0
- package/dist/src/core/lib/utils.d.ts +27 -0
- package/dist/src/core/lib/utils.js +108 -0
- package/dist/src/core/lib/utils.js.map +1 -0
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +37 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +6 -0
- package/dist/src/core/renderers/CoreContextTexture.js +25 -0
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderOp.d.ts +3 -0
- package/dist/src/core/renderers/CoreRenderOp.js +21 -0
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/CoreRenderer.d.ts +39 -0
- package/dist/src/core/renderers/CoreRenderer.js +26 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/dist/src/core/renderers/CoreShader.js +28 -0
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +7 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +32 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +46 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +163 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +27 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +82 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +100 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +372 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +39 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +187 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +27 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +48 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +39 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +92 -0
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +46 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.d.ts +10 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +31 -0
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +89 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +119 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +53 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +299 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +135 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +137 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +14 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +54 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +15 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +68 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +33 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +17 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +98 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +6 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +32 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +16 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +140 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +14 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +82 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +44 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- package/dist/src/core/scene/Scene.d.ts +59 -0
- package/dist/src/core/scene/Scene.js +106 -0
- package/dist/src/core/scene/Scene.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +53 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +156 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -0
- package/dist/src/core/text-rendering/TrFontManager.d.ts +25 -0
- package/dist/src/core/text-rendering/TrFontManager.js +75 -0
- package/dist/src/core/text-rendering/TrFontManager.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +29 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +88 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +103 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +21 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +59 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +86 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +48 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +54 -0
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +11 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +54 -0
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +45 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +492 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +115 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +493 -0
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +67 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +452 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +33 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +52 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +13 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +32 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +21 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +53 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +4 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +34 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +18 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +294 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +20 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +55 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +10 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +39 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +254 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +100 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +35 -0
- package/dist/src/core/textures/ColorTexture.js +62 -0
- package/dist/src/core/textures/ColorTexture.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +51 -0
- package/dist/src/core/textures/ImageTexture.js +76 -0
- package/dist/src/core/textures/ImageTexture.js.map +1 -0
- package/dist/src/core/textures/NoiseTexture.d.ts +42 -0
- package/dist/src/core/textures/NoiseTexture.js +63 -0
- package/dist/src/core/textures/NoiseTexture.js.map +1 -0
- package/dist/src/core/textures/SubTexture.d.ts +57 -0
- package/dist/src/core/textures/SubTexture.js +82 -0
- package/dist/src/core/textures/SubTexture.js.map +1 -0
- package/dist/src/core/textures/Texture.d.ts +92 -0
- package/dist/src/core/textures/Texture.js +105 -0
- package/dist/src/core/textures/Texture.js.map +1 -0
- package/dist/src/core/utils.d.ts +15 -0
- package/dist/src/core/utils.js +183 -0
- package/dist/src/core/utils.js.map +1 -0
- package/dist/src/main-api/INode.d.ts +390 -0
- package/dist/src/main-api/INode.js +20 -0
- package/dist/src/main-api/INode.js.map +1 -0
- package/dist/src/main-api/IRenderDriver.d.ts +20 -0
- package/dist/src/main-api/IRenderDriver.js +20 -0
- package/dist/src/main-api/IRenderDriver.js.map +1 -0
- package/dist/src/main-api/RendererMain.d.ts +232 -0
- package/dist/src/main-api/RendererMain.js +303 -0
- package/dist/src/main-api/RendererMain.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +84 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js +324 -0
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +39 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +165 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -0
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +17 -0
- package/dist/src/render-drivers/main/MainRenderDriver.js +88 -0
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +81 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js +254 -0
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +36 -0
- package/dist/src/render-drivers/threadx/SharedNode.js +57 -0
- package/dist/src/render-drivers/threadx/SharedNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +34 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +156 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +20 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +84 -0
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +37 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +121 -0
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +23 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +50 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +21 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +194 -0
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +1 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +48 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +32 -0
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +19 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +172 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +22 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +101 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +1 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js +130 -0
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -0
- package/dist/src/render-drivers/utils.d.ts +10 -0
- package/dist/src/render-drivers/utils.js +41 -0
- package/dist/src/render-drivers/utils.js.map +1 -0
- package/dist/src/utils.d.ts +79 -0
- package/dist/src/utils.js +162 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/tsconfig.dist.tsbuildinfo +1 -0
- 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
|
+
}
|