@lightningtv/renderer 3.0.0-beta1 → 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 +1 -1
- package/dist/exports/canvas.js +1 -19
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -23
- 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 +2 -1
- package/dist/exports/webgl.js +2 -19
- 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 +140 -102
- package/dist/src/core/CoreNode.js +812 -528
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -3
- package/dist/src/core/CoreShaderManager.js +0 -18
- 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 +25 -14
- package/dist/src/core/CoreTextureManager.js +82 -139
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +102 -36
- package/dist/src/core/Stage.js +424 -191
- 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 +11 -4
- package/dist/src/core/TextureMemoryManager.js +114 -134
- 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 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -24
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -22
- 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 +33 -31
- 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 +83 -8
- package/dist/src/core/lib/WebGlContextWrapper.js +150 -25
- 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.js → lib/colorParser.js} +1 -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 -85
- 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 -1
- package/dist/src/core/lib/utils.js +44 -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 +42 -0
- package/dist/src/core/platforms/Platform.js +4 -0
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +90 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- 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 +15 -3
- package/dist/src/core/renderers/CoreRenderer.js +1 -18
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +13 -3
- package/dist/src/core/renderers/CoreShaderNode.js +25 -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 +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +89 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -21
- 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 +18 -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 -70
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +34 -20
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +319 -195
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -3
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +99 -48
- 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.js +0 -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 +7 -21
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -28
- 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 +44 -22
- 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 +47 -25
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +9 -21
- 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 +12 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +31 -27
- 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 +3 -19
- 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 +1 -17
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +4 -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.d.ts +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.d.ts +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/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/utils.js +25 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +118 -51
- 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 +4 -19
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +73 -34
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -48
- 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 +160 -55
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +168 -58
- 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 +8 -36
- 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 +13 -6
- package/dist/src/core/textures/ImageTexture.js +57 -66
- 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 +90 -12
- package/dist/src/core/textures/Texture.js +160 -35
- 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.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 +294 -81
- package/dist/src/main-api/Renderer.js +225 -96
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +19 -6
- package/dist/src/utils.js +32 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +0 -17
- package/exports/canvas.ts +1 -19
- package/exports/index.ts +6 -27
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +0 -16
- package/exports/webgl.ts +3 -20
- package/package.json +23 -22
- 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 +376 -45
- package/src/core/CoreNode.ts +1015 -656
- package/src/core/CoreShaderManager.ts +3 -21
- package/src/core/CoreTextNode.ts +457 -314
- package/src/core/CoreTextureManager.ts +110 -167
- package/src/core/Stage.ts +526 -236
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +150 -167
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +15 -32
- package/src/core/animations/CoreAnimationController.ts +13 -23
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +45 -32
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +196 -72
- 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} +2 -21
- package/src/core/lib/textureCompression.ts +433 -93
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +58 -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 +2 -20
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +16 -23
- package/src/core/renderers/CoreShaderNode.ts +37 -6
- package/src/core/renderers/CoreShaderProgram.ts +0 -19
- package/src/core/renderers/canvas/CanvasRenderer.ts +108 -137
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -23
- package/src/core/renderers/canvas/CanvasTexture.ts +25 -37
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -34
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -24
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -103
- package/src/core/renderers/webgl/WebGlRenderer.ts +368 -233
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -7
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +122 -76
- 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 +0 -19
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +91 -50
- package/src/core/shaders/canvas/HolePunch.ts +4 -28
- package/src/core/shaders/canvas/LinearGradient.ts +10 -25
- package/src/core/shaders/canvas/RadialGradient.ts +23 -54
- package/src/core/shaders/canvas/Rounded.ts +2 -19
- package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -35
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +77 -47
- package/src/core/shaders/canvas/RoundedWithShadow.ts +21 -34
- package/src/core/shaders/canvas/Shadow.ts +0 -17
- package/src/core/shaders/canvas/utils/render.ts +45 -53
- package/src/core/shaders/templates/BorderTemplate.ts +42 -29
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -22
- package/src/core/shaders/templates/LinearGradientTemplate.ts +0 -17
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -25
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +7 -19
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -18
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +118 -55
- package/src/core/shaders/webgl/Default.ts +6 -43
- package/src/core/shaders/webgl/HolePunch.ts +4 -24
- package/src/core/shaders/webgl/LinearGradient.ts +73 -35
- package/src/core/shaders/webgl/RadialGradient.ts +58 -51
- package/src/core/shaders/webgl/Rounded.ts +25 -45
- package/src/core/shaders/webgl/RoundedWithBorder.ts +161 -63
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +169 -68
- package/src/core/shaders/webgl/RoundedWithShadow.ts +73 -39
- package/src/core/shaders/webgl/SdfShader.ts +8 -41
- package/src/core/shaders/webgl/Shadow.ts +39 -35
- 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 +110 -92
- 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 +214 -46
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +0 -18
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +519 -159
- package/src/utils.ts +64 -29
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -56
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -217
- 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/webgl/WebGlRenderOp.d.ts +0 -36
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -107
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- 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/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 -126
- 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 -91
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -611
- 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 -370
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -145
- package/src/core/shaders/templates/shaderUtils.ts +0 -47
- package/src/core/shaders/webgl/DefaultBatched.ts +0 -129
- 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 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -841
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
- /package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +0 -0
package/src/core/CoreTextNode.ts
CHANGED
|
@@ -1,79 +1,66 @@
|
|
|
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
|
-
|
|
20
1
|
import type {
|
|
2
|
+
FontHandler,
|
|
21
3
|
TextRenderer,
|
|
22
|
-
TextRendererMap,
|
|
23
4
|
TrProps,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
} from './
|
|
28
|
-
import {
|
|
5
|
+
TextLayout,
|
|
6
|
+
TextRenderInfo,
|
|
7
|
+
} from './text-rendering/TextRenderer.js';
|
|
8
|
+
import { SdfRenderOp } from './renderers/webgl/SdfRenderOp.js';
|
|
9
|
+
import { mergeColorAlpha, USE_RTT } from '../utils.js';
|
|
10
|
+
import {
|
|
11
|
+
CoreNode,
|
|
12
|
+
CoreNodeRenderState,
|
|
13
|
+
UpdateType,
|
|
14
|
+
type CoreNodeProps,
|
|
15
|
+
} from './CoreNode.js';
|
|
29
16
|
import type { Stage } from './Stage.js';
|
|
30
|
-
import type { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
31
17
|
import type {
|
|
32
18
|
NodeTextFailedPayload,
|
|
33
19
|
NodeTextLoadedPayload,
|
|
20
|
+
NodeTextureLoadedPayload,
|
|
34
21
|
} from '../common/CommonTypes.js';
|
|
35
22
|
import type { RectWithValid } from './lib/utils.js';
|
|
36
|
-
import {
|
|
23
|
+
import type { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
24
|
+
import type { TextureLoadedEventHandler } from './textures/Texture.js';
|
|
25
|
+
import type { WebGlRenderer } from './renderers/webgl/WebGlRenderer.js';
|
|
37
26
|
import { Matrix3d } from './lib/Matrix3d.js';
|
|
38
|
-
|
|
39
27
|
export interface CoreTextNodeProps extends CoreNodeProps, TrProps {
|
|
40
28
|
/**
|
|
41
29
|
* Force Text Node to use a specific Text Renderer
|
|
42
|
-
*
|
|
43
|
-
* @remarks
|
|
44
|
-
* By default, Text Nodes resolve the Text Renderer to use based on the font
|
|
45
|
-
* that is matched using the font family and other font selection properties.
|
|
46
|
-
*
|
|
47
|
-
* If two fonts supported by two separate Text Renderers are matched setting
|
|
48
|
-
* this override forces the Text Node to resolve to the Text Renderer defined
|
|
49
|
-
* here.
|
|
50
|
-
*
|
|
51
|
-
* @default null
|
|
52
30
|
*/
|
|
53
|
-
textRendererOverride
|
|
31
|
+
textRendererOverride?: string | null;
|
|
32
|
+
forceLoad: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export enum TextConstraint {
|
|
36
|
+
'none' = 0,
|
|
37
|
+
'width' = 1,
|
|
38
|
+
'height' = 2,
|
|
39
|
+
'both' = 3,
|
|
54
40
|
}
|
|
55
41
|
|
|
56
|
-
/**
|
|
57
|
-
* An CoreNode in the Renderer scene graph that renders text.
|
|
58
|
-
*
|
|
59
|
-
* @remarks
|
|
60
|
-
* A Text Node is the second graphical building block of the Renderer scene
|
|
61
|
-
* graph. It renders text using a specific text renderer that is automatically
|
|
62
|
-
* chosen based on the font requested and what type of fonts are installed
|
|
63
|
-
* into an app.
|
|
64
|
-
*
|
|
65
|
-
* The text renderer can be overridden by setting the `textRendererOverride`
|
|
66
|
-
*
|
|
67
|
-
* The `texture` and `shader` properties are managed by loaded text renderer and
|
|
68
|
-
* should not be set directly.
|
|
69
|
-
*
|
|
70
|
-
* For non-text rendering, see {@link CoreNode}.
|
|
71
|
-
*/
|
|
72
42
|
export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
|
|
73
|
-
textRenderer: TextRenderer;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
43
|
+
private textRenderer: TextRenderer;
|
|
44
|
+
private fontHandler: FontHandler;
|
|
45
|
+
|
|
46
|
+
private _layoutGenerated = false;
|
|
47
|
+
private _waitingForFont = false;
|
|
48
|
+
private _containType: TextConstraint = TextConstraint.none;
|
|
49
|
+
|
|
50
|
+
// SDF layout caching for performance
|
|
51
|
+
private _cachedLayout: TextLayout | null = null;
|
|
52
|
+
private _lastVertexBuffer: Float32Array | null = null;
|
|
53
|
+
private _cachedRenderOp: SdfRenderOp | null = null;
|
|
54
|
+
|
|
55
|
+
// Text renderer properties - stored directly on the node
|
|
56
|
+
private textProps: CoreTextNodeProps;
|
|
57
|
+
|
|
58
|
+
private _renderInfo: TextRenderInfo = {
|
|
59
|
+
width: 0,
|
|
60
|
+
height: 0,
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
private _type: 'sdf' | 'canvas' = 'sdf'; // Default to SDF renderer
|
|
77
64
|
|
|
78
65
|
constructor(
|
|
79
66
|
stage: Stage,
|
|
@@ -81,368 +68,524 @@ export class CoreTextNode extends CoreNode implements CoreTextNodeProps {
|
|
|
81
68
|
textRenderer: TextRenderer,
|
|
82
69
|
) {
|
|
83
70
|
super(stage, props);
|
|
84
|
-
this._textRendererOverride = props.textRendererOverride;
|
|
85
71
|
this.textRenderer = textRenderer;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
y: this.absY,
|
|
89
|
-
width: props.width,
|
|
90
|
-
height: props.height,
|
|
91
|
-
textAlign: props.textAlign,
|
|
92
|
-
color: props.color,
|
|
93
|
-
zIndex: props.zIndex,
|
|
94
|
-
contain: props.contain,
|
|
95
|
-
scrollable: props.scrollable,
|
|
96
|
-
scrollY: props.scrollY,
|
|
97
|
-
offsetY: props.offsetY,
|
|
98
|
-
letterSpacing: props.letterSpacing,
|
|
99
|
-
debug: props.debug,
|
|
100
|
-
fontFamily: props.fontFamily,
|
|
101
|
-
fontSize: props.fontSize,
|
|
102
|
-
fontStretch: props.fontStretch,
|
|
103
|
-
fontStyle: props.fontStyle,
|
|
104
|
-
fontWeight: props.fontWeight,
|
|
105
|
-
text: props.text,
|
|
106
|
-
lineHeight: props.lineHeight,
|
|
107
|
-
maxLines: props.maxLines,
|
|
108
|
-
textBaseline: props.textBaseline,
|
|
109
|
-
verticalAlign: props.verticalAlign,
|
|
110
|
-
overflowSuffix: props.overflowSuffix,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
this.trState = textRendererState;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
private onTextLoaded: TrLoadedEventHandler = () => {
|
|
117
|
-
const { contain } = this;
|
|
118
|
-
const setWidth = this.trState.props.width;
|
|
119
|
-
const setHeight = this.trState.props.height;
|
|
120
|
-
const calcWidth = this.trState.textW || 0;
|
|
121
|
-
const calcHeight = this.trState.textH || 0;
|
|
122
|
-
|
|
123
|
-
if (contain === 'both') {
|
|
124
|
-
this.props.width = setWidth;
|
|
125
|
-
this.props.height = setHeight;
|
|
126
|
-
} else if (contain === 'width') {
|
|
127
|
-
this.props.width = setWidth;
|
|
128
|
-
this.props.height = calcHeight;
|
|
129
|
-
} else if (contain === 'none') {
|
|
130
|
-
this.props.width = calcWidth;
|
|
131
|
-
this.props.height = calcHeight;
|
|
132
|
-
}
|
|
133
|
-
this.updateLocalTransform();
|
|
134
|
-
|
|
135
|
-
// Incase the RAF loop has been stopped already before text was loaded,
|
|
136
|
-
// we request a render so it can be drawn.
|
|
137
|
-
this.stage.requestRender();
|
|
138
|
-
this.emit('loaded', {
|
|
139
|
-
type: 'text',
|
|
140
|
-
dimensions: {
|
|
141
|
-
width: this.trState.textW || 0,
|
|
142
|
-
height: this.trState.textH || 0,
|
|
143
|
-
},
|
|
144
|
-
} satisfies NodeTextLoadedPayload);
|
|
145
|
-
};
|
|
72
|
+
this.fontHandler = textRenderer.font;
|
|
73
|
+
this._type = textRenderer.type;
|
|
146
74
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
} satisfies NodeTextFailedPayload);
|
|
152
|
-
};
|
|
75
|
+
// Initialize text properties from props
|
|
76
|
+
// Props are guaranteed to have all defaults resolved by Stage.createTextNode
|
|
77
|
+
this.textProps = props;
|
|
78
|
+
this._containType = TextConstraint[props.contain];
|
|
153
79
|
|
|
154
|
-
|
|
155
|
-
return this.props.width;
|
|
80
|
+
this.setUpdateType(UpdateType.All);
|
|
156
81
|
}
|
|
157
82
|
|
|
158
|
-
override
|
|
159
|
-
|
|
160
|
-
|
|
83
|
+
protected override onTextureLoaded: TextureLoadedEventHandler = (
|
|
84
|
+
_,
|
|
85
|
+
dimensions,
|
|
86
|
+
) => {
|
|
87
|
+
// If parent has a render texture, flag that we need to update
|
|
88
|
+
if (USE_RTT && this.parentHasRenderTexture) {
|
|
89
|
+
this.notifyParentRTTOfUpdate();
|
|
90
|
+
}
|
|
91
|
+
// ignore 1x1 pixel textures
|
|
92
|
+
if (dimensions.w > 1 && dimensions.h > 1) {
|
|
93
|
+
this.emit('loaded', {
|
|
94
|
+
type: 'texture',
|
|
95
|
+
dimensions,
|
|
96
|
+
} satisfies NodeTextureLoadedPayload);
|
|
97
|
+
}
|
|
98
|
+
this.setUpdateType(UpdateType.IsRenderable);
|
|
99
|
+
};
|
|
161
100
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (
|
|
165
|
-
|
|
101
|
+
allowTextGeneration() {
|
|
102
|
+
const p = this.props.parent;
|
|
103
|
+
if (p === null) {
|
|
104
|
+
return false;
|
|
166
105
|
}
|
|
106
|
+
if (p.worldAlpha > 0 && p.renderState > CoreNodeRenderState.OutOfBounds) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
167
110
|
}
|
|
168
111
|
|
|
169
|
-
override
|
|
170
|
-
|
|
171
|
-
|
|
112
|
+
override updateLocalTransform() {
|
|
113
|
+
const p = this.props;
|
|
114
|
+
let { x, y, w, h } = p;
|
|
115
|
+
const mountX = p.mountX;
|
|
116
|
+
const mountY = p.mountY;
|
|
117
|
+
let mountTranslateX = p.mountX * w;
|
|
118
|
+
let mountTranslateY = p.mountY * h;
|
|
119
|
+
|
|
120
|
+
const tProps = this.textProps;
|
|
121
|
+
const { textAlign, verticalAlign, maxWidth, maxHeight } = tProps;
|
|
122
|
+
const contain = this._containType;
|
|
123
|
+
|
|
124
|
+
const hasMaxWidth = maxWidth > 0;
|
|
125
|
+
const hasMaxHeight = maxHeight > 0;
|
|
126
|
+
|
|
127
|
+
let containX = 0;
|
|
128
|
+
let containY = 0;
|
|
129
|
+
|
|
130
|
+
if (contain > 0 && (hasMaxWidth || hasMaxHeight)) {
|
|
131
|
+
if (contain & TextConstraint.width && hasMaxWidth === true) {
|
|
132
|
+
if (textAlign === 'right') {
|
|
133
|
+
containX = maxWidth - w;
|
|
134
|
+
} else if (textAlign === 'center') {
|
|
135
|
+
containX = (maxWidth - w) * 0.5;
|
|
136
|
+
}
|
|
137
|
+
mountTranslateX = mountX * maxWidth;
|
|
138
|
+
}
|
|
139
|
+
if (contain & TextConstraint.height && maxHeight > 0) {
|
|
140
|
+
if (verticalAlign === 'bottom') {
|
|
141
|
+
containY = maxHeight - h;
|
|
142
|
+
} else if (verticalAlign === 'middle') {
|
|
143
|
+
containY = (maxHeight - h) * 0.5;
|
|
144
|
+
}
|
|
145
|
+
mountTranslateY = mountY * maxHeight;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
172
148
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
149
|
+
if (p.rotation !== 0 || p.scaleX !== 1 || p.scaleY !== 1) {
|
|
150
|
+
const scaleRotate = Matrix3d.rotate(p.rotation, Matrix3d.temp).scale(
|
|
151
|
+
p.scaleX,
|
|
152
|
+
p.scaleY,
|
|
153
|
+
);
|
|
154
|
+
const pivotW =
|
|
155
|
+
contain & TextConstraint.width && maxWidth > 0 ? maxWidth : w;
|
|
156
|
+
const pivotH =
|
|
157
|
+
contain & TextConstraint.height && maxHeight > 0 ? maxHeight : h;
|
|
158
|
+
const pivotTranslateX = p.pivotX * pivotW;
|
|
159
|
+
const pivotTranslateY = p.pivotY * pivotH;
|
|
160
|
+
|
|
161
|
+
this.localTransform = Matrix3d.translate(
|
|
162
|
+
x - mountTranslateX + pivotTranslateX,
|
|
163
|
+
y - mountTranslateY + pivotTranslateY,
|
|
164
|
+
this.localTransform,
|
|
165
|
+
)
|
|
166
|
+
.multiply(scaleRotate)
|
|
167
|
+
.translate(-pivotTranslateX, -pivotTranslateY);
|
|
168
|
+
} else {
|
|
169
|
+
this.localTransform = Matrix3d.translate(
|
|
170
|
+
x - mountTranslateX,
|
|
171
|
+
y - mountTranslateY,
|
|
172
|
+
this.localTransform,
|
|
173
|
+
);
|
|
174
|
+
}
|
|
176
175
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
if (this.contain !== 'both') {
|
|
180
|
-
this.setUpdateType(UpdateType.Local);
|
|
176
|
+
if (containX !== 0 || containY !== 0) {
|
|
177
|
+
this.localTransform.translate(containX, containY);
|
|
181
178
|
}
|
|
182
179
|
}
|
|
183
180
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Override CoreNode's update method to handle text-specific updates
|
|
183
|
+
*/
|
|
184
|
+
override update(delta: number, parentClippingRect: RectWithValid): void {
|
|
185
|
+
if (
|
|
186
|
+
(this.textProps.forceLoad === true ||
|
|
187
|
+
this.allowTextGeneration() === true) &&
|
|
188
|
+
this._layoutGenerated === false
|
|
189
|
+
) {
|
|
190
|
+
if (this.fontHandler.isFontLoaded(this.textProps.fontFamily) === true) {
|
|
191
|
+
this._waitingForFont = false;
|
|
192
|
+
this._cachedLayout = null; // Invalidate cached layout
|
|
193
|
+
this._lastVertexBuffer = null; // Invalidate last vertex buffer
|
|
194
|
+
const resp = this.textRenderer.renderText(this.textProps);
|
|
195
|
+
this.handleRenderResult(resp);
|
|
196
|
+
this._layoutGenerated = true;
|
|
197
|
+
} else if (this._waitingForFont === false) {
|
|
198
|
+
this.fontHandler.waitingForFont(this.textProps.fontFamily, this);
|
|
199
|
+
this._waitingForFont = true;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
187
202
|
|
|
188
|
-
|
|
189
|
-
|
|
203
|
+
// First run the standard CoreNode update
|
|
204
|
+
super.update(delta, parentClippingRect);
|
|
190
205
|
}
|
|
191
206
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Override is renderable check for SDF text nodes
|
|
209
|
+
*/
|
|
210
|
+
override updateIsRenderable(): void {
|
|
211
|
+
// SDF text nodes are always renderable if they have a valid layout
|
|
212
|
+
if (this._type === 'canvas') {
|
|
213
|
+
super.updateIsRenderable();
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
195
216
|
|
|
196
|
-
|
|
197
|
-
this.
|
|
217
|
+
// For SDF, check if we have a cached layout
|
|
218
|
+
this.setRenderable(
|
|
219
|
+
this.checkBasicRenderability() === true && this._cachedLayout !== null,
|
|
220
|
+
);
|
|
198
221
|
}
|
|
199
222
|
|
|
200
|
-
|
|
201
|
-
|
|
223
|
+
/**
|
|
224
|
+
* Handle the result of text rendering for both Canvas and SDF renderers
|
|
225
|
+
*/
|
|
226
|
+
private handleRenderResult(result: TextRenderInfo): void {
|
|
227
|
+
// Host paths on top
|
|
228
|
+
const textRendererType = this._type;
|
|
229
|
+
let width = result.width;
|
|
230
|
+
let height = result.height;
|
|
231
|
+
|
|
232
|
+
// Handle Canvas renderer (uses ImageData)
|
|
233
|
+
if (textRendererType === 'canvas') {
|
|
234
|
+
if (result.imageData === undefined) {
|
|
235
|
+
this.emit('failed', {
|
|
236
|
+
type: 'text',
|
|
237
|
+
error: new Error(
|
|
238
|
+
'Canvas text rendering failed, no image data returned',
|
|
239
|
+
),
|
|
240
|
+
} satisfies NodeTextFailedPayload);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
this.texture = this.stage.txManager.createTexture('ImageTexture', {
|
|
245
|
+
premultiplyAlpha: true,
|
|
246
|
+
src: result.imageData as ImageData,
|
|
247
|
+
});
|
|
248
|
+
// It isn't renderable until the texture is loaded we have to set it to false here to avoid it
|
|
249
|
+
// being detected as a renderable default color node in the next frame
|
|
250
|
+
// it will be corrected once the texture is loaded
|
|
251
|
+
this.setRenderable(false);
|
|
252
|
+
|
|
253
|
+
if (this.renderState > CoreNodeRenderState.OutOfBounds) {
|
|
254
|
+
// We do want the texture to load immediately
|
|
255
|
+
this.texture.setRenderableOwner(this._id, true);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
this._cachedLayout = result.layout || null;
|
|
260
|
+
this._cachedRenderOp = null; // Invalidate cached render op
|
|
261
|
+
this.props.w = width;
|
|
262
|
+
this.props.h = height;
|
|
263
|
+
|
|
264
|
+
// Handle SDF renderer (uses layout caching)
|
|
265
|
+
if (textRendererType === 'sdf') {
|
|
266
|
+
this.setRenderable(true);
|
|
267
|
+
this.setUpdateType(UpdateType.Local);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
this._renderInfo = result;
|
|
271
|
+
this.emitTextLoadedEvent();
|
|
202
272
|
}
|
|
203
273
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
this.
|
|
274
|
+
// Reusable bound method for emitting loaded event
|
|
275
|
+
private emitTextLoadedEvent = () => {
|
|
276
|
+
this.emit('loaded', {
|
|
277
|
+
type: 'text',
|
|
278
|
+
dimensions: {
|
|
279
|
+
w: this._renderInfo.width,
|
|
280
|
+
h: this._renderInfo.height,
|
|
281
|
+
},
|
|
282
|
+
} satisfies NodeTextLoadedPayload);
|
|
283
|
+
};
|
|
207
284
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
285
|
+
/**
|
|
286
|
+
* Override renderQuads to handle SDF vs Canvas rendering
|
|
287
|
+
*/
|
|
288
|
+
override renderQuads(renderer: CoreRenderer): void {
|
|
289
|
+
if (USE_RTT && this.parentHasRenderTexture === true) {
|
|
290
|
+
const rtt = renderer.renderToTextureActive;
|
|
291
|
+
if (rtt === false || this.parentRenderTexture !== renderer.activeRttNode)
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
212
294
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
this.trState.props.fontFamily,
|
|
217
|
-
);
|
|
295
|
+
// Canvas renderer: use standard texture rendering via CoreNode
|
|
296
|
+
if (this._type === 'canvas') {
|
|
297
|
+
super.renderQuads(renderer);
|
|
218
298
|
return;
|
|
219
299
|
}
|
|
220
300
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
301
|
+
// Early return if no cached data
|
|
302
|
+
if (!this._cachedLayout) {
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
224
305
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
306
|
+
if (this._lastVertexBuffer === null) {
|
|
307
|
+
this._lastVertexBuffer = this.textRenderer.addQuads(this._cachedLayout);
|
|
308
|
+
}
|
|
228
309
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
310
|
+
const props = this.textProps;
|
|
311
|
+
if (!this._cachedRenderOp) {
|
|
312
|
+
const op = this.textRenderer.renderQuads(
|
|
313
|
+
renderer,
|
|
314
|
+
this._cachedLayout as TextLayout,
|
|
315
|
+
this._lastVertexBuffer!,
|
|
316
|
+
{
|
|
317
|
+
fontFamily: this.textProps.fontFamily,
|
|
318
|
+
fontSize: props.fontSize,
|
|
319
|
+
color: this.props.color || 0xffffffff,
|
|
320
|
+
offsetY: props.offsetY,
|
|
321
|
+
worldAlpha: this.worldAlpha,
|
|
322
|
+
globalTransform: this.globalTransform!.getFloatArr(),
|
|
323
|
+
clippingRect: this.clippingRect,
|
|
324
|
+
width: this.props.w,
|
|
325
|
+
height: this.props.h,
|
|
326
|
+
parentHasRenderTexture: USE_RTT && this.parentHasRenderTexture,
|
|
327
|
+
framebufferDimensions:
|
|
328
|
+
USE_RTT && this.parentHasRenderTexture === true
|
|
329
|
+
? this.parentFramebufferDimensions
|
|
330
|
+
: null,
|
|
331
|
+
stage: this.stage,
|
|
332
|
+
},
|
|
333
|
+
);
|
|
334
|
+
if (op !== null && op !== undefined) {
|
|
335
|
+
this._cachedRenderOp = op;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
232
338
|
|
|
233
|
-
|
|
234
|
-
|
|
339
|
+
if (this._cachedRenderOp) {
|
|
340
|
+
// Update dynamic properties
|
|
341
|
+
this._cachedRenderOp.worldAlpha = this.worldAlpha;
|
|
342
|
+
(this._cachedRenderOp.clippingRect as unknown) = this.clippingRect;
|
|
343
|
+
this._cachedRenderOp.sdfShaderProps.color = mergeColorAlpha(
|
|
344
|
+
this.props.color || 0xffffffff,
|
|
345
|
+
this.worldAlpha,
|
|
346
|
+
);
|
|
347
|
+
this._cachedRenderOp.sdfShaderProps.transform =
|
|
348
|
+
this.globalTransform!.getFloatArr();
|
|
349
|
+
this.globalTransform!.getFloatArr();
|
|
350
|
+
this._cachedRenderOp.parentHasRenderTexture =
|
|
351
|
+
USE_RTT && this.parentHasRenderTexture;
|
|
352
|
+
this._cachedRenderOp.framebufferDimensions =
|
|
353
|
+
USE_RTT && this.parentHasRenderTexture === true
|
|
354
|
+
? this.parentFramebufferDimensions
|
|
355
|
+
: null;
|
|
356
|
+
|
|
357
|
+
(renderer as WebGlRenderer).addRenderOp(this._cachedRenderOp);
|
|
358
|
+
}
|
|
235
359
|
}
|
|
236
360
|
|
|
237
|
-
|
|
238
|
-
this.
|
|
239
|
-
|
|
361
|
+
override destroy(isChild: boolean = false): void {
|
|
362
|
+
if (this._waitingForFont === true && this.fontHandler) {
|
|
363
|
+
this.fontHandler.stopWaitingForFont(this.textProps.fontFamily, this);
|
|
364
|
+
}
|
|
240
365
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
366
|
+
// Clear cached layout and vertex buffer
|
|
367
|
+
this._cachedLayout = null;
|
|
368
|
+
this._lastVertexBuffer = null;
|
|
369
|
+
this._cachedRenderOp = null;
|
|
244
370
|
|
|
245
|
-
|
|
246
|
-
this.textRenderer
|
|
247
|
-
}
|
|
371
|
+
this.fontHandler = null!; // Clear reference to avoid memory leaks
|
|
372
|
+
this.textRenderer = null!; // Clear reference to avoid memory leaks
|
|
248
373
|
|
|
249
|
-
|
|
250
|
-
return this.trState.props.fontStyle;
|
|
374
|
+
super.destroy(isChild);
|
|
251
375
|
}
|
|
252
376
|
|
|
253
|
-
set
|
|
254
|
-
this.
|
|
377
|
+
override set w(value: number) {
|
|
378
|
+
this.maxWidth = value;
|
|
255
379
|
}
|
|
256
380
|
|
|
257
|
-
get
|
|
258
|
-
return this.
|
|
381
|
+
override get w(): number {
|
|
382
|
+
return this.props.w;
|
|
259
383
|
}
|
|
260
384
|
|
|
261
|
-
set
|
|
262
|
-
this.
|
|
385
|
+
override set h(value: number) {
|
|
386
|
+
this.maxHeight = value;
|
|
263
387
|
}
|
|
264
388
|
|
|
265
|
-
get
|
|
266
|
-
return this.
|
|
389
|
+
override get h(): number {
|
|
390
|
+
return this.props.h;
|
|
267
391
|
}
|
|
268
392
|
|
|
269
|
-
|
|
270
|
-
this.
|
|
393
|
+
get maxWidth() {
|
|
394
|
+
return this.textProps.maxWidth;
|
|
271
395
|
}
|
|
272
396
|
|
|
273
|
-
|
|
274
|
-
|
|
397
|
+
set maxWidth(value: number) {
|
|
398
|
+
if (this.textProps.maxWidth !== value) {
|
|
399
|
+
this.textProps.maxWidth = value;
|
|
400
|
+
this._layoutGenerated = false;
|
|
401
|
+
this.setUpdateType(UpdateType.Local);
|
|
402
|
+
}
|
|
275
403
|
}
|
|
276
404
|
|
|
277
|
-
|
|
278
|
-
|
|
405
|
+
// Property getters and setters
|
|
406
|
+
get maxHeight() {
|
|
407
|
+
return this.textProps.maxHeight;
|
|
279
408
|
}
|
|
280
409
|
|
|
281
|
-
|
|
282
|
-
|
|
410
|
+
set maxHeight(value: number) {
|
|
411
|
+
if (this.textProps.maxHeight !== value) {
|
|
412
|
+
this.textProps.maxHeight = value;
|
|
413
|
+
this._layoutGenerated = false;
|
|
414
|
+
this.setUpdateType(UpdateType.Local);
|
|
415
|
+
}
|
|
283
416
|
}
|
|
284
417
|
|
|
285
|
-
|
|
286
|
-
this.
|
|
418
|
+
get contain(): TrProps['contain'] {
|
|
419
|
+
return this.textProps.contain;
|
|
287
420
|
}
|
|
288
421
|
|
|
289
|
-
|
|
290
|
-
|
|
422
|
+
set contain(value: TrProps['contain']) {
|
|
423
|
+
if (this.textProps.contain !== value) {
|
|
424
|
+
this.textProps.contain = value;
|
|
425
|
+
this._containType = TextConstraint[value];
|
|
426
|
+
this.setUpdateType(UpdateType.Local);
|
|
427
|
+
}
|
|
291
428
|
}
|
|
292
429
|
|
|
293
|
-
|
|
294
|
-
this.
|
|
430
|
+
get text(): string {
|
|
431
|
+
return this.textProps.text;
|
|
295
432
|
}
|
|
296
433
|
|
|
297
|
-
|
|
298
|
-
|
|
434
|
+
set text(value: string) {
|
|
435
|
+
if (this.textProps.text !== value) {
|
|
436
|
+
this.textProps.text = value;
|
|
437
|
+
this._layoutGenerated = false;
|
|
438
|
+
this.setUpdateType(UpdateType.Local);
|
|
439
|
+
}
|
|
299
440
|
}
|
|
300
441
|
|
|
301
|
-
|
|
302
|
-
this.
|
|
442
|
+
get fontSize(): number {
|
|
443
|
+
return this.textProps.fontSize;
|
|
303
444
|
}
|
|
304
445
|
|
|
305
|
-
|
|
306
|
-
|
|
446
|
+
set fontSize(value: number) {
|
|
447
|
+
if (this.textProps.fontSize !== value) {
|
|
448
|
+
this.textProps.fontSize = value;
|
|
449
|
+
this._layoutGenerated = false;
|
|
450
|
+
this.setUpdateType(UpdateType.Local);
|
|
451
|
+
}
|
|
307
452
|
}
|
|
308
453
|
|
|
309
|
-
|
|
310
|
-
this.
|
|
454
|
+
get fontFamily(): string {
|
|
455
|
+
return this.textProps.fontFamily;
|
|
311
456
|
}
|
|
312
457
|
|
|
313
|
-
|
|
314
|
-
|
|
458
|
+
set fontFamily(value: string) {
|
|
459
|
+
if (this.textProps.fontFamily !== value) {
|
|
460
|
+
if (this._waitingForFont === true) {
|
|
461
|
+
this.fontHandler.stopWaitingForFont(this.textProps.fontFamily, this);
|
|
462
|
+
}
|
|
463
|
+
this.textProps.fontFamily = value;
|
|
464
|
+
this._layoutGenerated = false;
|
|
465
|
+
this.setUpdateType(UpdateType.Local);
|
|
466
|
+
}
|
|
315
467
|
}
|
|
316
468
|
|
|
317
|
-
|
|
318
|
-
this.
|
|
469
|
+
get fontStyle(): TrProps['fontStyle'] {
|
|
470
|
+
return this.textProps.fontStyle;
|
|
319
471
|
}
|
|
320
472
|
|
|
321
|
-
|
|
322
|
-
|
|
473
|
+
set fontStyle(value: TrProps['fontStyle']) {
|
|
474
|
+
if (this.textProps.fontStyle !== value) {
|
|
475
|
+
this.textProps.fontStyle = value;
|
|
476
|
+
this._layoutGenerated = false;
|
|
477
|
+
this.setUpdateType(UpdateType.Local);
|
|
478
|
+
}
|
|
323
479
|
}
|
|
324
480
|
|
|
325
|
-
|
|
326
|
-
this.
|
|
481
|
+
get textAlign(): TrProps['textAlign'] {
|
|
482
|
+
return this.textProps.textAlign;
|
|
327
483
|
}
|
|
328
484
|
|
|
329
|
-
|
|
330
|
-
|
|
485
|
+
set textAlign(value: TrProps['textAlign']) {
|
|
486
|
+
if (this.textProps.textAlign !== value) {
|
|
487
|
+
this.textProps.textAlign = value;
|
|
488
|
+
this._layoutGenerated = false;
|
|
489
|
+
this.setUpdateType(UpdateType.Local);
|
|
490
|
+
}
|
|
331
491
|
}
|
|
332
492
|
|
|
333
|
-
|
|
334
|
-
this.
|
|
493
|
+
get letterSpacing(): number {
|
|
494
|
+
return this.textProps.letterSpacing;
|
|
335
495
|
}
|
|
336
496
|
|
|
337
|
-
|
|
338
|
-
|
|
497
|
+
set letterSpacing(value: number) {
|
|
498
|
+
if (this.textProps.letterSpacing !== value) {
|
|
499
|
+
this.textProps.letterSpacing = value;
|
|
500
|
+
this._layoutGenerated = false;
|
|
501
|
+
this.setUpdateType(UpdateType.Local);
|
|
502
|
+
}
|
|
339
503
|
}
|
|
340
504
|
|
|
341
|
-
|
|
342
|
-
this.
|
|
505
|
+
get lineHeight(): number {
|
|
506
|
+
return this.textProps.lineHeight;
|
|
343
507
|
}
|
|
344
508
|
|
|
345
|
-
|
|
346
|
-
|
|
509
|
+
set lineHeight(value: number) {
|
|
510
|
+
if (this.textProps.lineHeight !== value) {
|
|
511
|
+
this.textProps.lineHeight = value;
|
|
512
|
+
this._layoutGenerated = false;
|
|
513
|
+
this.setUpdateType(UpdateType.Local);
|
|
514
|
+
}
|
|
347
515
|
}
|
|
348
516
|
|
|
349
|
-
|
|
350
|
-
this.
|
|
517
|
+
get maxLines(): number {
|
|
518
|
+
return this.textProps.maxLines;
|
|
351
519
|
}
|
|
352
520
|
|
|
353
|
-
|
|
354
|
-
|
|
521
|
+
set maxLines(value: number) {
|
|
522
|
+
if (this.textProps.maxLines !== value) {
|
|
523
|
+
this.textProps.maxLines = value;
|
|
524
|
+
this._layoutGenerated = false;
|
|
525
|
+
this.setUpdateType(UpdateType.Local);
|
|
526
|
+
}
|
|
355
527
|
}
|
|
356
528
|
|
|
357
|
-
|
|
358
|
-
this.
|
|
529
|
+
get verticalAlign(): TrProps['verticalAlign'] {
|
|
530
|
+
return this.textProps.verticalAlign;
|
|
359
531
|
}
|
|
360
532
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
this.textRenderer.set.x(this.trState, this.globalTransform.tx);
|
|
368
|
-
this.textRenderer.set.y(this.trState, this.globalTransform.ty);
|
|
533
|
+
set verticalAlign(value: TrProps['verticalAlign']) {
|
|
534
|
+
if (this.textProps.verticalAlign !== value) {
|
|
535
|
+
this.textProps.verticalAlign = value;
|
|
536
|
+
this._layoutGenerated = false;
|
|
537
|
+
this.setUpdateType(UpdateType.Local);
|
|
538
|
+
}
|
|
369
539
|
}
|
|
370
540
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
541
|
+
get overflowSuffix(): string {
|
|
542
|
+
return this.textProps.overflowSuffix;
|
|
543
|
+
}
|
|
375
544
|
|
|
376
|
-
|
|
377
|
-
|
|
545
|
+
set overflowSuffix(value: string) {
|
|
546
|
+
if (this.textProps.overflowSuffix !== value) {
|
|
547
|
+
this.textProps.overflowSuffix = value;
|
|
548
|
+
this._layoutGenerated = false;
|
|
549
|
+
this.setUpdateType(UpdateType.Local);
|
|
378
550
|
}
|
|
379
|
-
|
|
380
|
-
return false;
|
|
381
551
|
}
|
|
382
552
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
this.textRenderer.setIsRenderable(this.trState, isRenderable);
|
|
553
|
+
get wordBreak(): TrProps['wordBreak'] {
|
|
554
|
+
return this.textProps.wordBreak;
|
|
386
555
|
}
|
|
387
556
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
if (!this.textRenderer.renderQuads) {
|
|
394
|
-
super.renderQuads(renderer);
|
|
395
|
-
return;
|
|
557
|
+
set wordBreak(value: TrProps['wordBreak']) {
|
|
558
|
+
if (this.textProps.wordBreak !== value) {
|
|
559
|
+
this.textProps.wordBreak = value;
|
|
560
|
+
this._layoutGenerated = false;
|
|
561
|
+
this.setUpdateType(UpdateType.Local);
|
|
396
562
|
}
|
|
563
|
+
}
|
|
397
564
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
// and this node is not the render texture
|
|
402
|
-
if (this.parentHasRenderTexture) {
|
|
403
|
-
if (!renderer.renderToTextureActive) {
|
|
404
|
-
return;
|
|
405
|
-
}
|
|
406
|
-
// Prevent quad rendering if parent render texture is not the active render texture
|
|
407
|
-
if (this.parentRenderTexture !== renderer.activeRttNode) {
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
565
|
+
get offsetY(): number {
|
|
566
|
+
return this.textProps.offsetY;
|
|
567
|
+
}
|
|
411
568
|
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
569
|
+
set offsetY(value: number) {
|
|
570
|
+
if (this.textProps.offsetY !== value) {
|
|
571
|
+
this.textProps.offsetY = value;
|
|
572
|
+
this._layoutGenerated = false;
|
|
573
|
+
this.setUpdateType(UpdateType.Local);
|
|
417
574
|
}
|
|
418
|
-
|
|
419
|
-
assertTruthy(this.globalTransform);
|
|
420
|
-
|
|
421
|
-
this.textRenderer.renderQuads(this);
|
|
422
575
|
}
|
|
423
576
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
*/
|
|
427
|
-
override destroy(): void {
|
|
428
|
-
super.destroy();
|
|
429
|
-
|
|
430
|
-
this.textRenderer.destroyState(this.trState);
|
|
577
|
+
get forceLoad() {
|
|
578
|
+
return this.textProps.forceLoad;
|
|
431
579
|
}
|
|
432
580
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
const textRendererState = this.textRenderer.createState(props, this);
|
|
440
|
-
|
|
441
|
-
textRendererState.emitter.on('loaded', this.onTextLoaded);
|
|
442
|
-
textRendererState.emitter.on('failed', this.onTextFailed);
|
|
443
|
-
|
|
444
|
-
this.textRenderer.scheduleUpdateState(textRendererState);
|
|
581
|
+
set forceLoad(value: boolean) {
|
|
582
|
+
if (this.textProps.forceLoad !== value) {
|
|
583
|
+
this.textProps.forceLoad = value;
|
|
584
|
+
this.setUpdateType(UpdateType.Local);
|
|
585
|
+
}
|
|
586
|
+
}
|
|
445
587
|
|
|
446
|
-
|
|
588
|
+
get renderInfo(): TextRenderInfo {
|
|
589
|
+
return this._renderInfo;
|
|
447
590
|
}
|
|
448
591
|
}
|