@lightningjs/renderer 3.0.0-beta9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +230 -147
- 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 +5 -6
- package/dist/exports/index.js +3 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/platform.d.ts +7 -0
- package/dist/exports/platform.js +27 -0
- package/dist/exports/platform.js.map +1 -0
- 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/common/CommonTypes.d.ts +15 -3
- package/dist/src/core/AutosizeManager.d.ts +29 -0
- package/dist/src/core/AutosizeManager.js +169 -0
- package/dist/src/core/AutosizeManager.js.map +1 -0
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +196 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +106 -58
- package/dist/src/core/CoreNode.js +524 -282
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +73 -88
- package/dist/src/core/CoreTextNode.js +375 -236
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +19 -17
- package/dist/src/core/CoreTextureManager.js +52 -120
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +63 -9
- package/dist/src/core/Stage.js +233 -133
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +2 -4
- package/dist/src/core/TextureMemoryManager.js +80 -113
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/Animation.d.ts +21 -0
- package/dist/src/core/animations/Animation.js +194 -0
- package/dist/src/core/animations/Animation.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +3 -3
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +4 -2
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/animations/Playback.d.ts +64 -0
- package/dist/src/core/animations/Playback.js +169 -0
- package/dist/src/core/animations/Playback.js.map +1 -0
- package/dist/src/core/animations/Transition.d.ts +27 -0
- package/dist/src/core/animations/Transition.js +52 -0
- package/dist/src/core/animations/Transition.js.map +1 -0
- package/dist/src/core/animations/utils.d.ts +2 -0
- package/dist/src/core/animations/utils.js +136 -0
- package/dist/src/core/animations/utils.js.map +1 -0
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +30 -11
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +22 -1
- package/dist/src/core/lib/WebGlContextWrapper.js +49 -3
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +4 -0
- package/dist/src/core/lib/collectionUtils.js +72 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- 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/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +6 -6
- package/dist/src/core/lib/utils.js +21 -65
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +81 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/platforms/GlContextWrapper.d.ts +136 -0
- package/{src/core/text-rendering/TextRenderingUtils.ts → dist/src/core/platforms/GlContextWrapper.js} +32 -36
- package/dist/src/core/platforms/GlContextWrapper.js.map +1 -0
- package/dist/src/core/platforms/Platform.d.ts +78 -12
- package/dist/src/core/platforms/Platform.js +18 -0
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebGlContextWrapper.d.ts +776 -0
- package/dist/src/core/platforms/web/WebGlContextWrapper.js +1208 -0
- package/dist/src/core/platforms/web/WebGlContextWrapper.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +17 -2
- package/dist/src/core/platforms/web/WebPlatform.js +158 -13
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatformChrome50.d.ts +19 -0
- package/dist/src/core/platforms/web/WebPlatformChrome50.js +54 -0
- package/dist/src/core/platforms/web/WebPlatformChrome50.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatformLegacy.d.ts +20 -0
- package/dist/src/core/platforms/web/WebPlatformLegacy.js +105 -0
- package/dist/src/core/platforms/web/WebPlatformLegacy.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatformNext.d.ts +21 -0
- package/dist/src/core/platforms/web/WebPlatformNext.js +52 -0
- package/dist/src/core/platforms/web/WebPlatformNext.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorker.d.ts +21 -0
- package/dist/src/core/platforms/web/lib/ImageWorker.js +136 -0
- package/dist/src/core/platforms/web/lib/ImageWorker.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerDefault.d.ts +6 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js +92 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.d.ts +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js +63 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.d.ts +7 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js +75 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js.map +1 -0
- package/dist/src/core/platforms/web/lib/createImageBitmap.d.ts +1 -0
- package/dist/src/core/platforms/web/lib/createImageBitmap.js +27 -0
- package/dist/src/core/platforms/web/lib/createImageBitmap.js.map +1 -0
- package/dist/src/core/platforms/web/lib/textureCompression.d.ts +26 -0
- package/dist/src/core/platforms/web/lib/textureCompression.js +301 -0
- package/dist/src/core/platforms/web/lib/textureCompression.js.map +1 -0
- package/dist/src/core/platforms/web/lib/textureSvg.d.ts +7 -0
- package/dist/src/core/platforms/web/lib/textureSvg.js +51 -0
- package/dist/src/core/platforms/web/lib/textureSvg.js.map +1 -0
- package/dist/src/core/platforms/web/lib/utils.d.ts +5 -0
- package/dist/src/core/platforms/web/lib/utils.js +86 -0
- package/dist/src/core/platforms/web/lib/utils.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +4 -40
- package/dist/src/core/renderers/CoreRenderer.js +3 -4
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts → dist/src/core/renderers/CoreShader.js} +28 -32
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
- package/dist/src/core/renderers/CoreShaderNode.js +19 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +33 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +5 -6
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +67 -91
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +5 -4
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
- 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/canvas/shaders/UnsupportedShader.d.ts +10 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts → dist/src/core/renderers/canvas/shaders/UnsupportedShader.js} +43 -40
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +98 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +4 -2
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +15 -2
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +19 -9
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +101 -49
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -23
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +122 -133
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +4 -6
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +3 -3
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +7 -7
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +56 -37
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -4
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +3 -3
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +38 -37
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +134 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +143 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +64 -25
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +7 -5
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +12 -10
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +3 -3
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +41 -11
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +46 -9
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +6 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +4 -2
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -18
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +30 -10
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/webgl/Border.js +138 -84
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +46 -47
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
- package/dist/src/core/shaders/webgl/HolePunch.js +34 -34
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +60 -36
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +60 -37
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +74 -72
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +172 -113
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +191 -132
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +57 -55
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +56 -66
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
- package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
- package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
- package/dist/src/core/shaders/webgl/Shadow.js +89 -83
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFont.d.ts +14 -0
- package/dist/src/core/text-rendering/CanvasFont.js +111 -0
- package/dist/src/core/text-rendering/CanvasFont.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/CoreFont.d.ts +33 -0
- package/dist/src/core/text-rendering/CoreFont.js +48 -0
- package/dist/src/core/text-rendering/CoreFont.js.map +1 -0
- package/dist/src/core/text-rendering/FontManager.d.ts +11 -0
- package/dist/src/core/text-rendering/FontManager.js +42 -0
- package/dist/src/core/text-rendering/FontManager.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFont.d.ts +29 -0
- package/dist/src/core/text-rendering/SdfFont.js +142 -0
- package/dist/src/core/text-rendering/SdfFont.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +381 -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 +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/TextRenderer.js} +20 -38
- 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 +30 -0
- package/dist/src/core/text-rendering/Utils.js +84 -0
- package/dist/src/core/text-rendering/Utils.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/CanvasTextRenderer.js +0 -5
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -7
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +2 -50
- 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 +87 -46
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +8 -66
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -14
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -3
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -4
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +33 -14
- package/dist/src/core/textures/ImageTexture.js +46 -125
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -8
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -12
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +22 -40
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +74 -15
- package/dist/src/core/textures/Texture.js +131 -19
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +29 -0
- package/dist/src/main-api/DynamicShaderController.js +58 -0
- package/dist/src/main-api/DynamicShaderController.js.map +1 -0
- package/dist/src/main-api/Inspector.d.ts +129 -1
- package/dist/src/main-api/Inspector.js +462 -23
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +223 -41
- package/dist/src/main-api/Renderer.js +107 -62
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +31 -0
- package/dist/src/main-api/ShaderController.js +37 -0
- package/dist/src/main-api/ShaderController.js.map +1 -0
- package/dist/src/utils.d.ts +0 -2
- package/dist/src/utils.js +0 -36
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +28 -28
- package/exports/canvas.ts +45 -45
- package/exports/index.ts +90 -90
- package/exports/inspector.ts +24 -24
- package/exports/platform.ts +31 -0
- package/exports/utils.ts +50 -50
- package/exports/webgl-shaders.ts +28 -28
- package/exports/webgl.ts +52 -50
- package/package.json +16 -15
- package/src/common/CommonTypes.ts +163 -146
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/Autosizer.ts +224 -0
- package/src/core/CoreNode.test.ts +365 -202
- package/src/core/CoreNode.ts +2785 -2489
- package/src/core/CoreShaderManager.ts +188 -188
- package/src/core/CoreTextNode.test.ts +311 -0
- package/src/core/CoreTextNode.ts +598 -451
- package/src/core/CoreTextureManager.ts +484 -548
- package/src/core/Stage.ts +927 -800
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +418 -462
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +290 -291
- package/src/core/animations/CoreAnimationController.ts +169 -166
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +71 -71
- package/src/core/lib/collectionUtils.ts +83 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
- package/src/core/lib/utils.ts +337 -390
- package/src/core/platforms/GlContextWrapper.ts +291 -0
- package/src/core/platforms/Platform.ts +176 -77
- package/src/core/{lib → platforms/web}/WebGlContextWrapper.ts +1547 -1368
- package/src/core/platforms/web/WebPlatform.ts +306 -84
- package/src/core/platforms/web/WebPlatformChrome50.ts +63 -0
- package/src/core/platforms/web/WebPlatformLegacy.ts +150 -0
- package/src/core/platforms/web/WebPlatformNext.ts +57 -0
- package/src/core/platforms/web/lib/ImageWorker.ts +192 -0
- package/src/core/platforms/web/lib/ImageWorkerDefault.ts +117 -0
- package/src/core/platforms/web/lib/ImageWorkerLegacy.ts +87 -0
- package/src/core/platforms/web/lib/ImageWorkerNoOptions.ts +99 -0
- package/src/core/platforms/web/lib/createImageBitmap.ts +40 -0
- package/src/core/platforms/web/lib/textureCompression.ts +391 -0
- package/src/core/{lib → platforms/web/lib}/textureSvg.ts +66 -78
- package/src/core/platforms/web/lib/utils.ts +105 -0
- package/src/core/renderers/CoreContextTexture.ts +44 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +71 -110
- package/src/core/renderers/CoreShaderNode.ts +202 -175
- package/src/core/renderers/CoreShaderProgram.ts +23 -23
- package/src/core/renderers/canvas/CanvasRenderer.ts +258 -302
- package/src/core/renderers/canvas/CanvasShaderNode.ts +95 -96
- package/src/core/renderers/canvas/CanvasTexture.ts +160 -156
- package/src/core/renderers/webgl/SdfRenderOp.ts +106 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +89 -86
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +95 -50
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +350 -298
- package/src/core/renderers/webgl/WebGlRenderer.ts +726 -747
- package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -435
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +362 -341
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +151 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +283 -281
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/shaders/canvas/Border.ts +132 -78
- package/src/core/shaders/canvas/HolePunch.ts +56 -62
- package/src/core/shaders/canvas/LinearGradient.ts +73 -71
- package/src/core/shaders/canvas/RadialGradient.ts +96 -99
- package/src/core/shaders/canvas/Rounded.ts +55 -55
- package/src/core/shaders/canvas/RoundedWithBorder.ts +122 -74
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +136 -90
- package/src/core/shaders/canvas/RoundedWithShadow.ts +71 -70
- package/src/core/shaders/canvas/Shadow.ts +54 -52
- package/src/core/shaders/canvas/utils/render.ts +160 -151
- package/src/core/shaders/templates/BorderTemplate.ts +145 -115
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
- package/src/core/shaders/templates/RadialGradientTemplate.ts +83 -81
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
- package/src/core/shaders/utils.ts +46 -46
- package/src/core/shaders/webgl/Border.ts +169 -116
- package/src/core/shaders/webgl/Default.ts +88 -89
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
- package/src/core/shaders/webgl/HolePunch.ts +75 -75
- package/src/core/shaders/webgl/LinearGradient.ts +106 -82
- package/src/core/shaders/webgl/RadialGradient.ts +108 -85
- package/src/core/shaders/webgl/Rounded.ts +115 -117
- package/src/core/shaders/webgl/RoundedWithBorder.ts +210 -155
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -175
- package/src/core/shaders/webgl/RoundedWithShadow.ts +96 -98
- package/src/core/shaders/webgl/SdfShader.ts +122 -134
- package/src/core/shaders/webgl/Shadow.ts +121 -115
- package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
- package/src/core/text-rendering/SdfFontHandler.ts +584 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +403 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +444 -0
- package/src/core/text-rendering/Utils.ts +99 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
- package/src/core/textures/ColorTexture.ts +104 -102
- package/src/core/textures/ImageTexture.ts +292 -418
- package/src/core/textures/NoiseTexture.ts +106 -104
- package/src/core/textures/RenderTexture.ts +87 -85
- package/src/core/textures/SubTexture.ts +184 -205
- package/src/core/textures/Texture.ts +524 -381
- package/src/core/utils.ts +229 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/INode.ts +100 -100
- package/src/main-api/Inspector.ts +1278 -569
- package/src/main-api/Renderer.ts +1030 -818
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +220 -267
- package/COPYING +0 -1
- package/src/core/lib/ImageWorker.ts +0 -286
- package/src/core/lib/textureCompression.ts +0 -152
- package/src/core/lib/validateImageBitmap.ts +0 -87
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- 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 -514
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -863
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -793
- 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/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/layoutText.ts +0 -497
- 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/TextRenderer.ts +0 -567
package/dist/src/core/Stage.js
CHANGED
|
@@ -20,9 +20,8 @@ import { assertTruthy, setPremultiplyMode } from '../utils.js';
|
|
|
20
20
|
import { AnimationManager } from './animations/AnimationManager.js';
|
|
21
21
|
import { UpdateType, CoreNode, CoreNodeRenderState, } from './CoreNode.js';
|
|
22
22
|
import { CoreTextureManager } from './CoreTextureManager.js';
|
|
23
|
-
import { TrFontManager } from './text-rendering/TrFontManager.js';
|
|
24
23
|
import { CoreShaderManager } from './CoreShaderManager.js';
|
|
25
|
-
import {
|
|
24
|
+
import {} from './text-rendering/TextRenderer.js';
|
|
26
25
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
27
26
|
import { ContextSpy } from './lib/ContextSpy.js';
|
|
28
27
|
import { TextureMemoryManager, } from './TextureMemoryManager.js';
|
|
@@ -39,8 +38,8 @@ 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;
|
|
@@ -49,12 +48,20 @@ export class Stage {
|
|
|
49
48
|
defShaderNode = null;
|
|
50
49
|
strictBound;
|
|
51
50
|
preloadBound;
|
|
52
|
-
strictBounds;
|
|
53
51
|
defaultTexture = null;
|
|
54
52
|
pixelRatio;
|
|
55
53
|
bufferMemory = 2e6;
|
|
56
54
|
platform;
|
|
57
55
|
calculateTextureCoord;
|
|
56
|
+
/**
|
|
57
|
+
* Target frame time in milliseconds (calculated from targetFPS)
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* This is pre-calculated to avoid recalculating on every frame.
|
|
61
|
+
* - 0 means no throttling (use display refresh rate)
|
|
62
|
+
* - >0 means throttle to this frame time (1000 / targetFPS)
|
|
63
|
+
*/
|
|
64
|
+
targetFrameTime = 0;
|
|
58
65
|
/**
|
|
59
66
|
* Renderer Event Bus for the Stage to emit events onto
|
|
60
67
|
*
|
|
@@ -65,40 +72,46 @@ export class Stage {
|
|
|
65
72
|
*/
|
|
66
73
|
eventBus;
|
|
67
74
|
/// State
|
|
75
|
+
startTime = 0;
|
|
68
76
|
deltaTime = 0;
|
|
69
77
|
lastFrameTime = 0;
|
|
70
78
|
currentFrameTime = 0;
|
|
79
|
+
elapsedTime = 0;
|
|
80
|
+
timedNodes = [];
|
|
71
81
|
clrColor = 0x00000000;
|
|
72
82
|
fpsNumFrames = 0;
|
|
73
83
|
fpsElapsedTime = 0;
|
|
74
84
|
numQuadsRendered = 0;
|
|
75
85
|
renderRequested = false;
|
|
76
86
|
frameEventQueue = [];
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
// Font resolve optimisation flags
|
|
88
|
+
hasOnlyOneFontEngine;
|
|
89
|
+
hasOnlyCanvasFontEngine;
|
|
90
|
+
hasCanvasEngine;
|
|
91
|
+
singleFontEngine = null;
|
|
92
|
+
singleFontHandler = null;
|
|
93
|
+
// Debug data
|
|
79
94
|
contextSpy = null;
|
|
80
95
|
/**
|
|
81
96
|
* Stage constructor
|
|
82
97
|
*/
|
|
83
98
|
constructor(options) {
|
|
84
99
|
this.options = options;
|
|
85
|
-
const {
|
|
100
|
+
const { clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, platform, maxRetryCount, } = options;
|
|
86
101
|
assertTruthy(platform !== null, 'A CorePlatform is not provided in the options');
|
|
87
102
|
this.platform = platform;
|
|
103
|
+
this.startTime = platform.getTimeStamp();
|
|
88
104
|
this.eventBus = options.eventBus;
|
|
105
|
+
// Calculate target frame time from targetFPS option
|
|
106
|
+
this.targetFrameTime = options.targetFPS > 0 ? 1000 / options.targetFPS : 0;
|
|
89
107
|
this.txManager = new CoreTextureManager(this, {
|
|
90
108
|
numImageWorkers,
|
|
91
109
|
createImageBitmapSupport,
|
|
92
|
-
|
|
93
|
-
// Wait for the Texture Manager to initialize
|
|
94
|
-
// once it does, request a render
|
|
95
|
-
this.txManager.on('initialized', () => {
|
|
96
|
-
this.requestRender();
|
|
110
|
+
maxRetryCount,
|
|
97
111
|
});
|
|
98
112
|
this.txMemManager = new TextureMemoryManager(this, textureMemory);
|
|
99
113
|
this.animationManager = new AnimationManager();
|
|
100
114
|
this.contextSpy = enableContextSpy ? new ContextSpy() : null;
|
|
101
|
-
this.strictBounds = options.strictBounds;
|
|
102
115
|
let bm = [0, 0, 0, 0];
|
|
103
116
|
if (boundsMargin) {
|
|
104
117
|
bm = Array.isArray(boundsMargin)
|
|
@@ -112,12 +125,7 @@ export class Stage {
|
|
|
112
125
|
this.clrColor = clearColor;
|
|
113
126
|
this.pixelRatio =
|
|
114
127
|
options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio;
|
|
115
|
-
this.renderer = new renderEngine(
|
|
116
|
-
stage: this,
|
|
117
|
-
canvas,
|
|
118
|
-
contextSpy: this.contextSpy,
|
|
119
|
-
forceWebGL2,
|
|
120
|
-
});
|
|
128
|
+
this.renderer = new renderEngine(this);
|
|
121
129
|
this.shManager = new CoreShaderManager(this);
|
|
122
130
|
this.defShaderNode = this.renderer.getDefaultShaderNode();
|
|
123
131
|
this.calculateTextureCoord = this.renderer.getTextureCoords !== undefined;
|
|
@@ -127,34 +135,78 @@ export class Stage {
|
|
|
127
135
|
// Must do this after renderer is created
|
|
128
136
|
this.txManager.renderer = this.renderer;
|
|
129
137
|
// Create text renderers
|
|
130
|
-
this.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
138
|
+
this.hasOnlyOneFontEngine = fontEngines.length === 1;
|
|
139
|
+
this.hasOnlyCanvasFontEngine =
|
|
140
|
+
fontEngines.length === 1 && fontEngines[0].type === 'canvas';
|
|
141
|
+
this.hasCanvasEngine = false;
|
|
142
|
+
this.singleFontEngine = this.hasOnlyOneFontEngine
|
|
143
|
+
? fontEngines[0]
|
|
144
|
+
: null;
|
|
145
|
+
this.singleFontHandler = this.hasOnlyOneFontEngine
|
|
146
|
+
? fontEngines[0]?.font
|
|
147
|
+
: null;
|
|
148
|
+
if (this.singleFontEngine === null) {
|
|
149
|
+
// Multiple font engines case
|
|
150
|
+
// Filter out incompatible engines first
|
|
151
|
+
const compatibleEngines = fontEngines.filter((fontEngine) => {
|
|
152
|
+
const type = fontEngine.type;
|
|
153
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
154
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
155
|
+
return false;
|
|
142
156
|
}
|
|
143
|
-
|
|
144
|
-
this.
|
|
157
|
+
if (type === 'canvas') {
|
|
158
|
+
this.hasCanvasEngine = true;
|
|
145
159
|
}
|
|
160
|
+
return true;
|
|
161
|
+
});
|
|
162
|
+
// Sort engines: SDF first, Canvas last, others in between
|
|
163
|
+
const sortedEngines = compatibleEngines.sort((a, b) => {
|
|
164
|
+
if (a.type === 'sdf')
|
|
165
|
+
return -1;
|
|
166
|
+
if (b.type === 'sdf')
|
|
167
|
+
return 1;
|
|
168
|
+
if (a.type === 'canvas')
|
|
169
|
+
return 1;
|
|
170
|
+
if (b.type === 'canvas')
|
|
171
|
+
return -1;
|
|
172
|
+
return 0;
|
|
173
|
+
});
|
|
174
|
+
// Initialize engines in sorted order
|
|
175
|
+
sortedEngines.forEach((fontEngine) => {
|
|
176
|
+
const type = fontEngine.type;
|
|
177
|
+
// Add to map for type-based access
|
|
178
|
+
this.textRenderers[type] = fontEngine;
|
|
179
|
+
this.textRenderers[type].init(this);
|
|
180
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
// Single font engine case - initialize it directly
|
|
185
|
+
const fontEngine = this.singleFontEngine;
|
|
186
|
+
const type = fontEngine.type;
|
|
187
|
+
// Check compatibility
|
|
188
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
189
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
146
190
|
}
|
|
147
|
-
|
|
191
|
+
else {
|
|
192
|
+
if (type === 'canvas') {
|
|
193
|
+
this.hasCanvasEngine = true;
|
|
194
|
+
}
|
|
195
|
+
// Add to map for type-based access
|
|
196
|
+
this.textRenderers[type] = fontEngine;
|
|
197
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
198
|
+
this.textRenderers[type].init(this);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
148
201
|
if (Object.keys(this.textRenderers).length === 0) {
|
|
149
202
|
console.warn('No text renderers available. Your text will not render.');
|
|
150
203
|
}
|
|
151
|
-
this.fontManager = new TrFontManager(this.textRenderers);
|
|
152
204
|
// create root node
|
|
153
205
|
const rootNode = new CoreNode(this, {
|
|
154
206
|
x: 0,
|
|
155
207
|
y: 0,
|
|
156
|
-
|
|
157
|
-
|
|
208
|
+
w: appWidth,
|
|
209
|
+
h: appHeight,
|
|
158
210
|
alpha: 1,
|
|
159
211
|
autosize: false,
|
|
160
212
|
boundsMargin: null,
|
|
@@ -169,7 +221,6 @@ export class Stage {
|
|
|
169
221
|
colorBl: 0x00000000,
|
|
170
222
|
colorBr: 0x00000000,
|
|
171
223
|
zIndex: 0,
|
|
172
|
-
zIndexLocked: 0,
|
|
173
224
|
scaleX: 1,
|
|
174
225
|
scaleY: 1,
|
|
175
226
|
mountX: 0,
|
|
@@ -186,7 +237,6 @@ export class Stage {
|
|
|
186
237
|
rtt: false,
|
|
187
238
|
src: null,
|
|
188
239
|
scale: 1,
|
|
189
|
-
strictBounds: this.strictBounds,
|
|
190
240
|
});
|
|
191
241
|
this.root = rootNode;
|
|
192
242
|
// execute platform start loop
|
|
@@ -199,10 +249,24 @@ export class Stage {
|
|
|
199
249
|
this.renderer.updateClearColor(color);
|
|
200
250
|
this.renderRequested = true;
|
|
201
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Update the target frame time based on the current targetFPS setting
|
|
254
|
+
*
|
|
255
|
+
* @remarks
|
|
256
|
+
* This should be called whenever the targetFPS option is changed
|
|
257
|
+
* to ensure targetFrameTime stays in sync.
|
|
258
|
+
* targetFPS of 0 means no throttling (targetFrameTime = 0)
|
|
259
|
+
* targetFPS > 0 means throttle to 1000/targetFPS milliseconds
|
|
260
|
+
*/
|
|
261
|
+
updateTargetFrameTime() {
|
|
262
|
+
this.targetFrameTime =
|
|
263
|
+
this.options.targetFPS > 0 ? 1000 / this.options.targetFPS : 0;
|
|
264
|
+
}
|
|
202
265
|
updateFrameTime() {
|
|
203
266
|
const newFrameTime = this.platform.getTimeStamp();
|
|
204
267
|
this.lastFrameTime = this.currentFrameTime;
|
|
205
268
|
this.currentFrameTime = newFrameTime;
|
|
269
|
+
this.elapsedTime = newFrameTime - this.startTime;
|
|
206
270
|
this.deltaTime = !this.lastFrameTime
|
|
207
271
|
? 100 / 6
|
|
208
272
|
: newFrameTime - this.lastFrameTime;
|
|
@@ -227,7 +291,7 @@ export class Stage {
|
|
|
227
291
|
// Mark the default texture as ALWAYS renderable
|
|
228
292
|
// This prevents it from ever being cleaned up.
|
|
229
293
|
// Fixes https://github.com/lightning-js/renderer/issues/262
|
|
230
|
-
this.defaultTexture.setRenderableOwner(
|
|
294
|
+
this.defaultTexture.setRenderableOwner('stage', true);
|
|
231
295
|
// When the default texture is loaded, request a render in case the
|
|
232
296
|
// RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123
|
|
233
297
|
this.defaultTexture.once('loaded', () => {
|
|
@@ -263,18 +327,17 @@ export class Stage {
|
|
|
263
327
|
if (root.updateType !== 0) {
|
|
264
328
|
root.update(this.deltaTime, root.clippingRect);
|
|
265
329
|
}
|
|
266
|
-
// Process some textures
|
|
267
|
-
|
|
330
|
+
// Process some textures asynchronously but don't block the frame
|
|
331
|
+
// Use a background task to prevent frame drops
|
|
332
|
+
if (this.txManager.hasUpdates() === true) {
|
|
333
|
+
this.txManager
|
|
334
|
+
.processSome(this.options.textureProcessingTimeLimit)
|
|
335
|
+
.catch((err) => {
|
|
336
|
+
console.error('Error processing textures:', err);
|
|
337
|
+
});
|
|
338
|
+
}
|
|
268
339
|
// Reset render operations and clear the canvas
|
|
269
340
|
renderer.reset();
|
|
270
|
-
// Check if we need to cleanup textures
|
|
271
|
-
if (txMemManager.criticalCleanupRequested === true) {
|
|
272
|
-
txMemManager.cleanup(false);
|
|
273
|
-
if (txMemManager.criticalCleanupRequested === true) {
|
|
274
|
-
// If we still need to cleanup, request another but aggressive cleanup
|
|
275
|
-
txMemManager.cleanup(true);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
341
|
// If we have RTT nodes draw them first
|
|
279
342
|
// So we can use them as textures in the main scene
|
|
280
343
|
if (renderer.rttNodes.length > 0) {
|
|
@@ -290,6 +353,18 @@ export class Stage {
|
|
|
290
353
|
if (renderRequested === true) {
|
|
291
354
|
this.renderRequested = false;
|
|
292
355
|
}
|
|
356
|
+
if (this.timedNodes.length > 0) {
|
|
357
|
+
for (let key in this.timedNodes) {
|
|
358
|
+
if (this.timedNodes[key].isRenderable === true) {
|
|
359
|
+
this.requestRender();
|
|
360
|
+
break;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// Check if we need to cleanup textures
|
|
365
|
+
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
366
|
+
this.txMemManager.cleanup();
|
|
367
|
+
}
|
|
293
368
|
}
|
|
294
369
|
/**
|
|
295
370
|
* Queue an event to be emitted after the current/next frame is rendered
|
|
@@ -363,8 +438,7 @@ export class Stage {
|
|
|
363
438
|
continue;
|
|
364
439
|
}
|
|
365
440
|
if (child.worldAlpha === 0 ||
|
|
366
|
-
|
|
367
|
-
child.renderState === CoreNodeRenderState.OutOfBounds)) {
|
|
441
|
+
child.renderState === CoreNodeRenderState.OutOfBounds) {
|
|
368
442
|
continue;
|
|
369
443
|
}
|
|
370
444
|
this.addQuads(child);
|
|
@@ -387,87 +461,68 @@ export class Stage {
|
|
|
387
461
|
* @returns
|
|
388
462
|
*/
|
|
389
463
|
resolveTextRenderer(trProps, textRendererOverride = null) {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
let rendererId = textRendererOverride;
|
|
397
|
-
let overrideFallback = false;
|
|
398
|
-
// Check if the override is valid (if one is provided)
|
|
399
|
-
if (rendererId) {
|
|
400
|
-
const possibleRenderer = this.textRenderers[rendererId];
|
|
401
|
-
if (!possibleRenderer) {
|
|
402
|
-
console.warn(`Text renderer override '${rendererId}' not found.`);
|
|
403
|
-
rendererId = null;
|
|
404
|
-
overrideFallback = true;
|
|
405
|
-
}
|
|
406
|
-
else if (!possibleRenderer.canRenderFont(trProps)) {
|
|
407
|
-
console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);
|
|
408
|
-
rendererId = null;
|
|
409
|
-
overrideFallback = true;
|
|
464
|
+
// If we have an overide, return it
|
|
465
|
+
if (textRendererOverride !== null) {
|
|
466
|
+
const overrideKey = String(textRendererOverride);
|
|
467
|
+
if (this.textRenderers[overrideKey] === undefined) {
|
|
468
|
+
console.warn(`Text renderer override '${overrideKey}' not found.`);
|
|
469
|
+
return null;
|
|
410
470
|
}
|
|
471
|
+
return this.textRenderers[overrideKey];
|
|
411
472
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
break;
|
|
418
|
-
}
|
|
473
|
+
// If we have only one font engine early return it
|
|
474
|
+
if (this.singleFontEngine !== null) {
|
|
475
|
+
// If we have only one font engine and its the canvas engine, we can just return it
|
|
476
|
+
if (this.hasOnlyCanvasFontEngine === true) {
|
|
477
|
+
return this.singleFontEngine;
|
|
419
478
|
}
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
479
|
+
// If we have only one font engine and it can render the font, return it
|
|
480
|
+
if (this.singleFontHandler?.canRenderFont(trProps) === true) {
|
|
481
|
+
return this.singleFontEngine;
|
|
423
482
|
}
|
|
483
|
+
// If we have only one font engine and it cannot render the font, return null
|
|
484
|
+
console.warn(`Text renderer cannot render font`, trProps);
|
|
485
|
+
return null;
|
|
424
486
|
}
|
|
425
|
-
|
|
426
|
-
|
|
487
|
+
// Multi font handling - If we have multiple font engines, we need to resolve the best one
|
|
488
|
+
// First check SDF
|
|
489
|
+
if (this.fontHandlers['sdf']?.canRenderFont(trProps) === true) {
|
|
490
|
+
return this.textRenderers.sdf || null;
|
|
427
491
|
}
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
return null;
|
|
492
|
+
// If we have a canvas engine, we can return it (it can render all fonts)
|
|
493
|
+
if (this.hasCanvasEngine === true) {
|
|
494
|
+
return this.textRenderers.canvas || null;
|
|
432
495
|
}
|
|
433
|
-
//
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
// cache the resolved renderer for future use with these trProps
|
|
437
|
-
this.fontResolveMap[fontCacheString] = resolvedTextRenderer;
|
|
438
|
-
// Need to explicitly cast to TextRenderer because TS doesn't like
|
|
439
|
-
// the covariant state argument in the setter method map
|
|
440
|
-
return resolvedTextRenderer;
|
|
496
|
+
// If we have no font engines, return null
|
|
497
|
+
console.warn('No text renderers available. Your text will not render.');
|
|
498
|
+
return null;
|
|
441
499
|
}
|
|
442
500
|
createNode(props) {
|
|
443
501
|
const resolvedProps = this.resolveNodeDefaults(props);
|
|
444
502
|
return new CoreNode(this, resolvedProps);
|
|
445
503
|
}
|
|
446
504
|
createTextNode(props) {
|
|
447
|
-
const fontSize = props.fontSize
|
|
505
|
+
const fontSize = props.fontSize || 16;
|
|
448
506
|
const resolvedProps = Object.assign(this.resolveNodeDefaults(props), {
|
|
449
|
-
text: props.text
|
|
450
|
-
textRendererOverride: props.textRendererOverride
|
|
507
|
+
text: props.text || '',
|
|
508
|
+
textRendererOverride: props.textRendererOverride || null,
|
|
451
509
|
fontSize,
|
|
452
|
-
fontFamily: props.fontFamily
|
|
453
|
-
fontStyle: props.fontStyle
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
overflowSuffix: props.overflowSuffix ?? '...',
|
|
467
|
-
wordBreak: props.wordBreak ?? 'normal',
|
|
468
|
-
debug: props.debug ?? {},
|
|
510
|
+
fontFamily: props.fontFamily || 'sans-serif',
|
|
511
|
+
fontStyle: props.fontStyle || 'normal',
|
|
512
|
+
textAlign: props.textAlign || 'left',
|
|
513
|
+
offsetY: props.offsetY || 0,
|
|
514
|
+
letterSpacing: props.letterSpacing || 0,
|
|
515
|
+
lineHeight: props.lineHeight || 1.2,
|
|
516
|
+
maxLines: props.maxLines || 0,
|
|
517
|
+
verticalAlign: props.verticalAlign || 'top',
|
|
518
|
+
overflowSuffix: props.overflowSuffix || '...',
|
|
519
|
+
wordBreak: props.wordBreak || 'break-word',
|
|
520
|
+
contain: props.contain || 'none',
|
|
521
|
+
maxWidth: props.maxWidth || 0,
|
|
522
|
+
maxHeight: props.maxHeight || 0,
|
|
523
|
+
forceLoad: props.forceLoad || false,
|
|
469
524
|
});
|
|
470
|
-
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps,
|
|
525
|
+
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, resolvedProps.textRendererOverride);
|
|
471
526
|
if (!resolvedTextRenderer) {
|
|
472
527
|
throw new Error(`No compatible text renderer found for ${resolvedProps.fontFamily}`);
|
|
473
528
|
}
|
|
@@ -516,7 +571,8 @@ export class Stage {
|
|
|
516
571
|
if (nodes.length === 0) {
|
|
517
572
|
return null;
|
|
518
573
|
}
|
|
519
|
-
|
|
574
|
+
//get last node in array (as top node)
|
|
575
|
+
let topNode = nodes[nodes.length - 1];
|
|
520
576
|
for (let i = 0; i < nodes.length; i++) {
|
|
521
577
|
if (nodes[i].zIndex > topNode.zIndex) {
|
|
522
578
|
topNode = nodes[i];
|
|
@@ -524,6 +580,28 @@ export class Stage {
|
|
|
524
580
|
}
|
|
525
581
|
return topNode || null;
|
|
526
582
|
}
|
|
583
|
+
/**
|
|
584
|
+
* add node to timeNodes arrays
|
|
585
|
+
* @param node
|
|
586
|
+
* @returns
|
|
587
|
+
*/
|
|
588
|
+
trackTimedNode(node) {
|
|
589
|
+
if (this.timedNodes[node.id] !== undefined) {
|
|
590
|
+
return;
|
|
591
|
+
}
|
|
592
|
+
this.timedNodes[node.id] = node;
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* remove node from timeNodes arrays
|
|
596
|
+
* @param node
|
|
597
|
+
* @returns
|
|
598
|
+
*/
|
|
599
|
+
untrackTimedNode(node) {
|
|
600
|
+
if (this.timedNodes[node.id] === undefined) {
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
delete this.timedNodes[node.id];
|
|
604
|
+
}
|
|
527
605
|
/**
|
|
528
606
|
* Resolves the default property values for a Node
|
|
529
607
|
*
|
|
@@ -536,15 +614,16 @@ export class Stage {
|
|
|
536
614
|
* @returns
|
|
537
615
|
*/
|
|
538
616
|
resolveNodeDefaults(props) {
|
|
617
|
+
const { colorTop: top, colorBottom: bottom, colorLeft: left, colorRight: right, } = props;
|
|
539
618
|
const color = props.color ?? 0xffffffff;
|
|
540
|
-
const colorTop =
|
|
541
|
-
const colorBottom =
|
|
542
|
-
const colorLeft =
|
|
543
|
-
const colorRight =
|
|
544
|
-
const colorTl = props.colorTl ??
|
|
545
|
-
const colorTr = props.colorTr ??
|
|
546
|
-
const colorBl = props.colorBl ??
|
|
547
|
-
const colorBr = props.colorBr ??
|
|
619
|
+
const colorTop = top ?? color;
|
|
620
|
+
const colorBottom = bottom ?? color;
|
|
621
|
+
const colorLeft = left ?? color;
|
|
622
|
+
const colorRight = right ?? color;
|
|
623
|
+
const colorTl = props.colorTl ?? top ?? left ?? color;
|
|
624
|
+
const colorTr = props.colorTr ?? top ?? right ?? color;
|
|
625
|
+
const colorBl = props.colorBl ?? bottom ?? left ?? color;
|
|
626
|
+
const colorBr = props.colorBr ?? bottom ?? right ?? color;
|
|
548
627
|
const scale = props.scale ?? null;
|
|
549
628
|
const mount = props.mount ?? 0;
|
|
550
629
|
const pivot = props.pivot ?? 0.5;
|
|
@@ -554,8 +633,8 @@ export class Stage {
|
|
|
554
633
|
return {
|
|
555
634
|
x: props.x ?? 0,
|
|
556
635
|
y: props.y ?? 0,
|
|
557
|
-
|
|
558
|
-
|
|
636
|
+
w: props.w ?? 0,
|
|
637
|
+
h: props.h ?? 0,
|
|
559
638
|
alpha: props.alpha ?? 1,
|
|
560
639
|
autosize: props.autosize ?? false,
|
|
561
640
|
boundsMargin: props.boundsMargin ?? null,
|
|
@@ -570,7 +649,6 @@ export class Stage {
|
|
|
570
649
|
colorBl,
|
|
571
650
|
colorBr,
|
|
572
651
|
zIndex: props.zIndex ?? 0,
|
|
573
|
-
zIndexLocked: props.zIndexLocked ?? 0,
|
|
574
652
|
parent: props.parent ?? null,
|
|
575
653
|
texture: props.texture ?? null,
|
|
576
654
|
textureOptions: props.textureOptions ?? {},
|
|
@@ -594,7 +672,6 @@ export class Stage {
|
|
|
594
672
|
data,
|
|
595
673
|
imageType: props.imageType,
|
|
596
674
|
interactive: props.interactive ?? false,
|
|
597
|
-
strictBounds: props.strictBounds ?? this.strictBounds,
|
|
598
675
|
};
|
|
599
676
|
}
|
|
600
677
|
/**
|
|
@@ -603,8 +680,8 @@ export class Stage {
|
|
|
603
680
|
* @remarks
|
|
604
681
|
* This method is used to cleanup orphaned textures that are no longer in use.
|
|
605
682
|
*/
|
|
606
|
-
cleanup(
|
|
607
|
-
this.txMemManager.cleanup(
|
|
683
|
+
cleanup(full = false) {
|
|
684
|
+
this.txMemManager.cleanup(full);
|
|
608
685
|
}
|
|
609
686
|
set clearColor(value) {
|
|
610
687
|
this.renderer.updateClearColor(value);
|
|
@@ -614,5 +691,28 @@ export class Stage {
|
|
|
614
691
|
get clearColor() {
|
|
615
692
|
return this.clrColor;
|
|
616
693
|
}
|
|
694
|
+
/**
|
|
695
|
+
* Load a font using a specific text renderer type
|
|
696
|
+
*
|
|
697
|
+
* @remarks
|
|
698
|
+
* This method allows consumers to explicitly load fonts for a specific
|
|
699
|
+
* text renderer type (e.g., 'canvas', 'sdf'). Consumers must specify
|
|
700
|
+
* the renderer type to ensure fonts are loaded with the correct pipeline.
|
|
701
|
+
*
|
|
702
|
+
* For Canvas fonts, provide fontUrl (e.g., .ttf, .woff, .woff2)
|
|
703
|
+
* For SDF fonts, provide atlasUrl (image) and atlasDataUrl (JSON glyph data)
|
|
704
|
+
*
|
|
705
|
+
* @param rendererType - The type of text renderer ('canvas', 'sdf', etc.)
|
|
706
|
+
* @param options - Font loading options specific to the renderer type
|
|
707
|
+
* @returns Promise that resolves when the font is loaded
|
|
708
|
+
*/
|
|
709
|
+
async loadFont(rendererType, options) {
|
|
710
|
+
const rendererTypeKey = String(rendererType);
|
|
711
|
+
const fontHandler = this.fontHandlers[rendererTypeKey];
|
|
712
|
+
if (!fontHandler) {
|
|
713
|
+
throw new Error(`Font handler for renderer type '${rendererTypeKey}' not found. Available types: ${Object.keys(this.fontHandlers).join(', ')}`);
|
|
714
|
+
}
|
|
715
|
+
return fontHandler.loadFont(this, options);
|
|
716
|
+
}
|
|
617
717
|
}
|
|
618
718
|
//# sourceMappingURL=Stage.js.map
|