@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
|
@@ -1,29 +1,12 @@
|
|
|
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 { describe, expect, it, vi } from 'vitest';
|
|
21
2
|
import { CoreNode, type CoreNodeProps, UpdateType } from './CoreNode.js';
|
|
22
3
|
import { Stage } from './Stage.js';
|
|
4
|
+
import { CoreRenderer } from './renderers/CoreRenderer.js';
|
|
23
5
|
import { mock } from 'vitest-mock-extended';
|
|
24
6
|
import { type TextureOptions } from './CoreTextureManager.js';
|
|
25
7
|
import { createBound } from './lib/utils.js';
|
|
26
8
|
import { ImageTexture } from './textures/ImageTexture.js';
|
|
9
|
+
import { Matrix3d } from './lib/Matrix3d.js';
|
|
27
10
|
|
|
28
11
|
describe('set color()', () => {
|
|
29
12
|
const defaultProps: CoreNodeProps = {
|
|
@@ -40,7 +23,7 @@ describe('set color()', () => {
|
|
|
40
23
|
colorTl: 0,
|
|
41
24
|
colorTop: 0,
|
|
42
25
|
colorTr: 0,
|
|
43
|
-
|
|
26
|
+
h: 0,
|
|
44
27
|
mount: 0,
|
|
45
28
|
mountX: 0,
|
|
46
29
|
mountY: 0,
|
|
@@ -50,20 +33,17 @@ describe('set color()', () => {
|
|
|
50
33
|
pivotY: 0,
|
|
51
34
|
rotation: 0,
|
|
52
35
|
rtt: false,
|
|
53
|
-
scale:
|
|
54
|
-
scaleX:
|
|
55
|
-
scaleY:
|
|
36
|
+
scale: 1,
|
|
37
|
+
scaleX: 1,
|
|
38
|
+
scaleY: 1,
|
|
56
39
|
shader: null,
|
|
57
40
|
src: '',
|
|
58
41
|
texture: null,
|
|
59
42
|
textureOptions: {} as TextureOptions,
|
|
60
|
-
|
|
43
|
+
w: 0,
|
|
61
44
|
x: 0,
|
|
62
45
|
y: 0,
|
|
63
46
|
zIndex: 0,
|
|
64
|
-
zIndexLocked: 0,
|
|
65
|
-
preventCleanup: false,
|
|
66
|
-
strictBounds: false,
|
|
67
47
|
};
|
|
68
48
|
|
|
69
49
|
const clippingRect = {
|
|
@@ -80,6 +60,7 @@ describe('set color()', () => {
|
|
|
80
60
|
defaultTexture: {
|
|
81
61
|
state: 'loaded',
|
|
82
62
|
},
|
|
63
|
+
renderer: mock<CoreRenderer>() as CoreRenderer,
|
|
83
64
|
});
|
|
84
65
|
|
|
85
66
|
describe('set color()', () => {
|
|
@@ -107,11 +88,11 @@ describe('set color()', () => {
|
|
|
107
88
|
it('should set update type.', () => {
|
|
108
89
|
const node = new CoreNode(stage, defaultProps);
|
|
109
90
|
node.updateType = 0;
|
|
110
|
-
|
|
111
|
-
node.color = 0xffffffff;
|
|
112
91
|
node.color = 0xffffffff;
|
|
113
92
|
|
|
114
|
-
expect(node.updateType).toBe(
|
|
93
|
+
expect(node.updateType).toBe(
|
|
94
|
+
UpdateType.PremultipliedColors | UpdateType.IsRenderable,
|
|
95
|
+
);
|
|
115
96
|
});
|
|
116
97
|
});
|
|
117
98
|
|
|
@@ -122,12 +103,17 @@ describe('set color()', () => {
|
|
|
122
103
|
});
|
|
123
104
|
|
|
124
105
|
it('visible node that is a color texture', () => {
|
|
125
|
-
const
|
|
106
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
107
|
+
// Manually set parent properties that update() might read
|
|
108
|
+
parent.globalTransform = Matrix3d.identity();
|
|
109
|
+
parent.worldAlpha = 1;
|
|
110
|
+
|
|
111
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
126
112
|
node.alpha = 1;
|
|
127
113
|
node.x = 0;
|
|
128
114
|
node.y = 0;
|
|
129
|
-
node.
|
|
130
|
-
node.
|
|
115
|
+
node.w = 100;
|
|
116
|
+
node.h = 100;
|
|
131
117
|
node.color = 0xffffffff;
|
|
132
118
|
|
|
133
119
|
node.update(0, clippingRect);
|
|
@@ -135,12 +121,16 @@ describe('set color()', () => {
|
|
|
135
121
|
});
|
|
136
122
|
|
|
137
123
|
it('visible node that is a texture', () => {
|
|
138
|
-
const
|
|
124
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
125
|
+
parent.globalTransform = Matrix3d.identity();
|
|
126
|
+
parent.worldAlpha = 1;
|
|
127
|
+
|
|
128
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
139
129
|
node.alpha = 1;
|
|
140
130
|
node.x = 0;
|
|
141
131
|
node.y = 0;
|
|
142
|
-
node.
|
|
143
|
-
node.
|
|
132
|
+
node.w = 100;
|
|
133
|
+
node.h = 100;
|
|
144
134
|
node.texture = mock<ImageTexture>({
|
|
145
135
|
state: 'initial',
|
|
146
136
|
});
|
|
@@ -149,6 +139,7 @@ describe('set color()', () => {
|
|
|
149
139
|
expect(node.isRenderable).toBe(false);
|
|
150
140
|
|
|
151
141
|
node.texture.state = 'loaded';
|
|
142
|
+
node.textureLoaded = true;
|
|
152
143
|
node.setUpdateType(UpdateType.IsRenderable);
|
|
153
144
|
node.update(1, clippingRect);
|
|
154
145
|
|
|
@@ -156,27 +147,37 @@ describe('set color()', () => {
|
|
|
156
147
|
});
|
|
157
148
|
|
|
158
149
|
it('a node with a texture with alpha 0 should not be renderable', () => {
|
|
159
|
-
const
|
|
150
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
151
|
+
parent.globalTransform = Matrix3d.identity();
|
|
152
|
+
parent.worldAlpha = 1;
|
|
153
|
+
|
|
154
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
155
|
+
expect(node.isRenderable).toBe(false);
|
|
160
156
|
node.alpha = 0;
|
|
161
157
|
node.x = 0;
|
|
162
158
|
node.y = 0;
|
|
163
|
-
node.
|
|
164
|
-
node.
|
|
159
|
+
node.w = 100;
|
|
160
|
+
node.h = 100;
|
|
165
161
|
node.texture = mock<ImageTexture>({
|
|
166
162
|
state: 'loaded',
|
|
167
163
|
});
|
|
164
|
+
node.textureLoaded = true;
|
|
168
165
|
|
|
169
166
|
node.update(0, clippingRect);
|
|
170
167
|
expect(node.isRenderable).toBe(false);
|
|
171
168
|
});
|
|
172
169
|
|
|
173
170
|
it('a node with a texture that is OutOfBounds should not be renderable', () => {
|
|
174
|
-
const
|
|
171
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
172
|
+
parent.globalTransform = Matrix3d.identity();
|
|
173
|
+
parent.worldAlpha = 1;
|
|
174
|
+
|
|
175
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
175
176
|
node.alpha = 1;
|
|
176
177
|
node.x = 300;
|
|
177
178
|
node.y = 300;
|
|
178
|
-
node.
|
|
179
|
-
node.
|
|
179
|
+
node.w = 100;
|
|
180
|
+
node.h = 100;
|
|
180
181
|
node.texture = mock<ImageTexture>({
|
|
181
182
|
state: 'loaded',
|
|
182
183
|
});
|
|
@@ -186,12 +187,16 @@ describe('set color()', () => {
|
|
|
186
187
|
});
|
|
187
188
|
|
|
188
189
|
it('a node with a freed texture should not be renderable', () => {
|
|
189
|
-
const
|
|
190
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
191
|
+
parent.globalTransform = Matrix3d.identity();
|
|
192
|
+
parent.worldAlpha = 1;
|
|
193
|
+
|
|
194
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
190
195
|
node.alpha = 1;
|
|
191
196
|
node.x = 0;
|
|
192
197
|
node.y = 0;
|
|
193
|
-
node.
|
|
194
|
-
node.
|
|
198
|
+
node.w = 100;
|
|
199
|
+
node.h = 100;
|
|
195
200
|
node.texture = mock<ImageTexture>({
|
|
196
201
|
state: 'freed',
|
|
197
202
|
});
|
|
@@ -199,5 +204,331 @@ describe('set color()', () => {
|
|
|
199
204
|
node.update(0, clippingRect);
|
|
200
205
|
expect(node.isRenderable).toBe(false);
|
|
201
206
|
});
|
|
207
|
+
|
|
208
|
+
it('should emit renderable event when isRenderable status changes', () => {
|
|
209
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
210
|
+
parent.globalTransform = Matrix3d.identity();
|
|
211
|
+
parent.worldAlpha = 1;
|
|
212
|
+
|
|
213
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
214
|
+
const eventCallback = vi.fn();
|
|
215
|
+
|
|
216
|
+
// Listen for the renderableChanged event
|
|
217
|
+
node.on('renderable', eventCallback);
|
|
218
|
+
|
|
219
|
+
// Set up node as a color texture that should be renderable
|
|
220
|
+
node.alpha = 1;
|
|
221
|
+
node.x = 0;
|
|
222
|
+
node.y = 0;
|
|
223
|
+
node.w = 100;
|
|
224
|
+
node.h = 100;
|
|
225
|
+
node.color = 0xffffffff;
|
|
226
|
+
|
|
227
|
+
// Initial state should be false
|
|
228
|
+
expect(node.isRenderable).toBe(false);
|
|
229
|
+
expect(eventCallback).not.toHaveBeenCalled();
|
|
230
|
+
|
|
231
|
+
// Update should make it renderable (false -> true)
|
|
232
|
+
node.update(0, clippingRect);
|
|
233
|
+
expect(node.isRenderable).toBe(true);
|
|
234
|
+
expect(eventCallback).toHaveBeenCalledWith(node, {
|
|
235
|
+
type: 'renderable',
|
|
236
|
+
isRenderable: true,
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Reset the mock
|
|
240
|
+
eventCallback.mockClear();
|
|
241
|
+
|
|
242
|
+
// Make node invisible (alpha = 0) to make it not renderable (true -> false)
|
|
243
|
+
node.alpha = 0;
|
|
244
|
+
node.update(1, clippingRect);
|
|
245
|
+
expect(node.isRenderable).toBe(false);
|
|
246
|
+
expect(eventCallback).toHaveBeenCalledWith(node, {
|
|
247
|
+
type: 'renderable',
|
|
248
|
+
isRenderable: false,
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// Reset the mock again
|
|
252
|
+
eventCallback.mockClear();
|
|
253
|
+
|
|
254
|
+
// Setting same value shouldn't trigger event
|
|
255
|
+
node.alpha = 0;
|
|
256
|
+
node.update(2, clippingRect);
|
|
257
|
+
expect(node.isRenderable).toBe(false);
|
|
258
|
+
expect(eventCallback).not.toHaveBeenCalled();
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
describe('autosize system', () => {
|
|
263
|
+
it('should initialize with autosize disabled', () => {
|
|
264
|
+
const node = new CoreNode(stage, defaultProps);
|
|
265
|
+
expect(node.autosize).toBe(false);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
it('should enable texture autosize when texture is present', () => {
|
|
269
|
+
const node = new CoreNode(stage, defaultProps);
|
|
270
|
+
const mockTexture = mock<ImageTexture>();
|
|
271
|
+
mockTexture.state = 'loading';
|
|
272
|
+
|
|
273
|
+
node.texture = mockTexture;
|
|
274
|
+
node.autosize = true;
|
|
275
|
+
|
|
276
|
+
// Should not create autosize manager for texture mode
|
|
277
|
+
expect((node as any).autosizer).toBeTruthy();
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it('should enable children autosize when no texture but has children', () => {
|
|
281
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
282
|
+
const child = new CoreNode(stage, defaultProps);
|
|
283
|
+
|
|
284
|
+
parent.autosize = true;
|
|
285
|
+
child.parent = parent;
|
|
286
|
+
|
|
287
|
+
// Should create autosize manager for children mode
|
|
288
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it('should prioritize texture autosize over children autosize', () => {
|
|
292
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
293
|
+
const child = new CoreNode(stage, defaultProps);
|
|
294
|
+
const mockTexture = mock<ImageTexture>();
|
|
295
|
+
mockTexture.state = 'loading';
|
|
296
|
+
|
|
297
|
+
child.parent = parent;
|
|
298
|
+
parent.texture = mockTexture;
|
|
299
|
+
parent.autosize = true;
|
|
300
|
+
|
|
301
|
+
expect(parent.autosize).toBe(true);
|
|
302
|
+
// Should NOT create autosize manager when texture is present
|
|
303
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
it('should switch from children to texture autosize when texture is added', () => {
|
|
307
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
308
|
+
const child = new CoreNode(stage, defaultProps);
|
|
309
|
+
|
|
310
|
+
child.parent = parent;
|
|
311
|
+
parent.autosize = true;
|
|
312
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
313
|
+
|
|
314
|
+
// Add texture - should switch to texture autosize
|
|
315
|
+
const mockTexture = mock<ImageTexture>();
|
|
316
|
+
mockTexture.state = 'loading';
|
|
317
|
+
parent.texture = mockTexture;
|
|
318
|
+
|
|
319
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
it('should switch from texture to children autosize when texture is removed', () => {
|
|
323
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
324
|
+
const child = new CoreNode(stage, defaultProps);
|
|
325
|
+
const mockTexture = mock<ImageTexture>();
|
|
326
|
+
mockTexture.state = 'loading';
|
|
327
|
+
|
|
328
|
+
child.parent = parent;
|
|
329
|
+
parent.texture = mockTexture;
|
|
330
|
+
parent.autosize = true;
|
|
331
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
332
|
+
|
|
333
|
+
// Remove texture - should switch to children autosize
|
|
334
|
+
parent.texture = null;
|
|
335
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
it('should cleanup autosize manager when disabled', () => {
|
|
339
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
340
|
+
const child = new CoreNode(stage, defaultProps);
|
|
341
|
+
|
|
342
|
+
child.parent = parent;
|
|
343
|
+
parent.autosize = true;
|
|
344
|
+
expect((parent as any).autosizer).toBeTruthy();
|
|
345
|
+
|
|
346
|
+
parent.autosize = false;
|
|
347
|
+
expect((parent as any).autosizer).toBeFalsy();
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
it('should establish autosize chain when child is added to autosize parent', () => {
|
|
351
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
352
|
+
const child = new CoreNode(stage, defaultProps);
|
|
353
|
+
|
|
354
|
+
// Enable autosize BEFORE adding child
|
|
355
|
+
parent.autosize = true;
|
|
356
|
+
child.parent = parent;
|
|
357
|
+
|
|
358
|
+
expect((child as any).parentAutosizer).toBe(parent.autosizer);
|
|
359
|
+
expect((parent as any).autosizer.childMap.size).toBe(1);
|
|
360
|
+
});
|
|
361
|
+
|
|
362
|
+
it('should remove from autosize chain when child is removed', () => {
|
|
363
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
364
|
+
const child = new CoreNode(stage, defaultProps);
|
|
365
|
+
|
|
366
|
+
// Enable autosize BEFORE adding child
|
|
367
|
+
parent.autosize = true;
|
|
368
|
+
child.parent = parent;
|
|
369
|
+
expect((parent as any).autosizer.childMap.size).toBe(1);
|
|
370
|
+
|
|
371
|
+
child.parent = null;
|
|
372
|
+
expect((child as any).parentAutosizer).toBeNull();
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
|
|
376
|
+
describe('isSimple optimization', () => {
|
|
377
|
+
it('should be simple by default', () => {
|
|
378
|
+
const node = new CoreNode(stage, defaultProps);
|
|
379
|
+
expect(node.isSimple).toBe(true);
|
|
380
|
+
});
|
|
381
|
+
|
|
382
|
+
it('should not be simple if rotated', () => {
|
|
383
|
+
const node = new CoreNode(stage, defaultProps);
|
|
384
|
+
node.rotation = 0.1;
|
|
385
|
+
expect(node.isSimple).toBe(false);
|
|
386
|
+
node.rotation = 0;
|
|
387
|
+
expect(node.isSimple).toBe(true);
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
it('should not be simple if scaled', () => {
|
|
391
|
+
const node = new CoreNode(stage, defaultProps);
|
|
392
|
+
node.scale = 1.1;
|
|
393
|
+
expect(node.isSimple).toBe(false);
|
|
394
|
+
node.scale = 1;
|
|
395
|
+
expect(node.isSimple).toBe(true);
|
|
396
|
+
|
|
397
|
+
node.scaleX = 1.1;
|
|
398
|
+
expect(node.isSimple).toBe(false);
|
|
399
|
+
node.scaleX = 1;
|
|
400
|
+
expect(node.isSimple).toBe(true);
|
|
401
|
+
|
|
402
|
+
node.scaleY = 1.1;
|
|
403
|
+
expect(node.isSimple).toBe(false);
|
|
404
|
+
node.scaleY = 1;
|
|
405
|
+
expect(node.isSimple).toBe(true);
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
it('should not be simple if mounted', () => {
|
|
409
|
+
const node = new CoreNode(stage, defaultProps);
|
|
410
|
+
node.mount = 0.5;
|
|
411
|
+
expect(node.isSimple).toBe(false);
|
|
412
|
+
node.mount = 0;
|
|
413
|
+
expect(node.isSimple).toBe(true);
|
|
414
|
+
|
|
415
|
+
node.mountX = 0.5;
|
|
416
|
+
expect(node.isSimple).toBe(false);
|
|
417
|
+
node.mountX = 0;
|
|
418
|
+
expect(node.isSimple).toBe(true);
|
|
419
|
+
|
|
420
|
+
node.mountY = 0.5;
|
|
421
|
+
expect(node.isSimple).toBe(false);
|
|
422
|
+
node.mountY = 0;
|
|
423
|
+
expect(node.isSimple).toBe(true);
|
|
424
|
+
});
|
|
425
|
+
|
|
426
|
+
it('should not be simple if texture is contained', () => {
|
|
427
|
+
const node = new CoreNode(stage, defaultProps);
|
|
428
|
+
const mockTexture = mock<ImageTexture>({
|
|
429
|
+
state: 'loaded',
|
|
430
|
+
dimensions: { w: 100, h: 100 },
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
node.texture = mockTexture;
|
|
434
|
+
expect(node.isSimple).toBe(true); // Default resizeMode is not contained
|
|
435
|
+
|
|
436
|
+
node.textureOptions = { resizeMode: { type: 'contain' } };
|
|
437
|
+
expect(node.isSimple).toBe(false);
|
|
438
|
+
|
|
439
|
+
node.textureOptions = { resizeMode: { type: 'cover' } };
|
|
440
|
+
expect(node.isSimple).toBe(true);
|
|
441
|
+
});
|
|
442
|
+
|
|
443
|
+
it('should update local transform correctly when simple', () => {
|
|
444
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
445
|
+
parent.globalTransform = Matrix3d.identity();
|
|
446
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
447
|
+
node.x = 100;
|
|
448
|
+
node.y = 50;
|
|
449
|
+
node.props.w = 50;
|
|
450
|
+
node.props.h = 50;
|
|
451
|
+
node.update(0, clippingRect);
|
|
452
|
+
|
|
453
|
+
expect(node.localTransform!.tx).toBe(100);
|
|
454
|
+
expect(node.localTransform!.ty).toBe(50);
|
|
455
|
+
expect(node.localTransform!.ta).toBe(1);
|
|
456
|
+
expect(node.localTransform!.td).toBe(1);
|
|
457
|
+
expect(node.isSimple).toBe(true);
|
|
458
|
+
});
|
|
459
|
+
|
|
460
|
+
it('should update local transform correctly when not simple (rotation)', () => {
|
|
461
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
462
|
+
parent.globalTransform = Matrix3d.identity();
|
|
463
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
464
|
+
node.x = 100;
|
|
465
|
+
node.y = 50;
|
|
466
|
+
node.props.w = 100; // use props.w directly to avoid trigger setters if exist (though setters exist)
|
|
467
|
+
node.props.h = 100;
|
|
468
|
+
node.pivot = 0.5;
|
|
469
|
+
node.rotation = Math.PI / 2; // 90 degrees
|
|
470
|
+
node.update(0, clippingRect);
|
|
471
|
+
|
|
472
|
+
// Expected: 90 deg rotation around center (50,50) relative to (100,50)
|
|
473
|
+
// Center of node is at (100+50, 50+50) = (150, 100) if mount is 0.
|
|
474
|
+
// Rotation happens closely to how matrix works.
|
|
475
|
+
// Just verifying tx/ty are not just x/y
|
|
476
|
+
expect(node.localTransform!.tx).toBe(200);
|
|
477
|
+
expect(node.localTransform!.ty).toBe(50);
|
|
478
|
+
expect(node.isSimple).toBe(false);
|
|
479
|
+
});
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
describe('isSimple Global Transform', () => {
|
|
483
|
+
it('should calculate global transform correctly when simple', () => {
|
|
484
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
485
|
+
parent.globalTransform = Matrix3d.translate(10, 20);
|
|
486
|
+
|
|
487
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
488
|
+
node.x = 100;
|
|
489
|
+
node.y = 50;
|
|
490
|
+
// node is simple by default
|
|
491
|
+
|
|
492
|
+
node.update(0, clippingRect);
|
|
493
|
+
|
|
494
|
+
// Parent (10, 20) + Node (100, 50) = (110, 70)
|
|
495
|
+
expect(node.globalTransform!.tx).toBe(110);
|
|
496
|
+
expect(node.globalTransform!.ty).toBe(70);
|
|
497
|
+
expect(node.globalTransform!.ta).toBe(1);
|
|
498
|
+
expect(node.globalTransform!.td).toBe(1);
|
|
499
|
+
expect(node.isSimple).toBe(true);
|
|
500
|
+
});
|
|
501
|
+
|
|
502
|
+
it('should calculate global transform correctly when not simple', () => {
|
|
503
|
+
const parent = new CoreNode(stage, defaultProps);
|
|
504
|
+
parent.globalTransform = Matrix3d.translate(10, 20);
|
|
505
|
+
|
|
506
|
+
const node = new CoreNode(stage, { ...defaultProps, parent });
|
|
507
|
+
node.x = 100;
|
|
508
|
+
node.y = 50;
|
|
509
|
+
node.w = 100;
|
|
510
|
+
node.h = 100;
|
|
511
|
+
node.pivotX = 0.5;
|
|
512
|
+
node.pivotY = 0.5;
|
|
513
|
+
node.rotation = Math.PI / 2; // 90 deg
|
|
514
|
+
|
|
515
|
+
node.update(0, clippingRect);
|
|
516
|
+
|
|
517
|
+
// Parent (10, 20) + Node (100, 50) + Rotation
|
|
518
|
+
// The translation part of global transform should be affected by parent
|
|
519
|
+
// But rotation happens at node level.
|
|
520
|
+
// Matrix calc: Parent * Node
|
|
521
|
+
// [1 0 10] [0 -1 200]* <-- node local: rot 90 around 50,50 (center) relative to 100,50
|
|
522
|
+
// [0 1 20] * [1 0 50]
|
|
523
|
+
// [0 0 1] [0 0 1]
|
|
524
|
+
// *Wait, previous test established local tx=200, ty=50 for rotation
|
|
525
|
+
|
|
526
|
+
// Global tx = 1*200 + 0*50 + 10 = 210
|
|
527
|
+
// Global ty = 0*200 + 1*50 + 20 = 70
|
|
528
|
+
|
|
529
|
+
expect(node.globalTransform!.tx).toBe(210);
|
|
530
|
+
expect(node.globalTransform!.ty).toBe(70);
|
|
531
|
+
expect(node.isSimple).toBe(false);
|
|
532
|
+
});
|
|
202
533
|
});
|
|
203
534
|
});
|