@lightningjs/renderer 2.16.0 → 3.0.0-beta10
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/COPYING +1 -0
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +133 -147
- package/dist/exports/canvas.d.ts +8 -2
- package/dist/exports/canvas.js +8 -2
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +16 -13
- package/dist/exports/index.js +8 -9
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +11 -2
- package/dist/exports/webgl.js +11 -2
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/core/CoreNode.d.ts +47 -76
- package/dist/src/core/CoreNode.js +322 -309
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -73
- package/dist/src/core/CoreShaderManager.js +110 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +58 -87
- package/dist/src/core/CoreTextNode.js +243 -237
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +2 -0
- package/dist/src/core/CoreTextureManager.js +12 -10
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +58 -53
- package/dist/src/core/Stage.js +260 -196
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +3 -0
- package/dist/src/core/TextureMemoryManager.js +78 -74
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
- package/dist/src/core/animations/CoreAnimation.js +6 -52
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +1 -1
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +43 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +117 -55
- package/dist/src/core/lib/WebGlContextWrapper.js +196 -157
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.js +0 -1
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +3 -1
- package/dist/src/core/lib/utils.js +19 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.js +29 -3
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +15 -22
- package/dist/src/core/renderers/CoreRenderer.js +0 -6
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +7 -21
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +8 -7
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -18
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +4 -2
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +31 -13
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.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 -0
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.js +1 -1
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Border.js +82 -82
- package/dist/src/core/shaders/webgl/Default.js +47 -47
- package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
- package/dist/src/core/shaders/webgl/HolePunch.js +32 -32
- package/dist/src/core/shaders/webgl/LinearGradient.js +36 -36
- package/dist/src/core/shaders/webgl/RadialGradient.js +33 -33
- package/dist/src/core/shaders/webgl/Rounded.js +71 -71
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +111 -111
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +130 -130
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
- package/dist/src/core/shaders/webgl/SdfShader.js +62 -62
- package/dist/src/core/shaders/webgl/Shadow.js +83 -83
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +4 -4
- package/dist/src/core/text-rendering/CanvasFontHandler.js +19 -6
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +18 -2
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +296 -69
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +4 -4
- package/dist/src/core/text-rendering/SdfFontHandler.js +6 -6
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +4 -8
- package/dist/src/core/text-rendering/SdfTextRenderer.js +68 -37
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/TextRenderer.d.ts +37 -113
- package/dist/src/core/text-rendering/TextRenderer.js +1 -51
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +14 -3
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +3 -2
- package/dist/src/core/text-rendering/canvas/Utils.js +9 -4
- package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -1
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +32 -9
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +52 -57
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -1
- package/dist/src/core/text-rendering/canvas/draw.d.ts +3 -10
- package/dist/src/core/text-rendering/canvas/draw.js +26 -27
- package/dist/src/core/text-rendering/canvas/draw.js.map +1 -1
- 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 +5 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +7 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +50 -2
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +2 -3
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +42 -83
- 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 +66 -8
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +14 -4
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +3 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
- package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
- package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/sdf/index.js} +3 -21
- package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +1 -0
- package/dist/src/core/textures/ImageTexture.js +11 -4
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +6 -1
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +43 -7
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +83 -136
- package/dist/src/main-api/Renderer.js +139 -91
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +5 -4
- package/dist/src/utils.js +20 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +28 -0
- package/exports/canvas.ts +45 -39
- package/exports/index.ts +82 -89
- package/exports/inspector.ts +24 -24
- package/exports/utils.ts +50 -44
- package/exports/webgl-shaders.ts +28 -0
- package/exports/webgl.ts +52 -38
- package/package.json +4 -4
- package/src/common/CommonTypes.ts +146 -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/CoreNode.test.ts +202 -202
- package/src/core/CoreNode.ts +2491 -2487
- package/src/core/CoreShaderManager.ts +188 -292
- package/src/core/CoreTextNode.ts +443 -455
- package/src/core/CoreTextureManager.ts +565 -561
- package/src/core/Stage.ts +906 -826
- package/src/core/TextureMemoryManager.ts +445 -431
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +291 -347
- package/src/core/animations/CoreAnimationController.ts +166 -166
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +286 -280
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +71 -86
- package/src/core/lib/WebGlContextWrapper.ts +1381 -1332
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -69
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/textureSvg.ts +78 -78
- package/src/core/lib/utils.ts +412 -388
- package/src/core/lib/validateImageBitmap.ts +87 -76
- package/src/core/platforms/Platform.ts +77 -0
- package/src/core/platforms/web/WebPlatform.ts +121 -0
- package/src/core/renderers/CoreContextTexture.ts +43 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +110 -115
- package/src/core/renderers/CoreShaderNode.ts +175 -0
- package/{dist/src/core/renderers/CoreShader.js → src/core/renderers/CoreShaderProgram.ts} +23 -28
- package/src/core/renderers/canvas/CanvasRenderer.ts +283 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +156 -153
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +91 -91
- package/src/core/renderers/webgl/{WebGlCoreCtxSubTexture.ts → WebGlCtxSubTexture.ts} +50 -50
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +310 -313
- package/src/core/renderers/webgl/WebGlRenderOp.ts +167 -0
- package/src/core/renderers/webgl/{WebGlCoreRenderer.ts → WebGlRenderer.ts} +747 -821
- package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +341 -0
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -143
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/shaders/canvas/Border.ts +75 -0
- package/src/core/shaders/canvas/HolePunch.ts +62 -0
- package/src/core/shaders/canvas/LinearGradient.ts +71 -0
- package/src/core/shaders/canvas/RadialGradient.ts +99 -0
- package/src/core/shaders/canvas/Rounded.ts +55 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -0
- package/src/core/shaders/canvas/Shadow.ts +52 -0
- package/src/core/shaders/canvas/utils/render.ts +151 -0
- package/src/core/shaders/templates/BorderTemplate.ts +115 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -0
- package/{dist/src/core/shaders/templates/shaderUtils.js → src/core/shaders/templates/RoundedWithBorderTemplate.ts} +35 -41
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -0
- package/src/core/shaders/utils.ts +46 -0
- package/src/core/shaders/webgl/Border.ts +116 -0
- package/src/core/shaders/webgl/Default.ts +89 -0
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -0
- package/src/core/shaders/webgl/HolePunch.ts +75 -0
- package/src/core/shaders/webgl/LinearGradient.ts +82 -0
- package/src/core/shaders/webgl/RadialGradient.ts +85 -0
- package/src/core/shaders/webgl/Rounded.ts +117 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -0
- package/src/core/shaders/webgl/SdfShader.ts +134 -0
- package/src/core/shaders/webgl/Shadow.ts +115 -0
- package/src/core/text-rendering/CanvasFontHandler.ts +176 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
- package/src/core/text-rendering/SdfFontHandler.ts +517 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
- package/src/core/text-rendering/TextRenderer.ts +404 -0
- package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +257 -263
- package/src/core/text-rendering/canvas/Settings.ts +99 -0
- package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
- package/src/core/text-rendering/canvas/Utils.ts +178 -0
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
- package/src/core/text-rendering/canvas/draw.ts +165 -0
- package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
- package/src/core/text-rendering/sdf/Utils.ts +436 -0
- package/src/core/text-rendering/{renderers/SdfTextRenderer/internal/constants.ts → sdf/index.ts} +20 -32
- package/src/core/textures/ColorTexture.ts +102 -102
- package/src/core/textures/ImageTexture.ts +418 -400
- package/src/core/textures/NoiseTexture.ts +104 -104
- package/src/core/textures/RenderTexture.ts +85 -85
- package/src/core/textures/SubTexture.ts +205 -205
- package/src/core/textures/Texture.ts +381 -376
- package/src/core/utils.ts +227 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/INode.ts +100 -101
- package/src/main-api/Inspector.ts +567 -522
- package/src/main-api/Renderer.ts +873 -807
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +267 -248
- 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.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/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/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.map +0 -1
- package/dist/src/core/shaders/webgl/Spinner.d.ts +0 -1
- package/dist/src/core/shaders/webgl/Spinner.js +0 -2
- package/dist/src/core/shaders/webgl/Spinner.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +0 -45
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +0 -69
- package/dist/src/core/text-rendering/sdf/SimpleFontShaper.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/WebGlCoreRenderOp.ts +0 -125
- 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/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/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 -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
|
@@ -16,23 +16,21 @@
|
|
|
16
16
|
* See the License for the specific language governing permissions and
|
|
17
17
|
* limitations under the License.
|
|
18
18
|
*/
|
|
19
|
-
import { startLoop, getTimeStamp } from './platform.js';
|
|
20
19
|
import { assertTruthy, setPremultiplyMode } from '../utils.js';
|
|
21
20
|
import { AnimationManager } from './animations/AnimationManager.js';
|
|
22
21
|
import { UpdateType, CoreNode, CoreNodeRenderState, } from './CoreNode.js';
|
|
23
22
|
import { CoreTextureManager } from './CoreTextureManager.js';
|
|
24
|
-
import { TrFontManager } from './text-rendering/TrFontManager.js';
|
|
25
23
|
import { CoreShaderManager } from './CoreShaderManager.js';
|
|
26
|
-
import {
|
|
24
|
+
import {} from './text-rendering/TextRenderer.js';
|
|
27
25
|
import { EventEmitter } from '../common/EventEmitter.js';
|
|
28
26
|
import { ContextSpy } from './lib/ContextSpy.js';
|
|
29
27
|
import { TextureMemoryManager, } from './TextureMemoryManager.js';
|
|
30
28
|
import { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
31
29
|
import { CoreTextNode } from './CoreTextNode.js';
|
|
32
30
|
import { santizeCustomDataMap } from '../main-api/utils.js';
|
|
33
|
-
import {
|
|
31
|
+
import { pointInBound } from './lib/utils.js';
|
|
32
|
+
import { createBound, createPreloadBounds } from './lib/utils.js';
|
|
34
33
|
import { ColorTexture } from './textures/ColorTexture.js';
|
|
35
|
-
const bufferMemory = 2e6;
|
|
36
34
|
const autoStart = true;
|
|
37
35
|
export class Stage {
|
|
38
36
|
options;
|
|
@@ -40,18 +38,22 @@ export class Stage {
|
|
|
40
38
|
animationManager;
|
|
41
39
|
txManager;
|
|
42
40
|
txMemManager;
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
textRenderers = {};
|
|
42
|
+
fontHandlers = {};
|
|
45
43
|
shManager;
|
|
46
44
|
renderer;
|
|
47
45
|
root;
|
|
48
46
|
interactiveNodes = new Set();
|
|
49
47
|
boundsMargin;
|
|
50
|
-
|
|
48
|
+
defShaderNode = null;
|
|
51
49
|
strictBound;
|
|
52
50
|
preloadBound;
|
|
53
51
|
strictBounds;
|
|
54
52
|
defaultTexture = null;
|
|
53
|
+
pixelRatio;
|
|
54
|
+
bufferMemory = 2e6;
|
|
55
|
+
platform;
|
|
56
|
+
calculateTextureCoord;
|
|
55
57
|
/**
|
|
56
58
|
* Target frame time in milliseconds (calculated from targetFPS)
|
|
57
59
|
*
|
|
@@ -74,20 +76,28 @@ export class Stage {
|
|
|
74
76
|
deltaTime = 0;
|
|
75
77
|
lastFrameTime = 0;
|
|
76
78
|
currentFrameTime = 0;
|
|
79
|
+
clrColor = 0x00000000;
|
|
77
80
|
fpsNumFrames = 0;
|
|
78
81
|
fpsElapsedTime = 0;
|
|
79
82
|
numQuadsRendered = 0;
|
|
80
83
|
renderRequested = false;
|
|
81
84
|
frameEventQueue = [];
|
|
82
|
-
|
|
83
|
-
|
|
85
|
+
// Font resolve optimisation flags
|
|
86
|
+
hasOnlyOneFontEngine;
|
|
87
|
+
hasOnlyCanvasFontEngine;
|
|
88
|
+
hasCanvasEngine;
|
|
89
|
+
singleFontEngine = null;
|
|
90
|
+
singleFontHandler = null;
|
|
91
|
+
// Debug data
|
|
84
92
|
contextSpy = null;
|
|
85
93
|
/**
|
|
86
94
|
* Stage constructor
|
|
87
95
|
*/
|
|
88
96
|
constructor(options) {
|
|
89
97
|
this.options = options;
|
|
90
|
-
const { canvas, clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, forceWebGL2, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, } = options;
|
|
98
|
+
const { canvas, clearColor, appWidth, appHeight, boundsMargin, enableContextSpy, forceWebGL2, numImageWorkers, textureMemory, renderEngine, fontEngines, createImageBitmapSupport, platform, } = options;
|
|
99
|
+
assertTruthy(platform !== null, 'A CorePlatform is not provided in the options');
|
|
100
|
+
this.platform = platform;
|
|
91
101
|
this.eventBus = options.eventBus;
|
|
92
102
|
// Calculate target frame time from targetFPS option
|
|
93
103
|
this.targetFrameTime = options.targetFPS > 0 ? 1000 / options.targetFPS : 0;
|
|
@@ -101,7 +111,6 @@ export class Stage {
|
|
|
101
111
|
this.requestRender();
|
|
102
112
|
});
|
|
103
113
|
this.txMemManager = new TextureMemoryManager(this, textureMemory);
|
|
104
|
-
this.shManager = new CoreShaderManager();
|
|
105
114
|
this.animationManager = new AnimationManager();
|
|
106
115
|
this.contextSpy = enableContextSpy ? new ContextSpy() : null;
|
|
107
116
|
this.strictBounds = options.strictBounds;
|
|
@@ -115,48 +124,90 @@ export class Stage {
|
|
|
115
124
|
// precalculate our viewport bounds
|
|
116
125
|
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
117
126
|
this.preloadBound = createPreloadBounds(this.strictBound, bm);
|
|
118
|
-
|
|
127
|
+
this.clrColor = clearColor;
|
|
128
|
+
this.pixelRatio =
|
|
129
|
+
options.devicePhysicalPixelRatio * options.deviceLogicalPixelRatio;
|
|
130
|
+
this.renderer = new renderEngine({
|
|
119
131
|
stage: this,
|
|
120
132
|
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
133
|
contextSpy: this.contextSpy,
|
|
128
134
|
forceWebGL2,
|
|
129
|
-
};
|
|
130
|
-
this.
|
|
135
|
+
});
|
|
136
|
+
this.shManager = new CoreShaderManager(this);
|
|
137
|
+
this.defShaderNode = this.renderer.getDefaultShaderNode();
|
|
138
|
+
this.calculateTextureCoord = this.renderer.getTextureCoords !== undefined;
|
|
131
139
|
const renderMode = this.renderer.mode || 'webgl';
|
|
132
140
|
this.createDefaultTexture();
|
|
133
|
-
this.defShaderCtr = this.renderer.getDefShaderCtr();
|
|
134
141
|
setPremultiplyMode(renderMode);
|
|
135
142
|
// Must do this after renderer is created
|
|
136
143
|
this.txManager.renderer = this.renderer;
|
|
137
144
|
// Create text renderers
|
|
138
|
-
this.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
145
|
+
this.hasOnlyOneFontEngine = fontEngines.length === 1;
|
|
146
|
+
this.hasOnlyCanvasFontEngine =
|
|
147
|
+
fontEngines.length === 1 && fontEngines[0].type === 'canvas';
|
|
148
|
+
this.hasCanvasEngine = false;
|
|
149
|
+
this.singleFontEngine = this.hasOnlyOneFontEngine
|
|
150
|
+
? fontEngines[0]
|
|
151
|
+
: null;
|
|
152
|
+
this.singleFontHandler = this.hasOnlyOneFontEngine
|
|
153
|
+
? fontEngines[0]?.font
|
|
154
|
+
: null;
|
|
155
|
+
if (this.singleFontEngine === null) {
|
|
156
|
+
// Multiple font engines case
|
|
157
|
+
// Filter out incompatible engines first
|
|
158
|
+
const compatibleEngines = fontEngines.filter((fontEngine) => {
|
|
159
|
+
const type = fontEngine.type;
|
|
160
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
161
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
162
|
+
return false;
|
|
150
163
|
}
|
|
151
|
-
|
|
152
|
-
this.
|
|
164
|
+
if (type === 'canvas') {
|
|
165
|
+
this.hasCanvasEngine = true;
|
|
153
166
|
}
|
|
167
|
+
return true;
|
|
168
|
+
});
|
|
169
|
+
// Sort engines: SDF first, Canvas last, others in between
|
|
170
|
+
const sortedEngines = compatibleEngines.sort((a, b) => {
|
|
171
|
+
if (a.type === 'sdf')
|
|
172
|
+
return -1;
|
|
173
|
+
if (b.type === 'sdf')
|
|
174
|
+
return 1;
|
|
175
|
+
if (a.type === 'canvas')
|
|
176
|
+
return 1;
|
|
177
|
+
if (b.type === 'canvas')
|
|
178
|
+
return -1;
|
|
179
|
+
return 0;
|
|
180
|
+
});
|
|
181
|
+
// Initialize engines in sorted order
|
|
182
|
+
sortedEngines.forEach((fontEngine) => {
|
|
183
|
+
const type = fontEngine.type;
|
|
184
|
+
// Add to map for type-based access
|
|
185
|
+
this.textRenderers[type] = fontEngine;
|
|
186
|
+
this.textRenderers[type].init(this);
|
|
187
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
// Single font engine case - initialize it directly
|
|
192
|
+
const fontEngine = this.singleFontEngine;
|
|
193
|
+
const type = fontEngine.type;
|
|
194
|
+
// Check compatibility
|
|
195
|
+
if (type === 'sdf' && renderMode === 'canvas') {
|
|
196
|
+
console.warn('MsdfTextRenderer is not compatible with Canvas renderer. Skipping...');
|
|
154
197
|
}
|
|
155
|
-
|
|
198
|
+
else {
|
|
199
|
+
if (type === 'canvas') {
|
|
200
|
+
this.hasCanvasEngine = true;
|
|
201
|
+
}
|
|
202
|
+
// Add to map for type-based access
|
|
203
|
+
this.textRenderers[type] = fontEngine;
|
|
204
|
+
this.fontHandlers[type] = fontEngine.font;
|
|
205
|
+
this.textRenderers[type].init(this);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
156
208
|
if (Object.keys(this.textRenderers).length === 0) {
|
|
157
209
|
console.warn('No text renderers available. Your text will not render.');
|
|
158
210
|
}
|
|
159
|
-
this.fontManager = new TrFontManager(this.textRenderers);
|
|
160
211
|
// create root node
|
|
161
212
|
const rootNode = new CoreNode(this, {
|
|
162
213
|
x: 0,
|
|
@@ -190,20 +241,20 @@ export class Stage {
|
|
|
190
241
|
parent: null,
|
|
191
242
|
texture: null,
|
|
192
243
|
textureOptions: {},
|
|
193
|
-
shader: this.
|
|
244
|
+
shader: this.defShaderNode,
|
|
194
245
|
rtt: false,
|
|
195
246
|
src: null,
|
|
196
247
|
scale: 1,
|
|
197
|
-
preventCleanup: false,
|
|
198
248
|
strictBounds: this.strictBounds,
|
|
199
249
|
});
|
|
200
250
|
this.root = rootNode;
|
|
201
251
|
// execute platform start loop
|
|
202
|
-
if (autoStart) {
|
|
203
|
-
startLoop(this);
|
|
252
|
+
if (autoStart === true) {
|
|
253
|
+
this.platform.startLoop(this);
|
|
204
254
|
}
|
|
205
255
|
}
|
|
206
256
|
setClearColor(color) {
|
|
257
|
+
this.clearColor = color;
|
|
207
258
|
this.renderer.updateClearColor(color);
|
|
208
259
|
this.renderRequested = true;
|
|
209
260
|
}
|
|
@@ -221,7 +272,7 @@ export class Stage {
|
|
|
221
272
|
this.options.targetFPS > 0 ? 1000 / this.options.targetFPS : 0;
|
|
222
273
|
}
|
|
223
274
|
updateFrameTime() {
|
|
224
|
-
const newFrameTime = getTimeStamp();
|
|
275
|
+
const newFrameTime = this.platform.getTimeStamp();
|
|
225
276
|
this.lastFrameTime = this.currentFrameTime;
|
|
226
277
|
this.currentFrameTime = newFrameTime;
|
|
227
278
|
this.deltaTime = !this.lastFrameTime
|
|
@@ -240,7 +291,6 @@ export class Stage {
|
|
|
240
291
|
* Create default PixelTexture
|
|
241
292
|
*/
|
|
242
293
|
createDefaultTexture() {
|
|
243
|
-
console.log('Creating default texture');
|
|
244
294
|
this.defaultTexture = this.txManager.createTexture('ColorTexture', {
|
|
245
295
|
color: 0xffffffff,
|
|
246
296
|
});
|
|
@@ -279,11 +329,11 @@ export class Stage {
|
|
|
279
329
|
* Start a new frame draw
|
|
280
330
|
*/
|
|
281
331
|
drawFrame() {
|
|
282
|
-
const { renderer, renderRequested } = this;
|
|
283
|
-
|
|
332
|
+
const { renderer, renderRequested, root } = this;
|
|
333
|
+
const txMemManager = this.txMemManager;
|
|
284
334
|
// Update tree if needed
|
|
285
|
-
if (
|
|
286
|
-
|
|
335
|
+
if (root.updateType !== 0) {
|
|
336
|
+
root.update(this.deltaTime, root.clippingRect);
|
|
287
337
|
}
|
|
288
338
|
// Process some textures asynchronously but don't block the frame
|
|
289
339
|
// Use a background task to prevent frame drops
|
|
@@ -295,11 +345,11 @@ export class Stage {
|
|
|
295
345
|
// Reset render operations and clear the canvas
|
|
296
346
|
renderer.reset();
|
|
297
347
|
// Check if we need to cleanup textures
|
|
298
|
-
if (
|
|
299
|
-
|
|
300
|
-
if (
|
|
348
|
+
if (txMemManager.criticalCleanupRequested === true) {
|
|
349
|
+
txMemManager.cleanup(false);
|
|
350
|
+
if (txMemManager.criticalCleanupRequested === true) {
|
|
301
351
|
// If we still need to cleanup, request another but aggressive cleanup
|
|
302
|
-
|
|
352
|
+
txMemManager.cleanup(true);
|
|
303
353
|
}
|
|
304
354
|
}
|
|
305
355
|
// If we have RTT nodes draw them first
|
|
@@ -310,11 +360,11 @@ export class Stage {
|
|
|
310
360
|
// Fill quads buffer
|
|
311
361
|
this.addQuads(this.root);
|
|
312
362
|
// Perform render pass
|
|
313
|
-
renderer
|
|
363
|
+
renderer.render();
|
|
314
364
|
this.calculateFps();
|
|
315
365
|
this.calculateQuads();
|
|
316
366
|
// Reset renderRequested flag if it was set
|
|
317
|
-
if (renderRequested) {
|
|
367
|
+
if (renderRequested === true) {
|
|
318
368
|
this.renderRequested = false;
|
|
319
369
|
}
|
|
320
370
|
}
|
|
@@ -403,42 +453,6 @@ export class Stage {
|
|
|
403
453
|
requestRender() {
|
|
404
454
|
this.renderRequested = true;
|
|
405
455
|
}
|
|
406
|
-
/**
|
|
407
|
-
* Find all nodes at a given point
|
|
408
|
-
* @param data
|
|
409
|
-
*/
|
|
410
|
-
findNodesAtPoint(data) {
|
|
411
|
-
const x = data.x / this.options.deviceLogicalPixelRatio;
|
|
412
|
-
const y = data.y / this.options.deviceLogicalPixelRatio;
|
|
413
|
-
const nodes = [];
|
|
414
|
-
for (const node of this.interactiveNodes) {
|
|
415
|
-
if (node.isRenderable === false) {
|
|
416
|
-
continue;
|
|
417
|
-
}
|
|
418
|
-
if (pointInBound(x, y, node.renderBound) === true) {
|
|
419
|
-
nodes.push(node);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
return nodes;
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Find the top node at a given point
|
|
426
|
-
* @param data
|
|
427
|
-
* @returns
|
|
428
|
-
*/
|
|
429
|
-
getNodeFromPosition(data) {
|
|
430
|
-
const nodes = this.findNodesAtPoint(data);
|
|
431
|
-
if (nodes.length === 0) {
|
|
432
|
-
return null;
|
|
433
|
-
}
|
|
434
|
-
let topNode = nodes[0];
|
|
435
|
-
for (let i = 0; i < nodes.length; i++) {
|
|
436
|
-
if (nodes[i].zIndex > topNode.zIndex) {
|
|
437
|
-
topNode = nodes[i];
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
return topNode || null;
|
|
441
|
-
}
|
|
442
456
|
/**
|
|
443
457
|
* Given a font name, and possible renderer override, return the best compatible text renderer.
|
|
444
458
|
*
|
|
@@ -450,98 +464,68 @@ export class Stage {
|
|
|
450
464
|
* @returns
|
|
451
465
|
*/
|
|
452
466
|
resolveTextRenderer(trProps, textRendererOverride = null) {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
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;
|
|
467
|
+
// If we have an overide, return it
|
|
468
|
+
if (textRendererOverride !== null) {
|
|
469
|
+
const overrideKey = String(textRendererOverride);
|
|
470
|
+
if (this.textRenderers[overrideKey] === undefined) {
|
|
471
|
+
console.warn(`Text renderer override '${overrideKey}' not found.`);
|
|
472
|
+
return null;
|
|
473
473
|
}
|
|
474
|
+
return this.textRenderers[overrideKey];
|
|
474
475
|
}
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
break;
|
|
481
|
-
}
|
|
476
|
+
// If we have only one font engine early return it
|
|
477
|
+
if (this.singleFontEngine !== null) {
|
|
478
|
+
// If we have only one font engine and its the canvas engine, we can just return it
|
|
479
|
+
if (this.hasOnlyCanvasFontEngine === true) {
|
|
480
|
+
return this.singleFontEngine;
|
|
482
481
|
}
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
482
|
+
// If we have only one font engine and it can render the font, return it
|
|
483
|
+
if (this.singleFontHandler?.canRenderFont(trProps) === true) {
|
|
484
|
+
return this.singleFontEngine;
|
|
486
485
|
}
|
|
486
|
+
// If we have only one font engine and it cannot render the font, return null
|
|
487
|
+
console.warn(`Text renderer cannot render font`, trProps);
|
|
488
|
+
return null;
|
|
487
489
|
}
|
|
488
|
-
|
|
489
|
-
|
|
490
|
+
// Multi font handling - If we have multiple font engines, we need to resolve the best one
|
|
491
|
+
// First check SDF
|
|
492
|
+
if (this.fontHandlers['sdf']?.canRenderFont(trProps) === true) {
|
|
493
|
+
return this.textRenderers.sdf || null;
|
|
490
494
|
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
return null;
|
|
495
|
+
// If we have a canvas engine, we can return it (it can render all fonts)
|
|
496
|
+
if (this.hasCanvasEngine === true) {
|
|
497
|
+
return this.textRenderers.canvas || null;
|
|
495
498
|
}
|
|
496
|
-
//
|
|
497
|
-
|
|
498
|
-
|
|
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;
|
|
504
|
-
}
|
|
505
|
-
/**
|
|
506
|
-
* Create a shader controller instance
|
|
507
|
-
*
|
|
508
|
-
* @param type
|
|
509
|
-
* @param props
|
|
510
|
-
* @returns
|
|
511
|
-
*/
|
|
512
|
-
createShaderCtr(type, props) {
|
|
513
|
-
return this.shManager.loadShader(type, props);
|
|
499
|
+
// If we have no font engines, return null
|
|
500
|
+
console.warn('No text renderers available. Your text will not render.');
|
|
501
|
+
return null;
|
|
514
502
|
}
|
|
515
503
|
createNode(props) {
|
|
516
504
|
const resolvedProps = this.resolveNodeDefaults(props);
|
|
517
505
|
return new CoreNode(this, resolvedProps);
|
|
518
506
|
}
|
|
519
507
|
createTextNode(props) {
|
|
520
|
-
const fontSize = props.fontSize
|
|
521
|
-
const resolvedProps = {
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
textRendererOverride: props.textRendererOverride ?? null,
|
|
508
|
+
const fontSize = props.fontSize || 16;
|
|
509
|
+
const resolvedProps = Object.assign(this.resolveNodeDefaults(props), {
|
|
510
|
+
text: props.text || '',
|
|
511
|
+
textRendererOverride: props.textRendererOverride || null,
|
|
525
512
|
fontSize,
|
|
526
|
-
fontFamily: props.fontFamily
|
|
527
|
-
fontStyle: props.fontStyle
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
shaderProps: null,
|
|
543
|
-
};
|
|
544
|
-
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, props.textRendererOverride);
|
|
513
|
+
fontFamily: props.fontFamily || 'sans-serif',
|
|
514
|
+
fontStyle: props.fontStyle || 'normal',
|
|
515
|
+
textAlign: props.textAlign || 'left',
|
|
516
|
+
offsetY: props.offsetY || 0,
|
|
517
|
+
letterSpacing: props.letterSpacing || 0,
|
|
518
|
+
lineHeight: props.lineHeight || 0,
|
|
519
|
+
maxLines: props.maxLines || 0,
|
|
520
|
+
textBaseline: props.textBaseline || 'alphabetic',
|
|
521
|
+
verticalAlign: props.verticalAlign || 'middle',
|
|
522
|
+
overflowSuffix: props.overflowSuffix || '...',
|
|
523
|
+
wordBreak: props.wordBreak || 'normal',
|
|
524
|
+
maxWidth: props.maxWidth || 0,
|
|
525
|
+
maxHeight: props.maxHeight || 0,
|
|
526
|
+
forceLoad: props.forceLoad || false,
|
|
527
|
+
});
|
|
528
|
+
const resolvedTextRenderer = this.resolveTextRenderer(resolvedProps, resolvedProps.textRendererOverride);
|
|
545
529
|
if (!resolvedTextRenderer) {
|
|
546
530
|
throw new Error(`No compatible text renderer found for ${resolvedProps.fontFamily}`);
|
|
547
531
|
}
|
|
@@ -553,6 +537,51 @@ export class Stage {
|
|
|
553
537
|
: [value, value, value, value];
|
|
554
538
|
this.root.setUpdateType(UpdateType.RenderBounds);
|
|
555
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* Update the viewport bounds
|
|
542
|
+
*/
|
|
543
|
+
updateViewportBounds() {
|
|
544
|
+
const { appWidth, appHeight } = this.options;
|
|
545
|
+
this.strictBound = createBound(0, 0, appWidth, appHeight);
|
|
546
|
+
this.preloadBound = createPreloadBounds(this.strictBound, this.boundsMargin);
|
|
547
|
+
this.root.setUpdateType(UpdateType.RenderBounds | UpdateType.Children);
|
|
548
|
+
this.root.childUpdateType |= UpdateType.RenderBounds;
|
|
549
|
+
}
|
|
550
|
+
/** Find all nodes at a given point
|
|
551
|
+
* @param data
|
|
552
|
+
*/
|
|
553
|
+
findNodesAtPoint(data) {
|
|
554
|
+
const x = data.x / this.options.deviceLogicalPixelRatio;
|
|
555
|
+
const y = data.y / this.options.deviceLogicalPixelRatio;
|
|
556
|
+
const nodes = [];
|
|
557
|
+
for (const node of this.interactiveNodes) {
|
|
558
|
+
if (node.isRenderable === false) {
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
if (pointInBound(x, y, node.renderBound) === true) {
|
|
562
|
+
nodes.push(node);
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
return nodes;
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Find the top node at a given point
|
|
569
|
+
* @param data
|
|
570
|
+
* @returns
|
|
571
|
+
*/
|
|
572
|
+
getNodeFromPosition(data) {
|
|
573
|
+
const nodes = this.findNodesAtPoint(data);
|
|
574
|
+
if (nodes.length === 0) {
|
|
575
|
+
return null;
|
|
576
|
+
}
|
|
577
|
+
let topNode = nodes[0];
|
|
578
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
579
|
+
if (nodes[i].zIndex > topNode.zIndex) {
|
|
580
|
+
topNode = nodes[i];
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
return topNode || null;
|
|
584
|
+
}
|
|
556
585
|
/**
|
|
557
586
|
* Resolves the default property values for a Node
|
|
558
587
|
*
|
|
@@ -565,15 +594,22 @@ export class Stage {
|
|
|
565
594
|
* @returns
|
|
566
595
|
*/
|
|
567
596
|
resolveNodeDefaults(props) {
|
|
597
|
+
const { colorTop: top, colorBottom: bottom, colorLeft: left, colorRight: right, } = props;
|
|
568
598
|
const color = props.color ?? 0xffffffff;
|
|
569
|
-
const
|
|
570
|
-
const
|
|
571
|
-
const
|
|
572
|
-
const
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
599
|
+
const colorTop = top ?? color;
|
|
600
|
+
const colorBottom = bottom ?? color;
|
|
601
|
+
const colorLeft = left ?? color;
|
|
602
|
+
const colorRight = right ?? color;
|
|
603
|
+
const colorTl = props.colorTl ?? top ?? left ?? color;
|
|
604
|
+
const colorTr = props.colorTr ?? top ?? right ?? color;
|
|
605
|
+
const colorBl = props.colorBl ?? bottom ?? left ?? color;
|
|
606
|
+
const colorBr = props.colorBr ?? bottom ?? right ?? color;
|
|
607
|
+
const scale = props.scale ?? null;
|
|
608
|
+
const mount = props.mount ?? 0;
|
|
609
|
+
const pivot = props.pivot ?? 0.5;
|
|
610
|
+
const data = this.options.inspector
|
|
611
|
+
? santizeCustomDataMap(props.data ?? {})
|
|
612
|
+
: {};
|
|
577
613
|
return {
|
|
578
614
|
x: props.x ?? 0,
|
|
579
615
|
y: props.y ?? 0,
|
|
@@ -584,40 +620,37 @@ export class Stage {
|
|
|
584
620
|
boundsMargin: props.boundsMargin ?? null,
|
|
585
621
|
clipping: props.clipping ?? false,
|
|
586
622
|
color,
|
|
587
|
-
colorTop
|
|
588
|
-
colorBottom
|
|
589
|
-
colorLeft
|
|
590
|
-
colorRight
|
|
591
|
-
colorBl,
|
|
592
|
-
colorBr,
|
|
623
|
+
colorTop,
|
|
624
|
+
colorBottom,
|
|
625
|
+
colorLeft,
|
|
626
|
+
colorRight,
|
|
593
627
|
colorTl,
|
|
594
628
|
colorTr,
|
|
629
|
+
colorBl,
|
|
630
|
+
colorBr,
|
|
595
631
|
zIndex: props.zIndex ?? 0,
|
|
596
632
|
zIndexLocked: props.zIndexLocked ?? 0,
|
|
597
633
|
parent: props.parent ?? null,
|
|
598
634
|
texture: props.texture ?? null,
|
|
599
635
|
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.
|
|
636
|
+
shader: props.shader ?? this.defShaderNode,
|
|
603
637
|
src: props.src ?? null,
|
|
604
638
|
srcHeight: props.srcHeight,
|
|
605
639
|
srcWidth: props.srcWidth,
|
|
606
640
|
srcX: props.srcX,
|
|
607
641
|
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 ??
|
|
642
|
+
scale,
|
|
643
|
+
scaleX: props.scaleX ?? scale ?? 1,
|
|
644
|
+
scaleY: props.scaleY ?? scale ?? 1,
|
|
645
|
+
mount,
|
|
646
|
+
mountX: props.mountX ?? mount,
|
|
647
|
+
mountY: props.mountY ?? mount,
|
|
648
|
+
pivot,
|
|
649
|
+
pivotX: props.pivotX ?? pivot,
|
|
650
|
+
pivotY: props.pivotY ?? pivot,
|
|
617
651
|
rotation: props.rotation ?? 0,
|
|
618
652
|
rtt: props.rtt ?? false,
|
|
619
|
-
data
|
|
620
|
-
preventCleanup: props.preventCleanup ?? false,
|
|
653
|
+
data,
|
|
621
654
|
imageType: props.imageType,
|
|
622
655
|
interactive: props.interactive ?? false,
|
|
623
656
|
strictBounds: props.strictBounds ?? this.strictBounds,
|
|
@@ -632,5 +665,36 @@ export class Stage {
|
|
|
632
665
|
cleanup(aggressive) {
|
|
633
666
|
this.txMemManager.cleanup(aggressive);
|
|
634
667
|
}
|
|
668
|
+
set clearColor(value) {
|
|
669
|
+
this.renderer.updateClearColor(value);
|
|
670
|
+
this.renderRequested = true;
|
|
671
|
+
this.clrColor = value;
|
|
672
|
+
}
|
|
673
|
+
get clearColor() {
|
|
674
|
+
return this.clrColor;
|
|
675
|
+
}
|
|
676
|
+
/**
|
|
677
|
+
* Load a font using a specific text renderer type
|
|
678
|
+
*
|
|
679
|
+
* @remarks
|
|
680
|
+
* This method allows consumers to explicitly load fonts for a specific
|
|
681
|
+
* text renderer type (e.g., 'canvas', 'sdf'). Consumers must specify
|
|
682
|
+
* the renderer type to ensure fonts are loaded with the correct pipeline.
|
|
683
|
+
*
|
|
684
|
+
* For Canvas fonts, provide fontUrl (e.g., .ttf, .woff, .woff2)
|
|
685
|
+
* For SDF fonts, provide atlasUrl (image) and atlasDataUrl (JSON glyph data)
|
|
686
|
+
*
|
|
687
|
+
* @param rendererType - The type of text renderer ('canvas', 'sdf', etc.)
|
|
688
|
+
* @param options - Font loading options specific to the renderer type
|
|
689
|
+
* @returns Promise that resolves when the font is loaded
|
|
690
|
+
*/
|
|
691
|
+
async loadFont(rendererType, options) {
|
|
692
|
+
const rendererTypeKey = String(rendererType);
|
|
693
|
+
const fontHandler = this.fontHandlers[rendererTypeKey];
|
|
694
|
+
if (!fontHandler) {
|
|
695
|
+
throw new Error(`Font handler for renderer type '${rendererTypeKey}' not found. Available types: ${Object.keys(this.fontHandlers).join(', ')}`);
|
|
696
|
+
}
|
|
697
|
+
return fontHandler.loadFont(this, options);
|
|
698
|
+
}
|
|
635
699
|
}
|
|
636
700
|
//# sourceMappingURL=Stage.js.map
|