@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta21
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/README.md +16 -26
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +13 -2
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +196 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +124 -100
- package/dist/src/core/CoreNode.js +720 -472
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -5
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +74 -87
- package/dist/src/core/CoreTextNode.js +355 -232
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -13
- package/dist/src/core/CoreTextureManager.js +80 -104
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +93 -33
- package/dist/src/core/Stage.js +315 -151
- 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 +128 -109
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/Animation.d.ts +21 -0
- package/dist/src/core/animations/Animation.js +194 -0
- package/dist/src/core/animations/Animation.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -3
- 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 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/animations/Playback.d.ts +64 -0
- package/dist/src/core/animations/Playback.js +169 -0
- package/dist/src/core/animations/Playback.js.map +1 -0
- package/dist/src/core/animations/Transition.d.ts +27 -0
- package/dist/src/core/animations/Transition.js +52 -0
- package/dist/src/core/animations/Transition.js.map +1 -0
- package/dist/src/core/animations/utils.d.ts +2 -0
- package/dist/src/core/animations/utils.js +136 -0
- package/dist/src/core/animations/utils.js.map +1 -0
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +31 -12
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +105 -28
- 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 +100 -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/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -2
- package/dist/src/core/lib/utils.js +43 -21
- 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/platform.js +30 -5
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- 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 +87 -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.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -30
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +12 -1
- package/dist/src/core/renderers/CoreShaderNode.js +26 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +65 -87
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- 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 -13
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +97 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +87 -42
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
- 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 -5
- 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 -52
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +11 -4
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -21
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +168 -152
- 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 +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 +83 -43
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +64 -25
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +11 -7
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +21 -17
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +3 -3
- 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 +45 -7
- 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 +50 -11
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +10 -7
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +4 -2
- 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 -18
- 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 -11
- 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 -3
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- 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/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +116 -35
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -7
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +4 -2
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +153 -39
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +158 -43
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +6 -4
- 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 -17
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
- package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
- package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
- package/dist/src/core/shaders/webgl/Shadow.js +12 -6
- 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 +224 -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 +157 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +303 -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 +383 -0
- package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +84 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -4
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +11 -4
- package/dist/src/core/textures/ImageTexture.js +31 -40
- 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 -8
- 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 -12
- 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 -37
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +87 -10
- package/dist/src/core/textures/Texture.js +160 -17
- 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 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +131 -2
- package/dist/src/main-api/Inspector.js +345 -28
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +295 -82
- package/dist/src/main-api/Renderer.js +223 -76
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas.ts +1 -1
- package/exports/index.ts +2 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +15 -17
- package/src/common/CommonTypes.ts +18 -2
- package/src/core/Autosizer.ts +224 -0
- package/src/core/CoreNode.test.ts +179 -17
- package/src/core/CoreNode.ts +895 -599
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +422 -286
- package/src/core/CoreTextureManager.ts +110 -130
- package/src/core/Stage.ts +397 -195
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +164 -141
- package/src/core/animations/CoreAnimation.ts +15 -9
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +43 -12
- package/src/core/lib/WebGlContextWrapper.ts +127 -79
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
- package/src/core/lib/textureCompression.ts +433 -75
- package/src/core/lib/utils.ts +54 -25
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +83 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -1
- package/src/core/renderers/CoreRenderer.ts +5 -32
- package/src/core/renderers/CoreShaderNode.ts +38 -3
- package/src/core/renderers/canvas/CanvasRenderer.ts +84 -126
- package/src/core/renderers/canvas/CanvasShaderNode.ts +4 -8
- package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
- package/src/core/renderers/webgl/SdfRenderOp.ts +105 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -84
- package/src/core/renderers/webgl/WebGlRenderer.ts +203 -190
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -11
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +101 -53
- package/src/core/shaders/canvas/Border.ts +88 -34
- package/src/core/shaders/canvas/HolePunch.ts +5 -11
- package/src/core/shaders/canvas/LinearGradient.ts +14 -10
- package/src/core/shaders/canvas/RadialGradient.ts +24 -41
- package/src/core/shaders/canvas/Rounded.ts +7 -7
- package/src/core/shaders/canvas/RoundedWithBorder.ts +77 -23
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +84 -36
- package/src/core/shaders/canvas/RoundedWithShadow.ts +15 -13
- package/src/core/shaders/canvas/Shadow.ts +7 -5
- package/src/core/shaders/canvas/utils/render.ts +45 -36
- package/src/core/shaders/templates/BorderTemplate.ts +42 -12
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/Border.ts +116 -39
- package/src/core/shaders/webgl/Default.ts +6 -7
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +33 -8
- package/src/core/shaders/webgl/RadialGradient.ts +58 -34
- package/src/core/shaders/webgl/Rounded.ts +4 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +154 -46
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +159 -52
- package/src/core/shaders/webgl/RoundedWithShadow.ts +6 -8
- package/src/core/shaders/webgl/SdfShader.ts +7 -19
- package/src/core/shaders/webgl/Shadow.ts +12 -6
- package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
- package/src/core/text-rendering/SdfFontHandler.ts +591 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +408 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +444 -0
- package/src/core/text-rendering/Utils.ts +99 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
- package/src/core/textures/ColorTexture.ts +7 -5
- package/src/core/textures/ImageTexture.ts +78 -66
- package/src/core/textures/NoiseTexture.ts +14 -12
- package/src/core/textures/RenderTexture.ts +18 -16
- package/src/core/textures/SubTexture.ts +25 -46
- package/src/core/textures/Texture.ts +207 -24
- package/src/core/utils.ts +9 -7
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +577 -36
- package/src/main-api/Renderer.ts +518 -139
- package/src/utils.ts +10 -10
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.d.ts +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.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 -161
- 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 -840
- 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
|
@@ -29,7 +29,9 @@ import {
|
|
|
29
29
|
isBase64Image,
|
|
30
30
|
} from '../lib/utils.js';
|
|
31
31
|
import { isSvgImage, loadSvg } from '../lib/textureSvg.js';
|
|
32
|
-
import { fetchJson } from '../
|
|
32
|
+
import { fetchJson } from '../lib/utils.js';
|
|
33
|
+
import type { Platform } from '../platforms/Platform.js';
|
|
34
|
+
import { isProductionEnvironment } from '../../utils.js';
|
|
33
35
|
|
|
34
36
|
/**
|
|
35
37
|
* Properties of the {@link ImageTexture}
|
|
@@ -65,12 +67,12 @@ export interface ImageTextureProps {
|
|
|
65
67
|
* Width of the image to be used as a texture. If not provided, the image's
|
|
66
68
|
* natural width will be used.
|
|
67
69
|
*/
|
|
68
|
-
|
|
70
|
+
w?: number | null;
|
|
69
71
|
/**
|
|
70
72
|
* Height of the image to be used as a texture. If not provided, the image's
|
|
71
73
|
* natural height will be used.
|
|
72
74
|
*/
|
|
73
|
-
|
|
75
|
+
h?: number | null;
|
|
74
76
|
/**
|
|
75
77
|
* Type, indicate an image type for overriding type detection
|
|
76
78
|
*
|
|
@@ -107,6 +109,12 @@ export interface ImageTextureProps {
|
|
|
107
109
|
* @default null
|
|
108
110
|
*/
|
|
109
111
|
sy?: number | null;
|
|
112
|
+
/**
|
|
113
|
+
* Maximum number of times to retry loading the image if it fails.
|
|
114
|
+
*
|
|
115
|
+
* @default 5
|
|
116
|
+
*/
|
|
117
|
+
maxRetryCount?: number;
|
|
110
118
|
}
|
|
111
119
|
|
|
112
120
|
/**
|
|
@@ -124,13 +132,20 @@ export interface ImageTextureProps {
|
|
|
124
132
|
* {@link ImageTextureProps.premultiplyAlpha} prop to `false`.
|
|
125
133
|
*/
|
|
126
134
|
export class ImageTexture extends Texture {
|
|
127
|
-
|
|
135
|
+
private platform: Platform;
|
|
128
136
|
|
|
137
|
+
public props: Required<ImageTextureProps>;
|
|
129
138
|
public override type: TextureType = TextureType.image;
|
|
130
139
|
|
|
131
|
-
constructor(
|
|
140
|
+
constructor(
|
|
141
|
+
txManager: CoreTextureManager,
|
|
142
|
+
props: Required<ImageTextureProps>,
|
|
143
|
+
) {
|
|
132
144
|
super(txManager);
|
|
133
|
-
|
|
145
|
+
|
|
146
|
+
this.platform = txManager.platform;
|
|
147
|
+
this.props = props;
|
|
148
|
+
this.maxRetryCount = props.maxRetryCount as number;
|
|
134
149
|
}
|
|
135
150
|
|
|
136
151
|
hasAlphaChannel(mimeType: string) {
|
|
@@ -144,24 +159,30 @@ export class ImageTexture extends Texture {
|
|
|
144
159
|
img.crossOrigin = 'anonymous';
|
|
145
160
|
}
|
|
146
161
|
|
|
147
|
-
return new Promise<{
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
162
|
+
return new Promise<{
|
|
163
|
+
data: HTMLImageElement | null;
|
|
164
|
+
premultiplyAlpha: boolean;
|
|
165
|
+
}>((resolve, reject) => {
|
|
166
|
+
img.onload = () => {
|
|
167
|
+
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
168
|
+
};
|
|
152
169
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
170
|
+
img.onerror = (err) => {
|
|
171
|
+
const errorMessage =
|
|
172
|
+
err instanceof Error
|
|
173
|
+
? err.message
|
|
174
|
+
: err instanceof Event
|
|
175
|
+
? `Image loading failed for ${img.src}`
|
|
176
|
+
: 'Unknown image loading error';
|
|
177
|
+
reject(new Error(`Image loading failed: ${errorMessage}`));
|
|
178
|
+
};
|
|
157
179
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
);
|
|
180
|
+
if (src instanceof Blob) {
|
|
181
|
+
img.src = URL.createObjectURL(src);
|
|
182
|
+
} else {
|
|
183
|
+
img.src = src;
|
|
184
|
+
}
|
|
185
|
+
});
|
|
165
186
|
}
|
|
166
187
|
|
|
167
188
|
async createImageBitmap(
|
|
@@ -180,23 +201,30 @@ export class ImageTexture extends Texture {
|
|
|
180
201
|
|
|
181
202
|
if (imageBitmapSupported.full === true && sw !== null && sh !== null) {
|
|
182
203
|
// createImageBitmap with crop
|
|
183
|
-
const bitmap = await createImageBitmap(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
204
|
+
const bitmap = await this.platform.createImageBitmap(
|
|
205
|
+
blob,
|
|
206
|
+
sx || 0,
|
|
207
|
+
sy || 0,
|
|
208
|
+
sw,
|
|
209
|
+
sh,
|
|
210
|
+
{
|
|
211
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
212
|
+
colorSpaceConversion: 'none',
|
|
213
|
+
imageOrientation: 'none',
|
|
214
|
+
},
|
|
215
|
+
);
|
|
188
216
|
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
189
217
|
} else if (imageBitmapSupported.basic === true) {
|
|
190
218
|
// basic createImageBitmap without options or crop
|
|
191
219
|
// this is supported for Chrome v50 to v52/54 that doesn't support options
|
|
192
220
|
return {
|
|
193
|
-
data: await createImageBitmap(blob),
|
|
221
|
+
data: await this.platform.createImageBitmap(blob),
|
|
194
222
|
premultiplyAlpha: hasAlphaChannel,
|
|
195
223
|
};
|
|
196
224
|
}
|
|
197
225
|
|
|
198
226
|
// default createImageBitmap without crop but with options
|
|
199
|
-
const bitmap = await createImageBitmap(blob, {
|
|
227
|
+
const bitmap = await this.platform.createImageBitmap(blob, {
|
|
200
228
|
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
201
229
|
colorSpaceConversion: 'none',
|
|
202
230
|
imageOrientation: 'none',
|
|
@@ -240,11 +268,12 @@ export class ImageTexture extends Texture {
|
|
|
240
268
|
}
|
|
241
269
|
|
|
242
270
|
override async getTextureSource(): Promise<TextureData> {
|
|
243
|
-
let resp;
|
|
271
|
+
let resp: TextureData;
|
|
244
272
|
try {
|
|
245
273
|
resp = await this.determineImageTypeAndLoadImage();
|
|
246
274
|
} catch (e) {
|
|
247
275
|
this.setState('failed', e as Error);
|
|
276
|
+
|
|
248
277
|
return {
|
|
249
278
|
data: null,
|
|
250
279
|
};
|
|
@@ -257,23 +286,6 @@ export class ImageTexture extends Texture {
|
|
|
257
286
|
};
|
|
258
287
|
}
|
|
259
288
|
|
|
260
|
-
let width, height;
|
|
261
|
-
// check if resp.data is typeof Uint8ClampedArray else
|
|
262
|
-
// use resp.data.width and resp.data.height
|
|
263
|
-
if (resp.data instanceof Uint8Array) {
|
|
264
|
-
width = this.props.width ?? 0;
|
|
265
|
-
height = this.props.height ?? 0;
|
|
266
|
-
} else {
|
|
267
|
-
width = resp.data?.width ?? (this.props.width || 0);
|
|
268
|
-
height = resp.data?.height ?? (this.props.height || 0);
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// we're loaded!
|
|
272
|
-
this.setState('fetched', {
|
|
273
|
-
width,
|
|
274
|
-
height,
|
|
275
|
-
});
|
|
276
|
-
|
|
277
289
|
return {
|
|
278
290
|
data: resp.data,
|
|
279
291
|
premultiplyAlpha: this.props.premultiplyAlpha ?? true,
|
|
@@ -317,8 +329,8 @@ export class ImageTexture extends Texture {
|
|
|
317
329
|
if (type === 'svg') {
|
|
318
330
|
return loadSvg(
|
|
319
331
|
absoluteSrc,
|
|
320
|
-
this.props.
|
|
321
|
-
this.props.
|
|
332
|
+
this.props.w,
|
|
333
|
+
this.props.h,
|
|
322
334
|
this.props.sx,
|
|
323
335
|
this.props.sy,
|
|
324
336
|
this.props.sw,
|
|
@@ -329,8 +341,8 @@ export class ImageTexture extends Texture {
|
|
|
329
341
|
if (isSvgImage(src) === true) {
|
|
330
342
|
return loadSvg(
|
|
331
343
|
absoluteSrc,
|
|
332
|
-
this.props.
|
|
333
|
-
this.props.
|
|
344
|
+
this.props.w,
|
|
345
|
+
this.props.h,
|
|
334
346
|
this.props.sx,
|
|
335
347
|
this.props.sy,
|
|
336
348
|
this.props.sw,
|
|
@@ -356,26 +368,25 @@ export class ImageTexture extends Texture {
|
|
|
356
368
|
* @returns The cache key as a string, or `false` if the key cannot be generated.
|
|
357
369
|
*/
|
|
358
370
|
static override makeCacheKey(props: ImageTextureProps): string | false {
|
|
359
|
-
const resolvedProps = ImageTexture.resolveDefaults(props);
|
|
360
371
|
// Only cache key-able textures; prioritise key
|
|
361
|
-
const key =
|
|
372
|
+
const key = props.key || props.src;
|
|
362
373
|
if (typeof key !== 'string') {
|
|
363
374
|
return false;
|
|
364
375
|
}
|
|
365
376
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
377
|
+
let cacheKey = `ImageTexture,${key},${props.premultiplyAlpha ?? 'true'},${
|
|
378
|
+
props.maxRetryCount
|
|
379
|
+
}`;
|
|
380
|
+
|
|
381
|
+
if (props.sh !== null && props.sw !== null) {
|
|
382
|
+
cacheKey += ',';
|
|
383
|
+
cacheKey += props.sx ?? '';
|
|
384
|
+
cacheKey += props.sy ?? '';
|
|
385
|
+
cacheKey += props.sw || '';
|
|
386
|
+
cacheKey += props.sh || '';
|
|
374
387
|
}
|
|
375
388
|
|
|
376
|
-
return
|
|
377
|
-
resolvedProps.premultiplyAlpha ?? 'true'
|
|
378
|
-
}${dimensionProps}`;
|
|
389
|
+
return cacheKey;
|
|
379
390
|
}
|
|
380
391
|
|
|
381
392
|
static override resolveDefaults(
|
|
@@ -386,12 +397,13 @@ export class ImageTexture extends Texture {
|
|
|
386
397
|
premultiplyAlpha: props.premultiplyAlpha ?? true, // null,
|
|
387
398
|
key: props.key ?? null,
|
|
388
399
|
type: props.type ?? null,
|
|
389
|
-
|
|
390
|
-
|
|
400
|
+
w: props.w ?? null,
|
|
401
|
+
h: props.h ?? null,
|
|
391
402
|
sx: props.sx ?? null,
|
|
392
403
|
sy: props.sy ?? null,
|
|
393
404
|
sw: props.sw ?? null,
|
|
394
405
|
sh: props.sh ?? null,
|
|
406
|
+
maxRetryCount: props.maxRetryCount ?? 5,
|
|
395
407
|
};
|
|
396
408
|
}
|
|
397
409
|
|
|
@@ -29,13 +29,13 @@ export interface NoiseTextureProps {
|
|
|
29
29
|
*
|
|
30
30
|
* @default 128
|
|
31
31
|
*/
|
|
32
|
-
|
|
32
|
+
w?: number;
|
|
33
33
|
/**
|
|
34
34
|
* Height of texture
|
|
35
35
|
*
|
|
36
36
|
* @default 128
|
|
37
37
|
*/
|
|
38
|
-
|
|
38
|
+
h?: number;
|
|
39
39
|
/**
|
|
40
40
|
* A number value that can be varied to force new textures to be generated
|
|
41
41
|
*
|
|
@@ -58,14 +58,17 @@ export class NoiseTexture extends Texture {
|
|
|
58
58
|
|
|
59
59
|
public override type: TextureType = TextureType.noise;
|
|
60
60
|
|
|
61
|
-
constructor(
|
|
61
|
+
constructor(
|
|
62
|
+
txManager: CoreTextureManager,
|
|
63
|
+
props: Required<NoiseTextureProps>,
|
|
64
|
+
) {
|
|
62
65
|
super(txManager);
|
|
63
|
-
this.props =
|
|
66
|
+
this.props = props;
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
override async getTextureSource(): Promise<TextureData> {
|
|
67
|
-
const {
|
|
68
|
-
const size =
|
|
70
|
+
const { w, h } = this.props;
|
|
71
|
+
const size = w * h * 4;
|
|
69
72
|
const pixelData8 = new Uint8ClampedArray(size);
|
|
70
73
|
for (let i = 0; i < size; i += 4) {
|
|
71
74
|
const v = Math.floor(Math.random() * 256);
|
|
@@ -75,10 +78,9 @@ export class NoiseTexture extends Texture {
|
|
|
75
78
|
pixelData8[i + 3] = 255;
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
|
|
79
|
-
|
|
81
|
+
// Noise Texture data ready - dimensions will be set during upload
|
|
80
82
|
return {
|
|
81
|
-
data: new ImageData(pixelData8,
|
|
83
|
+
data: new ImageData(pixelData8, w, h),
|
|
82
84
|
};
|
|
83
85
|
}
|
|
84
86
|
|
|
@@ -87,15 +89,15 @@ export class NoiseTexture extends Texture {
|
|
|
87
89
|
return false;
|
|
88
90
|
}
|
|
89
91
|
const resolvedProps = NoiseTexture.resolveDefaults(props);
|
|
90
|
-
return `NoiseTexture,${resolvedProps.
|
|
92
|
+
return `NoiseTexture,${resolvedProps.w},${resolvedProps.h},${resolvedProps.cacheId}`;
|
|
91
93
|
}
|
|
92
94
|
|
|
93
95
|
static override resolveDefaults(
|
|
94
96
|
props: NoiseTextureProps,
|
|
95
97
|
): Required<NoiseTextureProps> {
|
|
96
98
|
return {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
+
w: props.w ?? 128,
|
|
100
|
+
h: props.h ?? 128,
|
|
99
101
|
cacheId: props.cacheId ?? 0,
|
|
100
102
|
};
|
|
101
103
|
}
|
|
@@ -28,13 +28,13 @@ export interface RenderTextureProps {
|
|
|
28
28
|
* WebGL Texture width
|
|
29
29
|
* @default 256
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
w?: number;
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* WebGL Texture height
|
|
35
35
|
* @default 256
|
|
36
36
|
*/
|
|
37
|
-
|
|
37
|
+
h?: number;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export class RenderTexture extends Texture {
|
|
@@ -42,30 +42,32 @@ export class RenderTexture extends Texture {
|
|
|
42
42
|
|
|
43
43
|
public override type: TextureType = TextureType.renderToTexture;
|
|
44
44
|
|
|
45
|
-
constructor(
|
|
45
|
+
constructor(
|
|
46
|
+
txManager: CoreTextureManager,
|
|
47
|
+
props: Required<RenderTextureProps>,
|
|
48
|
+
) {
|
|
46
49
|
super(txManager);
|
|
47
|
-
this.props =
|
|
50
|
+
this.props = props;
|
|
48
51
|
}
|
|
49
52
|
|
|
50
|
-
get
|
|
51
|
-
return this.props.
|
|
53
|
+
get w() {
|
|
54
|
+
return this.props.w;
|
|
52
55
|
}
|
|
53
56
|
|
|
54
|
-
set
|
|
55
|
-
this.props.
|
|
57
|
+
set w(value: number) {
|
|
58
|
+
this.props.w = value;
|
|
56
59
|
}
|
|
57
60
|
|
|
58
|
-
get
|
|
59
|
-
return this.props.
|
|
61
|
+
get h() {
|
|
62
|
+
return this.props.h;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
|
-
set
|
|
63
|
-
this.props.
|
|
65
|
+
set h(value: number) {
|
|
66
|
+
this.props.h = value;
|
|
64
67
|
}
|
|
65
68
|
|
|
66
69
|
override async getTextureSource(): Promise<TextureData> {
|
|
67
|
-
|
|
68
|
-
|
|
70
|
+
// Render texture data ready - dimensions will be set during upload
|
|
69
71
|
return {
|
|
70
72
|
data: null,
|
|
71
73
|
premultiplyAlpha: null,
|
|
@@ -76,8 +78,8 @@ export class RenderTexture extends Texture {
|
|
|
76
78
|
props: RenderTextureProps,
|
|
77
79
|
): Required<RenderTextureProps> {
|
|
78
80
|
return {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
w: props.w || 256,
|
|
82
|
+
h: props.h || 256,
|
|
81
83
|
};
|
|
82
84
|
}
|
|
83
85
|
|
|
@@ -30,6 +30,8 @@ import {
|
|
|
30
30
|
type TextureState,
|
|
31
31
|
} from './Texture.js';
|
|
32
32
|
|
|
33
|
+
let subTextureId = 0;
|
|
34
|
+
|
|
33
35
|
/**
|
|
34
36
|
* Properties of the {@link SubTexture}
|
|
35
37
|
*/
|
|
@@ -60,12 +62,12 @@ export interface SubTextureProps {
|
|
|
60
62
|
*
|
|
61
63
|
* @default 0
|
|
62
64
|
*/
|
|
63
|
-
|
|
65
|
+
w?: number;
|
|
64
66
|
|
|
65
67
|
/**
|
|
66
68
|
* The height of the sub-texture in pixels
|
|
67
69
|
**/
|
|
68
|
-
|
|
70
|
+
h?: number;
|
|
69
71
|
}
|
|
70
72
|
|
|
71
73
|
/**
|
|
@@ -75,18 +77,19 @@ export interface SubTextureProps {
|
|
|
75
77
|
* The parent texture can be a Sprite Sheet/Texture Atlas and set using the
|
|
76
78
|
* {@link SubTextureProps.texture} prop. The sub-region relative to the parent
|
|
77
79
|
* texture is defined with the {@link SubTextureProps.x},
|
|
78
|
-
* {@link SubTextureProps.y}, {@link SubTextureProps.
|
|
79
|
-
* {@link SubTextureProps.
|
|
80
|
+
* {@link SubTextureProps.y}, {@link SubTextureProps.w}, and
|
|
81
|
+
* {@link SubTextureProps.h} pixel values.
|
|
80
82
|
*/
|
|
81
83
|
export class SubTexture extends Texture {
|
|
82
84
|
props: Required<SubTextureProps>;
|
|
83
85
|
parentTexture: Texture;
|
|
84
86
|
|
|
85
87
|
public override type: TextureType = TextureType.subTexture;
|
|
88
|
+
public subtextureId = `subtexture-${subTextureId++}`;
|
|
86
89
|
|
|
87
|
-
constructor(txManager: CoreTextureManager, props: SubTextureProps) {
|
|
90
|
+
constructor(txManager: CoreTextureManager, props: Required<SubTextureProps>) {
|
|
88
91
|
super(txManager);
|
|
89
|
-
this.props =
|
|
92
|
+
this.props = props;
|
|
90
93
|
|
|
91
94
|
assertTruthy(this.props.texture, 'SubTexture requires a parent texture');
|
|
92
95
|
assertTruthy(
|
|
@@ -97,8 +100,8 @@ export class SubTexture extends Texture {
|
|
|
97
100
|
// Resolve parent texture from cache or fallback to provided texture
|
|
98
101
|
this.parentTexture = txManager.resolveParentTexture(this.props.texture);
|
|
99
102
|
|
|
100
|
-
if (this.renderableOwners.
|
|
101
|
-
this.parentTexture.setRenderableOwner(this, true);
|
|
103
|
+
if (this.renderableOwners.length > 0) {
|
|
104
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, true);
|
|
102
105
|
}
|
|
103
106
|
|
|
104
107
|
// If parent texture is already loaded / failed, trigger loaded event manually
|
|
@@ -107,23 +110,17 @@ export class SubTexture extends Texture {
|
|
|
107
110
|
// synchronous task after calling loadTexture()
|
|
108
111
|
queueMicrotask(() => {
|
|
109
112
|
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();
|
|
113
|
+
if (parentTx.state === 'loaded' && parentTx.dimensions !== null) {
|
|
114
|
+
this.onParentTxLoaded(parentTx, parentTx.dimensions);
|
|
116
115
|
} else if (parentTx.state === 'loading') {
|
|
117
116
|
this.onParentTxLoading();
|
|
118
|
-
} else if (parentTx.state === 'failed') {
|
|
119
|
-
this.onParentTxFailed(parentTx, parentTx.error
|
|
117
|
+
} else if (parentTx.state === 'failed' && parentTx.error !== null) {
|
|
118
|
+
this.onParentTxFailed(parentTx, parentTx.error);
|
|
120
119
|
} else if (parentTx.state === 'freed') {
|
|
121
120
|
this.onParentTxFreed();
|
|
122
121
|
}
|
|
123
122
|
|
|
124
|
-
parentTx.on('fetched', this.onParentTxFetched);
|
|
125
123
|
parentTx.on('loading', this.onParentTxLoading);
|
|
126
|
-
parentTx.on('fetching', this.onParentTxFetching);
|
|
127
124
|
parentTx.on('loaded', this.onParentTxLoaded);
|
|
128
125
|
parentTx.on('failed', this.onParentTxFailed);
|
|
129
126
|
parentTx.on('freed', this.onParentTxFreed);
|
|
@@ -133,51 +130,33 @@ export class SubTexture extends Texture {
|
|
|
133
130
|
private onParentTxLoaded: TextureLoadedEventHandler = () => {
|
|
134
131
|
// We ignore the parent's passed dimensions, and simply use the SubTexture's
|
|
135
132
|
// configured dimensions (because that's all that matters here)
|
|
136
|
-
this.
|
|
137
|
-
|
|
138
|
-
|
|
133
|
+
this.setState('loaded', {
|
|
134
|
+
w: this.props.w,
|
|
135
|
+
h: this.props.h,
|
|
139
136
|
});
|
|
140
137
|
};
|
|
141
138
|
|
|
142
139
|
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');
|
|
140
|
+
this.retryCount = this.parentTexture.retryCount - 1;
|
|
141
|
+
this.setState('failed', error);
|
|
155
142
|
};
|
|
156
143
|
|
|
157
144
|
private onParentTxLoading = () => {
|
|
158
|
-
this.
|
|
145
|
+
this.setState('loading');
|
|
159
146
|
};
|
|
160
147
|
|
|
161
148
|
private onParentTxFreed = () => {
|
|
162
|
-
this.
|
|
149
|
+
this.setState('freed');
|
|
163
150
|
};
|
|
164
151
|
|
|
165
|
-
private forwardParentTxState(
|
|
166
|
-
state: TextureState,
|
|
167
|
-
errorOrDimensions?: Error | Dimensions,
|
|
168
|
-
) {
|
|
169
|
-
this.setState(state, errorOrDimensions);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
152
|
override onChangeIsRenderable(isRenderable: boolean): void {
|
|
173
153
|
// Propagate the renderable owner change to the parent texture
|
|
174
|
-
this.parentTexture.setRenderableOwner(this, isRenderable);
|
|
154
|
+
this.parentTexture.setRenderableOwner(this.subtextureId, isRenderable);
|
|
175
155
|
}
|
|
176
156
|
|
|
177
157
|
override async getTextureSource(): Promise<TextureData> {
|
|
178
158
|
// Check if parent texture is loaded
|
|
179
159
|
return new Promise((resolve, reject) => {
|
|
180
|
-
this.setState('fetched');
|
|
181
160
|
resolve({
|
|
182
161
|
data: this.props,
|
|
183
162
|
});
|
|
@@ -196,8 +175,8 @@ export class SubTexture extends Texture {
|
|
|
196
175
|
texture: props.texture,
|
|
197
176
|
x: props.x || 0,
|
|
198
177
|
y: props.y || 0,
|
|
199
|
-
|
|
200
|
-
|
|
178
|
+
w: props.w || 0,
|
|
179
|
+
h: props.h || 0,
|
|
201
180
|
};
|
|
202
181
|
}
|
|
203
182
|
|