@lightningtv/renderer 2.16.1 → 3.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +8 -2
- package/dist/exports/canvas.js +8 -20
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +18 -13
- package/dist/exports/index.js +9 -27
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +11 -2
- package/dist/exports/webgl.js +11 -20
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +138 -105
- package/dist/src/core/CoreNode.js +805 -526
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +29 -73
- package/dist/src/core/CoreShaderManager.js +92 -97
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +18 -3
- package/dist/src/core/CoreTextureManager.js +63 -107
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +82 -55
- package/dist/src/core/Stage.js +410 -247
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +4 -3
- package/dist/src/core/TextureMemoryManager.js +103 -135
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -4
- package/dist/src/core/animations/CoreAnimation.js +9 -76
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +0 -18
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +31 -30
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +147 -59
- package/dist/src/core/lib/WebGlContextWrapper.js +252 -158
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +2 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +15 -19
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -86
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -2
- package/dist/src/core/lib/utils.js +21 -20
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +5 -0
- package/dist/src/core/platforms/Platform.js +0 -18
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
- package/dist/src/core/platforms/web/WebPlatform.js +39 -7
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -0
- package/dist/src/core/renderers/CoreContextTexture.js +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +25 -23
- package/dist/src/core/renderers/CoreRenderer.js +1 -24
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +10 -0
- package/dist/src/core/renderers/CoreShaderNode.js +19 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +3 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +86 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +2 -17
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -67
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +31 -19
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +297 -200
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -5
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +61 -34
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +32 -5
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +50 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +2 -18
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +5 -21
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +40 -26
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +43 -23
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +4 -18
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +11 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +30 -26
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +2 -18
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/utils.js +0 -16
- package/dist/src/core/shaders/utils.js.map +1 -1
- package/dist/src/core/shaders/webgl/Border.js +75 -31
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +2 -18
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +68 -30
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +52 -45
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +110 -48
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +114 -54
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +7 -35
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +10 -3
- package/dist/src/core/textures/ImageTexture.js +33 -62
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -26
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -30
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +80 -16
- package/dist/src/core/textures/Texture.js +131 -37
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +9 -9
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +246 -162
- package/dist/src/main-api/Renderer.js +192 -152
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +23 -4
- package/dist/src/utils.js +50 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/exports/canvas-shaders.ts +11 -0
- package/exports/canvas.ts +8 -20
- package/exports/index.ts +24 -44
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +12 -0
- package/exports/webgl.ts +15 -20
- package/package.json +23 -20
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +378 -46
- package/src/core/CoreNode.ts +1007 -659
- package/src/core/CoreShaderManager.ts +128 -250
- package/src/core/CoreTextNode.ts +457 -321
- package/src/core/CoreTextureManager.ts +94 -115
- package/src/core/Stage.ts +516 -312
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +139 -175
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +16 -96
- package/src/core/animations/CoreAnimationController.ts +0 -19
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +43 -31
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +353 -237
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +16 -19
- package/src/core/lib/textureCompression.ts +434 -94
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +31 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +1 -19
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +34 -49
- package/src/core/renderers/CoreShaderNode.ts +202 -0
- package/src/core/renderers/CoreShaderProgram.ts +4 -0
- package/src/core/renderers/canvas/CanvasRenderer.ts +270 -0
- package/src/core/renderers/canvas/CanvasShaderNode.ts +79 -0
- package/src/core/renderers/canvas/{CanvasCoreTexture.ts → CanvasTexture.ts} +15 -27
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxRenderTexture.ts → WebGlCtxRenderTexture.ts} +15 -36
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +76 -0
- package/src/core/renderers/webgl/{WebGlCoreCtxTexture.ts → WebGlCtxTexture.ts} +89 -70
- package/src/core/renderers/webgl/WebGlRenderer.ts +850 -0
- package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -0
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +356 -0
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +143 -24
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +119 -0
- package/src/core/shaders/canvas/HolePunch.ts +38 -0
- package/src/core/shaders/canvas/LinearGradient.ts +54 -0
- package/src/core/shaders/canvas/RadialGradient.ts +82 -0
- package/src/core/shaders/canvas/Rounded.ts +38 -0
- package/src/core/shaders/canvas/RoundedWithBorder.ts +105 -0
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +118 -0
- package/src/core/shaders/canvas/RoundedWithShadow.ts +56 -0
- package/src/core/shaders/canvas/Shadow.ts +35 -0
- package/src/core/shaders/canvas/utils/render.ts +143 -0
- package/src/core/shaders/templates/BorderTemplate.ts +128 -0
- package/src/core/shaders/templates/HolePunchTemplate.ts +65 -0
- package/src/core/shaders/templates/LinearGradientTemplate.ts +54 -0
- package/src/core/shaders/templates/RadialGradientTemplate.ts +66 -0
- package/src/core/shaders/templates/RoundedTemplate.ts +81 -0
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +21 -0
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +23 -0
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +18 -0
- package/src/core/shaders/templates/ShadowTemplate.ts +89 -0
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +159 -0
- package/src/core/shaders/webgl/Default.ts +52 -0
- package/src/core/shaders/webgl/HolePunch.ts +58 -0
- package/src/core/shaders/webgl/LinearGradient.ts +119 -0
- package/src/core/shaders/webgl/RadialGradient.ts +91 -0
- package/src/core/shaders/webgl/Rounded.ts +97 -0
- package/src/core/shaders/webgl/RoundedWithBorder.ts +212 -0
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -0
- package/src/core/shaders/webgl/RoundedWithShadow.ts +132 -0
- package/src/core/shaders/webgl/SdfShader.ts +104 -0
- package/src/core/shaders/webgl/Shadow.ts +119 -0
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +72 -78
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +182 -53
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +10 -29
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +476 -274
- package/src/utils.ts +83 -29
- package/dist/src/core/animations/SimpleAnimation.d.ts +0 -28
- package/dist/src/core/animations/SimpleAnimation.js +0 -96
- package/dist/src/core/animations/SimpleAnimation.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -124
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -56
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -239
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -118
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.d.ts +0 -5
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/webgl/Magnifier.d.ts +0 -46
- package/dist/src/core/shaders/webgl/Magnifier.js +0 -107
- package/dist/src/core/shaders/webgl/Magnifier.js.map +0 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.d.ts +0 -3
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js +0 -218
- package/dist/src/core/shaders/webgl/RoundedWithBorder copy.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -100
- package/src/core/renderers/CoreShader.ts +0 -41
- package/src/core/renderers/canvas/CanvasCoreRenderer.ts +0 -375
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -231
- package/src/core/renderers/canvas/shaders/UnsupportedShader.ts +0 -48
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +0 -50
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +0 -125
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +0 -821
- package/src/core/renderers/webgl/WebGlCoreShader.ts +0 -365
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +0 -93
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -132
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +0 -580
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +0 -167
- package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -204
- package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +0 -87
- package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +0 -101
- package/src/core/renderers/webgl/shaders/effects/EffectUtils.ts +0 -159
- package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +0 -127
- package/src/core/renderers/webgl/shaders/effects/GlitchEffect.ts +0 -148
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +0 -67
- package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +0 -157
- package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +0 -171
- package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +0 -168
- package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +0 -187
- package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +0 -110
- package/src/core/renderers/webgl/shaders/effects/ShaderEffect.ts +0 -196
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -808
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -853
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -557
- package/src/main-api/DynamicShaderController.ts +0 -104
- package/src/main-api/ShaderController.ts +0 -80
|
@@ -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 { CoreTextureManager } from '../CoreTextureManager.js';
|
|
21
2
|
import { Texture, TextureType, type TextureData } from './Texture.js';
|
|
22
3
|
import {
|
|
@@ -29,7 +10,12 @@ import {
|
|
|
29
10
|
isBase64Image,
|
|
30
11
|
} from '../lib/utils.js';
|
|
31
12
|
import { isSvgImage, loadSvg } from '../lib/textureSvg.js';
|
|
32
|
-
import { fetchJson } from '../
|
|
13
|
+
import { fetchJson } from '../lib/utils.js';
|
|
14
|
+
import type { Platform } from '../platforms/Platform.js';
|
|
15
|
+
import {
|
|
16
|
+
ENABLE_COMPRESSED_TEXTURES,
|
|
17
|
+
isProductionEnvironment,
|
|
18
|
+
} from '../../utils.js';
|
|
33
19
|
|
|
34
20
|
/**
|
|
35
21
|
* Properties of the {@link ImageTexture}
|
|
@@ -65,12 +51,12 @@ export interface ImageTextureProps {
|
|
|
65
51
|
* Width of the image to be used as a texture. If not provided, the image's
|
|
66
52
|
* natural width will be used.
|
|
67
53
|
*/
|
|
68
|
-
|
|
54
|
+
w?: number | null;
|
|
69
55
|
/**
|
|
70
56
|
* Height of the image to be used as a texture. If not provided, the image's
|
|
71
57
|
* natural height will be used.
|
|
72
58
|
*/
|
|
73
|
-
|
|
59
|
+
h?: number | null;
|
|
74
60
|
/**
|
|
75
61
|
* Type, indicate an image type for overriding type detection
|
|
76
62
|
*
|
|
@@ -107,6 +93,12 @@ export interface ImageTextureProps {
|
|
|
107
93
|
* @default null
|
|
108
94
|
*/
|
|
109
95
|
sy?: number | null;
|
|
96
|
+
/**
|
|
97
|
+
* Maximum number of times to retry loading the image if it fails.
|
|
98
|
+
*
|
|
99
|
+
* @default 5
|
|
100
|
+
*/
|
|
101
|
+
maxRetryCount?: number;
|
|
110
102
|
}
|
|
111
103
|
|
|
112
104
|
/**
|
|
@@ -124,13 +116,20 @@ export interface ImageTextureProps {
|
|
|
124
116
|
* {@link ImageTextureProps.premultiplyAlpha} prop to `false`.
|
|
125
117
|
*/
|
|
126
118
|
export class ImageTexture extends Texture {
|
|
127
|
-
|
|
119
|
+
private platform: Platform;
|
|
128
120
|
|
|
121
|
+
public props: Required<ImageTextureProps>;
|
|
129
122
|
public override type: TextureType = TextureType.image;
|
|
130
123
|
|
|
131
|
-
constructor(
|
|
124
|
+
constructor(
|
|
125
|
+
txManager: CoreTextureManager,
|
|
126
|
+
props: Required<ImageTextureProps>,
|
|
127
|
+
) {
|
|
132
128
|
super(txManager);
|
|
133
|
-
|
|
129
|
+
|
|
130
|
+
this.platform = txManager.platform;
|
|
131
|
+
this.props = props;
|
|
132
|
+
this.maxRetryCount = props.maxRetryCount as number;
|
|
134
133
|
}
|
|
135
134
|
|
|
136
135
|
hasAlphaChannel(mimeType: string) {
|
|
@@ -147,14 +146,19 @@ export class ImageTexture extends Texture {
|
|
|
147
146
|
return new Promise<{
|
|
148
147
|
data: HTMLImageElement | null;
|
|
149
148
|
premultiplyAlpha: boolean;
|
|
150
|
-
}>((resolve) => {
|
|
149
|
+
}>((resolve, reject) => {
|
|
151
150
|
img.onload = () => {
|
|
152
151
|
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
153
152
|
};
|
|
154
153
|
|
|
155
|
-
img.onerror = () => {
|
|
156
|
-
|
|
157
|
-
|
|
154
|
+
img.onerror = (err) => {
|
|
155
|
+
const errorMessage =
|
|
156
|
+
err instanceof Error
|
|
157
|
+
? err.message
|
|
158
|
+
: err instanceof Event
|
|
159
|
+
? `Image loading failed for ${img.src}`
|
|
160
|
+
: 'Unknown image loading error';
|
|
161
|
+
reject(new Error(`Image loading failed: ${errorMessage}`));
|
|
158
162
|
};
|
|
159
163
|
|
|
160
164
|
if (src instanceof Blob) {
|
|
@@ -181,23 +185,30 @@ export class ImageTexture extends Texture {
|
|
|
181
185
|
|
|
182
186
|
if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
|
|
183
187
|
// createImageBitmap with crop
|
|
184
|
-
const bitmap = await createImageBitmap(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
188
|
+
const bitmap = await this.platform.createImageBitmap(
|
|
189
|
+
blob,
|
|
190
|
+
sx || 0,
|
|
191
|
+
sy || 0,
|
|
192
|
+
sw,
|
|
193
|
+
sh,
|
|
194
|
+
{
|
|
195
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
196
|
+
colorSpaceConversion: 'none',
|
|
197
|
+
imageOrientation: 'none',
|
|
198
|
+
},
|
|
199
|
+
);
|
|
189
200
|
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
190
201
|
} else if (imageBitmapSupported.basic === true) {
|
|
191
202
|
// basic createImageBitmap without options or crop
|
|
192
203
|
// this is supported for Chrome v50 to v52/54 that doesn't support options
|
|
193
204
|
return {
|
|
194
|
-
data: await createImageBitmap(blob),
|
|
205
|
+
data: await this.platform.createImageBitmap(blob),
|
|
195
206
|
premultiplyAlpha: hasAlphaChannel,
|
|
196
207
|
};
|
|
197
208
|
}
|
|
198
209
|
|
|
199
210
|
// default createImageBitmap without crop but with options
|
|
200
|
-
const bitmap = await createImageBitmap(blob, {
|
|
211
|
+
const bitmap = await this.platform.createImageBitmap(blob, {
|
|
201
212
|
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
202
213
|
colorSpaceConversion: 'none',
|
|
203
214
|
imageOrientation: 'none',
|
|
@@ -241,11 +252,12 @@ export class ImageTexture extends Texture {
|
|
|
241
252
|
}
|
|
242
253
|
|
|
243
254
|
override async getTextureSource(): Promise<TextureData> {
|
|
244
|
-
let resp;
|
|
255
|
+
let resp: TextureData;
|
|
245
256
|
try {
|
|
246
257
|
resp = await this.determineImageTypeAndLoadImage();
|
|
247
258
|
} catch (e) {
|
|
248
259
|
this.setState('failed', e as Error);
|
|
260
|
+
|
|
249
261
|
return {
|
|
250
262
|
data: null,
|
|
251
263
|
};
|
|
@@ -258,23 +270,6 @@ export class ImageTexture extends Texture {
|
|
|
258
270
|
};
|
|
259
271
|
}
|
|
260
272
|
|
|
261
|
-
let width, height;
|
|
262
|
-
// check if resp.data is typeof Uint8ClampedArray else
|
|
263
|
-
// use resp.data.width and resp.data.height
|
|
264
|
-
if (resp.data instanceof Uint8Array) {
|
|
265
|
-
width = this.props.width ?? 0;
|
|
266
|
-
height = this.props.height ?? 0;
|
|
267
|
-
} else {
|
|
268
|
-
width = resp.data?.width ?? (this.props.width || 0);
|
|
269
|
-
height = resp.data?.height ?? (this.props.height || 0);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
// we're loaded!
|
|
273
|
-
this.setState('fetched', {
|
|
274
|
-
width,
|
|
275
|
-
height,
|
|
276
|
-
});
|
|
277
|
-
|
|
278
273
|
return {
|
|
279
274
|
data: resp.data,
|
|
280
275
|
premultiplyAlpha: this.props.premultiplyAlpha ?? true,
|
|
@@ -318,8 +313,8 @@ export class ImageTexture extends Texture {
|
|
|
318
313
|
if (type === 'svg') {
|
|
319
314
|
return loadSvg(
|
|
320
315
|
absoluteSrc,
|
|
321
|
-
this.props.
|
|
322
|
-
this.props.
|
|
316
|
+
this.props.w,
|
|
317
|
+
this.props.h,
|
|
323
318
|
this.props.sx,
|
|
324
319
|
this.props.sy,
|
|
325
320
|
this.props.sw,
|
|
@@ -330,8 +325,8 @@ export class ImageTexture extends Texture {
|
|
|
330
325
|
if (isSvgImage(src) === true) {
|
|
331
326
|
return loadSvg(
|
|
332
327
|
absoluteSrc,
|
|
333
|
-
this.props.
|
|
334
|
-
this.props.
|
|
328
|
+
this.props.w,
|
|
329
|
+
this.props.h,
|
|
335
330
|
this.props.sx,
|
|
336
331
|
this.props.sy,
|
|
337
332
|
this.props.sw,
|
|
@@ -339,11 +334,10 @@ export class ImageTexture extends Texture {
|
|
|
339
334
|
);
|
|
340
335
|
}
|
|
341
336
|
|
|
342
|
-
if (
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
if (isCompressedTextureContainer(src) === true) {
|
|
337
|
+
if (
|
|
338
|
+
ENABLE_COMPRESSED_TEXTURES &&
|
|
339
|
+
(type === 'compressed' || isCompressedTextureContainer(src) === true)
|
|
340
|
+
) {
|
|
347
341
|
return loadCompressedTexture(absoluteSrc);
|
|
348
342
|
}
|
|
349
343
|
|
|
@@ -357,26 +351,25 @@ export class ImageTexture extends Texture {
|
|
|
357
351
|
* @returns The cache key as a string, or `false` if the key cannot be generated.
|
|
358
352
|
*/
|
|
359
353
|
static override makeCacheKey(props: ImageTextureProps): string | false {
|
|
360
|
-
const resolvedProps = ImageTexture.resolveDefaults(props);
|
|
361
354
|
// Only cache key-able textures; prioritise key
|
|
362
|
-
const key =
|
|
355
|
+
const key = props.key || props.src;
|
|
363
356
|
if (typeof key !== 'string') {
|
|
364
357
|
return false;
|
|
365
358
|
}
|
|
366
359
|
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
360
|
+
let cacheKey = `ImageTexture,${key},${props.premultiplyAlpha ?? 'true'},${
|
|
361
|
+
props.maxRetryCount
|
|
362
|
+
}`;
|
|
363
|
+
|
|
364
|
+
if (props.sh !== null && props.sw !== null) {
|
|
365
|
+
cacheKey += ',';
|
|
366
|
+
cacheKey += props.sx ?? '';
|
|
367
|
+
cacheKey += props.sy ?? '';
|
|
368
|
+
cacheKey += props.sw || '';
|
|
369
|
+
cacheKey += props.sh || '';
|
|
375
370
|
}
|
|
376
371
|
|
|
377
|
-
return
|
|
378
|
-
resolvedProps.premultiplyAlpha ?? 'true'
|
|
379
|
-
}${dimensionProps}`;
|
|
372
|
+
return cacheKey;
|
|
380
373
|
}
|
|
381
374
|
|
|
382
375
|
static override resolveDefaults(
|
|
@@ -387,12 +380,13 @@ export class ImageTexture extends Texture {
|
|
|
387
380
|
premultiplyAlpha: props.premultiplyAlpha ?? true, // null,
|
|
388
381
|
key: props.key ?? null,
|
|
389
382
|
type: props.type ?? null,
|
|
390
|
-
|
|
391
|
-
|
|
383
|
+
w: props.w ?? null,
|
|
384
|
+
h: props.h ?? null,
|
|
392
385
|
sx: props.sx ?? null,
|
|
393
386
|
sy: props.sy ?? null,
|
|
394
387
|
sw: props.sw ?? null,
|
|
395
388
|
sh: props.sh ?? null,
|
|
389
|
+
maxRetryCount: props.maxRetryCount ?? 5,
|
|
396
390
|
};
|
|
397
391
|
}
|
|
398
392
|
|
|
@@ -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 { CoreTextureManager } from '../CoreTextureManager.js';
|
|
21
2
|
import { Texture, TextureType, type TextureData } from './Texture.js';
|
|
22
3
|
|
|
@@ -29,13 +10,13 @@ export interface NoiseTextureProps {
|
|
|
29
10
|
*
|
|
30
11
|
* @default 128
|
|
31
12
|
*/
|
|
32
|
-
|
|
13
|
+
w?: number;
|
|
33
14
|
/**
|
|
34
15
|
* Height of texture
|
|
35
16
|
*
|
|
36
17
|
* @default 128
|
|
37
18
|
*/
|
|
38
|
-
|
|
19
|
+
h?: number;
|
|
39
20
|
/**
|
|
40
21
|
* A number value that can be varied to force new textures to be generated
|
|
41
22
|
*
|
|
@@ -58,14 +39,17 @@ export class NoiseTexture extends Texture {
|
|
|
58
39
|
|
|
59
40
|
public override type: TextureType = TextureType.noise;
|
|
60
41
|
|
|
61
|
-
constructor(
|
|
42
|
+
constructor(
|
|
43
|
+
txManager: CoreTextureManager,
|
|
44
|
+
props: Required<NoiseTextureProps>,
|
|
45
|
+
) {
|
|
62
46
|
super(txManager);
|
|
63
|
-
this.props =
|
|
47
|
+
this.props = props;
|
|
64
48
|
}
|
|
65
49
|
|
|
66
50
|
override async getTextureSource(): Promise<TextureData> {
|
|
67
|
-
const {
|
|
68
|
-
const size =
|
|
51
|
+
const { w, h } = this.props;
|
|
52
|
+
const size = w * h * 4;
|
|
69
53
|
const pixelData8 = new Uint8ClampedArray(size);
|
|
70
54
|
for (let i = 0; i < size; i += 4) {
|
|
71
55
|
const v = Math.floor(Math.random() * 256);
|
|
@@ -75,10 +59,9 @@ export class NoiseTexture extends Texture {
|
|
|
75
59
|
pixelData8[i + 3] = 255;
|
|
76
60
|
}
|
|
77
61
|
|
|
78
|
-
|
|
79
|
-
|
|
62
|
+
// Noise Texture data ready - dimensions will be set during upload
|
|
80
63
|
return {
|
|
81
|
-
data: new ImageData(pixelData8,
|
|
64
|
+
data: new ImageData(pixelData8, w, h),
|
|
82
65
|
};
|
|
83
66
|
}
|
|
84
67
|
|
|
@@ -87,15 +70,15 @@ export class NoiseTexture extends Texture {
|
|
|
87
70
|
return false;
|
|
88
71
|
}
|
|
89
72
|
const resolvedProps = NoiseTexture.resolveDefaults(props);
|
|
90
|
-
return `NoiseTexture,${resolvedProps.
|
|
73
|
+
return `NoiseTexture,${resolvedProps.w},${resolvedProps.h},${resolvedProps.cacheId}`;
|
|
91
74
|
}
|
|
92
75
|
|
|
93
76
|
static override resolveDefaults(
|
|
94
77
|
props: NoiseTextureProps,
|
|
95
78
|
): Required<NoiseTextureProps> {
|
|
96
79
|
return {
|
|
97
|
-
|
|
98
|
-
|
|
80
|
+
w: props.w ?? 128,
|
|
81
|
+
h: props.h ?? 128,
|
|
99
82
|
cacheId: props.cacheId ?? 0,
|
|
100
83
|
};
|
|
101
84
|
}
|
|
@@ -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 { CoreTextureManager } from '../CoreTextureManager.js';
|
|
21
2
|
import { Texture, TextureType, type TextureData } from './Texture.js';
|
|
22
3
|
|
|
@@ -28,13 +9,13 @@ export interface RenderTextureProps {
|
|
|
28
9
|
* WebGL Texture width
|
|
29
10
|
* @default 256
|
|
30
11
|
*/
|
|
31
|
-
|
|
12
|
+
w?: number;
|
|
32
13
|
|
|
33
14
|
/**
|
|
34
15
|
* WebGL Texture height
|
|
35
16
|
* @default 256
|
|
36
17
|
*/
|
|
37
|
-
|
|
18
|
+
h?: number;
|
|
38
19
|
}
|
|
39
20
|
|
|
40
21
|
export class RenderTexture extends Texture {
|
|
@@ -42,30 +23,32 @@ export class RenderTexture extends Texture {
|
|
|
42
23
|
|
|
43
24
|
public override type: TextureType = TextureType.renderToTexture;
|
|
44
25
|
|
|
45
|
-
constructor(
|
|
26
|
+
constructor(
|
|
27
|
+
txManager: CoreTextureManager,
|
|
28
|
+
props: Required<RenderTextureProps>,
|
|
29
|
+
) {
|
|
46
30
|
super(txManager);
|
|
47
|
-
this.props =
|
|
31
|
+
this.props = props;
|
|
48
32
|
}
|
|
49
33
|
|
|
50
|
-
get
|
|
51
|
-
return this.props.
|
|
34
|
+
get w() {
|
|
35
|
+
return this.props.w;
|
|
52
36
|
}
|
|
53
37
|
|
|
54
|
-
set
|
|
55
|
-
this.props.
|
|
38
|
+
set w(value: number) {
|
|
39
|
+
this.props.w = value;
|
|
56
40
|
}
|
|
57
41
|
|
|
58
|
-
get
|
|
59
|
-
return this.props.
|
|
42
|
+
get h() {
|
|
43
|
+
return this.props.h;
|
|
60
44
|
}
|
|
61
45
|
|
|
62
|
-
set
|
|
63
|
-
this.props.
|
|
46
|
+
set h(value: number) {
|
|
47
|
+
this.props.h = value;
|
|
64
48
|
}
|
|
65
49
|
|
|
66
50
|
override async getTextureSource(): Promise<TextureData> {
|
|
67
|
-
|
|
68
|
-
|
|
51
|
+
// Render texture data ready - dimensions will be set during upload
|
|
69
52
|
return {
|
|
70
53
|
data: null,
|
|
71
54
|
premultiplyAlpha: null,
|
|
@@ -76,8 +59,8 @@ export class RenderTexture extends Texture {
|
|
|
76
59
|
props: RenderTextureProps,
|
|
77
60
|
): Required<RenderTextureProps> {
|
|
78
61
|
return {
|
|
79
|
-
|
|
80
|
-
|
|
62
|
+
w: props.w || 256,
|
|
63
|
+
h: props.h || 256,
|
|
81
64
|
};
|
|
82
65
|
}
|
|
83
66
|
|
|
@@ -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
|
|