@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta11
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/README.md +13 -27
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +1 -5
- package/dist/exports/index.js +1 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +45 -69
- package/dist/src/core/CoreNode.js +323 -305
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -5
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +61 -87
- package/dist/src/core/CoreTextNode.js +276 -235
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +9 -11
- package/dist/src/core/CoreTextureManager.js +80 -91
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +75 -31
- package/dist/src/core/Stage.js +270 -136
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +10 -1
- package/dist/src/core/TextureMemoryManager.js +112 -78
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +5 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +3 -2
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +43 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/utils.d.ts +3 -0
- package/dist/src/core/lib/utils.js +42 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platform.js +29 -4
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +37 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +9 -0
- package/dist/src/core/platforms/web/WebPlatform.js +84 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
- package/dist/src/core/renderers/CoreShaderNode.js +8 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +7 -6
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +30 -18
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +5 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +3 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.js +1 -1
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/utils.d.ts +5 -0
- package/dist/src/core/shaders/utils.js +41 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +57 -34
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +5 -4
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +6 -5
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +79 -36
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +92 -42
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Spinner.js +2 -0
- package/dist/src/core/shaders/webgl/Spinner.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +41 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +159 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +152 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +368 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +355 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +351 -0
- package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/Utils.d.ts +71 -0
- package/dist/src/core/text-rendering/Utils.js +212 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
- package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/canvas/Settings.js} +3 -11
- package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
- package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
- package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
- package/dist/src/core/text-rendering/canvas/draw.js +132 -0
- package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +30 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
- package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
- package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
- package/dist/src/core/{CoreExtension.js → text-rendering/sdf/index.js} +3 -12
- package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +4 -3
- package/dist/src/core/textures/ImageTexture.js +36 -9
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +21 -2
- package/dist/src/core/textures/Texture.js +37 -6
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +43 -7
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +122 -46
- package/dist/src/main-api/Renderer.js +174 -37
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas.ts +1 -1
- package/exports/index.ts +1 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +2 -3
- package/src/core/CoreNode.test.ts +0 -1
- package/src/core/CoreNode.ts +403 -388
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +337 -302
- package/src/core/CoreTextureManager.ts +78 -110
- package/src/core/Stage.ts +344 -178
- package/src/core/TextureMemoryManager.ts +150 -100
- package/src/core/animations/CoreAnimation.ts +7 -0
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +9 -2
- package/src/core/lib/RenderCoords.ts +52 -67
- package/src/core/lib/WebGlContextWrapper.ts +125 -68
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
- package/src/core/lib/utils.ts +51 -0
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +77 -0
- package/src/core/platforms/web/WebPlatform.ts +121 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -1
- package/src/core/renderers/CoreRenderer.ts +5 -2
- package/src/core/renderers/CoreShaderNode.ts +10 -6
- package/src/core/renderers/canvas/CanvasRenderer.ts +12 -28
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
- package/src/core/renderers/canvas/CanvasTexture.ts +17 -14
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +5 -0
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +52 -43
- package/src/core/renderers/webgl/WebGlRenderOp.ts +46 -24
- package/src/core/renderers/webgl/WebGlRenderer.ts +177 -145
- package/src/core/renderers/webgl/WebGlShaderNode.ts +7 -5
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +68 -37
- package/src/core/shaders/canvas/Border.ts +1 -4
- package/src/core/shaders/canvas/LinearGradient.ts +8 -6
- package/src/core/shaders/canvas/RadialGradient.ts +22 -36
- package/src/core/shaders/canvas/RoundedWithBorder.ts +17 -11
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +14 -12
- package/src/core/shaders/canvas/RoundedWithShadow.ts +8 -7
- package/src/core/shaders/templates/BorderTemplate.ts +1 -1
- package/src/core/shaders/templates/HolePunchTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/Border.ts +57 -37
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +5 -4
- package/src/core/shaders/webgl/RadialGradient.ts +7 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +80 -39
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +92 -50
- package/src/core/shaders/webgl/SdfShader.ts +1 -4
- package/src/core/text-rendering/CanvasFontHandler.ts +210 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
- package/src/core/text-rendering/SdfFontHandler.ts +554 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
- package/src/core/text-rendering/TextRenderer.ts +406 -0
- package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +5 -11
- package/src/core/text-rendering/canvas/Settings.ts +99 -0
- package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
- package/src/core/text-rendering/canvas/Utils.ts +178 -0
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
- package/src/core/text-rendering/canvas/draw.ts +165 -0
- package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
- package/src/core/text-rendering/sdf/Utils.ts +436 -0
- package/src/core/text-rendering/sdf/index.ts +20 -0
- package/src/core/textures/ImageTexture.ts +69 -27
- package/src/core/textures/Texture.ts +50 -6
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +53 -8
- package/src/main-api/Renderer.ts +311 -87
- package/src/utils.ts +10 -10
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
- /package/dist/src/core/{CoreStuff.d.ts → shaders/webgl/Spinner.d.ts} +0 -0
package/dist/src/core/Stage.js
CHANGED
|
@@ -16,20 +16,19 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import { startLoop, getTimeStamp } from './platform.js';
|
|
20
19
|
import { assertTruthy, setPremultiplyMode } from '../utils.js';
|
|
21
20
|
import { AnimationManager } from './animations/AnimationManager.js';
|
|
22
21
|
import { UpdateType, CoreNode, CoreNodeRenderState, } from './CoreNode.js';
|
|
23
22
|
import { CoreTextureManager } from './CoreTextureManager.js';
|
|
24
|
-
import { TrFontManager } from './text-rendering/TrFontManager.js';
|
|
25
23
|
import { CoreShaderManager } from './CoreShaderManager.js';
|
|
26
|
-
import {
|
|
24
|
+
import {} from './text-rendering/TextRenderer.js';
|
|
27
25
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
28
26
|
import { ContextSpy } from './lib/ContextSpy.js';
|
|
29
27
|
import { TextureMemoryManager, } from './TextureMemoryManager.js';
|
|
30
28
|
import { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
31
29
|
import { CoreTextNode } from './CoreTextNode.js';
|
|
32
30
|
import { santizeCustomDataMap } from '../main-api/utils.js';
|
|
31
|
+
import { pointInBound } from './lib/utils.js';
|
|
33
32
|
import { createBound, createPreloadBounds } from './lib/utils.js';
|
|
34
33
|
import { ColorTexture } from './textures/ColorTexture.js';
|
|
35
34
|
const autoStart = true;
|
|
@@ -39,11 +38,12 @@ export class Stage {
|
|
|
39
38
|
animationManager;
|
|
40
39
|
txManager;
|
|
41
40
|
txMemManager;
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
textRenderers = {};
|
|
42
|
+
fontHandlers = {};
|
|
44
43
|
shManager;
|
|
45
44
|
renderer;
|
|
46
45
|
root;
|
|
46
|
+
interactiveNodes = new Set();
|
|
47
47
|
boundsMargin;
|
|
48
48
|
defShaderNode = null;
|
|
49
49
|
strictBound;
|
|
@@ -52,6 +52,17 @@ export class Stage {
|
|
|
52
52
|
defaultTexture = null;
|
|
53
53
|
pixelRatio;
|
|
54
54
|
bufferMemory = 2e6;
|
|
55
|
+
platform;
|
|
56
|
+
calculateTextureCoord;
|
|
57
|
+
/**
|
|
58
|
+
* Target frame time in milliseconds (calculated from targetFPS)
|
|
59
|
+
*
|
|
60
|
+
* @remarks
|
|
61
|
+
* This is pre-calculated to avoid recalculating on every frame.
|
|
62
|
+
* - 0 means no throttling (use display refresh rate)
|
|
63
|
+
* - >0 means throttle to this frame time (1000 / targetFPS)
|
|
64
|
+
*/
|
|
65
|
+
targetFrameTime = 0;
|
|
55
66
|
/**
|
|
56
67
|
* Renderer Event Bus for the Stage to emit events onto
|
|
57
68
|
*
|
|
@@ -71,16 +82,25 @@ export class Stage {
|
|
|
71
82
|
numQuadsRendered = 0;
|
|
72
83
|
renderRequested = false;
|
|
73
84
|
frameEventQueue = [];
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
// Font resolve optimisation flags
|
|
86
|
+
hasOnlyOneFontEngine;
|
|
87
|
+
hasOnlyCanvasFontEngine;
|
|
88
|
+
hasCanvasEngine;
|
|
89
|
+
singleFontEngine = null;
|
|
90
|
+
singleFontHandler = null;
|
|
91
|
+
// Debug data
|
|
76
92
|
contextSpy = null;
|
|
77
93
|
/**
|
|
78
94
|
* Stage constructor
|
|
79
95
|
*/
|
|
80
96
|
constructor(options) {
|
|
81
97
|
this.options = options;
|
|
82
|
-
const { canvas, clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, forceWebGL2, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, } = options;
|
|
98
|
+
const { canvas, clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, forceWebGL2, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, platform, } = options;
|
|
99
|
+
assertTruthy(platform !== null, 'A CorePlatform is not provided in the options');
|
|
100
|
+
this.platform = platform;
|
|
83
101
|
this.eventBus = options.eventBus;
|
|
102
|
+
// Calculate target frame time from targetFPS option
|
|
103
|
+
this.targetFrameTime = options.targetFPS > 0 ? 1000 / options.targetFPS : 0;
|
|
84
104
|
this.txManager = new CoreTextureManager(this, {
|
|
85
105
|
numImageWorkers,
|
|
86
106
|
createImageBitmapSupport,
|
|
@@ -115,34 +135,79 @@ export class Stage {
|
|
|
115
135
|
});
|
|
116
136
|
this.shManager = new CoreShaderManager(this);
|
|
117
137
|
this.defShaderNode = this.renderer.getDefaultShaderNode();
|
|
138
|
+
this.calculateTextureCoord = this.renderer.getTextureCoords !== undefined;
|
|
118
139
|
const renderMode = this.renderer.mode || 'webgl';
|
|
119
140
|
this.createDefaultTexture();
|
|
120
141
|
setPremultiplyMode(renderMode);
|
|
121
142
|
// Must do this after renderer is created
|
|
122
143
|
this.txManager.renderer = this.renderer;
|
|
123
144
|
// Create text renderers
|
|
124
|
-
this.
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
145
|
+
this.hasOnlyOneFontEngine = fontEngines.length === 1;
|
|
146
|
+
this.hasOnlyCanvasFontEngine =
|
|
147
|
+
fontEngines.length === 1 && fontEngines[0].type === 'canvas';
|
|
148
|
+
this.hasCanvasEngine = false;
|
|
149
|
+
this.singleFontEngine = this.hasOnlyOneFontEngine
|
|
150
|
+
? fontEngines[0]
|
|
151
|
+
: null;
|
|
152
|
+
this.singleFontHandler = this.hasOnlyOneFontEngine
|
|
153
|
+
? fontEngines[0]?.font
|
|
154
|
+
: null;
|
|
155
|
+
if (this.singleFontEngine === null) {
|
|
156
|
+
// Multiple font engines case
|
|
157
|
+
// Filter out incompatible engines first
|
|
158
|
+
const compatibleEngines = fontEngines.filter((fontEngine) => {
|
|
159
|
+
const type = fontEngine.type;
|
|
160
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
161
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
162
|
+
return false;
|
|
136
163
|
}
|
|
137
|
-
|
|
138
|
-
this.
|
|
164
|
+
if (type === 'canvas') {
|
|
165
|
+
this.hasCanvasEngine = true;
|
|
139
166
|
}
|
|
167
|
+
return true;
|
|
168
|
+
});
|
|
169
|
+
// Sort engines: SDF first, Canvas last, others in between
|
|
170
|
+
const sortedEngines = compatibleEngines.sort((a, b) => {
|
|
171
|
+
if (a.type === 'sdf')
|
|
172
|
+
return -1;
|
|
173
|
+
if (b.type === 'sdf')
|
|
174
|
+
return 1;
|
|
175
|
+
if (a.type === 'canvas')
|
|
176
|
+
return 1;
|
|
177
|
+
if (b.type === 'canvas')
|
|
178
|
+
return -1;
|
|
179
|
+
return 0;
|
|
180
|
+
});
|
|
181
|
+
// Initialize engines in sorted order
|
|
182
|
+
sortedEngines.forEach((fontEngine) => {
|
|
183
|
+
const type = fontEngine.type;
|
|
184
|
+
// Add to map for type-based access
|
|
185
|
+
this.textRenderers[type] = fontEngine;
|
|
186
|
+
this.textRenderers[type].init(this);
|
|
187
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// Single font engine case - initialize it directly
|
|
192
|
+
const fontEngine = this.singleFontEngine;
|
|
193
|
+
const type = fontEngine.type;
|
|
194
|
+
// Check compatibility
|
|
195
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
196
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
140
197
|
}
|
|
141
|
-
|
|
198
|
+
else {
|
|
199
|
+
if (type === 'canvas') {
|
|
200
|
+
this.hasCanvasEngine = true;
|
|
201
|
+
}
|
|
202
|
+
// Add to map for type-based access
|
|
203
|
+
this.textRenderers[type] = fontEngine;
|
|
204
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
205
|
+
this.textRenderers[type].init(this);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
142
208
|
if (Object.keys(this.textRenderers).length === 0) {
|
|
143
209
|
console.warn('No text renderers available. Your text will not render.');
|
|
144
210
|
}
|
|
145
|
-
this.fontManager = new TrFontManager(this.textRenderers);
|
|
146
211
|
// create root node
|
|
147
212
|
const rootNode = new CoreNode(this, {
|
|
148
213
|
x: 0,
|
|
@@ -180,13 +245,12 @@ export class Stage {
|
|
|
180
245
|
rtt: false,
|
|
181
246
|
src: null,
|
|
182
247
|
scale: 1,
|
|
183
|
-
preventCleanup: false,
|
|
184
248
|
strictBounds: this.strictBounds,
|
|
185
249
|
});
|
|
186
250
|
this.root = rootNode;
|
|
187
251
|
// execute platform start loop
|
|
188
|
-
if (autoStart) {
|
|
189
|
-
startLoop(this);
|
|
252
|
+
if (autoStart === true) {
|
|
253
|
+
this.platform.startLoop(this);
|
|
190
254
|
}
|
|
191
255
|
}
|
|
192
256
|
setClearColor(color) {
|
|
@@ -194,8 +258,21 @@ export class Stage {
|
|
|
194
258
|
this.renderer.updateClearColor(color);
|
|
195
259
|
this.renderRequested = true;
|
|
196
260
|
}
|
|
261
|
+
/**
|
|
262
|
+
* Update the target frame time based on the current targetFPS setting
|
|
263
|
+
*
|
|
264
|
+
* @remarks
|
|
265
|
+
* This should be called whenever the targetFPS option is changed
|
|
266
|
+
* to ensure targetFrameTime stays in sync.
|
|
267
|
+
* targetFPS of 0 means no throttling (targetFrameTime = 0)
|
|
268
|
+
* targetFPS > 0 means throttle to 1000/targetFPS milliseconds
|
|
269
|
+
*/
|
|
270
|
+
updateTargetFrameTime() {
|
|
271
|
+
this.targetFrameTime =
|
|
272
|
+
this.options.targetFPS > 0 ? 1000 / this.options.targetFPS : 0;
|
|
273
|
+
}
|
|
197
274
|
updateFrameTime() {
|
|
198
|
-
const newFrameTime = getTimeStamp();
|
|
275
|
+
const newFrameTime = this.platform.getTimeStamp();
|
|
199
276
|
this.lastFrameTime = this.currentFrameTime;
|
|
200
277
|
this.currentFrameTime = newFrameTime;
|
|
201
278
|
this.deltaTime = !this.lastFrameTime
|
|
@@ -214,7 +291,6 @@ export class Stage {
|
|
|
214
291
|
* Create default PixelTexture
|
|
215
292
|
*/
|
|
216
293
|
createDefaultTexture() {
|
|
217
|
-
console.log('Creating default texture');
|
|
218
294
|
this.defaultTexture = this.txManager.createTexture('ColorTexture', {
|
|
219
295
|
color: 0xffffffff,
|
|
220
296
|
});
|
|
@@ -253,22 +329,27 @@ export class Stage {
|
|
|
253
329
|
* Start a new frame draw
|
|
254
330
|
*/
|
|
255
331
|
drawFrame() {
|
|
256
|
-
const { renderer, renderRequested } = this;
|
|
257
|
-
|
|
332
|
+
const { renderer, renderRequested, root } = this;
|
|
333
|
+
const txMemManager = this.txMemManager;
|
|
258
334
|
// Update tree if needed
|
|
259
|
-
if (
|
|
260
|
-
|
|
335
|
+
if (root.updateType !== 0) {
|
|
336
|
+
root.update(this.deltaTime, root.clippingRect);
|
|
261
337
|
}
|
|
262
|
-
// Process some textures
|
|
263
|
-
|
|
338
|
+
// Process some textures asynchronously but don't block the frame
|
|
339
|
+
// Use a background task to prevent frame drops
|
|
340
|
+
this.txManager
|
|
341
|
+
.processSome(this.options.textureProcessingTimeLimit)
|
|
342
|
+
.catch((err) => {
|
|
343
|
+
console.error('Error processing textures:', err);
|
|
344
|
+
});
|
|
264
345
|
// Reset render operations and clear the canvas
|
|
265
346
|
renderer.reset();
|
|
266
347
|
// Check if we need to cleanup textures
|
|
267
|
-
if (
|
|
268
|
-
|
|
269
|
-
if (
|
|
348
|
+
if (txMemManager.criticalCleanupRequested === true) {
|
|
349
|
+
txMemManager.cleanup(false);
|
|
350
|
+
if (txMemManager.criticalCleanupRequested === true) {
|
|
270
351
|
// If we still need to cleanup, request another but aggressive cleanup
|
|
271
|
-
|
|
352
|
+
txMemManager.cleanup(true);
|
|
272
353
|
}
|
|
273
354
|
}
|
|
274
355
|
// If we have RTT nodes draw them first
|
|
@@ -279,11 +360,11 @@ export class Stage {
|
|
|
279
360
|
// Fill quads buffer
|
|
280
361
|
this.addQuads(this.root);
|
|
281
362
|
// Perform render pass
|
|
282
|
-
renderer
|
|
363
|
+
renderer.render();
|
|
283
364
|
this.calculateFps();
|
|
284
365
|
this.calculateQuads();
|
|
285
366
|
// Reset renderRequested flag if it was set
|
|
286
|
-
if (renderRequested) {
|
|
367
|
+
if (renderRequested === true) {
|
|
287
368
|
this.renderRequested = false;
|
|
288
369
|
}
|
|
289
370
|
}
|
|
@@ -383,88 +464,68 @@ export class Stage {
|
|
|
383
464
|
* @returns
|
|
384
465
|
*/
|
|
385
466
|
resolveTextRenderer(trProps, textRendererOverride = null) {
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
let rendererId = textRendererOverride;
|
|
393
|
-
let overrideFallback = false;
|
|
394
|
-
// Check if the override is valid (if one is provided)
|
|
395
|
-
if (rendererId) {
|
|
396
|
-
const possibleRenderer = this.textRenderers[rendererId];
|
|
397
|
-
if (!possibleRenderer) {
|
|
398
|
-
console.warn(`Text renderer override '${rendererId}' not found.`);
|
|
399
|
-
rendererId = null;
|
|
400
|
-
overrideFallback = true;
|
|
401
|
-
}
|
|
402
|
-
else if (!possibleRenderer.canRenderFont(trProps)) {
|
|
403
|
-
console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);
|
|
404
|
-
rendererId = null;
|
|
405
|
-
overrideFallback = true;
|
|
467
|
+
// If we have an overide, return it
|
|
468
|
+
if (textRendererOverride !== null) {
|
|
469
|
+
const overrideKey = String(textRendererOverride);
|
|
470
|
+
if (this.textRenderers[overrideKey] === undefined) {
|
|
471
|
+
console.warn(`Text renderer override '${overrideKey}' not found.`);
|
|
472
|
+
return null;
|
|
406
473
|
}
|
|
474
|
+
return this.textRenderers[overrideKey];
|
|
407
475
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
break;
|
|
414
|
-
}
|
|
476
|
+
// If we have only one font engine early return it
|
|
477
|
+
if (this.singleFontEngine !== null) {
|
|
478
|
+
// If we have only one font engine and its the canvas engine, we can just return it
|
|
479
|
+
if (this.hasOnlyCanvasFontEngine === true) {
|
|
480
|
+
return this.singleFontEngine;
|
|
415
481
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
482
|
+
// If we have only one font engine and it can render the font, return it
|
|
483
|
+
if (this.singleFontHandler?.canRenderFont(trProps) === true) {
|
|
484
|
+
return this.singleFontEngine;
|
|
419
485
|
}
|
|
486
|
+
// If we have only one font engine and it cannot render the font, return null
|
|
487
|
+
console.warn(`Text renderer cannot render font`, trProps);
|
|
488
|
+
return null;
|
|
420
489
|
}
|
|
421
|
-
|
|
422
|
-
|
|
490
|
+
// Multi font handling - If we have multiple font engines, we need to resolve the best one
|
|
491
|
+
// First check SDF
|
|
492
|
+
if (this.fontHandlers['sdf']?.canRenderFont(trProps) === true) {
|
|
493
|
+
return this.textRenderers.sdf || null;
|
|
423
494
|
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
return null;
|
|
495
|
+
// If we have a canvas engine, we can return it (it can render all fonts)
|
|
496
|
+
if (this.hasCanvasEngine === true) {
|
|
497
|
+
return this.textRenderers.canvas || null;
|
|
428
498
|
}
|
|
429
|
-
//
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
// cache the resolved renderer for future use with these trProps
|
|
433
|
-
this.fontResolveMap[fontCacheString] = resolvedTextRenderer;
|
|
434
|
-
// Need to explicitly cast to TextRenderer because TS doesn't like
|
|
435
|
-
// the covariant state argument in the setter method map
|
|
436
|
-
return resolvedTextRenderer;
|
|
499
|
+
// If we have no font engines, return null
|
|
500
|
+
console.warn('No text renderers available. Your text will not render.');
|
|
501
|
+
return null;
|
|
437
502
|
}
|
|
438
503
|
createNode(props) {
|
|
439
504
|
const resolvedProps = this.resolveNodeDefaults(props);
|
|
440
505
|
return new CoreNode(this, resolvedProps);
|
|
441
506
|
}
|
|
442
507
|
createTextNode(props) {
|
|
443
|
-
const fontSize = props.fontSize
|
|
444
|
-
const resolvedProps = {
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
textRendererOverride: props.textRendererOverride ?? null,
|
|
508
|
+
const fontSize = props.fontSize || 16;
|
|
509
|
+
const resolvedProps = Object.assign(this.resolveNodeDefaults(props), {
|
|
510
|
+
text: props.text || '',
|
|
511
|
+
textRendererOverride: props.textRendererOverride || null,
|
|
448
512
|
fontSize,
|
|
449
|
-
fontFamily: props.fontFamily
|
|
450
|
-
fontStyle: props.fontStyle
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
shaderProps: null,
|
|
466
|
-
};
|
|
467
|
-
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, props.textRendererOverride);
|
|
513
|
+
fontFamily: props.fontFamily || 'sans-serif',
|
|
514
|
+
fontStyle: props.fontStyle || 'normal',
|
|
515
|
+
textAlign: props.textAlign || 'left',
|
|
516
|
+
offsetY: props.offsetY || 0,
|
|
517
|
+
letterSpacing: props.letterSpacing || 0,
|
|
518
|
+
lineHeight: props.lineHeight || 0,
|
|
519
|
+
maxLines: props.maxLines || 0,
|
|
520
|
+
textBaseline: props.textBaseline || 'alphabetic',
|
|
521
|
+
verticalAlign: props.verticalAlign || 'middle',
|
|
522
|
+
overflowSuffix: props.overflowSuffix || '...',
|
|
523
|
+
wordBreak: props.wordBreak || 'normal',
|
|
524
|
+
maxWidth: props.maxWidth || 0,
|
|
525
|
+
maxHeight: props.maxHeight || 0,
|
|
526
|
+
forceLoad: props.forceLoad || false,
|
|
527
|
+
});
|
|
528
|
+
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, resolvedProps.textRendererOverride);
|
|
468
529
|
if (!resolvedTextRenderer) {
|
|
469
530
|
throw new Error(`No compatible text renderer found for ${resolvedProps.fontFamily}`);
|
|
470
531
|
}
|
|
@@ -476,6 +537,51 @@ export class Stage {
|
|
|
476
537
|
: [value, value, value, value];
|
|
477
538
|
this.root.setUpdateType(UpdateType.RenderBounds);
|
|
478
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* Update the viewport bounds
|
|
542
|
+
*/
|
|
543
|
+
updateViewportBounds() {
|
|
544
|
+
const { appWidth, appHeight } = this.options;
|
|
545
|
+
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
546
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
547
|
+
this.root.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
|
|
548
|
+
this.root.childUpdateType |= UpdateType.RenderBounds;
|
|
549
|
+
}
|
|
550
|
+
/** Find all nodes at a given point
|
|
551
|
+
* @param data
|
|
552
|
+
*/
|
|
553
|
+
findNodesAtPoint(data) {
|
|
554
|
+
const x = data.x / this.options.deviceLogicalPixelRatio;
|
|
555
|
+
const y = data.y / this.options.deviceLogicalPixelRatio;
|
|
556
|
+
const nodes = [];
|
|
557
|
+
for (const node of this.interactiveNodes) {
|
|
558
|
+
if (node.isRenderable === false) {
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
if (pointInBound(x, y, node.renderBound) === true) {
|
|
562
|
+
nodes.push(node);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
return nodes;
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Find the top node at a given point
|
|
569
|
+
* @param data
|
|
570
|
+
* @returns
|
|
571
|
+
*/
|
|
572
|
+
getNodeFromPosition(data) {
|
|
573
|
+
const nodes = this.findNodesAtPoint(data);
|
|
574
|
+
if (nodes.length === 0) {
|
|
575
|
+
return null;
|
|
576
|
+
}
|
|
577
|
+
let topNode = nodes[0];
|
|
578
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
579
|
+
if (nodes[i].zIndex > topNode.zIndex) {
|
|
580
|
+
topNode = nodes[i];
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
return topNode || null;
|
|
584
|
+
}
|
|
479
585
|
/**
|
|
480
586
|
* Resolves the default property values for a Node
|
|
481
587
|
*
|
|
@@ -488,15 +594,22 @@ export class Stage {
|
|
|
488
594
|
* @returns
|
|
489
595
|
*/
|
|
490
596
|
resolveNodeDefaults(props) {
|
|
597
|
+
const { colorTop: top, colorBottom: bottom, colorLeft: left, colorRight: right, } = props;
|
|
491
598
|
const color = props.color ?? 0xffffffff;
|
|
492
|
-
const
|
|
493
|
-
const
|
|
494
|
-
const
|
|
495
|
-
const
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
599
|
+
const colorTop = top ?? color;
|
|
600
|
+
const colorBottom = bottom ?? color;
|
|
601
|
+
const colorLeft = left ?? color;
|
|
602
|
+
const colorRight = right ?? color;
|
|
603
|
+
const colorTl = props.colorTl ?? top ?? left ?? color;
|
|
604
|
+
const colorTr = props.colorTr ?? top ?? right ?? color;
|
|
605
|
+
const colorBl = props.colorBl ?? bottom ?? left ?? color;
|
|
606
|
+
const colorBr = props.colorBr ?? bottom ?? right ?? color;
|
|
607
|
+
const scale = props.scale ?? null;
|
|
608
|
+
const mount = props.mount ?? 0;
|
|
609
|
+
const pivot = props.pivot ?? 0.5;
|
|
610
|
+
const data = this.options.inspector
|
|
611
|
+
? santizeCustomDataMap(props.data ?? {})
|
|
612
|
+
: {};
|
|
500
613
|
return {
|
|
501
614
|
x: props.x ?? 0,
|
|
502
615
|
y: props.y ?? 0,
|
|
@@ -507,41 +620,39 @@ export class Stage {
|
|
|
507
620
|
boundsMargin: props.boundsMargin ?? null,
|
|
508
621
|
clipping: props.clipping ?? false,
|
|
509
622
|
color,
|
|
510
|
-
colorTop
|
|
511
|
-
colorBottom
|
|
512
|
-
colorLeft
|
|
513
|
-
colorRight
|
|
514
|
-
colorBl,
|
|
515
|
-
colorBr,
|
|
623
|
+
colorTop,
|
|
624
|
+
colorBottom,
|
|
625
|
+
colorLeft,
|
|
626
|
+
colorRight,
|
|
516
627
|
colorTl,
|
|
517
628
|
colorTr,
|
|
629
|
+
colorBl,
|
|
630
|
+
colorBr,
|
|
518
631
|
zIndex: props.zIndex ?? 0,
|
|
519
632
|
zIndexLocked: props.zIndexLocked ?? 0,
|
|
520
633
|
parent: props.parent ?? null,
|
|
521
634
|
texture: props.texture ?? null,
|
|
522
635
|
textureOptions: props.textureOptions ?? {},
|
|
523
636
|
shader: props.shader ?? this.defShaderNode,
|
|
524
|
-
// Since setting the `src` will trigger a texture load, we need to set it after
|
|
525
|
-
// we set the texture. Otherwise, problems happen.
|
|
526
637
|
src: props.src ?? null,
|
|
527
638
|
srcHeight: props.srcHeight,
|
|
528
639
|
srcWidth: props.srcWidth,
|
|
529
640
|
srcX: props.srcX,
|
|
530
641
|
srcY: props.srcY,
|
|
531
|
-
scale
|
|
532
|
-
scaleX: props.scaleX ??
|
|
533
|
-
scaleY: props.scaleY ??
|
|
534
|
-
mount
|
|
535
|
-
mountX: props.mountX ??
|
|
536
|
-
mountY: props.mountY ??
|
|
537
|
-
pivot
|
|
538
|
-
pivotX: props.pivotX ??
|
|
539
|
-
pivotY: props.pivotY ??
|
|
642
|
+
scale,
|
|
643
|
+
scaleX: props.scaleX ?? scale ?? 1,
|
|
644
|
+
scaleY: props.scaleY ?? scale ?? 1,
|
|
645
|
+
mount,
|
|
646
|
+
mountX: props.mountX ?? mount,
|
|
647
|
+
mountY: props.mountY ?? mount,
|
|
648
|
+
pivot,
|
|
649
|
+
pivotX: props.pivotX ?? pivot,
|
|
650
|
+
pivotY: props.pivotY ?? pivot,
|
|
540
651
|
rotation: props.rotation ?? 0,
|
|
541
652
|
rtt: props.rtt ?? false,
|
|
542
|
-
data
|
|
543
|
-
preventCleanup: props.preventCleanup ?? false,
|
|
653
|
+
data,
|
|
544
654
|
imageType: props.imageType,
|
|
655
|
+
interactive: props.interactive ?? false,
|
|
545
656
|
strictBounds: props.strictBounds ?? this.strictBounds,
|
|
546
657
|
};
|
|
547
658
|
}
|
|
@@ -562,5 +673,28 @@ export class Stage {
|
|
|
562
673
|
get clearColor() {
|
|
563
674
|
return this.clrColor;
|
|
564
675
|
}
|
|
676
|
+
/**
|
|
677
|
+
* Load a font using a specific text renderer type
|
|
678
|
+
*
|
|
679
|
+
* @remarks
|
|
680
|
+
* This method allows consumers to explicitly load fonts for a specific
|
|
681
|
+
* text renderer type (e.g., 'canvas', 'sdf'). Consumers must specify
|
|
682
|
+
* the renderer type to ensure fonts are loaded with the correct pipeline.
|
|
683
|
+
*
|
|
684
|
+
* For Canvas fonts, provide fontUrl (e.g., .ttf, .woff, .woff2)
|
|
685
|
+
* For SDF fonts, provide atlasUrl (image) and atlasDataUrl (JSON glyph data)
|
|
686
|
+
*
|
|
687
|
+
* @param rendererType - The type of text renderer ('canvas', 'sdf', etc.)
|
|
688
|
+
* @param options - Font loading options specific to the renderer type
|
|
689
|
+
* @returns Promise that resolves when the font is loaded
|
|
690
|
+
*/
|
|
691
|
+
async loadFont(rendererType, options) {
|
|
692
|
+
const rendererTypeKey = String(rendererType);
|
|
693
|
+
const fontHandler = this.fontHandlers[rendererTypeKey];
|
|
694
|
+
if (!fontHandler) {
|
|
695
|
+
throw new Error(`Font handler for renderer type '${rendererTypeKey}' not found. Available types: ${Object.keys(this.fontHandlers).join(', ')}`);
|
|
696
|
+
}
|
|
697
|
+
return fontHandler.loadFont(this, options);
|
|
698
|
+
}
|
|
565
699
|
}
|
|
566
700
|
//# sourceMappingURL=Stage.js.map
|