@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,22 +1,3 @@
|
|
|
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 { Dimensions } from '../../common/CommonTypes.js';
|
|
21
2
|
import { assertTruthy } from '../../utils.js';
|
|
22
3
|
import type { CoreTextureManager } from '../CoreTextureManager.js';
|
|
@@ -30,6 +11,8 @@ import {
|
|
|
30
11
|
type TextureState,
|
|
31
12
|
} from './Texture.js';
|
|
32
13
|
|
|
14
|
+
let subTextureId = 0;
|
|
15
|
+
|
|
33
16
|
/**
|
|
34
17
|
* Properties of the {@link SubTexture}
|
|
35
18
|
*/
|
|
@@ -60,12 +43,12 @@ export interface SubTextureProps {
|
|
|
60
43
|
*
|
|
61
44
|
* @default 0
|
|
62
45
|
*/
|
|
63
|
-
|
|
46
|
+
w?: number;
|
|
64
47
|
|
|
65
48
|
/**
|
|
66
49
|
* The height of the sub-texture in pixels
|
|
67
50
|
**/
|
|
68
|
-
|
|
51
|
+
h?: number;
|
|
69
52
|
}
|
|
70
53
|
|
|
71
54
|
/**
|
|
@@ -75,18 +58,19 @@ export interface SubTextureProps {
|
|
|
75
58
|
* The parent texture can be a Sprite Sheet/Texture Atlas and set using the
|
|
76
59
|
* {@link SubTextureProps.texture} prop. The sub-region relative to the parent
|
|
77
60
|
* texture is defined with the {@link SubTextureProps.x},
|
|
78
|
-
* {@link SubTextureProps.y}, {@link SubTextureProps.
|
|
79
|
-
* {@link SubTextureProps.
|
|
61
|
+
* {@link SubTextureProps.y}, {@link SubTextureProps.w}, and
|
|
62
|
+
* {@link SubTextureProps.h} pixel values.
|
|
80
63
|
*/
|
|
81
64
|
export class SubTexture extends Texture {
|
|
82
65
|
props: Required<SubTextureProps>;
|
|
83
66
|
parentTexture: Texture;
|
|
84
67
|
|
|
85
68
|
public override type: TextureType = TextureType.subTexture;
|
|
69
|
+
public subtextureId = `subtexture-${subTextureId++}`;
|
|
86
70
|
|
|
87
|
-
constructor(txManager: CoreTextureManager, props: SubTextureProps) {
|
|
71
|
+
constructor(txManager: CoreTextureManager, props: Required<SubTextureProps>) {
|
|
88
72
|
super(txManager);
|
|
89
|
-
this.props =
|
|
73
|
+
this.props = props;
|
|
90
74
|
|
|
91
75
|
assertTruthy(this.props.texture, 'SubTexture requires a parent texture');
|
|
92
76
|
assertTruthy(
|
|
@@ -97,8 +81,8 @@ export class SubTexture extends Texture {
|
|
|
97
81
|
// Resolve parent texture from cache or fallback to provided texture
|
|
98
82
|
this.parentTexture = txManager.resolveParentTexture(this.props.texture);
|
|
99
83
|
|
|
100
|
-
if (this.renderableOwners.
|
|
101
|
-
this.parentTexture.setRenderableOwner(this, true);
|
|
84
|
+
if (this.renderableOwners.length > 0) {
|
|
85
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, true);
|
|
102
86
|
}
|
|
103
87
|
|
|
104
88
|
// If parent texture is already loaded / failed, trigger loaded event manually
|
|
@@ -107,23 +91,17 @@ export class SubTexture extends Texture {
|
|
|
107
91
|
// synchronous task after calling loadTexture()
|
|
108
92
|
queueMicrotask(() => {
|
|
109
93
|
const parentTx = this.parentTexture;
|
|
110
|
-
if (parentTx.state === 'loaded') {
|
|
111
|
-
this.onParentTxLoaded(parentTx, parentTx.dimensions
|
|
112
|
-
} else if (parentTx.state === 'fetching') {
|
|
113
|
-
this.onParentTxFetching();
|
|
114
|
-
} else if (parentTx.state === 'fetched') {
|
|
115
|
-
this.onParentTxFetched();
|
|
94
|
+
if (parentTx.state === 'loaded' && parentTx.dimensions !== null) {
|
|
95
|
+
this.onParentTxLoaded(parentTx, parentTx.dimensions);
|
|
116
96
|
} else if (parentTx.state === 'loading') {
|
|
117
97
|
this.onParentTxLoading();
|
|
118
|
-
} else if (parentTx.state === 'failed') {
|
|
119
|
-
this.onParentTxFailed(parentTx, parentTx.error
|
|
98
|
+
} else if (parentTx.state === 'failed' && parentTx.error !== null) {
|
|
99
|
+
this.onParentTxFailed(parentTx, parentTx.error);
|
|
120
100
|
} else if (parentTx.state === 'freed') {
|
|
121
101
|
this.onParentTxFreed();
|
|
122
102
|
}
|
|
123
103
|
|
|
124
|
-
parentTx.on('fetched', this.onParentTxFetched);
|
|
125
104
|
parentTx.on('loading', this.onParentTxLoading);
|
|
126
|
-
parentTx.on('fetching', this.onParentTxFetching);
|
|
127
105
|
parentTx.on('loaded', this.onParentTxLoaded);
|
|
128
106
|
parentTx.on('failed', this.onParentTxFailed);
|
|
129
107
|
parentTx.on('freed', this.onParentTxFreed);
|
|
@@ -133,51 +111,33 @@ export class SubTexture extends Texture {
|
|
|
133
111
|
private onParentTxLoaded: TextureLoadedEventHandler = () => {
|
|
134
112
|
// We ignore the parent's passed dimensions, and simply use the SubTexture's
|
|
135
113
|
// configured dimensions (because that's all that matters here)
|
|
136
|
-
this.
|
|
137
|
-
|
|
138
|
-
|
|
114
|
+
this.setState('loaded', {
|
|
115
|
+
w: this.props.w,
|
|
116
|
+
h: this.props.h,
|
|
139
117
|
});
|
|
140
118
|
};
|
|
141
119
|
|
|
142
120
|
private onParentTxFailed: TextureFailedEventHandler = (target, error) => {
|
|
143
|
-
this.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
private onParentTxFetched = () => {
|
|
147
|
-
this.forwardParentTxState('fetched', {
|
|
148
|
-
width: this.props.width,
|
|
149
|
-
height: this.props.height,
|
|
150
|
-
});
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
private onParentTxFetching = () => {
|
|
154
|
-
this.forwardParentTxState('fetching');
|
|
121
|
+
this.retryCount = this.parentTexture.retryCount - 1;
|
|
122
|
+
this.setState('failed', error);
|
|
155
123
|
};
|
|
156
124
|
|
|
157
125
|
private onParentTxLoading = () => {
|
|
158
|
-
this.
|
|
126
|
+
this.setState('loading');
|
|
159
127
|
};
|
|
160
128
|
|
|
161
129
|
private onParentTxFreed = () => {
|
|
162
|
-
this.
|
|
130
|
+
this.setState('freed');
|
|
163
131
|
};
|
|
164
132
|
|
|
165
|
-
private forwardParentTxState(
|
|
166
|
-
state: TextureState,
|
|
167
|
-
errorOrDimensions?: Error | Dimensions,
|
|
168
|
-
) {
|
|
169
|
-
this.setState(state, errorOrDimensions);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
133
|
override onChangeIsRenderable(isRenderable: boolean): void {
|
|
173
134
|
// Propagate the renderable owner change to the parent texture
|
|
174
|
-
this.parentTexture.setRenderableOwner(this, isRenderable);
|
|
135
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, isRenderable);
|
|
175
136
|
}
|
|
176
137
|
|
|
177
138
|
override async getTextureSource(): Promise<TextureData> {
|
|
178
139
|
// Check if parent texture is loaded
|
|
179
140
|
return new Promise((resolve, reject) => {
|
|
180
|
-
this.setState('fetched');
|
|
181
141
|
resolve({
|
|
182
142
|
data: this.props,
|
|
183
143
|
});
|
|
@@ -196,8 +156,8 @@ export class SubTexture extends Texture {
|
|
|
196
156
|
texture: props.texture,
|
|
197
157
|
x: props.x || 0,
|
|
198
158
|
y: props.y || 0,
|
|
199
|
-
|
|
200
|
-
|
|
159
|
+
w: props.w || 0,
|
|
160
|
+
h: props.h || 0,
|
|
201
161
|
};
|
|
202
162
|
}
|
|
203
163
|
|
|
@@ -1,27 +1,10 @@
|
|
|
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 { CoreTextureManager } from '../CoreTextureManager.js';
|
|
21
2
|
import type { SubTextureProps } from './SubTexture.js';
|
|
22
3
|
import type { Dimensions } from '../../common/CommonTypes.js';
|
|
23
4
|
import { EventEmitter } from '../../common/EventEmitter.js';
|
|
24
5
|
import type { CoreContextTexture } from '../renderers/CoreContextTexture.js';
|
|
6
|
+
import type { Bound } from '../lib/utils.js';
|
|
7
|
+
import type { TextureError } from '../TextureError.js';
|
|
25
8
|
|
|
26
9
|
/**
|
|
27
10
|
* Event handler for when a Texture is freed
|
|
@@ -44,7 +27,7 @@ export type TextureLoadedEventHandler = (
|
|
|
44
27
|
/**
|
|
45
28
|
* Represents compressed texture data.
|
|
46
29
|
*/
|
|
47
|
-
interface CompressedData {
|
|
30
|
+
export interface CompressedData {
|
|
48
31
|
/**
|
|
49
32
|
* GLenum spcifying compression format
|
|
50
33
|
*/
|
|
@@ -53,30 +36,42 @@ interface CompressedData {
|
|
|
53
36
|
/**
|
|
54
37
|
* All mipmap levels
|
|
55
38
|
*/
|
|
56
|
-
mipmaps
|
|
39
|
+
mipmaps: ArrayBuffer[];
|
|
57
40
|
|
|
58
41
|
/**
|
|
59
42
|
* Supported container types ('pvr' or 'ktx').
|
|
60
43
|
*/
|
|
61
|
-
type: 'pvr' | 'ktx';
|
|
44
|
+
type: 'pvr' | 'ktx' | 'astc';
|
|
62
45
|
|
|
63
46
|
/**
|
|
64
47
|
* The width of the compressed texture in pixels. Defaults to 0.
|
|
65
48
|
*
|
|
66
49
|
* @default 0
|
|
67
50
|
*/
|
|
68
|
-
|
|
51
|
+
w: number;
|
|
69
52
|
|
|
70
53
|
/**
|
|
71
54
|
* The height of the compressed texture in pixels.
|
|
72
55
|
**/
|
|
73
|
-
|
|
56
|
+
h: number;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* block info compressed texture format
|
|
60
|
+
*/
|
|
61
|
+
blockInfo: {
|
|
62
|
+
width: number;
|
|
63
|
+
height: number;
|
|
64
|
+
bytes: number;
|
|
65
|
+
};
|
|
74
66
|
}
|
|
75
67
|
|
|
76
68
|
/**
|
|
77
69
|
* Event handler for when a Texture fails to load
|
|
78
70
|
*/
|
|
79
|
-
export type TextureFailedEventHandler = (
|
|
71
|
+
export type TextureFailedEventHandler = (
|
|
72
|
+
target: any,
|
|
73
|
+
error: TextureError,
|
|
74
|
+
) => void;
|
|
80
75
|
|
|
81
76
|
/**
|
|
82
77
|
* TextureData that is used to populate a CoreContextTexture
|
|
@@ -100,6 +95,10 @@ export interface TextureData {
|
|
|
100
95
|
*/
|
|
101
96
|
premultiplyAlpha?: boolean | null;
|
|
102
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* TextureCoords generally numbers between 0 - 1
|
|
100
|
+
*/
|
|
101
|
+
export type TextureCoords = Bound;
|
|
103
102
|
|
|
104
103
|
export type TextureState =
|
|
105
104
|
| 'initial' // Before anything is loaded
|
|
@@ -136,14 +135,13 @@ export abstract class Texture extends EventEmitter {
|
|
|
136
135
|
* Until the texture data is loaded for the first time the value will be
|
|
137
136
|
* `null`.
|
|
138
137
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
readonly error: Error | null = null;
|
|
138
|
+
private _dimensions: Dimensions | null = null;
|
|
139
|
+
private _error: TextureError | null = null;
|
|
142
140
|
|
|
143
141
|
// aggregate state
|
|
144
142
|
public state: TextureState = 'initial';
|
|
145
143
|
|
|
146
|
-
readonly renderableOwners =
|
|
144
|
+
readonly renderableOwners: any[] = [];
|
|
147
145
|
|
|
148
146
|
readonly renderable: boolean = false;
|
|
149
147
|
|
|
@@ -155,8 +153,98 @@ export abstract class Texture extends EventEmitter {
|
|
|
155
153
|
|
|
156
154
|
public textureData: TextureData | null = null;
|
|
157
155
|
|
|
156
|
+
public memUsed = 0;
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Memory used by this texture in bytes
|
|
160
|
+
*
|
|
161
|
+
* @remarks
|
|
162
|
+
* This is tracked by the TextureMemoryManager and updated when the texture
|
|
163
|
+
* is loaded/freed. Set to 0 when texture is not loaded.
|
|
164
|
+
*/
|
|
165
|
+
public retryCount = 0;
|
|
166
|
+
public maxRetryCount: number;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Timestamp when texture was created (for startup grace period)
|
|
170
|
+
*/
|
|
171
|
+
private createdAt: number = Date.now();
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Flag to track if grace period has expired to avoid repeated Date.now() calls
|
|
175
|
+
*/
|
|
176
|
+
private gracePeriodExpired: boolean = false;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Grace period in milliseconds to prevent premature cleanup during app startup
|
|
180
|
+
* This helps prevent race conditions when bounds calculation is delayed
|
|
181
|
+
*/
|
|
182
|
+
private static readonly STARTUP_GRACE_PERIOD = 2000; // 2 seconds
|
|
183
|
+
|
|
158
184
|
constructor(protected txManager: CoreTextureManager) {
|
|
159
185
|
super();
|
|
186
|
+
this.maxRetryCount = this.txManager.maxRetryCount;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
get dimensions(): Dimensions | null {
|
|
190
|
+
return this._dimensions;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
get error(): TextureError | null {
|
|
194
|
+
return this._error;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Checks if the texture is within the startup grace period.
|
|
199
|
+
* During this period, textures are protected from cleanup to prevent
|
|
200
|
+
* race conditions during app initialization.
|
|
201
|
+
*/
|
|
202
|
+
isWithinStartupGracePeriod(): boolean {
|
|
203
|
+
// If grace period already expired, return false immediately
|
|
204
|
+
if (this.gracePeriodExpired === true) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Check if grace period has expired now
|
|
209
|
+
const hasExpired =
|
|
210
|
+
Date.now() - this.createdAt >= Texture.STARTUP_GRACE_PERIOD;
|
|
211
|
+
|
|
212
|
+
if (hasExpired) {
|
|
213
|
+
// Cache the result to avoid future Date.now() calls
|
|
214
|
+
this.gracePeriodExpired = true;
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* Checks if the texture can be safely cleaned up.
|
|
223
|
+
* Considers the renderable state, startup grace period, and renderable owners.
|
|
224
|
+
*/
|
|
225
|
+
canBeCleanedUp(): boolean {
|
|
226
|
+
// Never cleanup if explicitly prevented
|
|
227
|
+
if (this.preventCleanup) {
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Don't cleanup if still within startup grace period
|
|
232
|
+
if (this.isWithinStartupGracePeriod()) {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Don't cleanup if not renderable
|
|
237
|
+
if (this.renderable === true) {
|
|
238
|
+
return false;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
// Don't cleanup if there are still renderable owners
|
|
242
|
+
if (this.renderableOwners.length > 0) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Safe to cleanup
|
|
247
|
+
return true;
|
|
160
248
|
}
|
|
161
249
|
|
|
162
250
|
/**
|
|
@@ -173,33 +261,43 @@ export abstract class Texture extends EventEmitter {
|
|
|
173
261
|
* @param owner
|
|
174
262
|
* @param renderable
|
|
175
263
|
*/
|
|
176
|
-
setRenderableOwner(owner:
|
|
177
|
-
const oldSize = this.renderableOwners.
|
|
264
|
+
setRenderableOwner(owner: string | number, renderable: boolean): void {
|
|
265
|
+
const oldSize = this.renderableOwners.length;
|
|
266
|
+
const hasOwnerIndex = this.renderableOwners.indexOf(owner);
|
|
178
267
|
|
|
179
268
|
if (renderable === true) {
|
|
180
|
-
if (
|
|
269
|
+
if (hasOwnerIndex === -1) {
|
|
181
270
|
// Add the owner to the set
|
|
182
|
-
this.renderableOwners.
|
|
271
|
+
this.renderableOwners.push(owner);
|
|
183
272
|
}
|
|
184
273
|
|
|
185
|
-
const newSize = this.renderableOwners.
|
|
186
|
-
if (
|
|
274
|
+
const newSize = this.renderableOwners.length;
|
|
275
|
+
if (oldSize !== newSize && newSize === 1) {
|
|
187
276
|
(this.renderable as boolean) = true;
|
|
188
277
|
this.onChangeIsRenderable?.(true);
|
|
189
278
|
this.load();
|
|
190
279
|
}
|
|
191
280
|
} else {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
281
|
+
if (hasOwnerIndex !== -1) {
|
|
282
|
+
this.renderableOwners.splice(hasOwnerIndex, 1);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
const newSize = this.renderableOwners.length;
|
|
286
|
+
if (oldSize !== newSize && newSize === 0) {
|
|
195
287
|
(this.renderable as boolean) = false;
|
|
196
288
|
this.onChangeIsRenderable?.(false);
|
|
197
|
-
|
|
289
|
+
|
|
290
|
+
// note, not doing a cleanup here, cleanup is managed by the Stage/TextureMemoryManager
|
|
291
|
+
// when it deems appropriate based on memory pressure
|
|
198
292
|
}
|
|
199
293
|
}
|
|
200
294
|
}
|
|
201
295
|
|
|
202
296
|
load(): void {
|
|
297
|
+
if (this.retryCount > this.maxRetryCount) {
|
|
298
|
+
// We've exceeded the max retry count, do not attempt to load again
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
203
301
|
this.txManager.loadTexture(this);
|
|
204
302
|
}
|
|
205
303
|
|
|
@@ -238,6 +336,35 @@ export abstract class Texture extends EventEmitter {
|
|
|
238
336
|
this.ctxTexture?.free();
|
|
239
337
|
}
|
|
240
338
|
|
|
339
|
+
/**
|
|
340
|
+
* Release the texture data and core context texture for this Texture without changing state.
|
|
341
|
+
*
|
|
342
|
+
* @remarks
|
|
343
|
+
* The ctxTexture is created by the renderer and lives on the GPU.
|
|
344
|
+
*/
|
|
345
|
+
release(): void {
|
|
346
|
+
this.ctxTexture?.release();
|
|
347
|
+
this.ctxTexture = undefined;
|
|
348
|
+
this.freeTextureData();
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Destroy the texture.
|
|
353
|
+
*
|
|
354
|
+
* @remarks
|
|
355
|
+
* This method is called when the texture is no longer needed and should be
|
|
356
|
+
* cleaned up.
|
|
357
|
+
*/
|
|
358
|
+
destroy(): void {
|
|
359
|
+
// Only free GPU resources if we're in a state where they exist
|
|
360
|
+
if (this.state === 'loaded') {
|
|
361
|
+
this.free();
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// Always free texture data regardless of state
|
|
365
|
+
this.freeTextureData();
|
|
366
|
+
}
|
|
367
|
+
|
|
241
368
|
/**
|
|
242
369
|
* Free the source texture data for this Texture.
|
|
243
370
|
*
|
|
@@ -246,24 +373,45 @@ export abstract class Texture extends EventEmitter {
|
|
|
246
373
|
* e.g. ImageData that is downloaded from a URL.
|
|
247
374
|
*/
|
|
248
375
|
freeTextureData(): void {
|
|
249
|
-
this.
|
|
376
|
+
queueMicrotask(this.freeTextureDataTask);
|
|
250
377
|
}
|
|
251
378
|
|
|
252
379
|
public setState(
|
|
253
380
|
state: TextureState,
|
|
254
|
-
errorOrDimensions?:
|
|
381
|
+
errorOrDimensions?: TextureError | Dimensions,
|
|
255
382
|
): void {
|
|
256
383
|
if (this.state === state) {
|
|
257
384
|
return;
|
|
258
385
|
}
|
|
259
386
|
|
|
260
|
-
let payload:
|
|
387
|
+
let payload: TextureError | Dimensions | null = null;
|
|
261
388
|
if (state === 'loaded') {
|
|
262
|
-
(
|
|
263
|
-
|
|
389
|
+
if (
|
|
390
|
+
errorOrDimensions !== undefined &&
|
|
391
|
+
'w' in errorOrDimensions === true &&
|
|
392
|
+
'h' in errorOrDimensions === true &&
|
|
393
|
+
errorOrDimensions.w !== undefined &&
|
|
394
|
+
errorOrDimensions.h !== undefined
|
|
395
|
+
) {
|
|
396
|
+
this._dimensions = errorOrDimensions;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
payload = this._dimensions;
|
|
264
400
|
} else if (state === 'failed') {
|
|
265
|
-
|
|
266
|
-
payload = this.
|
|
401
|
+
this._error = errorOrDimensions as TextureError;
|
|
402
|
+
payload = this._error;
|
|
403
|
+
|
|
404
|
+
// increment the retry count for the texture
|
|
405
|
+
// this is used to compare against maxRetryCount, if set
|
|
406
|
+
// to determine if we should try loading again
|
|
407
|
+
this.retryCount += 1;
|
|
408
|
+
|
|
409
|
+
queueMicrotask(this.releaseTask);
|
|
410
|
+
} else if (state === 'loading') {
|
|
411
|
+
this._error = null;
|
|
412
|
+
this._dimensions = null;
|
|
413
|
+
} else {
|
|
414
|
+
this._error = null;
|
|
267
415
|
}
|
|
268
416
|
|
|
269
417
|
// emit the new state
|
|
@@ -289,6 +437,26 @@ export abstract class Texture extends EventEmitter {
|
|
|
289
437
|
return this.textureData;
|
|
290
438
|
}
|
|
291
439
|
|
|
440
|
+
/**
|
|
441
|
+
* Task for queueMicrotask to free texture data.
|
|
442
|
+
*
|
|
443
|
+
* @remarks
|
|
444
|
+
* This method is called in a microtask to free the texture data.
|
|
445
|
+
*/
|
|
446
|
+
private freeTextureDataTask = (): void => {
|
|
447
|
+
this.textureData = null;
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Task for queueMicrotask to release the texture.
|
|
452
|
+
*
|
|
453
|
+
* @remarks
|
|
454
|
+
* This method is called in a microtask to release the texture.
|
|
455
|
+
*/
|
|
456
|
+
private releaseTask = (): void => {
|
|
457
|
+
this.release();
|
|
458
|
+
};
|
|
459
|
+
|
|
292
460
|
/**
|
|
293
461
|
* Get the texture source for this texture.
|
|
294
462
|
*
|
package/src/core/utils.ts
CHANGED
|
@@ -1,22 +1,3 @@
|
|
|
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
|
/**
|
|
21
2
|
* Core Utility Functions
|
|
22
3
|
*
|
|
@@ -30,6 +11,8 @@ export const RANDOM = Math.random;
|
|
|
30
11
|
export const ANGLE_ORDER = 'zyx';
|
|
31
12
|
const degree = Math.PI / 180;
|
|
32
13
|
|
|
14
|
+
export type TimingFunction = (t: number) => number;
|
|
15
|
+
|
|
33
16
|
export const setMatrixArrayType = (
|
|
34
17
|
type: Float32ArrayConstructor | ArrayConstructor,
|
|
35
18
|
) => {
|
|
@@ -57,7 +40,7 @@ const getTimingBezier = (
|
|
|
57
40
|
b: number,
|
|
58
41
|
c: number,
|
|
59
42
|
d: number,
|
|
60
|
-
):
|
|
43
|
+
): TimingFunction => {
|
|
61
44
|
const xc = 3.0 * a;
|
|
62
45
|
const xb = 3.0 * (c - a) - xc;
|
|
63
46
|
const xa = 1.0 - xc - xb;
|
|
@@ -65,7 +48,7 @@ const getTimingBezier = (
|
|
|
65
48
|
const yb = 3.0 * (d - b) - yc;
|
|
66
49
|
const ya = 1.0 - yc - yb;
|
|
67
50
|
|
|
68
|
-
return function (time
|
|
51
|
+
return function (time) {
|
|
69
52
|
if (time >= 1.0) {
|
|
70
53
|
return 1;
|
|
71
54
|
}
|
|
@@ -116,11 +99,13 @@ const getTimingBezier = (
|
|
|
116
99
|
minT = t;
|
|
117
100
|
}
|
|
118
101
|
}
|
|
102
|
+
|
|
103
|
+
return time;
|
|
119
104
|
};
|
|
120
105
|
};
|
|
121
106
|
|
|
122
107
|
interface TimingFunctionMap {
|
|
123
|
-
[key: string]:
|
|
108
|
+
[key: string]: TimingFunction;
|
|
124
109
|
}
|
|
125
110
|
|
|
126
111
|
type TimingLookupArray = number[];
|
|
@@ -174,9 +159,7 @@ const parseCubicBezier = (str: string) => {
|
|
|
174
159
|
return defaultTiming;
|
|
175
160
|
};
|
|
176
161
|
|
|
177
|
-
export const getTimingFunction = (
|
|
178
|
-
str: string,
|
|
179
|
-
): ((time: number) => number | undefined) => {
|
|
162
|
+
export const getTimingFunction = (str: string): TimingFunction => {
|
|
180
163
|
if (str === 'linear') {
|
|
181
164
|
return defaultTiming;
|
|
182
165
|
}
|
|
@@ -202,7 +185,7 @@ export const getTimingFunction = (
|
|
|
202
185
|
const [a, b, c, d] = lookup;
|
|
203
186
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
204
187
|
// @ts-ignore - TS doesn't understand that we've checked for undefined
|
|
205
|
-
|
|
188
|
+
|
|
206
189
|
const timing = getTimingBezier(a, b, c, d);
|
|
207
190
|
timingMapping[str] = timing;
|
|
208
191
|
return timing;
|
package/src/main-api/INode.ts
CHANGED
|
@@ -1,21 +1,3 @@
|
|
|
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 2024 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
1
|
import type { IAnimationController } from '../common/IAnimationController.js';
|
|
20
2
|
import {
|
|
21
3
|
CoreNode,
|