@lightningjs/renderer 3.0.0-beta8 → 3.0.0
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/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +230 -147
- 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 +5 -6
- package/dist/exports/index.js +3 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/platform.d.ts +7 -0
- package/dist/exports/platform.js +27 -0
- package/dist/exports/platform.js.map +1 -0
- 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 +15 -3
- package/dist/src/core/AutosizeManager.d.ts +29 -0
- package/dist/src/core/AutosizeManager.js +169 -0
- package/dist/src/core/AutosizeManager.js.map +1 -0
- 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 +106 -58
- package/dist/src/core/CoreNode.js +530 -282
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +73 -88
- package/dist/src/core/CoreTextNode.js +375 -236
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +23 -26
- package/dist/src/core/CoreTextureManager.js +60 -166
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +63 -9
- package/dist/src/core/Stage.js +233 -133
- 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 +3 -5
- package/dist/src/core/TextureMemoryManager.js +84 -94
- 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 +3 -3
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -1
- package/dist/src/core/animations/CoreAnimationController.js +8 -5
- 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 +30 -11
- 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 +4 -0
- package/dist/src/core/lib/collectionUtils.js +72 -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 +6 -6
- package/dist/src/core/lib/utils.js +21 -65
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/platform.d.ts +10 -0
- package/dist/src/core/platform.js +81 -0
- package/dist/src/core/platform.js.map +1 -0
- package/dist/src/core/platforms/GlContextWrapper.d.ts +136 -0
- package/{src/core/text-rendering/TextRenderingUtils.ts → dist/src/core/platforms/GlContextWrapper.js} +32 -36
- package/dist/src/core/platforms/GlContextWrapper.js.map +1 -0
- package/dist/src/core/platforms/Platform.d.ts +78 -12
- package/dist/src/core/platforms/Platform.js +18 -0
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebGlContextWrapper.d.ts +776 -0
- package/dist/src/core/platforms/web/WebGlContextWrapper.js +1208 -0
- package/dist/src/core/platforms/web/WebGlContextWrapper.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +17 -2
- package/dist/src/core/platforms/web/WebPlatform.js +158 -13
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatformChrome50.d.ts +19 -0
- package/dist/src/core/platforms/web/WebPlatformChrome50.js +54 -0
- package/dist/src/core/platforms/web/WebPlatformChrome50.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatformLegacy.d.ts +20 -0
- package/dist/src/core/platforms/web/WebPlatformLegacy.js +105 -0
- package/dist/src/core/platforms/web/WebPlatformLegacy.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatformNext.d.ts +21 -0
- package/dist/src/core/platforms/web/WebPlatformNext.js +52 -0
- package/dist/src/core/platforms/web/WebPlatformNext.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorker.d.ts +21 -0
- package/dist/src/core/platforms/web/lib/ImageWorker.js +136 -0
- package/dist/src/core/platforms/web/lib/ImageWorker.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerDefault.d.ts +6 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js +92 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerDefault.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.d.ts +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js +63 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerLegacy.js.map +1 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.d.ts +7 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js +75 -0
- package/dist/src/core/platforms/web/lib/ImageWorkerNoOptions.js.map +1 -0
- package/dist/src/core/platforms/web/lib/createImageBitmap.d.ts +1 -0
- package/dist/src/core/platforms/web/lib/createImageBitmap.js +27 -0
- package/dist/src/core/platforms/web/lib/createImageBitmap.js.map +1 -0
- package/dist/src/core/platforms/web/lib/textureCompression.d.ts +26 -0
- package/dist/src/core/platforms/web/lib/textureCompression.js +301 -0
- package/dist/src/core/platforms/web/lib/textureCompression.js.map +1 -0
- package/dist/src/core/platforms/web/lib/textureSvg.d.ts +7 -0
- package/dist/src/core/platforms/web/lib/textureSvg.js +51 -0
- package/dist/src/core/platforms/web/lib/textureSvg.js.map +1 -0
- package/dist/src/core/platforms/web/lib/utils.d.ts +5 -0
- package/dist/src/core/platforms/web/lib/utils.js +86 -0
- package/dist/src/core/platforms/web/lib/utils.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 +4 -40
- package/dist/src/core/renderers/CoreRenderer.js +3 -4
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShader.d.ts +9 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts → dist/src/core/renderers/CoreShader.js} +28 -32
- package/dist/src/core/renderers/CoreShader.js.map +1 -0
- 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/canvas/CanvasCoreRenderer.d.ts +33 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +250 -0
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +17 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +125 -0
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -0
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +5 -6
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +67 -91
- 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 +5 -4
- 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/canvas/shaders/UnsupportedShader.d.ts +10 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts → dist/src/core/renderers/canvas/shaders/UnsupportedShader.js} +43 -40
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +98 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +12 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +58 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +9 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +38 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +69 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +272 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +34 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +114 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +133 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +649 -0
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +78 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +202 -0
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +4 -2
- 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 +15 -2
- 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 +19 -9
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +101 -49
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +3 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +14 -5
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -23
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +122 -133
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +4 -6
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +3 -3
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +11 -9
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +83 -46
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +4 -4
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +3 -3
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +38 -37
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +84 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +10 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +108 -0
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +29 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +408 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +28 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +126 -0
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +47 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +148 -0
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +30 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +31 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +9 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +136 -0
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +36 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +85 -0
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +104 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +22 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +45 -0
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +58 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +80 -0
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +35 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +134 -0
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +143 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +127 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +40 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +71 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +115 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +61 -0
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +1 -0
- 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 +7 -5
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +12 -10
- 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 +41 -11
- 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 +46 -9
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +6 -5
- 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 +11 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +30 -10
- 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 -2
- 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/webgl/Border.js +138 -84
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +46 -47
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
- package/dist/src/core/shaders/webgl/HolePunch.js +34 -34
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +60 -36
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +60 -37
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +74 -72
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +172 -113
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +191 -132
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +57 -55
- 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 +56 -66
- 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 +89 -83
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFont.d.ts +14 -0
- package/dist/src/core/text-rendering/CanvasFont.js +111 -0
- package/dist/src/core/text-rendering/CanvasFont.js.map +1 -0
- 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/CoreFont.d.ts +33 -0
- package/dist/src/core/text-rendering/CoreFont.js +48 -0
- package/dist/src/core/text-rendering/CoreFont.js.map +1 -0
- package/dist/src/core/text-rendering/FontManager.d.ts +11 -0
- package/dist/src/core/text-rendering/FontManager.js +42 -0
- package/dist/src/core/text-rendering/FontManager.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFont.d.ts +29 -0
- package/dist/src/core/text-rendering/SdfFont.js +142 -0
- package/dist/src/core/text-rendering/SdfFont.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +381 -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 +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 +383 -0
- package/{src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts → dist/src/core/text-rendering/TextRenderer.js} +20 -38
- 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/CanvasTextRenderer.js +0 -5
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -7
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +2 -50
- 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 +87 -46
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +8 -66
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -14
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -3
- 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 +33 -14
- package/dist/src/core/textures/ImageTexture.js +46 -125
- 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 +22 -40
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +74 -11
- package/dist/src/core/textures/Texture.js +136 -18
- 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/DynamicShaderController.d.ts +29 -0
- package/dist/src/main-api/DynamicShaderController.js +58 -0
- package/dist/src/main-api/DynamicShaderController.js.map +1 -0
- package/dist/src/main-api/Inspector.d.ts +129 -1
- package/dist/src/main-api/Inspector.js +462 -23
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +223 -41
- package/dist/src/main-api/Renderer.js +107 -62
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/main-api/ShaderController.d.ts +31 -0
- package/dist/src/main-api/ShaderController.js +37 -0
- package/dist/src/main-api/ShaderController.js.map +1 -0
- package/dist/src/utils.d.ts +0 -2
- package/dist/src/utils.js +0 -36
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +28 -28
- package/exports/canvas.ts +45 -45
- package/exports/index.ts +90 -90
- package/exports/inspector.ts +24 -24
- package/exports/platform.ts +31 -0
- package/exports/utils.ts +50 -50
- package/exports/webgl-shaders.ts +28 -28
- package/exports/webgl.ts +52 -50
- package/package.json +16 -15
- package/src/common/CommonTypes.ts +163 -146
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/Autosizer.ts +224 -0
- package/src/core/CoreNode.test.ts +365 -202
- package/src/core/CoreNode.ts +2785 -2483
- package/src/core/CoreShaderManager.ts +188 -188
- package/src/core/CoreTextNode.test.ts +311 -0
- package/src/core/CoreTextNode.ts +598 -451
- package/src/core/CoreTextureManager.ts +484 -608
- package/src/core/Stage.ts +927 -800
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +418 -435
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +290 -291
- package/src/core/animations/CoreAnimationController.ts +169 -164
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +71 -71
- package/src/core/lib/collectionUtils.ts +83 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
- package/src/core/lib/utils.ts +337 -390
- package/src/core/platforms/GlContextWrapper.ts +291 -0
- package/src/core/platforms/Platform.ts +176 -77
- package/src/core/{lib → platforms/web}/WebGlContextWrapper.ts +1547 -1374
- package/src/core/platforms/web/WebPlatform.ts +306 -84
- package/src/core/platforms/web/WebPlatformChrome50.ts +63 -0
- package/src/core/platforms/web/WebPlatformLegacy.ts +150 -0
- package/src/core/platforms/web/WebPlatformNext.ts +57 -0
- package/src/core/platforms/web/lib/ImageWorker.ts +192 -0
- package/src/core/platforms/web/lib/ImageWorkerDefault.ts +117 -0
- package/src/core/platforms/web/lib/ImageWorkerLegacy.ts +87 -0
- package/src/core/platforms/web/lib/ImageWorkerNoOptions.ts +99 -0
- package/src/core/platforms/web/lib/createImageBitmap.ts +40 -0
- package/src/core/platforms/web/lib/textureCompression.ts +391 -0
- package/src/core/{lib → platforms/web/lib}/textureSvg.ts +66 -78
- package/src/core/platforms/web/lib/utils.ts +105 -0
- package/src/core/renderers/CoreContextTexture.ts +44 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +71 -110
- package/src/core/renderers/CoreShaderNode.ts +202 -175
- package/src/core/renderers/CoreShaderProgram.ts +23 -23
- package/src/core/renderers/canvas/CanvasRenderer.ts +258 -302
- package/src/core/renderers/canvas/CanvasShaderNode.ts +95 -96
- package/src/core/renderers/canvas/CanvasTexture.ts +160 -156
- package/src/core/renderers/webgl/SdfRenderOp.ts +106 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +89 -86
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +95 -50
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +350 -298
- package/src/core/renderers/webgl/WebGlRenderer.ts +726 -747
- package/src/core/renderers/webgl/WebGlShaderNode.ts +430 -435
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +362 -318
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +151 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +283 -281
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/shaders/canvas/Border.ts +132 -78
- package/src/core/shaders/canvas/HolePunch.ts +56 -62
- package/src/core/shaders/canvas/LinearGradient.ts +73 -71
- package/src/core/shaders/canvas/RadialGradient.ts +96 -99
- package/src/core/shaders/canvas/Rounded.ts +55 -55
- package/src/core/shaders/canvas/RoundedWithBorder.ts +122 -74
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +136 -90
- package/src/core/shaders/canvas/RoundedWithShadow.ts +71 -70
- package/src/core/shaders/canvas/Shadow.ts +54 -52
- package/src/core/shaders/canvas/utils/render.ts +160 -151
- package/src/core/shaders/templates/BorderTemplate.ts +145 -115
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
- package/src/core/shaders/templates/RadialGradientTemplate.ts +83 -81
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
- package/src/core/shaders/utils.ts +46 -46
- package/src/core/shaders/webgl/Border.ts +169 -116
- package/src/core/shaders/webgl/Default.ts +88 -89
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
- package/src/core/shaders/webgl/HolePunch.ts +75 -75
- package/src/core/shaders/webgl/LinearGradient.ts +106 -82
- package/src/core/shaders/webgl/RadialGradient.ts +108 -85
- package/src/core/shaders/webgl/Rounded.ts +115 -117
- package/src/core/shaders/webgl/RoundedWithBorder.ts +210 -155
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +234 -175
- package/src/core/shaders/webgl/RoundedWithShadow.ts +96 -98
- package/src/core/shaders/webgl/SdfShader.ts +122 -134
- package/src/core/shaders/webgl/Shadow.ts +121 -115
- 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 +584 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +403 -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 +104 -102
- package/src/core/textures/ImageTexture.ts +292 -418
- package/src/core/textures/NoiseTexture.ts +106 -104
- package/src/core/textures/RenderTexture.ts +87 -85
- package/src/core/textures/SubTexture.ts +184 -205
- package/src/core/textures/Texture.ts +524 -372
- package/src/core/utils.ts +229 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/INode.ts +100 -100
- package/src/main-api/Inspector.ts +1278 -569
- package/src/main-api/Renderer.ts +1030 -818
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +220 -267
- package/COPYING +0 -1
- package/src/core/lib/ImageWorker.ts +0 -286
- package/src/core/lib/textureCompression.ts +0 -152
- package/src/core/lib/validateImageBitmap.ts +0 -87
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
- 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 -514
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -863
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -793
- 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/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/layoutText.ts +0 -497
- 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/TextRenderer.ts +0 -567
|
@@ -1,84 +1,306 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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 2026 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
|
+
import { Platform, type PlatformSettings } from '../Platform.js';
|
|
21
|
+
import {
|
|
22
|
+
ImageWorkerManager,
|
|
23
|
+
type ImageWorkerFactory,
|
|
24
|
+
} from './lib/ImageWorker.js';
|
|
25
|
+
import { createImageWorker } from './lib/ImageWorkerDefault.js';
|
|
26
|
+
import type { Stage } from '../../Stage.js';
|
|
27
|
+
import {
|
|
28
|
+
dataURIToBlob,
|
|
29
|
+
isBase64Image,
|
|
30
|
+
convertUrlToAbsolute,
|
|
31
|
+
createWebGLContext,
|
|
32
|
+
} from './lib/utils.js';
|
|
33
|
+
|
|
34
|
+
import type { ImageResponse } from '../../textures/ImageTexture.js';
|
|
35
|
+
import { loadSvg } from './lib/textureSvg.js';
|
|
36
|
+
import { loadCompressedTexture } from './lib/textureCompression.js';
|
|
37
|
+
import { WebGlContextWrapper } from './WebGlContextWrapper.js';
|
|
38
|
+
import type { GlContextWrapper } from '../GlContextWrapper.js';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* make fontface add not show errors
|
|
42
|
+
*/
|
|
43
|
+
interface FontFaceSetWithAdd extends FontFaceSet {
|
|
44
|
+
add(font: FontFace): this;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export class WebPlatform extends Platform {
|
|
48
|
+
private useImageWorker: boolean;
|
|
49
|
+
private imageWorkerManager: ImageWorkerManager | null = null;
|
|
50
|
+
private hasWorker = !!self.Worker;
|
|
51
|
+
|
|
52
|
+
constructor(settings: PlatformSettings = {}) {
|
|
53
|
+
super(settings);
|
|
54
|
+
|
|
55
|
+
const numImageWorkers = settings.numImageWorkers ?? 0;
|
|
56
|
+
this.useImageWorker = numImageWorkers > 0 && this.hasWorker;
|
|
57
|
+
|
|
58
|
+
if (this.useImageWorker === true) {
|
|
59
|
+
this.imageWorkerManager = this.createImageWorkerManager(numImageWorkers);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
protected createImageWorkerManager(
|
|
64
|
+
numImageWorkers: number,
|
|
65
|
+
): ImageWorkerManager {
|
|
66
|
+
return new ImageWorkerManager(
|
|
67
|
+
numImageWorkers,
|
|
68
|
+
this.getImageWorkerFactory(),
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
protected getImageWorkerFactory(): ImageWorkerFactory {
|
|
73
|
+
return createImageWorker;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
////////////////////////
|
|
77
|
+
// Platform-specific methods
|
|
78
|
+
////////////////////////
|
|
79
|
+
|
|
80
|
+
override createCanvas(): HTMLCanvasElement {
|
|
81
|
+
return document.createElement('canvas');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
override createContext(): GlContextWrapper {
|
|
85
|
+
if (this.canvas === null) {
|
|
86
|
+
throw new Error('Canvas has not been created yet.');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const gl = createWebGLContext(this.canvas, this.settings.forceWebGL2);
|
|
90
|
+
this.glw = new WebGlContextWrapper(gl);
|
|
91
|
+
return this.glw;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
override getElementById(id: string): HTMLElement | null {
|
|
95
|
+
return document.getElementById(id);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
////////////////////////
|
|
99
|
+
// Update loop
|
|
100
|
+
////////////////////////
|
|
101
|
+
|
|
102
|
+
override startLoop(stage: Stage): void {
|
|
103
|
+
let isIdle = false;
|
|
104
|
+
let lastFrameTime = 0;
|
|
105
|
+
|
|
106
|
+
const runLoop = (currentTime: number = 0) => {
|
|
107
|
+
const targetFrameTime = stage.targetFrameTime;
|
|
108
|
+
|
|
109
|
+
// Check if we should throttle this frame
|
|
110
|
+
if (
|
|
111
|
+
targetFrameTime > 0 &&
|
|
112
|
+
currentTime - lastFrameTime < targetFrameTime
|
|
113
|
+
) {
|
|
114
|
+
// Too early for next frame, schedule with setTimeout for precise timing
|
|
115
|
+
const delay = targetFrameTime - (currentTime - lastFrameTime);
|
|
116
|
+
setTimeout(() => requestAnimationFrame(runLoop), delay);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
stage.updateFrameTime();
|
|
121
|
+
stage.updateAnimations();
|
|
122
|
+
|
|
123
|
+
if (!stage.hasSceneUpdates()) {
|
|
124
|
+
// We still need to calculate the fps else it looks like the app is frozen
|
|
125
|
+
stage.calculateFps();
|
|
126
|
+
|
|
127
|
+
if (targetFrameTime > 0) {
|
|
128
|
+
// Use setTimeout for throttled idle frames
|
|
129
|
+
setTimeout(
|
|
130
|
+
() => requestAnimationFrame(runLoop),
|
|
131
|
+
Math.max(targetFrameTime, 16.666666666666668),
|
|
132
|
+
);
|
|
133
|
+
} else {
|
|
134
|
+
// Use standard idle timeout when not throttling
|
|
135
|
+
setTimeout(() => requestAnimationFrame(runLoop), 16.666666666666668);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (isIdle === false) {
|
|
139
|
+
stage.shManager.cleanup();
|
|
140
|
+
stage.eventBus.emit('idle');
|
|
141
|
+
isIdle = true;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (stage.txMemManager.checkCleanup() === true) {
|
|
145
|
+
stage.txMemManager.cleanup();
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
stage.flushFrameEvents();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (isIdle === true) {
|
|
153
|
+
stage.eventBus.emit('active');
|
|
154
|
+
isIdle = false;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
stage.drawFrame();
|
|
158
|
+
stage.flushFrameEvents();
|
|
159
|
+
|
|
160
|
+
// Schedule next frame
|
|
161
|
+
if (targetFrameTime > 0) {
|
|
162
|
+
// Use setTimeout + rAF combination for precise FPS control
|
|
163
|
+
const nextFrameDelay = Math.max(
|
|
164
|
+
0,
|
|
165
|
+
targetFrameTime - (performance.now() - currentTime),
|
|
166
|
+
);
|
|
167
|
+
setTimeout(() => requestAnimationFrame(runLoop), nextFrameDelay);
|
|
168
|
+
} else {
|
|
169
|
+
// Use standard rAF when not throttling
|
|
170
|
+
requestAnimationFrame(runLoop);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
requestAnimationFrame(runLoop);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
////////////////////////
|
|
177
|
+
// Image handling
|
|
178
|
+
////////////////////////
|
|
179
|
+
|
|
180
|
+
override fetch(url: string): Promise<Blob> {
|
|
181
|
+
return new Promise((resolve, reject) => {
|
|
182
|
+
const xhr = new XMLHttpRequest();
|
|
183
|
+
xhr.responseType = 'blob';
|
|
184
|
+
xhr.onreadystatechange = function () {
|
|
185
|
+
if (xhr.readyState == XMLHttpRequest.DONE) {
|
|
186
|
+
// On most devices like WebOS and Tizen, the file protocol returns 0 while http(s) protocol returns 200
|
|
187
|
+
if (xhr.status === 0 || xhr.status === 200) {
|
|
188
|
+
if (xhr.response instanceof Blob) {
|
|
189
|
+
resolve(xhr.response);
|
|
190
|
+
} else {
|
|
191
|
+
reject(new Error('Expected blob response while loading image.'));
|
|
192
|
+
}
|
|
193
|
+
} else {
|
|
194
|
+
reject(xhr.statusText);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
xhr.open('GET', url, true);
|
|
199
|
+
xhr.send(null);
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
override async createImage(
|
|
204
|
+
blob: Blob,
|
|
205
|
+
premultiplyAlpha: boolean | null,
|
|
206
|
+
sx: number | null,
|
|
207
|
+
sy: number | null,
|
|
208
|
+
sw: number | null,
|
|
209
|
+
sh: number | null,
|
|
210
|
+
): Promise<ImageResponse> {
|
|
211
|
+
const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
|
|
212
|
+
|
|
213
|
+
if (sw !== null && sh !== null) {
|
|
214
|
+
// createImageBitmap with crop
|
|
215
|
+
const bitmap = await createImageBitmap(blob, sx || 0, sy || 0, sw, sh, {
|
|
216
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
217
|
+
colorSpaceConversion: 'none',
|
|
218
|
+
imageOrientation: 'none',
|
|
219
|
+
});
|
|
220
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// default createImageBitmap without crop but with options
|
|
224
|
+
const bitmap = await createImageBitmap(blob, {
|
|
225
|
+
premultiplyAlpha: hasAlphaChannel ? 'premultiply' : 'none',
|
|
226
|
+
colorSpaceConversion: 'none',
|
|
227
|
+
imageOrientation: 'none',
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
override async loadImage(
|
|
234
|
+
src: string,
|
|
235
|
+
premultiplyAlpha: boolean | null,
|
|
236
|
+
sx?: number | null,
|
|
237
|
+
sy?: number | null,
|
|
238
|
+
sw?: number | null,
|
|
239
|
+
sh?: number | null,
|
|
240
|
+
): Promise<ImageResponse> {
|
|
241
|
+
const isBase64 = isBase64Image(src);
|
|
242
|
+
const absoluteSrc = convertUrlToAbsolute(src);
|
|
243
|
+
const x = sx ?? null;
|
|
244
|
+
const y = sy ?? null;
|
|
245
|
+
const width = sw ?? null;
|
|
246
|
+
const height = sh ?? null;
|
|
247
|
+
|
|
248
|
+
// check if image worker is enabled
|
|
249
|
+
if (this.imageWorkerManager !== null && isBase64 === false) {
|
|
250
|
+
return this.imageWorkerManager.getImage(
|
|
251
|
+
absoluteSrc,
|
|
252
|
+
premultiplyAlpha,
|
|
253
|
+
x,
|
|
254
|
+
y,
|
|
255
|
+
width,
|
|
256
|
+
height,
|
|
257
|
+
);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// fallback to main thread loading
|
|
261
|
+
let blob: Blob;
|
|
262
|
+
if (isBase64 === true) {
|
|
263
|
+
blob = dataURIToBlob(src);
|
|
264
|
+
} else {
|
|
265
|
+
blob = await this.fetch(absoluteSrc);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return this.createImage(blob, premultiplyAlpha, x, y, width, height);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
override async loadSvg(
|
|
272
|
+
src: string,
|
|
273
|
+
width: number | null,
|
|
274
|
+
height: number | null,
|
|
275
|
+
sx?: number | null,
|
|
276
|
+
sy?: number | null,
|
|
277
|
+
sw?: number | null,
|
|
278
|
+
sh?: number | null,
|
|
279
|
+
): Promise<ImageResponse> {
|
|
280
|
+
return loadSvg(
|
|
281
|
+
convertUrlToAbsolute(src),
|
|
282
|
+
width,
|
|
283
|
+
height,
|
|
284
|
+
sx ?? null,
|
|
285
|
+
sy ?? null,
|
|
286
|
+
sw ?? null,
|
|
287
|
+
sh ?? null,
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
override async loadCompressedTexture(src: string): Promise<ImageResponse> {
|
|
292
|
+
return loadCompressedTexture(convertUrlToAbsolute(src));
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
////////////////////////
|
|
296
|
+
// Utilities
|
|
297
|
+
////////////////////////
|
|
298
|
+
|
|
299
|
+
getTimeStamp(): number {
|
|
300
|
+
return performance ? performance.now() : Date.now();
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
override addFont(font: FontFace): void {
|
|
304
|
+
(document.fonts as FontFaceSetWithAdd).add(font);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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 2026 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
|
+
import { WebPlatform } from './WebPlatform.js';
|
|
21
|
+
import type { ImageResponse } from '../../textures/ImageTexture.js';
|
|
22
|
+
import type { ImageWorkerFactory } from './lib/ImageWorker.js';
|
|
23
|
+
import { createImageWorkerNoOptions } from './lib/ImageWorkerNoOptions.js';
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Chrome 50 Web Platform implementation with limited createImageBitmap support
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* This platform is designed for Chrome 50 and similar browsers that support
|
|
30
|
+
* createImageBitmap but with a limited signature (no options or cropping parameters).
|
|
31
|
+
*
|
|
32
|
+
* Limitations:
|
|
33
|
+
* - createImageBitmap is called without options (premultiplyAlpha, colorSpaceConversion, imageOrientation)
|
|
34
|
+
* - Image cropping (sx, sy, sw, sh parameters) is not supported
|
|
35
|
+
* - Image workers can still be used if enabled via settings
|
|
36
|
+
*/
|
|
37
|
+
export class WebPlatformChrome50 extends WebPlatform {
|
|
38
|
+
protected override getImageWorkerFactory(): ImageWorkerFactory {
|
|
39
|
+
return createImageWorkerNoOptions;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
override async createImage(
|
|
43
|
+
blob: Blob,
|
|
44
|
+
premultiplyAlpha: boolean | null,
|
|
45
|
+
// Cropping parameters are not supported in Chrome 50
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
47
|
+
sx: number | null,
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
49
|
+
sy: number | null,
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
51
|
+
sw: number | null,
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
53
|
+
sh: number | null,
|
|
54
|
+
): Promise<ImageResponse> {
|
|
55
|
+
const hasAlphaChannel = premultiplyAlpha ?? blob.type.includes('image/png');
|
|
56
|
+
|
|
57
|
+
// Chrome 50 createImageBitmap signature: createImageBitmap(blob)
|
|
58
|
+
// No options or cropping parameters supported
|
|
59
|
+
const bitmap = await createImageBitmap(blob);
|
|
60
|
+
|
|
61
|
+
return { data: bitmap, premultiplyAlpha: hasAlphaChannel };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
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 2026 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
|
+
import { WebPlatform } from './WebPlatform.js';
|
|
21
|
+
import type { PlatformSettings } from '../Platform.js';
|
|
22
|
+
import type { ImageResponse } from '../../textures/ImageTexture.js';
|
|
23
|
+
import type { ImageWorkerFactory } from './lib/ImageWorker.js';
|
|
24
|
+
import { createImageWorkerLegacy } from './lib/ImageWorkerLegacy.js';
|
|
25
|
+
import {
|
|
26
|
+
isBase64Image,
|
|
27
|
+
dataURIToBlob,
|
|
28
|
+
convertUrlToAbsolute,
|
|
29
|
+
} from './lib/utils.js';
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Legacy Web Platform implementation that uses Image() instead of createImageBitmap
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* This platform is designed for environments that don't support createImageBitmap API,
|
|
36
|
+
* or for compatibility with older browsers. It uses the traditional HTMLImageElement
|
|
37
|
+
* approach for image loading.
|
|
38
|
+
*
|
|
39
|
+
*/
|
|
40
|
+
export class WebPlatformLegacy extends WebPlatform {
|
|
41
|
+
constructor(settings: PlatformSettings = {}) {
|
|
42
|
+
super({ ...settings, numImageWorkers: settings.numImageWorkers ?? 0 });
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
protected override getImageWorkerFactory(): ImageWorkerFactory {
|
|
46
|
+
return createImageWorkerLegacy;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
override async loadImage(
|
|
50
|
+
src: string,
|
|
51
|
+
premultiplyAlpha: boolean | null,
|
|
52
|
+
sx?: number | null,
|
|
53
|
+
sy?: number | null,
|
|
54
|
+
sw?: number | null,
|
|
55
|
+
sh?: number | null,
|
|
56
|
+
): Promise<ImageResponse> {
|
|
57
|
+
const isBase64 = isBase64Image(src);
|
|
58
|
+
|
|
59
|
+
if (isBase64 === false && this.settings.numImageWorkers > 0) {
|
|
60
|
+
return super.loadImage(src, premultiplyAlpha, sx, sy, sw, sh);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const absoluteSrc = convertUrlToAbsolute(src);
|
|
64
|
+
|
|
65
|
+
// For base64 images, use blob conversion
|
|
66
|
+
if (isBase64 === true) {
|
|
67
|
+
const blob = dataURIToBlob(src);
|
|
68
|
+
return this.createImage(
|
|
69
|
+
blob,
|
|
70
|
+
premultiplyAlpha,
|
|
71
|
+
sx ?? null,
|
|
72
|
+
sy ?? null,
|
|
73
|
+
sw ?? null,
|
|
74
|
+
sh ?? null,
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// For regular URLs, load directly without blob conversion
|
|
79
|
+
const hasAlpha =
|
|
80
|
+
premultiplyAlpha ?? absoluteSrc.toLowerCase().endsWith('.png');
|
|
81
|
+
const img = new Image();
|
|
82
|
+
img.crossOrigin = 'anonymous';
|
|
83
|
+
|
|
84
|
+
return new Promise<ImageResponse>((resolve, reject) => {
|
|
85
|
+
img.onload = () => {
|
|
86
|
+
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
img.onerror = (err) => {
|
|
90
|
+
const errorMessage =
|
|
91
|
+
err instanceof Error
|
|
92
|
+
? err.message
|
|
93
|
+
: err instanceof Event
|
|
94
|
+
? `Image loading failed for ${img.src}`
|
|
95
|
+
: 'Unknown image loading error';
|
|
96
|
+
reject(new Error(`Image loading failed: ${errorMessage}`));
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
img.src = absoluteSrc;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
override async createImage(
|
|
104
|
+
blob: Blob,
|
|
105
|
+
premultiplyAlpha: boolean | null,
|
|
106
|
+
// Cropping parameters are not supported in legacy mode
|
|
107
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
108
|
+
sx: number | null,
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
110
|
+
sy: number | null,
|
|
111
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
112
|
+
sw: number | null,
|
|
113
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
114
|
+
sh: number | null,
|
|
115
|
+
): Promise<ImageResponse> {
|
|
116
|
+
const hasAlpha = premultiplyAlpha ?? blob.type.includes('image/png');
|
|
117
|
+
const src = URL.createObjectURL(blob);
|
|
118
|
+
const img = new Image();
|
|
119
|
+
|
|
120
|
+
if (typeof src === 'string' && isBase64Image(src) === false) {
|
|
121
|
+
img.crossOrigin = 'anonymous';
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return new Promise<ImageResponse>((resolve, reject) => {
|
|
125
|
+
img.onload = () => {
|
|
126
|
+
URL.revokeObjectURL(src);
|
|
127
|
+
resolve({ data: img, premultiplyAlpha: hasAlpha });
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
img.onerror = (err) => {
|
|
131
|
+
URL.revokeObjectURL(src);
|
|
132
|
+
const errorMessage =
|
|
133
|
+
err instanceof Error
|
|
134
|
+
? err.message
|
|
135
|
+
: err instanceof Event
|
|
136
|
+
? `Image loading failed for ${img.src}`
|
|
137
|
+
: 'Unknown image loading error';
|
|
138
|
+
reject(new Error(`Image loading failed: ${errorMessage}`));
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
img.src = src;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
override async loadCompressedTexture(src: string): Promise<ImageResponse> {
|
|
146
|
+
throw new Error(
|
|
147
|
+
`Compressed textures are not supported in legacy mode. Attempted to load: ${src}`,
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
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 2026 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
|
+
import { WebPlatform } from './WebPlatform.js';
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Next-generation Web Platform implementation that uses Fetch API
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* This platform uses the modern Fetch API instead of XMLHttpRequest for
|
|
27
|
+
* loading image resources. The Fetch API provides a more modern, promise-based
|
|
28
|
+
* interface for network requests and better streaming capabilities.
|
|
29
|
+
*
|
|
30
|
+
* Benefits over XMLHttpRequest:
|
|
31
|
+
* - Promise-based (no callback-based API)
|
|
32
|
+
* - Better error handling
|
|
33
|
+
* - More consistent across browsers
|
|
34
|
+
* - Better streaming support
|
|
35
|
+
* - Service Worker compatible
|
|
36
|
+
*
|
|
37
|
+
* All other platform features remain the same as WebPlatform.
|
|
38
|
+
*/
|
|
39
|
+
export class WebPlatformNext extends WebPlatform {
|
|
40
|
+
override async fetch(url: string): Promise<Blob> {
|
|
41
|
+
try {
|
|
42
|
+
const response = await fetch(url);
|
|
43
|
+
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
`Failed to fetch resource: ${response.status} ${response.statusText}`,
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return await response.blob();
|
|
51
|
+
} catch (error) {
|
|
52
|
+
const errorMessage =
|
|
53
|
+
error instanceof Error ? error.message : 'Unknown fetch error';
|
|
54
|
+
throw new Error(`Fetch failed for ${url}: ${errorMessage}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|