@lightningtv/renderer 2.16.1 → 3.2.3
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/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +8 -2
- package/dist/exports/canvas.js +8 -20
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +18 -13
- package/dist/exports/index.js +9 -27
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +11 -2
- package/dist/exports/webgl.js +11 -20
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +138 -105
- package/dist/src/core/CoreNode.js +805 -526
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -73
- package/dist/src/core/CoreShaderManager.js +92 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +18 -3
- package/dist/src/core/CoreTextureManager.js +63 -107
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +82 -55
- package/dist/src/core/Stage.js +410 -247
- 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 +4 -3
- package/dist/src/core/TextureMemoryManager.js +103 -135
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -4
- package/dist/src/core/animations/CoreAnimation.js +9 -76
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +0 -18
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +31 -30
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +147 -59
- package/dist/src/core/lib/WebGlContextWrapper.js +252 -158
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -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/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +2 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +15 -19
- 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 -86
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -2
- package/dist/src/core/lib/utils.js +21 -20
- 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/platforms/Platform.d.ts +5 -0
- package/dist/src/core/platforms/Platform.js +0 -18
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
- package/dist/src/core/platforms/web/WebPlatform.js +39 -7
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +25 -23
- package/dist/src/core/renderers/CoreRenderer.js +1 -24
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- 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/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +3 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +86 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -17
- 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 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -67
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +31 -19
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +297 -200
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -5
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -34
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +2 -18
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +5 -21
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- 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 +40 -26
- 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 +43 -23
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +4 -18
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- 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 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +30 -26
- 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 -18
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/utils.js +0 -16
- package/dist/src/core/shaders/utils.js.map +1 -1
- package/dist/src/core/shaders/webgl/Border.js +75 -31
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +2 -18
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +68 -30
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +52 -45
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +110 -48
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +114 -54
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- 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 +7 -35
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -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 +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -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 +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +10 -3
- package/dist/src/core/textures/ImageTexture.js +33 -62
- 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 -26
- 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 -30
- 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 +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +80 -16
- package/dist/src/core/textures/Texture.js +131 -37
- 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 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +246 -162
- package/dist/src/main-api/Renderer.js +192 -152
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +23 -4
- package/dist/src/utils.js +50 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +11 -0
- package/exports/canvas.ts +8 -20
- package/exports/index.ts +24 -44
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +12 -0
- package/exports/webgl.ts +15 -20
- package/package.json +23 -20
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +378 -46
- package/src/core/CoreNode.ts +1007 -659
- package/src/core/CoreShaderManager.ts +128 -250
- package/src/core/CoreTextNode.ts +457 -321
- package/src/core/CoreTextureManager.ts +94 -115
- package/src/core/Stage.ts +516 -312
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +139 -175
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +16 -96
- package/src/core/animations/CoreAnimationController.ts +0 -19
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +43 -31
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +353 -237
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +16 -19
- package/src/core/lib/textureCompression.ts +434 -94
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +31 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -19
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +34 -49
- package/src/core/renderers/CoreShaderNode.ts +202 -0
- package/src/core/renderers/CoreShaderProgram.ts +4 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +270 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +15 -27
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +15 -36
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +89 -70
- package/src/core/renderers/webgl/WebGlRenderer.ts +850 -0
- package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +356 -0
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -24
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +119 -0
- package/src/core/shaders/canvas/HolePunch.ts +38 -0
- package/src/core/shaders/canvas/LinearGradient.ts +54 -0
- package/src/core/shaders/canvas/RadialGradient.ts +82 -0
- package/src/core/shaders/canvas/Rounded.ts +38 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
- package/src/core/shaders/canvas/Shadow.ts +35 -0
- package/src/core/shaders/canvas/utils/render.ts +143 -0
- package/src/core/shaders/templates/BorderTemplate.ts +128 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +159 -0
- package/src/core/shaders/webgl/Default.ts +52 -0
- package/src/core/shaders/webgl/HolePunch.ts +58 -0
- package/src/core/shaders/webgl/LinearGradient.ts +119 -0
- package/src/core/shaders/webgl/RadialGradient.ts +91 -0
- package/src/core/shaders/webgl/Rounded.ts +97 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
- package/src/core/shaders/webgl/SdfShader.ts +104 -0
- package/src/core/shaders/webgl/Shadow.ts +119 -0
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +72 -78
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +182 -53
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +10 -29
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +476 -274
- package/src/utils.ts +83 -29
- package/dist/src/core/animations/SimpleAnimation.d.ts +0 -28
- package/dist/src/core/animations/SimpleAnimation.js +0 -96
- package/dist/src/core/animations/SimpleAnimation.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Magnifier.d.ts +0 -46
- package/dist/src/core/shaders/webgl/Magnifier.js +0 -107
- package/dist/src/core/shaders/webgl/Magnifier.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js +0 -218
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -100
- package/src/core/renderers/CoreShader.ts +0 -41
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +0 -50
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +0 -821
- package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- 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 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
- 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 -557
- package/src/main-api/DynamicShaderController.ts +0 -104
- package/src/main-api/ShaderController.ts +0 -80
package/dist/src/core/Stage.js
CHANGED
|
@@ -1,38 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
import { startLoop, getTimeStamp } from './platform.js';
|
|
20
|
-
import { assertTruthy, setPremultiplyMode } from '../utils.js';
|
|
1
|
+
import { assertTruthy, CALCULATE_FPS, isProductionEnvironment, setPremultiplyMode, USE_RTT, } from '../utils.js';
|
|
21
2
|
import { AnimationManager } from './animations/AnimationManager.js';
|
|
22
3
|
import { UpdateType, CoreNode, CoreNodeRenderState, } from './CoreNode.js';
|
|
23
4
|
import { CoreTextureManager } from './CoreTextureManager.js';
|
|
24
|
-
import { TrFontManager } from './text-rendering/TrFontManager.js';
|
|
25
5
|
import { CoreShaderManager } from './CoreShaderManager.js';
|
|
26
|
-
import {
|
|
6
|
+
import {} from './text-rendering/TextRenderer.js';
|
|
27
7
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
28
8
|
import { ContextSpy } from './lib/ContextSpy.js';
|
|
29
9
|
import { TextureMemoryManager, } from './TextureMemoryManager.js';
|
|
30
10
|
import { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
31
11
|
import { CoreTextNode } from './CoreTextNode.js';
|
|
32
12
|
import { santizeCustomDataMap } from '../main-api/utils.js';
|
|
33
|
-
import {
|
|
13
|
+
import { pointInBound } from './lib/utils.js';
|
|
14
|
+
import { Matrix3d } from './lib/Matrix3d.js';
|
|
15
|
+
import { createBound, createPreloadBounds } from './lib/utils.js';
|
|
34
16
|
import { ColorTexture } from './textures/ColorTexture.js';
|
|
35
|
-
const bufferMemory = 2e6;
|
|
36
17
|
const autoStart = true;
|
|
37
18
|
export class Stage {
|
|
38
19
|
options;
|
|
@@ -40,18 +21,21 @@ export class Stage {
|
|
|
40
21
|
animationManager;
|
|
41
22
|
txManager;
|
|
42
23
|
txMemManager;
|
|
43
|
-
|
|
44
|
-
|
|
24
|
+
textRenderers = {};
|
|
25
|
+
fontHandlers = {};
|
|
45
26
|
shManager;
|
|
46
27
|
renderer;
|
|
47
28
|
root;
|
|
48
29
|
interactiveNodes = new Set();
|
|
49
30
|
boundsMargin;
|
|
50
|
-
|
|
31
|
+
defShaderNode = null;
|
|
51
32
|
strictBound;
|
|
52
33
|
preloadBound;
|
|
53
|
-
strictBounds;
|
|
54
34
|
defaultTexture = null;
|
|
35
|
+
pixelRatio;
|
|
36
|
+
bufferMemory = 2e6;
|
|
37
|
+
platform;
|
|
38
|
+
calculateTextureCoord;
|
|
55
39
|
/**
|
|
56
40
|
* Target frame time in milliseconds (calculated from targetFPS)
|
|
57
41
|
*
|
|
@@ -71,29 +55,47 @@ export class Stage {
|
|
|
71
55
|
*/
|
|
72
56
|
eventBus;
|
|
73
57
|
/// State
|
|
58
|
+
startTime = 0;
|
|
74
59
|
deltaTime = 0;
|
|
75
60
|
lastFrameTime = 0;
|
|
76
61
|
currentFrameTime = 0;
|
|
62
|
+
elapsedTime = 0;
|
|
63
|
+
timedNodes = [];
|
|
64
|
+
clrColor = 0x00000000;
|
|
77
65
|
fpsNumFrames = 0;
|
|
78
66
|
fpsElapsedTime = 0;
|
|
79
67
|
numQuadsRendered = 0;
|
|
80
68
|
renderRequested = false;
|
|
69
|
+
reprocessFrame = false;
|
|
70
|
+
reprocessCallback = null;
|
|
81
71
|
frameEventQueue = [];
|
|
82
|
-
|
|
83
|
-
|
|
72
|
+
// Flattened render list optimization
|
|
73
|
+
renderList = [];
|
|
74
|
+
renderListDirty = true;
|
|
75
|
+
// Font resolve optimisation flags
|
|
76
|
+
hasOnlyOneFontEngine;
|
|
77
|
+
hasOnlyCanvasFontEngine;
|
|
78
|
+
hasCanvasEngine;
|
|
79
|
+
singleFontEngine = null;
|
|
80
|
+
singleFontHandler = null;
|
|
81
|
+
// Debug data
|
|
84
82
|
contextSpy = null;
|
|
85
83
|
/**
|
|
86
84
|
* Stage constructor
|
|
87
85
|
*/
|
|
88
86
|
constructor(options) {
|
|
89
87
|
this.options = options;
|
|
90
|
-
const { canvas, clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, forceWebGL2, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, } = options;
|
|
88
|
+
const { canvas, clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, forceWebGL2, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, platform, maxRetryCount, } = options;
|
|
89
|
+
assertTruthy(platform !== null, 'A CorePlatform is not provided in the options');
|
|
90
|
+
this.platform = platform;
|
|
91
|
+
this.startTime = platform.getTimeStamp();
|
|
91
92
|
this.eventBus = options.eventBus;
|
|
92
93
|
// Calculate target frame time from targetFPS option
|
|
93
94
|
this.targetFrameTime = options.targetFPS > 0 ? 1000 / options.targetFPS : 0;
|
|
94
95
|
this.txManager = new CoreTextureManager(this, {
|
|
95
96
|
numImageWorkers,
|
|
96
97
|
createImageBitmapSupport,
|
|
98
|
+
maxRetryCount,
|
|
97
99
|
});
|
|
98
100
|
// Wait for the Texture Manager to initialize
|
|
99
101
|
// once it does, request a render
|
|
@@ -101,10 +103,8 @@ export class Stage {
|
|
|
101
103
|
this.requestRender();
|
|
102
104
|
});
|
|
103
105
|
this.txMemManager = new TextureMemoryManager(this, textureMemory);
|
|
104
|
-
this.shManager = new CoreShaderManager();
|
|
105
106
|
this.animationManager = new AnimationManager();
|
|
106
107
|
this.contextSpy = enableContextSpy ? new ContextSpy() : null;
|
|
107
|
-
this.strictBounds = options.strictBounds;
|
|
108
108
|
let bm = [0, 0, 0, 0];
|
|
109
109
|
if (boundsMargin) {
|
|
110
110
|
bm = Array.isArray(boundsMargin)
|
|
@@ -115,54 +115,96 @@ export class Stage {
|
|
|
115
115
|
// precalculate our viewport bounds
|
|
116
116
|
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
117
117
|
this.preloadBound = createPreloadBounds(this.strictBound, bm);
|
|
118
|
-
|
|
118
|
+
this.clrColor = clearColor;
|
|
119
|
+
this.pixelRatio =
|
|
120
|
+
options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio;
|
|
121
|
+
this.renderer = new renderEngine({
|
|
119
122
|
stage: this,
|
|
120
123
|
canvas,
|
|
121
|
-
pixelRatio: options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio,
|
|
122
|
-
clearColor: clearColor ?? 0xff000000,
|
|
123
|
-
bufferMemory,
|
|
124
|
-
txManager: this.txManager,
|
|
125
|
-
txMemManager: this.txMemManager,
|
|
126
|
-
shManager: this.shManager,
|
|
127
124
|
contextSpy: this.contextSpy,
|
|
128
125
|
forceWebGL2,
|
|
129
|
-
};
|
|
130
|
-
this.
|
|
126
|
+
});
|
|
127
|
+
this.shManager = new CoreShaderManager(this);
|
|
128
|
+
this.defShaderNode = this.renderer.getDefaultShaderNode();
|
|
129
|
+
this.calculateTextureCoord = this.renderer.getTextureCoords !== undefined;
|
|
131
130
|
const renderMode = this.renderer.mode || 'webgl';
|
|
132
131
|
this.createDefaultTexture();
|
|
133
|
-
this.defShaderCtr = this.renderer.getDefShaderCtr();
|
|
134
132
|
setPremultiplyMode(renderMode);
|
|
135
133
|
// Must do this after renderer is created
|
|
136
134
|
this.txManager.renderer = this.renderer;
|
|
137
135
|
// Create text renderers
|
|
138
|
-
this.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
136
|
+
this.hasOnlyOneFontEngine = fontEngines.length === 1;
|
|
137
|
+
this.hasOnlyCanvasFontEngine =
|
|
138
|
+
fontEngines.length === 1 && fontEngines[0].type === 'canvas';
|
|
139
|
+
this.hasCanvasEngine = false;
|
|
140
|
+
this.singleFontEngine = this.hasOnlyOneFontEngine
|
|
141
|
+
? fontEngines[0]
|
|
142
|
+
: null;
|
|
143
|
+
this.singleFontHandler = this.hasOnlyOneFontEngine
|
|
144
|
+
? fontEngines[0]?.font
|
|
145
|
+
: null;
|
|
146
|
+
if (this.singleFontEngine === null) {
|
|
147
|
+
// Multiple font engines case
|
|
148
|
+
// Filter out incompatible engines first
|
|
149
|
+
const compatibleEngines = fontEngines.filter((fontEngine) => {
|
|
150
|
+
const type = fontEngine.type;
|
|
151
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
152
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
153
|
+
return false;
|
|
150
154
|
}
|
|
151
|
-
|
|
152
|
-
this.
|
|
155
|
+
if (type === 'canvas') {
|
|
156
|
+
this.hasCanvasEngine = true;
|
|
153
157
|
}
|
|
158
|
+
return true;
|
|
159
|
+
});
|
|
160
|
+
// Sort engines: SDF first, Canvas last, others in between
|
|
161
|
+
const sortedEngines = compatibleEngines.sort((a, b) => {
|
|
162
|
+
if (a.type === 'sdf')
|
|
163
|
+
return -1;
|
|
164
|
+
if (b.type === 'sdf')
|
|
165
|
+
return 1;
|
|
166
|
+
if (a.type === 'canvas')
|
|
167
|
+
return 1;
|
|
168
|
+
if (b.type === 'canvas')
|
|
169
|
+
return -1;
|
|
170
|
+
return 0;
|
|
171
|
+
});
|
|
172
|
+
// Initialize engines in sorted order
|
|
173
|
+
sortedEngines.forEach((fontEngine) => {
|
|
174
|
+
const type = fontEngine.type;
|
|
175
|
+
// Add to map for type-based access
|
|
176
|
+
this.textRenderers[type] = fontEngine;
|
|
177
|
+
this.textRenderers[type].init(this);
|
|
178
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
// Single font engine case - initialize it directly
|
|
183
|
+
const fontEngine = this.singleFontEngine;
|
|
184
|
+
const type = fontEngine.type;
|
|
185
|
+
// Check compatibility
|
|
186
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
187
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
154
188
|
}
|
|
155
|
-
|
|
189
|
+
else {
|
|
190
|
+
if (type === 'canvas') {
|
|
191
|
+
this.hasCanvasEngine = true;
|
|
192
|
+
}
|
|
193
|
+
// Add to map for type-based access
|
|
194
|
+
this.textRenderers[type] = fontEngine;
|
|
195
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
196
|
+
this.textRenderers[type].init(this);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
156
199
|
if (Object.keys(this.textRenderers).length === 0) {
|
|
157
200
|
console.warn('No text renderers available. Your text will not render.');
|
|
158
201
|
}
|
|
159
|
-
this.fontManager = new TrFontManager(this.textRenderers);
|
|
160
202
|
// create root node
|
|
161
203
|
const rootNode = new CoreNode(this, {
|
|
162
204
|
x: 0,
|
|
163
205
|
y: 0,
|
|
164
|
-
|
|
165
|
-
|
|
206
|
+
w: appWidth,
|
|
207
|
+
h: appHeight,
|
|
166
208
|
alpha: 1,
|
|
167
209
|
autosize: false,
|
|
168
210
|
boundsMargin: null,
|
|
@@ -177,7 +219,6 @@ export class Stage {
|
|
|
177
219
|
colorBl: 0x00000000,
|
|
178
220
|
colorBr: 0x00000000,
|
|
179
221
|
zIndex: 0,
|
|
180
|
-
zIndexLocked: 0,
|
|
181
222
|
scaleX: 1,
|
|
182
223
|
scaleY: 1,
|
|
183
224
|
mountX: 0,
|
|
@@ -190,20 +231,34 @@ export class Stage {
|
|
|
190
231
|
parent: null,
|
|
191
232
|
texture: null,
|
|
192
233
|
textureOptions: {},
|
|
193
|
-
shader: this.
|
|
234
|
+
shader: this.defShaderNode,
|
|
194
235
|
rtt: false,
|
|
195
236
|
src: null,
|
|
196
237
|
scale: 1,
|
|
197
|
-
preventCleanup: false,
|
|
198
|
-
strictBounds: this.strictBounds,
|
|
199
238
|
});
|
|
200
239
|
this.root = rootNode;
|
|
240
|
+
// Initialize root node properties
|
|
241
|
+
rootNode.updateLocalTransform();
|
|
242
|
+
rootNode.globalTransform = Matrix3d.copy(rootNode.localTransform);
|
|
243
|
+
rootNode.sceneGlobalTransform = Matrix3d.copy(rootNode.localTransform);
|
|
244
|
+
rootNode.calculateRenderCoords();
|
|
245
|
+
rootNode.updateBoundingRect();
|
|
246
|
+
rootNode.createRenderBounds();
|
|
247
|
+
rootNode.updateRenderState(CoreNodeRenderState.InViewport);
|
|
248
|
+
rootNode.updateIsRenderable();
|
|
249
|
+
// Initialize premultiplied colors (default is transparent 0x00000000)
|
|
250
|
+
rootNode.premultipliedColorTl =
|
|
251
|
+
rootNode.premultipliedColorTr =
|
|
252
|
+
rootNode.premultipliedColorBl =
|
|
253
|
+
rootNode.premultipliedColorBr =
|
|
254
|
+
0;
|
|
201
255
|
// execute platform start loop
|
|
202
|
-
if (autoStart) {
|
|
203
|
-
startLoop(this);
|
|
256
|
+
if (autoStart === true) {
|
|
257
|
+
this.platform.startLoop(this);
|
|
204
258
|
}
|
|
205
259
|
}
|
|
206
260
|
setClearColor(color) {
|
|
261
|
+
this.clearColor = color;
|
|
207
262
|
this.renderer.updateClearColor(color);
|
|
208
263
|
this.renderRequested = true;
|
|
209
264
|
}
|
|
@@ -221,9 +276,10 @@ export class Stage {
|
|
|
221
276
|
this.options.targetFPS > 0 ? 1000 / this.options.targetFPS : 0;
|
|
222
277
|
}
|
|
223
278
|
updateFrameTime() {
|
|
224
|
-
const newFrameTime = getTimeStamp();
|
|
279
|
+
const newFrameTime = this.platform.getTimeStamp();
|
|
225
280
|
this.lastFrameTime = this.currentFrameTime;
|
|
226
281
|
this.currentFrameTime = newFrameTime;
|
|
282
|
+
this.elapsedTime = newFrameTime - this.startTime;
|
|
227
283
|
this.deltaTime = !this.lastFrameTime
|
|
228
284
|
? 100 / 6
|
|
229
285
|
: newFrameTime - this.lastFrameTime;
|
|
@@ -240,7 +296,6 @@ export class Stage {
|
|
|
240
296
|
* Create default PixelTexture
|
|
241
297
|
*/
|
|
242
298
|
createDefaultTexture() {
|
|
243
|
-
console.log('Creating default texture');
|
|
244
299
|
this.defaultTexture = this.txManager.createTexture('ColorTexture', {
|
|
245
300
|
color: 0xffffffff,
|
|
246
301
|
});
|
|
@@ -249,7 +304,7 @@ export class Stage {
|
|
|
249
304
|
// Mark the default texture as ALWAYS renderable
|
|
250
305
|
// This prevents it from ever being cleaned up.
|
|
251
306
|
// Fixes https://github.com/lightning-js/renderer/issues/262
|
|
252
|
-
this.defaultTexture.setRenderableOwner(
|
|
307
|
+
this.defaultTexture.setRenderableOwner('stage', true);
|
|
253
308
|
// When the default texture is loaded, request a render in case the
|
|
254
309
|
// RAF is paused. Fixes: https://github.com/lightning-js/renderer/issues/123
|
|
255
310
|
this.defaultTexture.once('loaded', () => {
|
|
@@ -262,10 +317,11 @@ export class Stage {
|
|
|
262
317
|
updateAnimations() {
|
|
263
318
|
const { animationManager } = this;
|
|
264
319
|
if (!this.root) {
|
|
265
|
-
return;
|
|
320
|
+
return false;
|
|
266
321
|
}
|
|
267
322
|
// step animation
|
|
268
323
|
animationManager.update(this.deltaTime);
|
|
324
|
+
return animationManager.activeAnimations.size > 0;
|
|
269
325
|
}
|
|
270
326
|
/**
|
|
271
327
|
* Check if the scene has updates
|
|
@@ -278,45 +334,84 @@ export class Stage {
|
|
|
278
334
|
/**
|
|
279
335
|
* Start a new frame draw
|
|
280
336
|
*/
|
|
281
|
-
drawFrame() {
|
|
282
|
-
const { renderer, renderRequested } = this;
|
|
283
|
-
assertTruthy(renderer);
|
|
337
|
+
drawFrame(hasActiveAnimations = false) {
|
|
338
|
+
const { renderer, renderRequested, root } = this;
|
|
284
339
|
// Update tree if needed
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
340
|
+
do {
|
|
341
|
+
const forceUpdate = this.reprocessFrame;
|
|
342
|
+
this.reprocessFrame = false;
|
|
343
|
+
if (root.updateType !== 0 || forceUpdate) {
|
|
344
|
+
root.updateType = 0;
|
|
345
|
+
const childUpdateType = root.childUpdateType;
|
|
346
|
+
root.childUpdateType = 0;
|
|
347
|
+
for (let i = 0, length = root.children.length; i < length; i++) {
|
|
348
|
+
const child = root.children[i];
|
|
349
|
+
if (childUpdateType !== 0) {
|
|
350
|
+
child.setUpdateType(childUpdateType);
|
|
351
|
+
}
|
|
352
|
+
if (child.updateType === 0) {
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
child.update(this.deltaTime, root.clippingRect);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (this.reprocessCallback !== null) {
|
|
359
|
+
this.reprocessCallback();
|
|
360
|
+
this.reprocessCallback = null;
|
|
361
|
+
}
|
|
362
|
+
} while (this.reprocessFrame);
|
|
288
363
|
// Process some textures asynchronously but don't block the frame
|
|
289
364
|
// Use a background task to prevent frame drops
|
|
290
|
-
this.txManager
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
365
|
+
if (this.txManager.hasUpdates() === true) {
|
|
366
|
+
const timeLimit = hasActiveAnimations
|
|
367
|
+
? this.options.textureProcessingTimeLimit / 2
|
|
368
|
+
: this.options.textureProcessingTimeLimit;
|
|
369
|
+
this.txManager.processSome(timeLimit).catch((err) => {
|
|
370
|
+
console.error('Error processing textures:', err);
|
|
371
|
+
});
|
|
372
|
+
}
|
|
295
373
|
// Reset render operations and clear the canvas
|
|
296
374
|
renderer.reset();
|
|
297
|
-
// Check if we need to cleanup textures
|
|
298
|
-
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
299
|
-
this.txMemManager.cleanup(false);
|
|
300
|
-
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
301
|
-
// If we still need to cleanup, request another but aggressive cleanup
|
|
302
|
-
this.txMemManager.cleanup(true);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
375
|
// If we have RTT nodes draw them first
|
|
306
376
|
// So we can use them as textures in the main scene
|
|
307
|
-
if (renderer.rttNodes.length > 0) {
|
|
377
|
+
if (USE_RTT && renderer.rttNodes.length > 0) {
|
|
308
378
|
renderer.renderRTTNodes();
|
|
309
379
|
}
|
|
310
|
-
//
|
|
311
|
-
|
|
380
|
+
// Update render list if dirty
|
|
381
|
+
if (this.renderListDirty === true) {
|
|
382
|
+
this.renderList.length = 0;
|
|
383
|
+
this.buildRenderList(this.root);
|
|
384
|
+
this.renderListDirty = false;
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
// Fill quads buffer
|
|
388
|
+
const renderList = this.renderList;
|
|
389
|
+
for (let i = 0, len = renderList.length; i < len; i++) {
|
|
390
|
+
renderList[i].renderQuads(renderer);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
312
393
|
// Perform render pass
|
|
313
|
-
renderer
|
|
314
|
-
|
|
315
|
-
|
|
394
|
+
renderer.render();
|
|
395
|
+
if (CALCULATE_FPS) {
|
|
396
|
+
this.calculateFps();
|
|
397
|
+
this.calculateQuads();
|
|
398
|
+
}
|
|
316
399
|
// Reset renderRequested flag if it was set
|
|
317
|
-
if (renderRequested) {
|
|
400
|
+
if (renderRequested === true) {
|
|
318
401
|
this.renderRequested = false;
|
|
319
402
|
}
|
|
403
|
+
if (this.timedNodes.length > 0) {
|
|
404
|
+
for (let key in this.timedNodes) {
|
|
405
|
+
if (this.timedNodes[key].isRenderable === true) {
|
|
406
|
+
this.requestRender();
|
|
407
|
+
break;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
// Check if we need to cleanup textures
|
|
412
|
+
if (this.txMemManager.criticalCleanupRequested === true) {
|
|
413
|
+
this.txMemManager.cleanup();
|
|
414
|
+
}
|
|
320
415
|
}
|
|
321
416
|
/**
|
|
322
417
|
* Queue an event to be emitted after the current/next frame is rendered
|
|
@@ -378,23 +473,32 @@ export class Stage {
|
|
|
378
473
|
});
|
|
379
474
|
}
|
|
380
475
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
//
|
|
476
|
+
requestRenderListUpdate() {
|
|
477
|
+
// Notify the renderer that the render list is structurally changing.
|
|
478
|
+
// For the WebGL renderer this resets per-node buffer slot assignments
|
|
479
|
+
// and schedules a full GPU buffer re-upload on the next frame.
|
|
480
|
+
if (this.renderer.invalidateQuadBuffer !== undefined) {
|
|
481
|
+
this.renderer.invalidateQuadBuffer();
|
|
482
|
+
}
|
|
483
|
+
this.renderListDirty = true;
|
|
484
|
+
this.requestRender();
|
|
485
|
+
}
|
|
486
|
+
buildRenderList(node) {
|
|
487
|
+
// If the node is renderable and has a loaded texture, add it
|
|
384
488
|
if (node.isRenderable === true) {
|
|
385
489
|
node.renderQuads(this.renderer);
|
|
490
|
+
this.renderList.push(node);
|
|
386
491
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
492
|
+
const children = node.children;
|
|
493
|
+
const len = children.length;
|
|
494
|
+
for (let i = 0; i < len; i++) {
|
|
495
|
+
const child = children[i];
|
|
496
|
+
// Skip invisible subtrees
|
|
392
497
|
if (child.worldAlpha === 0 ||
|
|
393
|
-
|
|
394
|
-
child.renderState === CoreNodeRenderState.OutOfBounds)) {
|
|
498
|
+
child.renderState === CoreNodeRenderState.OutOfBounds) {
|
|
395
499
|
continue;
|
|
396
500
|
}
|
|
397
|
-
this.
|
|
501
|
+
this.buildRenderList(child);
|
|
398
502
|
}
|
|
399
503
|
}
|
|
400
504
|
/**
|
|
@@ -403,8 +507,106 @@ export class Stage {
|
|
|
403
507
|
requestRender() {
|
|
404
508
|
this.renderRequested = true;
|
|
405
509
|
}
|
|
510
|
+
reprocessUpdates(callback) {
|
|
511
|
+
this.reprocessFrame = true;
|
|
512
|
+
if (callback) {
|
|
513
|
+
this.reprocessCallback = callback;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
406
516
|
/**
|
|
407
|
-
*
|
|
517
|
+
* Given a font name, and possible renderer override, return the best compatible text renderer.
|
|
518
|
+
*
|
|
519
|
+
* @remarks
|
|
520
|
+
* Will try to return a canvas renderer if no other suitable renderer can be resolved.
|
|
521
|
+
*
|
|
522
|
+
* @param fontFamily
|
|
523
|
+
* @param textRendererOverride
|
|
524
|
+
* @returns
|
|
525
|
+
*/
|
|
526
|
+
resolveTextRenderer(trProps, textRendererOverride = null) {
|
|
527
|
+
// If we have an overide, return it
|
|
528
|
+
if (textRendererOverride !== null) {
|
|
529
|
+
const overrideKey = String(textRendererOverride);
|
|
530
|
+
if (this.textRenderers[overrideKey] === undefined) {
|
|
531
|
+
console.warn(`Text renderer override '${overrideKey}' not found.`);
|
|
532
|
+
return null;
|
|
533
|
+
}
|
|
534
|
+
return this.textRenderers[overrideKey];
|
|
535
|
+
}
|
|
536
|
+
// If we have only one font engine early return it
|
|
537
|
+
if (this.singleFontEngine !== null) {
|
|
538
|
+
// If we have only one font engine and its the canvas engine, we can just return it
|
|
539
|
+
if (this.hasOnlyCanvasFontEngine === true) {
|
|
540
|
+
return this.singleFontEngine;
|
|
541
|
+
}
|
|
542
|
+
// If we have only one font engine and it can render the font, return it
|
|
543
|
+
if (this.singleFontHandler?.canRenderFont(trProps) === true) {
|
|
544
|
+
return this.singleFontEngine;
|
|
545
|
+
}
|
|
546
|
+
// If we have only one font engine and it cannot render the font, return null
|
|
547
|
+
console.warn(`Text renderer cannot render font`, trProps);
|
|
548
|
+
return null;
|
|
549
|
+
}
|
|
550
|
+
// Multi font handling - If we have multiple font engines, we need to resolve the best one
|
|
551
|
+
// First check SDF
|
|
552
|
+
if (this.fontHandlers['sdf']?.canRenderFont(trProps) === true) {
|
|
553
|
+
return this.textRenderers.sdf || null;
|
|
554
|
+
}
|
|
555
|
+
// If we have a canvas engine, we can return it (it can render all fonts)
|
|
556
|
+
if (this.hasCanvasEngine === true) {
|
|
557
|
+
return this.textRenderers.canvas || null;
|
|
558
|
+
}
|
|
559
|
+
// If we have no font engines, return null
|
|
560
|
+
console.warn('No text renderers available. Your text will not render.');
|
|
561
|
+
return null;
|
|
562
|
+
}
|
|
563
|
+
createNode(props) {
|
|
564
|
+
const resolvedProps = this.resolveNodeDefaults(props);
|
|
565
|
+
return new CoreNode(this, resolvedProps);
|
|
566
|
+
}
|
|
567
|
+
createTextNode(props) {
|
|
568
|
+
const fontSize = props.fontSize || 16;
|
|
569
|
+
const resolvedProps = this.resolveNodeDefaults(props);
|
|
570
|
+
resolvedProps.text = props.text ?? '';
|
|
571
|
+
resolvedProps.textRendererOverride = props.textRendererOverride ?? null;
|
|
572
|
+
resolvedProps.fontSize = fontSize;
|
|
573
|
+
resolvedProps.fontFamily = props.fontFamily || 'sans-serif';
|
|
574
|
+
resolvedProps.fontStyle = props.fontStyle || 'normal';
|
|
575
|
+
resolvedProps.textAlign = props.textAlign || 'left';
|
|
576
|
+
resolvedProps.offsetY = props.offsetY || 0;
|
|
577
|
+
resolvedProps.letterSpacing = props.letterSpacing || 0;
|
|
578
|
+
resolvedProps.lineHeight = props.lineHeight || 1.2;
|
|
579
|
+
resolvedProps.maxLines = props.maxLines || 0;
|
|
580
|
+
resolvedProps.verticalAlign = props.verticalAlign || 'top';
|
|
581
|
+
resolvedProps.overflowSuffix = props.overflowSuffix || '...';
|
|
582
|
+
resolvedProps.wordBreak = props.wordBreak || 'break-word';
|
|
583
|
+
resolvedProps.contain = props.contain || 'none';
|
|
584
|
+
resolvedProps.maxWidth = props.maxWidth || 0;
|
|
585
|
+
resolvedProps.maxHeight = props.maxHeight || 0;
|
|
586
|
+
resolvedProps.forceLoad = props.forceLoad || false;
|
|
587
|
+
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, resolvedProps.textRendererOverride);
|
|
588
|
+
if (!resolvedTextRenderer) {
|
|
589
|
+
throw new Error(`No compatible text renderer found for ${resolvedProps.fontFamily}`);
|
|
590
|
+
}
|
|
591
|
+
return new CoreTextNode(this, resolvedProps, resolvedTextRenderer);
|
|
592
|
+
}
|
|
593
|
+
setBoundsMargin(value) {
|
|
594
|
+
this.boundsMargin = Array.isArray(value)
|
|
595
|
+
? value
|
|
596
|
+
: [value, value, value, value];
|
|
597
|
+
this.updateViewportBounds();
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Update the viewport bounds
|
|
601
|
+
*/
|
|
602
|
+
updateViewportBounds() {
|
|
603
|
+
const { appWidth, appHeight } = this.options;
|
|
604
|
+
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
605
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
606
|
+
this.root.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
|
|
607
|
+
this.root.childUpdateType |= UpdateType.RenderBounds;
|
|
608
|
+
}
|
|
609
|
+
/** Find all nodes at a given point
|
|
408
610
|
* @param data
|
|
409
611
|
*/
|
|
410
612
|
findNodesAtPoint(data) {
|
|
@@ -431,7 +633,8 @@ export class Stage {
|
|
|
431
633
|
if (nodes.length === 0) {
|
|
432
634
|
return null;
|
|
433
635
|
}
|
|
434
|
-
|
|
636
|
+
//get last node in array (as top node)
|
|
637
|
+
let topNode = nodes[nodes.length - 1];
|
|
435
638
|
for (let i = 0; i < nodes.length; i++) {
|
|
436
639
|
if (nodes[i].zIndex > topNode.zIndex) {
|
|
437
640
|
topNode = nodes[i];
|
|
@@ -440,118 +643,26 @@ export class Stage {
|
|
|
440
643
|
return topNode || null;
|
|
441
644
|
}
|
|
442
645
|
/**
|
|
443
|
-
*
|
|
444
|
-
*
|
|
445
|
-
* @remarks
|
|
446
|
-
* Will try to return a canvas renderer if no other suitable renderer can be resolved.
|
|
447
|
-
*
|
|
448
|
-
* @param fontFamily
|
|
449
|
-
* @param textRendererOverride
|
|
646
|
+
* add node to timeNodes arrays
|
|
647
|
+
* @param node
|
|
450
648
|
* @returns
|
|
451
649
|
*/
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
if (this.fontResolveMap[fontCacheString] !== undefined) {
|
|
456
|
-
return this.fontResolveMap[fontCacheString];
|
|
457
|
-
}
|
|
458
|
-
// Resolve the text renderer
|
|
459
|
-
let rendererId = textRendererOverride;
|
|
460
|
-
let overrideFallback = false;
|
|
461
|
-
// Check if the override is valid (if one is provided)
|
|
462
|
-
if (rendererId) {
|
|
463
|
-
const possibleRenderer = this.textRenderers[rendererId];
|
|
464
|
-
if (!possibleRenderer) {
|
|
465
|
-
console.warn(`Text renderer override '${rendererId}' not found.`);
|
|
466
|
-
rendererId = null;
|
|
467
|
-
overrideFallback = true;
|
|
468
|
-
}
|
|
469
|
-
else if (!possibleRenderer.canRenderFont(trProps)) {
|
|
470
|
-
console.warn(`Cannot use override text renderer '${rendererId}' for font`, trProps);
|
|
471
|
-
rendererId = null;
|
|
472
|
-
overrideFallback = true;
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
if (!rendererId) {
|
|
476
|
-
// Iterate through the text renderers and find the first one that can render the font
|
|
477
|
-
for (const [trId, tr] of Object.entries(this.textRenderers)) {
|
|
478
|
-
if (tr.canRenderFont(trProps)) {
|
|
479
|
-
rendererId = trId;
|
|
480
|
-
break;
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
if (!rendererId && this.textRenderers.canvas !== undefined) {
|
|
484
|
-
// If no renderer can be found, use the canvas renderer
|
|
485
|
-
rendererId = 'canvas';
|
|
486
|
-
}
|
|
487
|
-
}
|
|
488
|
-
if (overrideFallback) {
|
|
489
|
-
console.warn(`Falling back to text renderer ${String(rendererId)}`);
|
|
490
|
-
}
|
|
491
|
-
if (!rendererId) {
|
|
492
|
-
// silently fail if no renderer can be found, the error is already created
|
|
493
|
-
// at the constructor level
|
|
494
|
-
return null;
|
|
650
|
+
trackTimedNode(node) {
|
|
651
|
+
if (this.timedNodes[node.id] !== undefined) {
|
|
652
|
+
return;
|
|
495
653
|
}
|
|
496
|
-
|
|
497
|
-
const resolvedTextRenderer = this.textRenderers[rendererId];
|
|
498
|
-
assertTruthy(resolvedTextRenderer, 'resolvedTextRenderer undefined');
|
|
499
|
-
// cache the resolved renderer for future use with these trProps
|
|
500
|
-
this.fontResolveMap[fontCacheString] = resolvedTextRenderer;
|
|
501
|
-
// Need to explicitly cast to TextRenderer because TS doesn't like
|
|
502
|
-
// the covariant state argument in the setter method map
|
|
503
|
-
return resolvedTextRenderer;
|
|
654
|
+
this.timedNodes[node.id] = node;
|
|
504
655
|
}
|
|
505
656
|
/**
|
|
506
|
-
*
|
|
507
|
-
*
|
|
508
|
-
* @param type
|
|
509
|
-
* @param props
|
|
657
|
+
* remove node from timeNodes arrays
|
|
658
|
+
* @param node
|
|
510
659
|
* @returns
|
|
511
660
|
*/
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
createNode(props) {
|
|
516
|
-
const resolvedProps = this.resolveNodeDefaults(props);
|
|
517
|
-
return new CoreNode(this, resolvedProps);
|
|
518
|
-
}
|
|
519
|
-
createTextNode(props) {
|
|
520
|
-
const fontSize = props.fontSize ?? 16;
|
|
521
|
-
const resolvedProps = {
|
|
522
|
-
...this.resolveNodeDefaults(props),
|
|
523
|
-
text: props.text ?? '',
|
|
524
|
-
textRendererOverride: props.textRendererOverride ?? null,
|
|
525
|
-
fontSize,
|
|
526
|
-
fontFamily: props.fontFamily ?? 'sans-serif',
|
|
527
|
-
fontStyle: props.fontStyle ?? 'normal',
|
|
528
|
-
fontWeight: props.fontWeight ?? 'normal',
|
|
529
|
-
fontStretch: props.fontStretch ?? 'normal',
|
|
530
|
-
textAlign: props.textAlign ?? 'left',
|
|
531
|
-
contain: props.contain ?? 'none',
|
|
532
|
-
scrollable: props.scrollable ?? false,
|
|
533
|
-
scrollY: props.scrollY ?? 0,
|
|
534
|
-
offsetY: props.offsetY ?? 0,
|
|
535
|
-
letterSpacing: props.letterSpacing ?? 0,
|
|
536
|
-
lineHeight: props.lineHeight, // `undefined` is a valid value
|
|
537
|
-
maxLines: props.maxLines ?? 0,
|
|
538
|
-
textBaseline: props.textBaseline ?? 'alphabetic',
|
|
539
|
-
verticalAlign: props.verticalAlign ?? 'middle',
|
|
540
|
-
overflowSuffix: props.overflowSuffix ?? '...',
|
|
541
|
-
debug: props.debug ?? {},
|
|
542
|
-
shaderProps: null,
|
|
543
|
-
};
|
|
544
|
-
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, props.textRendererOverride);
|
|
545
|
-
if (!resolvedTextRenderer) {
|
|
546
|
-
throw new Error(`No compatible text renderer found for ${resolvedProps.fontFamily}`);
|
|
661
|
+
untrackTimedNode(node) {
|
|
662
|
+
if (this.timedNodes[node.id] === undefined) {
|
|
663
|
+
return;
|
|
547
664
|
}
|
|
548
|
-
|
|
549
|
-
}
|
|
550
|
-
setBoundsMargin(value) {
|
|
551
|
-
this.boundsMargin = Array.isArray(value)
|
|
552
|
-
? value
|
|
553
|
-
: [value, value, value, value];
|
|
554
|
-
this.root.setUpdateType(UpdateType.RenderBounds);
|
|
665
|
+
delete this.timedNodes[node.id];
|
|
555
666
|
}
|
|
556
667
|
/**
|
|
557
668
|
* Resolves the default property values for a Node
|
|
@@ -566,61 +677,82 @@ export class Stage {
|
|
|
566
677
|
*/
|
|
567
678
|
resolveNodeDefaults(props) {
|
|
568
679
|
const color = props.color ?? 0xffffffff;
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
let
|
|
574
|
-
|
|
575
|
-
|
|
680
|
+
let colorTop = color;
|
|
681
|
+
let colorBottom = color;
|
|
682
|
+
let colorLeft = color;
|
|
683
|
+
let colorRight = color;
|
|
684
|
+
let colorTl = color;
|
|
685
|
+
let colorTr = color;
|
|
686
|
+
let colorBl = color;
|
|
687
|
+
let colorBr = color;
|
|
688
|
+
// Fast-path: Check if any complex color props are present
|
|
689
|
+
// We check values directly to avoid destructuring
|
|
690
|
+
if (props.colorTop !== undefined ||
|
|
691
|
+
props.colorBottom !== undefined ||
|
|
692
|
+
props.colorLeft !== undefined ||
|
|
693
|
+
props.colorRight !== undefined ||
|
|
694
|
+
props.colorTl !== undefined ||
|
|
695
|
+
props.colorTr !== undefined ||
|
|
696
|
+
props.colorBl !== undefined ||
|
|
697
|
+
props.colorBr !== undefined) {
|
|
698
|
+
const { colorTop: top, colorBottom: bottom, colorLeft: left, colorRight: right, } = props;
|
|
699
|
+
colorTop = top ?? color;
|
|
700
|
+
colorBottom = bottom ?? color;
|
|
701
|
+
colorLeft = left ?? color;
|
|
702
|
+
colorRight = right ?? color;
|
|
703
|
+
colorTl = props.colorTl ?? top ?? left ?? color;
|
|
704
|
+
colorTr = props.colorTr ?? top ?? right ?? color;
|
|
705
|
+
colorBl = props.colorBl ?? bottom ?? left ?? color;
|
|
706
|
+
colorBr = props.colorBr ?? bottom ?? right ?? color;
|
|
576
707
|
}
|
|
708
|
+
const scale = props.scale ?? null;
|
|
709
|
+
const mount = props.mount ?? 0;
|
|
710
|
+
const pivot = props.pivot ?? 0.5;
|
|
711
|
+
const data = !isProductionEnvironment && this.options.inspector
|
|
712
|
+
? santizeCustomDataMap(props.data ?? {})
|
|
713
|
+
: {};
|
|
577
714
|
return {
|
|
578
715
|
x: props.x ?? 0,
|
|
579
716
|
y: props.y ?? 0,
|
|
580
|
-
|
|
581
|
-
|
|
717
|
+
w: props.w ?? 0,
|
|
718
|
+
h: props.h ?? 0,
|
|
582
719
|
alpha: props.alpha ?? 1,
|
|
583
720
|
autosize: props.autosize ?? false,
|
|
584
721
|
boundsMargin: props.boundsMargin ?? null,
|
|
585
722
|
clipping: props.clipping ?? false,
|
|
586
723
|
color,
|
|
587
|
-
colorTop
|
|
588
|
-
colorBottom
|
|
589
|
-
colorLeft
|
|
590
|
-
colorRight
|
|
591
|
-
colorBl,
|
|
592
|
-
colorBr,
|
|
724
|
+
colorTop,
|
|
725
|
+
colorBottom,
|
|
726
|
+
colorLeft,
|
|
727
|
+
colorRight,
|
|
593
728
|
colorTl,
|
|
594
729
|
colorTr,
|
|
730
|
+
colorBl,
|
|
731
|
+
colorBr,
|
|
595
732
|
zIndex: props.zIndex ?? 0,
|
|
596
|
-
zIndexLocked: props.zIndexLocked ?? 0,
|
|
597
733
|
parent: props.parent ?? null,
|
|
598
734
|
texture: props.texture ?? null,
|
|
599
735
|
textureOptions: props.textureOptions ?? {},
|
|
600
|
-
shader: props.shader ?? this.
|
|
601
|
-
// Since setting the `src` will trigger a texture load, we need to set it after
|
|
602
|
-
// we set the texture. Otherwise, problems happen.
|
|
736
|
+
shader: props.shader ?? this.defShaderNode,
|
|
603
737
|
src: props.src ?? null,
|
|
604
738
|
srcHeight: props.srcHeight,
|
|
605
739
|
srcWidth: props.srcWidth,
|
|
606
740
|
srcX: props.srcX,
|
|
607
741
|
srcY: props.srcY,
|
|
608
|
-
scale
|
|
609
|
-
scaleX: props.scaleX ??
|
|
610
|
-
scaleY: props.scaleY ??
|
|
611
|
-
mount
|
|
612
|
-
mountX: props.mountX ??
|
|
613
|
-
mountY: props.mountY ??
|
|
614
|
-
pivot
|
|
615
|
-
pivotX: props.pivotX ??
|
|
616
|
-
pivotY: props.pivotY ??
|
|
742
|
+
scale,
|
|
743
|
+
scaleX: props.scaleX ?? scale ?? 1,
|
|
744
|
+
scaleY: props.scaleY ?? scale ?? 1,
|
|
745
|
+
mount,
|
|
746
|
+
mountX: props.mountX ?? mount,
|
|
747
|
+
mountY: props.mountY ?? mount,
|
|
748
|
+
pivot,
|
|
749
|
+
pivotX: props.pivotX ?? pivot,
|
|
750
|
+
pivotY: props.pivotY ?? pivot,
|
|
617
751
|
rotation: props.rotation ?? 0,
|
|
618
752
|
rtt: props.rtt ?? false,
|
|
619
|
-
data
|
|
620
|
-
preventCleanup: props.preventCleanup ?? false,
|
|
753
|
+
data,
|
|
621
754
|
imageType: props.imageType,
|
|
622
755
|
interactive: props.interactive ?? false,
|
|
623
|
-
strictBounds: props.strictBounds ?? this.strictBounds,
|
|
624
756
|
};
|
|
625
757
|
}
|
|
626
758
|
/**
|
|
@@ -629,8 +761,39 @@ export class Stage {
|
|
|
629
761
|
* @remarks
|
|
630
762
|
* This method is used to cleanup orphaned textures that are no longer in use.
|
|
631
763
|
*/
|
|
632
|
-
cleanup(
|
|
633
|
-
this.txMemManager.cleanup(
|
|
764
|
+
cleanup(full = false) {
|
|
765
|
+
this.txMemManager.cleanup(full);
|
|
766
|
+
}
|
|
767
|
+
set clearColor(value) {
|
|
768
|
+
this.renderer.updateClearColor(value);
|
|
769
|
+
this.renderRequested = true;
|
|
770
|
+
this.clrColor = value;
|
|
771
|
+
}
|
|
772
|
+
get clearColor() {
|
|
773
|
+
return this.clrColor;
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Load a font using a specific text renderer type
|
|
777
|
+
*
|
|
778
|
+
* @remarks
|
|
779
|
+
* This method allows consumers to explicitly load fonts for a specific
|
|
780
|
+
* text renderer type (e.g., 'canvas', 'sdf'). Consumers must specify
|
|
781
|
+
* the renderer type to ensure fonts are loaded with the correct pipeline.
|
|
782
|
+
*
|
|
783
|
+
* For Canvas fonts, provide fontUrl (e.g., .ttf, .woff, .woff2)
|
|
784
|
+
* For SDF fonts, provide atlasUrl (image) and atlasDataUrl (JSON glyph data)
|
|
785
|
+
*
|
|
786
|
+
* @param rendererType - The type of text renderer ('canvas', 'sdf', etc.)
|
|
787
|
+
* @param options - Font loading options specific to the renderer type
|
|
788
|
+
* @returns Promise that resolves when the font is loaded
|
|
789
|
+
*/
|
|
790
|
+
async loadFont(rendererType, options) {
|
|
791
|
+
const rendererTypeKey = String(rendererType);
|
|
792
|
+
const fontHandler = this.fontHandlers[rendererTypeKey];
|
|
793
|
+
if (!fontHandler) {
|
|
794
|
+
throw new Error(`Font handler for renderer type '${rendererTypeKey}' not found. Available types: ${Object.keys(this.fontHandlers).join(', ')}`);
|
|
795
|
+
}
|
|
796
|
+
return fontHandler.loadFont(this, options);
|
|
634
797
|
}
|
|
635
798
|
}
|
|
636
799
|
//# sourceMappingURL=Stage.js.map
|