@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/src/core/Stage.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
import { assertTruthy, setPremultiplyMode } from '../utils.js';
|
|
21
21
|
import { AnimationManager } from './animations/AnimationManager.js';
|
|
22
22
|
import {
|
|
@@ -26,13 +26,14 @@ import {
|
|
|
26
26
|
type CoreNodeProps,
|
|
27
27
|
} from './CoreNode.js';
|
|
28
28
|
import { CoreTextureManager } from './CoreTextureManager.js';
|
|
29
|
-
import { TrFontManager } from './text-rendering/TrFontManager.js';
|
|
30
29
|
import { CoreShaderManager } from './CoreShaderManager.js';
|
|
31
30
|
import {
|
|
32
|
-
|
|
33
|
-
type
|
|
31
|
+
type FontHandler,
|
|
32
|
+
type FontLoadOptions,
|
|
33
|
+
type TextRenderer,
|
|
34
|
+
type TextRenderers,
|
|
34
35
|
type TrProps,
|
|
35
|
-
} from './text-rendering/
|
|
36
|
+
} from './text-rendering/TextRenderer.js';
|
|
36
37
|
|
|
37
38
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
38
39
|
import { ContextSpy } from './lib/ContextSpy.js';
|
|
@@ -46,39 +47,28 @@ import {
|
|
|
46
47
|
type TextureMemoryManagerSettings,
|
|
47
48
|
} from './TextureMemoryManager.js';
|
|
48
49
|
import { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
49
|
-
import type { WebGlRenderer } from './renderers/webgl/WebGlRenderer.js';
|
|
50
|
-
import type { CanvasRenderer } from './renderers/canvas/CanvasRenderer.js';
|
|
51
50
|
import { CoreTextNode, type CoreTextNodeProps } from './CoreTextNode.js';
|
|
52
51
|
import { santizeCustomDataMap } from '../main-api/utils.js';
|
|
53
|
-
import
|
|
54
|
-
import type { CanvasTextRenderer } from './text-rendering/renderers/CanvasTextRenderer.js';
|
|
52
|
+
import { pointInBound } from './lib/utils.js';
|
|
55
53
|
import type { CoreShaderNode } from './renderers/CoreShaderNode.js';
|
|
56
54
|
import { createBound, createPreloadBounds, type Bound } from './lib/utils.js';
|
|
57
55
|
import type { Texture } from './textures/Texture.js';
|
|
58
56
|
import { ColorTexture } from './textures/ColorTexture.js';
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
import type { Platform } from './platforms/Platform.js';
|
|
58
|
+
import type { WebPlatform } from './platforms/web/WebPlatform.js';
|
|
59
|
+
import type { RendererMainSettings } from '../main-api/Renderer.js';
|
|
60
|
+
|
|
61
|
+
export type StageOptions = Omit<
|
|
62
|
+
RendererMainSettings,
|
|
63
|
+
'inspector' | 'platform'
|
|
64
|
+
> & {
|
|
63
65
|
textureMemory: TextureMemoryManagerSettings;
|
|
64
|
-
boundsMargin: number | [number, number, number, number];
|
|
65
|
-
deviceLogicalPixelRatio: number;
|
|
66
|
-
devicePhysicalPixelRatio: number;
|
|
67
66
|
canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
68
|
-
clearColor: number;
|
|
69
67
|
fpsUpdateInterval: number;
|
|
70
|
-
enableContextSpy: boolean;
|
|
71
|
-
forceWebGL2: boolean;
|
|
72
|
-
numImageWorkers: number;
|
|
73
|
-
renderEngine: typeof WebGlRenderer | typeof CanvasRenderer;
|
|
74
68
|
eventBus: EventEmitter;
|
|
75
|
-
|
|
76
|
-
fontEngines: (typeof CanvasTextRenderer | typeof SdfTextRenderer)[];
|
|
69
|
+
platform: Platform | WebPlatform;
|
|
77
70
|
inspector: boolean;
|
|
78
|
-
|
|
79
|
-
textureProcessingTimeLimit: number;
|
|
80
|
-
createImageBitmapSupport: 'auto' | 'basic' | 'options' | 'full';
|
|
81
|
-
}
|
|
71
|
+
};
|
|
82
72
|
|
|
83
73
|
export type StageFpsUpdateHandler = (
|
|
84
74
|
stage: Stage,
|
|
@@ -90,6 +80,11 @@ export type StageFrameTickHandler = (
|
|
|
90
80
|
frameTickData: FrameTickPayload,
|
|
91
81
|
) => void;
|
|
92
82
|
|
|
83
|
+
export interface Point {
|
|
84
|
+
x: number;
|
|
85
|
+
y: number;
|
|
86
|
+
}
|
|
87
|
+
|
|
93
88
|
const autoStart = true;
|
|
94
89
|
|
|
95
90
|
export class Stage {
|
|
@@ -97,19 +92,33 @@ export class Stage {
|
|
|
97
92
|
public readonly animationManager: AnimationManager;
|
|
98
93
|
public readonly txManager: CoreTextureManager;
|
|
99
94
|
public readonly txMemManager: TextureMemoryManager;
|
|
100
|
-
public readonly
|
|
101
|
-
public readonly
|
|
95
|
+
public readonly textRenderers: Record<string, TextRenderer> = {};
|
|
96
|
+
public readonly fontHandlers: Record<string, FontHandler> = {};
|
|
102
97
|
public readonly shManager: CoreShaderManager;
|
|
103
98
|
public readonly renderer: CoreRenderer;
|
|
104
99
|
public readonly root: CoreNode;
|
|
100
|
+
public readonly interactiveNodes: Set<CoreNode> = new Set();
|
|
105
101
|
public boundsMargin: [number, number, number, number];
|
|
106
102
|
public readonly defShaderNode: CoreShaderNode | null = null;
|
|
107
|
-
public
|
|
108
|
-
public
|
|
103
|
+
public strictBound: Bound;
|
|
104
|
+
public preloadBound: Bound;
|
|
109
105
|
public readonly strictBounds: boolean;
|
|
110
106
|
public readonly defaultTexture: Texture | null = null;
|
|
111
|
-
public
|
|
107
|
+
public pixelRatio: number;
|
|
112
108
|
public readonly bufferMemory: number = 2e6;
|
|
109
|
+
public readonly platform: Platform | WebPlatform;
|
|
110
|
+
public readonly calculateTextureCoord: boolean;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Target frame time in milliseconds (calculated from targetFPS)
|
|
114
|
+
*
|
|
115
|
+
* @remarks
|
|
116
|
+
* This is pre-calculated to avoid recalculating on every frame.
|
|
117
|
+
* - 0 means no throttling (use display refresh rate)
|
|
118
|
+
* - >0 means throttle to this frame time (1000 / targetFPS)
|
|
119
|
+
*/
|
|
120
|
+
public targetFrameTime: number = 0;
|
|
121
|
+
|
|
113
122
|
/**
|
|
114
123
|
* Renderer Event Bus for the Stage to emit events onto
|
|
115
124
|
*
|
|
@@ -130,16 +139,21 @@ export class Stage {
|
|
|
130
139
|
private numQuadsRendered = 0;
|
|
131
140
|
private renderRequested = false;
|
|
132
141
|
private frameEventQueue: [name: string, payload: unknown][] = [];
|
|
133
|
-
private fontResolveMap: Record<string, CanvasTextRenderer | SdfTextRenderer> =
|
|
134
|
-
{};
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
// Font resolve optimisation flags
|
|
144
|
+
private hasOnlyOneFontEngine: boolean;
|
|
145
|
+
private hasOnlyCanvasFontEngine: boolean;
|
|
146
|
+
private hasCanvasEngine: boolean;
|
|
147
|
+
private singleFontEngine: TextRenderer | null = null;
|
|
148
|
+
private singleFontHandler: FontHandler | null = null;
|
|
149
|
+
|
|
150
|
+
// Debug data
|
|
137
151
|
contextSpy: ContextSpy | null = null;
|
|
138
152
|
|
|
139
153
|
/**
|
|
140
154
|
* Stage constructor
|
|
141
155
|
*/
|
|
142
|
-
constructor(
|
|
156
|
+
constructor(public options: StageOptions) {
|
|
143
157
|
const {
|
|
144
158
|
canvas,
|
|
145
159
|
clearColor,
|
|
@@ -153,9 +167,21 @@ export class Stage {
|
|
|
153
167
|
renderEngine,
|
|
154
168
|
fontEngines,
|
|
155
169
|
createImageBitmapSupport,
|
|
170
|
+
platform,
|
|
156
171
|
} = options;
|
|
157
172
|
|
|
173
|
+
assertTruthy(
|
|
174
|
+
platform !== null,
|
|
175
|
+
'A CorePlatform is not provided in the options',
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
this.platform = platform;
|
|
179
|
+
|
|
158
180
|
this.eventBus = options.eventBus;
|
|
181
|
+
|
|
182
|
+
// Calculate target frame time from targetFPS option
|
|
183
|
+
this.targetFrameTime = options.targetFPS > 0 ? 1000 / options.targetFPS : 0;
|
|
184
|
+
|
|
159
185
|
this.txManager = new CoreTextureManager(this, {
|
|
160
186
|
numImageWorkers,
|
|
161
187
|
createImageBitmapSupport,
|
|
@@ -200,6 +226,7 @@ export class Stage {
|
|
|
200
226
|
this.shManager = new CoreShaderManager(this);
|
|
201
227
|
|
|
202
228
|
this.defShaderNode = this.renderer.getDefaultShaderNode();
|
|
229
|
+
this.calculateTextureCoord = this.renderer.getTextureCoords !== undefined;
|
|
203
230
|
|
|
204
231
|
const renderMode = this.renderer.mode || 'webgl';
|
|
205
232
|
|
|
@@ -210,34 +237,86 @@ export class Stage {
|
|
|
210
237
|
this.txManager.renderer = this.renderer;
|
|
211
238
|
|
|
212
239
|
// Create text renderers
|
|
213
|
-
this.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
240
|
+
this.hasOnlyOneFontEngine = fontEngines.length === 1;
|
|
241
|
+
this.hasOnlyCanvasFontEngine =
|
|
242
|
+
fontEngines.length === 1 && fontEngines[0]!.type === 'canvas';
|
|
243
|
+
this.hasCanvasEngine = false;
|
|
244
|
+
this.singleFontEngine = this.hasOnlyOneFontEngine
|
|
245
|
+
? (fontEngines[0] as TextRenderer)
|
|
246
|
+
: null;
|
|
247
|
+
this.singleFontHandler = this.hasOnlyOneFontEngine
|
|
248
|
+
? (fontEngines[0]?.font as FontHandler)
|
|
249
|
+
: null;
|
|
250
|
+
|
|
251
|
+
if (this.singleFontEngine === null) {
|
|
252
|
+
// Multiple font engines case
|
|
253
|
+
// Filter out incompatible engines first
|
|
254
|
+
const compatibleEngines = fontEngines.filter(
|
|
255
|
+
(fontEngine: TextRenderer) => {
|
|
256
|
+
const type = fontEngine.type;
|
|
257
|
+
|
|
258
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
259
|
+
console.warn(
|
|
260
|
+
'MsdfTextRenderer is not compatible with Canvas renderer. Skipping...',
|
|
261
|
+
);
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
if (type === 'canvas') {
|
|
266
|
+
this.hasCanvasEngine = true;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return true;
|
|
270
|
+
},
|
|
271
|
+
);
|
|
217
272
|
|
|
218
|
-
|
|
273
|
+
// Sort engines: SDF first, Canvas last, others in between
|
|
274
|
+
const sortedEngines = compatibleEngines.sort(
|
|
275
|
+
(a: TextRenderer, b: TextRenderer) => {
|
|
276
|
+
if (a.type === 'sdf') return -1;
|
|
277
|
+
if (b.type === 'sdf') return 1;
|
|
278
|
+
if (a.type === 'canvas') return 1;
|
|
279
|
+
if (b.type === 'canvas') return -1;
|
|
280
|
+
return 0;
|
|
281
|
+
},
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
// Initialize engines in sorted order
|
|
285
|
+
sortedEngines.forEach((fontEngine: TextRenderer) => {
|
|
286
|
+
const type = fontEngine.type;
|
|
287
|
+
|
|
288
|
+
// Add to map for type-based access
|
|
289
|
+
this.textRenderers[type] = fontEngine;
|
|
290
|
+
this.textRenderers[type].init(this);
|
|
291
|
+
|
|
292
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
293
|
+
});
|
|
294
|
+
} else {
|
|
295
|
+
// Single font engine case - initialize it directly
|
|
296
|
+
const fontEngine = this.singleFontEngine;
|
|
297
|
+
const type = fontEngine.type;
|
|
298
|
+
|
|
299
|
+
// Check compatibility
|
|
300
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
219
301
|
console.warn(
|
|
220
|
-
'
|
|
302
|
+
'MsdfTextRenderer is not compatible with Canvas renderer. Skipping...',
|
|
221
303
|
);
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
if (fontEngineInstance instanceof TextRenderer) {
|
|
226
|
-
if (className === 'canvas') {
|
|
227
|
-
this.textRenderers['canvas'] =
|
|
228
|
-
fontEngineInstance as CanvasTextRenderer;
|
|
229
|
-
} else if (className === 'sdf') {
|
|
230
|
-
this.textRenderers['sdf'] = fontEngineInstance as SdfTextRenderer;
|
|
304
|
+
} else {
|
|
305
|
+
if (type === 'canvas') {
|
|
306
|
+
this.hasCanvasEngine = true;
|
|
231
307
|
}
|
|
308
|
+
|
|
309
|
+
// Add to map for type-based access
|
|
310
|
+
this.textRenderers[type] = fontEngine;
|
|
311
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
312
|
+
this.textRenderers[type].init(this);
|
|
232
313
|
}
|
|
233
|
-
}
|
|
314
|
+
}
|
|
234
315
|
|
|
235
316
|
if (Object.keys(this.textRenderers).length === 0) {
|
|
236
317
|
console.warn('No text renderers available. Your text will not render.');
|
|
237
318
|
}
|
|
238
319
|
|
|
239
|
-
this.fontManager = new TrFontManager(this.textRenderers);
|
|
240
|
-
|
|
241
320
|
// create root node
|
|
242
321
|
const rootNode = new CoreNode(this, {
|
|
243
322
|
x: 0,
|
|
@@ -275,15 +354,14 @@ export class Stage {
|
|
|
275
354
|
rtt: false,
|
|
276
355
|
src: null,
|
|
277
356
|
scale: 1,
|
|
278
|
-
preventCleanup: false,
|
|
279
357
|
strictBounds: this.strictBounds,
|
|
280
358
|
});
|
|
281
359
|
|
|
282
360
|
this.root = rootNode;
|
|
283
361
|
|
|
284
362
|
// execute platform start loop
|
|
285
|
-
if (autoStart) {
|
|
286
|
-
startLoop(this);
|
|
363
|
+
if (autoStart === true) {
|
|
364
|
+
this.platform.startLoop(this);
|
|
287
365
|
}
|
|
288
366
|
}
|
|
289
367
|
|
|
@@ -293,8 +371,22 @@ export class Stage {
|
|
|
293
371
|
this.renderRequested = true;
|
|
294
372
|
}
|
|
295
373
|
|
|
374
|
+
/**
|
|
375
|
+
* Update the target frame time based on the current targetFPS setting
|
|
376
|
+
*
|
|
377
|
+
* @remarks
|
|
378
|
+
* This should be called whenever the targetFPS option is changed
|
|
379
|
+
* to ensure targetFrameTime stays in sync.
|
|
380
|
+
* targetFPS of 0 means no throttling (targetFrameTime = 0)
|
|
381
|
+
* targetFPS > 0 means throttle to 1000/targetFPS milliseconds
|
|
382
|
+
*/
|
|
383
|
+
updateTargetFrameTime() {
|
|
384
|
+
this.targetFrameTime =
|
|
385
|
+
this.options.targetFPS > 0 ? 1000 / this.options.targetFPS : 0;
|
|
386
|
+
}
|
|
387
|
+
|
|
296
388
|
updateFrameTime() {
|
|
297
|
-
const newFrameTime = getTimeStamp();
|
|
389
|
+
const newFrameTime = this.platform!.getTimeStamp();
|
|
298
390
|
this.lastFrameTime = this.currentFrameTime;
|
|
299
391
|
this.currentFrameTime = newFrameTime;
|
|
300
392
|
this.deltaTime = !this.lastFrameTime
|
|
@@ -315,7 +407,6 @@ export class Stage {
|
|
|
315
407
|
* Create default PixelTexture
|
|
316
408
|
*/
|
|
317
409
|
createDefaultTexture() {
|
|
318
|
-
console.log('Creating default texture');
|
|
319
410
|
(this.defaultTexture as ColorTexture) = this.txManager.createTexture(
|
|
320
411
|
'ColorTexture',
|
|
321
412
|
{
|
|
@@ -365,27 +456,32 @@ export class Stage {
|
|
|
365
456
|
* Start a new frame draw
|
|
366
457
|
*/
|
|
367
458
|
drawFrame() {
|
|
368
|
-
const { renderer, renderRequested } = this;
|
|
369
|
-
|
|
459
|
+
const { renderer, renderRequested, root } = this;
|
|
460
|
+
const txMemManager = this.txMemManager;
|
|
370
461
|
|
|
371
462
|
// Update tree if needed
|
|
372
|
-
if (
|
|
373
|
-
|
|
463
|
+
if (root.updateType !== 0) {
|
|
464
|
+
root.update(this.deltaTime, root.clippingRect);
|
|
374
465
|
}
|
|
375
466
|
|
|
376
|
-
// Process some textures
|
|
377
|
-
|
|
467
|
+
// Process some textures asynchronously but don't block the frame
|
|
468
|
+
// Use a background task to prevent frame drops
|
|
469
|
+
this.txManager
|
|
470
|
+
.processSome(this.options.textureProcessingTimeLimit)
|
|
471
|
+
.catch((err) => {
|
|
472
|
+
console.error('Error processing textures:', err);
|
|
473
|
+
});
|
|
378
474
|
|
|
379
475
|
// Reset render operations and clear the canvas
|
|
380
476
|
renderer.reset();
|
|
381
477
|
|
|
382
478
|
// Check if we need to cleanup textures
|
|
383
|
-
if (
|
|
384
|
-
|
|
479
|
+
if (txMemManager.criticalCleanupRequested === true) {
|
|
480
|
+
txMemManager.cleanup(false);
|
|
385
481
|
|
|
386
|
-
if (
|
|
482
|
+
if (txMemManager.criticalCleanupRequested === true) {
|
|
387
483
|
// If we still need to cleanup, request another but aggressive cleanup
|
|
388
|
-
|
|
484
|
+
txMemManager.cleanup(true);
|
|
389
485
|
}
|
|
390
486
|
}
|
|
391
487
|
|
|
@@ -399,13 +495,13 @@ export class Stage {
|
|
|
399
495
|
this.addQuads(this.root);
|
|
400
496
|
|
|
401
497
|
// Perform render pass
|
|
402
|
-
renderer
|
|
498
|
+
renderer.render();
|
|
403
499
|
|
|
404
500
|
this.calculateFps();
|
|
405
501
|
this.calculateQuads();
|
|
406
502
|
|
|
407
503
|
// Reset renderRequested flag if it was set
|
|
408
|
-
if (renderRequested) {
|
|
504
|
+
if (renderRequested === true) {
|
|
409
505
|
this.renderRequested = false;
|
|
410
506
|
}
|
|
411
507
|
}
|
|
@@ -522,72 +618,52 @@ export class Stage {
|
|
|
522
618
|
*/
|
|
523
619
|
resolveTextRenderer(
|
|
524
620
|
trProps: TrProps,
|
|
525
|
-
textRendererOverride: keyof
|
|
621
|
+
textRendererOverride: keyof TextRenderers | null = null,
|
|
526
622
|
): TextRenderer | null {
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
623
|
+
// If we have an overide, return it
|
|
624
|
+
if (textRendererOverride !== null) {
|
|
625
|
+
const overrideKey = String(textRendererOverride);
|
|
626
|
+
if (this.textRenderers[overrideKey] === undefined) {
|
|
627
|
+
console.warn(`Text renderer override '${overrideKey}' not found.`);
|
|
628
|
+
return null;
|
|
629
|
+
}
|
|
530
630
|
|
|
531
|
-
|
|
532
|
-
if (this.fontResolveMap[fontCacheString] !== undefined) {
|
|
533
|
-
return this.fontResolveMap[fontCacheString] as unknown as TextRenderer;
|
|
631
|
+
return this.textRenderers[overrideKey];
|
|
534
632
|
}
|
|
535
633
|
|
|
536
|
-
//
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
if (rendererId) {
|
|
542
|
-
const possibleRenderer = this.textRenderers[rendererId];
|
|
543
|
-
if (!possibleRenderer) {
|
|
544
|
-
console.warn(`Text renderer override '${rendererId}' not found.`);
|
|
545
|
-
rendererId = null;
|
|
546
|
-
overrideFallback = true;
|
|
547
|
-
} else if (!possibleRenderer.canRenderFont(trProps)) {
|
|
548
|
-
console.warn(
|
|
549
|
-
`Cannot use override text renderer '${rendererId}' for font`,
|
|
550
|
-
trProps,
|
|
551
|
-
);
|
|
552
|
-
rendererId = null;
|
|
553
|
-
overrideFallback = true;
|
|
634
|
+
// If we have only one font engine early return it
|
|
635
|
+
if (this.singleFontEngine !== null) {
|
|
636
|
+
// If we have only one font engine and its the canvas engine, we can just return it
|
|
637
|
+
if (this.hasOnlyCanvasFontEngine === true) {
|
|
638
|
+
return this.singleFontEngine;
|
|
554
639
|
}
|
|
555
|
-
}
|
|
556
640
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
if (tr.canRenderFont(trProps)) {
|
|
561
|
-
rendererId = trId as keyof TextRendererMap;
|
|
562
|
-
break;
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
if (!rendererId && this.textRenderers.canvas !== undefined) {
|
|
566
|
-
// If no renderer can be found, use the canvas renderer
|
|
567
|
-
rendererId = 'canvas';
|
|
641
|
+
// If we have only one font engine and it can render the font, return it
|
|
642
|
+
if (this.singleFontHandler?.canRenderFont(trProps) === true) {
|
|
643
|
+
return this.singleFontEngine;
|
|
568
644
|
}
|
|
569
|
-
}
|
|
570
645
|
|
|
571
|
-
|
|
572
|
-
console.warn(`
|
|
573
|
-
}
|
|
646
|
+
// If we have only one font engine and it cannot render the font, return null
|
|
647
|
+
console.warn(`Text renderer cannot render font`, trProps);
|
|
574
648
|
|
|
575
|
-
if (!rendererId) {
|
|
576
|
-
// silently fail if no renderer can be found, the error is already created
|
|
577
|
-
// at the constructor level
|
|
578
649
|
return null;
|
|
579
650
|
}
|
|
580
651
|
|
|
581
|
-
//
|
|
582
|
-
const resolvedTextRenderer = this.textRenderers[rendererId];
|
|
583
|
-
assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined');
|
|
652
|
+
// Multi font handling - If we have multiple font engines, we need to resolve the best one
|
|
584
653
|
|
|
585
|
-
//
|
|
586
|
-
this.
|
|
654
|
+
// First check SDF
|
|
655
|
+
if (this.fontHandlers['sdf']?.canRenderFont(trProps) === true) {
|
|
656
|
+
return this.textRenderers.sdf || null;
|
|
657
|
+
}
|
|
587
658
|
|
|
588
|
-
//
|
|
589
|
-
|
|
590
|
-
|
|
659
|
+
// If we have a canvas engine, we can return it (it can render all fonts)
|
|
660
|
+
if (this.hasCanvasEngine === true) {
|
|
661
|
+
return this.textRenderers.canvas || null;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
// If we have no font engines, return null
|
|
665
|
+
console.warn('No text renderers available. Your text will not render.');
|
|
666
|
+
return null;
|
|
591
667
|
}
|
|
592
668
|
|
|
593
669
|
createNode(props: Partial<CoreNodeProps>) {
|
|
@@ -596,34 +672,30 @@ export class Stage {
|
|
|
596
672
|
}
|
|
597
673
|
|
|
598
674
|
createTextNode(props: Partial<CoreTextNodeProps>) {
|
|
599
|
-
const fontSize = props.fontSize
|
|
600
|
-
const resolvedProps = {
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
textRendererOverride: props.textRendererOverride ?? null,
|
|
675
|
+
const fontSize = props.fontSize || 16;
|
|
676
|
+
const resolvedProps = Object.assign(this.resolveNodeDefaults(props), {
|
|
677
|
+
text: props.text || '',
|
|
678
|
+
textRendererOverride: props.textRendererOverride || null,
|
|
604
679
|
fontSize,
|
|
605
|
-
fontFamily: props.fontFamily
|
|
606
|
-
fontStyle: props.fontStyle
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
debug: props.debug ?? {},
|
|
621
|
-
shaderProps: null,
|
|
622
|
-
};
|
|
680
|
+
fontFamily: props.fontFamily || 'sans-serif',
|
|
681
|
+
fontStyle: props.fontStyle || 'normal',
|
|
682
|
+
textAlign: props.textAlign || 'left',
|
|
683
|
+
offsetY: props.offsetY || 0,
|
|
684
|
+
letterSpacing: props.letterSpacing || 0,
|
|
685
|
+
lineHeight: props.lineHeight || 0,
|
|
686
|
+
maxLines: props.maxLines || 0,
|
|
687
|
+
textBaseline: props.textBaseline || 'alphabetic',
|
|
688
|
+
verticalAlign: props.verticalAlign || 'middle',
|
|
689
|
+
overflowSuffix: props.overflowSuffix || '...',
|
|
690
|
+
wordBreak: props.wordBreak || 'normal',
|
|
691
|
+
maxWidth: props.maxWidth || 0,
|
|
692
|
+
maxHeight: props.maxHeight || 0,
|
|
693
|
+
forceLoad: props.forceLoad || false,
|
|
694
|
+
});
|
|
623
695
|
|
|
624
696
|
const resolvedTextRenderer = this.resolveTextRenderer(
|
|
625
697
|
resolvedProps,
|
|
626
|
-
|
|
698
|
+
resolvedProps.textRendererOverride as keyof TextRenderers | null,
|
|
627
699
|
);
|
|
628
700
|
|
|
629
701
|
if (!resolvedTextRenderer) {
|
|
@@ -643,6 +715,57 @@ export class Stage {
|
|
|
643
715
|
this.root.setUpdateType(UpdateType.RenderBounds);
|
|
644
716
|
}
|
|
645
717
|
|
|
718
|
+
/**
|
|
719
|
+
* Update the viewport bounds
|
|
720
|
+
*/
|
|
721
|
+
updateViewportBounds() {
|
|
722
|
+
const { appWidth, appHeight } = this.options;
|
|
723
|
+
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
724
|
+
this.preloadBound = createPreloadBounds(
|
|
725
|
+
this.strictBound,
|
|
726
|
+
this.boundsMargin,
|
|
727
|
+
);
|
|
728
|
+
this.root.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
|
|
729
|
+
this.root.childUpdateType |= UpdateType.RenderBounds;
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
/** Find all nodes at a given point
|
|
733
|
+
* @param data
|
|
734
|
+
*/
|
|
735
|
+
findNodesAtPoint(data: Point): CoreNode[] {
|
|
736
|
+
const x = data.x / this.options.deviceLogicalPixelRatio;
|
|
737
|
+
const y = data.y / this.options.deviceLogicalPixelRatio;
|
|
738
|
+
const nodes: CoreNode[] = [];
|
|
739
|
+
for (const node of this.interactiveNodes) {
|
|
740
|
+
if (node.isRenderable === false) {
|
|
741
|
+
continue;
|
|
742
|
+
}
|
|
743
|
+
if (pointInBound(x, y, node.renderBound!) === true) {
|
|
744
|
+
nodes.push(node);
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
return nodes;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
/**
|
|
751
|
+
* Find the top node at a given point
|
|
752
|
+
* @param data
|
|
753
|
+
* @returns
|
|
754
|
+
*/
|
|
755
|
+
getNodeFromPosition(data: Point): CoreNode | null {
|
|
756
|
+
const nodes: CoreNode[] = this.findNodesAtPoint(data);
|
|
757
|
+
if (nodes.length === 0) {
|
|
758
|
+
return null;
|
|
759
|
+
}
|
|
760
|
+
let topNode = nodes[0] as CoreNode;
|
|
761
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
762
|
+
if (nodes[i]!.zIndex > topNode.zIndex) {
|
|
763
|
+
topNode = nodes[i]!;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
return topNode || null;
|
|
767
|
+
}
|
|
768
|
+
|
|
646
769
|
/**
|
|
647
770
|
* Resolves the default property values for a Node
|
|
648
771
|
*
|
|
@@ -655,19 +778,31 @@ export class Stage {
|
|
|
655
778
|
* @returns
|
|
656
779
|
*/
|
|
657
780
|
protected resolveNodeDefaults(props: Partial<CoreNodeProps>): CoreNodeProps {
|
|
781
|
+
const {
|
|
782
|
+
colorTop: top,
|
|
783
|
+
colorBottom: bottom,
|
|
784
|
+
colorLeft: left,
|
|
785
|
+
colorRight: right,
|
|
786
|
+
} = props;
|
|
787
|
+
|
|
658
788
|
const color = props.color ?? 0xffffffff;
|
|
659
|
-
const
|
|
660
|
-
const
|
|
661
|
-
|
|
662
|
-
const
|
|
663
|
-
|
|
664
|
-
const
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
789
|
+
const colorTop = top ?? color;
|
|
790
|
+
const colorBottom = bottom ?? color;
|
|
791
|
+
const colorLeft = left ?? color;
|
|
792
|
+
const colorRight = right ?? color;
|
|
793
|
+
|
|
794
|
+
const colorTl = props.colorTl ?? top ?? left ?? color;
|
|
795
|
+
const colorTr = props.colorTr ?? top ?? right ?? color;
|
|
796
|
+
const colorBl = props.colorBl ?? bottom ?? left ?? color;
|
|
797
|
+
const colorBr = props.colorBr ?? bottom ?? right ?? color;
|
|
798
|
+
|
|
799
|
+
const scale = props.scale ?? null;
|
|
800
|
+
const mount = props.mount ?? 0;
|
|
801
|
+
const pivot = props.pivot ?? 0.5;
|
|
802
|
+
|
|
803
|
+
const data = this.options.inspector
|
|
804
|
+
? santizeCustomDataMap(props.data ?? {})
|
|
805
|
+
: {};
|
|
671
806
|
|
|
672
807
|
return {
|
|
673
808
|
x: props.x ?? 0,
|
|
@@ -679,41 +814,39 @@ export class Stage {
|
|
|
679
814
|
boundsMargin: props.boundsMargin ?? null,
|
|
680
815
|
clipping: props.clipping ?? false,
|
|
681
816
|
color,
|
|
682
|
-
colorTop
|
|
683
|
-
colorBottom
|
|
684
|
-
colorLeft
|
|
685
|
-
colorRight
|
|
686
|
-
colorBl,
|
|
687
|
-
colorBr,
|
|
817
|
+
colorTop,
|
|
818
|
+
colorBottom,
|
|
819
|
+
colorLeft,
|
|
820
|
+
colorRight,
|
|
688
821
|
colorTl,
|
|
689
822
|
colorTr,
|
|
823
|
+
colorBl,
|
|
824
|
+
colorBr,
|
|
690
825
|
zIndex: props.zIndex ?? 0,
|
|
691
826
|
zIndexLocked: props.zIndexLocked ?? 0,
|
|
692
827
|
parent: props.parent ?? null,
|
|
693
828
|
texture: props.texture ?? null,
|
|
694
829
|
textureOptions: props.textureOptions ?? {},
|
|
695
830
|
shader: props.shader ?? this.defShaderNode,
|
|
696
|
-
// Since setting the `src` will trigger a texture load, we need to set it after
|
|
697
|
-
// we set the texture. Otherwise, problems happen.
|
|
698
831
|
src: props.src ?? null,
|
|
699
832
|
srcHeight: props.srcHeight,
|
|
700
833
|
srcWidth: props.srcWidth,
|
|
701
834
|
srcX: props.srcX,
|
|
702
835
|
srcY: props.srcY,
|
|
703
|
-
scale
|
|
704
|
-
scaleX: props.scaleX ??
|
|
705
|
-
scaleY: props.scaleY ??
|
|
706
|
-
mount
|
|
707
|
-
mountX: props.mountX ??
|
|
708
|
-
mountY: props.mountY ??
|
|
709
|
-
pivot
|
|
710
|
-
pivotX: props.pivotX ??
|
|
711
|
-
pivotY: props.pivotY ??
|
|
836
|
+
scale,
|
|
837
|
+
scaleX: props.scaleX ?? scale ?? 1,
|
|
838
|
+
scaleY: props.scaleY ?? scale ?? 1,
|
|
839
|
+
mount,
|
|
840
|
+
mountX: props.mountX ?? mount,
|
|
841
|
+
mountY: props.mountY ?? mount,
|
|
842
|
+
pivot,
|
|
843
|
+
pivotX: props.pivotX ?? pivot,
|
|
844
|
+
pivotY: props.pivotY ?? pivot,
|
|
712
845
|
rotation: props.rotation ?? 0,
|
|
713
846
|
rtt: props.rtt ?? false,
|
|
714
|
-
data
|
|
715
|
-
preventCleanup: props.preventCleanup ?? false,
|
|
847
|
+
data,
|
|
716
848
|
imageType: props.imageType,
|
|
849
|
+
interactive: props.interactive ?? false,
|
|
717
850
|
strictBounds: props.strictBounds ?? this.strictBounds,
|
|
718
851
|
};
|
|
719
852
|
}
|
|
@@ -737,4 +870,37 @@ export class Stage {
|
|
|
737
870
|
get clearColor() {
|
|
738
871
|
return this.clrColor;
|
|
739
872
|
}
|
|
873
|
+
|
|
874
|
+
/**
|
|
875
|
+
* Load a font using a specific text renderer type
|
|
876
|
+
*
|
|
877
|
+
* @remarks
|
|
878
|
+
* This method allows consumers to explicitly load fonts for a specific
|
|
879
|
+
* text renderer type (e.g., 'canvas', 'sdf'). Consumers must specify
|
|
880
|
+
* the renderer type to ensure fonts are loaded with the correct pipeline.
|
|
881
|
+
*
|
|
882
|
+
* For Canvas fonts, provide fontUrl (e.g., .ttf, .woff, .woff2)
|
|
883
|
+
* For SDF fonts, provide atlasUrl (image) and atlasDataUrl (JSON glyph data)
|
|
884
|
+
*
|
|
885
|
+
* @param rendererType - The type of text renderer ('canvas', 'sdf', etc.)
|
|
886
|
+
* @param options - Font loading options specific to the renderer type
|
|
887
|
+
* @returns Promise that resolves when the font is loaded
|
|
888
|
+
*/
|
|
889
|
+
async loadFont(
|
|
890
|
+
rendererType: TextRenderers,
|
|
891
|
+
options: FontLoadOptions,
|
|
892
|
+
): Promise<void> {
|
|
893
|
+
const rendererTypeKey = String(rendererType);
|
|
894
|
+
const fontHandler = this.fontHandlers[rendererTypeKey];
|
|
895
|
+
|
|
896
|
+
if (!fontHandler) {
|
|
897
|
+
throw new Error(
|
|
898
|
+
`Font handler for renderer type '${rendererTypeKey}' not found. Available types: ${Object.keys(
|
|
899
|
+
this.fontHandlers,
|
|
900
|
+
).join(', ')}`,
|
|
901
|
+
);
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
return fontHandler.loadFont(this, options);
|
|
905
|
+
}
|
|
740
906
|
}
|