@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta20
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 +73 -95
- package/dist/src/core/CoreNode.js +599 -461
- 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 +357 -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 +92 -33
- package/dist/src/core/Stage.js +313 -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/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/lib/ImageWorker.js +1 -1
- 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 +104 -27
- 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 +2 -0
- package/dist/src/core/lib/utils.js +22 -0
- 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 +7 -2
- 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 +8 -1
- package/dist/src/core/renderers/CoreShaderNode.js +11 -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 +1 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +32 -59
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- 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/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 +86 -41
- 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 +95 -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 +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +141 -112
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- 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 +6 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +47 -18
- 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.js +5 -5
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -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 +14 -12
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +11 -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 +57 -34
- 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 +81 -37
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +93 -42
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +3 -2
- 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/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 +311 -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 +3 -2
- 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 +130 -1
- package/dist/src/main-api/Inspector.js +341 -27
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +285 -82
- package/dist/src/main-api/Renderer.js +221 -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/CoreNode.test.ts +63 -15
- package/src/core/CoreNode.ts +709 -582
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +424 -286
- package/src/core/CoreTextureManager.ts +110 -130
- package/src/core/Stage.ts +394 -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 +7 -1
- package/src/core/lib/WebGlContextWrapper.ts +126 -78
- 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 +26 -0
- 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 +7 -3
- package/src/core/renderers/CoreShaderNode.ts +18 -3
- package/src/core/renderers/canvas/CanvasRenderer.ts +48 -82
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -6
- package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
- 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 +124 -81
- package/src/core/renderers/webgl/WebGlRenderOp.ts +21 -12
- package/src/core/renderers/webgl/WebGlRenderer.ts +172 -137
- package/src/core/renderers/webgl/WebGlShaderNode.ts +2 -4
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +58 -20
- package/src/core/shaders/canvas/Border.ts +5 -8
- package/src/core/shaders/canvas/HolePunch.ts +4 -11
- package/src/core/shaders/canvas/LinearGradient.ts +10 -8
- package/src/core/shaders/canvas/RadialGradient.ts +23 -37
- package/src/core/shaders/canvas/Rounded.ts +2 -2
- package/src/core/shaders/canvas/RoundedWithBorder.ts +20 -16
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +17 -17
- package/src/core/shaders/canvas/RoundedWithShadow.ts +10 -9
- package/src/core/shaders/templates/BorderTemplate.ts +12 -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 +57 -37
- 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 +82 -44
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +93 -50
- package/src/core/shaders/webgl/RoundedWithShadow.ts +3 -6
- package/src/core/shaders/webgl/SdfShader.ts +7 -19
- 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 +411 -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 +571 -33
- package/src/main-api/Renderer.ts +505 -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/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
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
+
* following copyright and licenses apply:
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
+
*
|
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
+
* you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at
|
|
10
|
+
*
|
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
*
|
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
* See the License for the specific language governing permissions and
|
|
17
|
+
* limitations under the License.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { type Stage } from '../Stage.js';
|
|
21
|
+
|
|
22
|
+
export abstract class Platform {
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new canvas element.
|
|
25
|
+
* @returns The created HTMLCanvasElement.
|
|
26
|
+
*/
|
|
27
|
+
abstract createCanvas(): HTMLCanvasElement;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Get a DOM element by ID
|
|
31
|
+
* @returns The DOM element (or null)
|
|
32
|
+
*/
|
|
33
|
+
abstract getElementById(id: string): HTMLElement | null;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Starts the main rendering loop, calling the provided update function every frame.
|
|
37
|
+
* @param Stage - The stage for rendering
|
|
38
|
+
*/
|
|
39
|
+
abstract startLoop(stage: Stage): void;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Abstracted createImageBitmap method.
|
|
43
|
+
* @param blob - The image source to create the ImageBitmap from.
|
|
44
|
+
* @param sxOrOptions - The source rectangle x coordinate or ImageBitmapOptions.
|
|
45
|
+
* @param sy - The source rectangle y coordinate.
|
|
46
|
+
* @param sw - The source rectangle width.
|
|
47
|
+
* @param sh - The source rectangle height.
|
|
48
|
+
* @param options - The ImageBitmapOptions.
|
|
49
|
+
* @returns A promise that resolves with the created ImageBitmap.
|
|
50
|
+
*/
|
|
51
|
+
abstract createImageBitmap(blob: ImageBitmapSource): Promise<ImageBitmap>;
|
|
52
|
+
abstract createImageBitmap(
|
|
53
|
+
blob: ImageBitmapSource,
|
|
54
|
+
options: ImageBitmapOptions,
|
|
55
|
+
): Promise<ImageBitmap>;
|
|
56
|
+
abstract createImageBitmap(
|
|
57
|
+
blob: ImageBitmapSource,
|
|
58
|
+
sx: number,
|
|
59
|
+
sy: number,
|
|
60
|
+
sw: number,
|
|
61
|
+
sh: number,
|
|
62
|
+
): Promise<ImageBitmap>;
|
|
63
|
+
abstract createImageBitmap(
|
|
64
|
+
blob: ImageBitmapSource,
|
|
65
|
+
sx: number,
|
|
66
|
+
sy: number,
|
|
67
|
+
sw: number,
|
|
68
|
+
sh: number,
|
|
69
|
+
options: ImageBitmapOptions,
|
|
70
|
+
): Promise<ImageBitmap>;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Retrieves the current timestamp.
|
|
74
|
+
* @returns The current timestamp.
|
|
75
|
+
*/
|
|
76
|
+
abstract getTimeStamp(): number;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Adds a FontFace to the platforms FontFaceSet
|
|
80
|
+
* @param font - The FontFace to add
|
|
81
|
+
*/
|
|
82
|
+
abstract addFont(font: FontFace): void;
|
|
83
|
+
}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Platform } from '../Platform.js';
|
|
2
|
+
import type { Stage } from '../../Stage.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* make fontface add not show errors
|
|
6
|
+
*/
|
|
7
|
+
interface FontFaceSetWithAdd extends FontFaceSet {
|
|
8
|
+
add(font: FontFace): void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class WebPlatform extends Platform {
|
|
12
|
+
////////////////////////
|
|
13
|
+
// Platform-specific methods
|
|
14
|
+
////////////////////////
|
|
15
|
+
|
|
16
|
+
override createCanvas(): HTMLCanvasElement {
|
|
17
|
+
const canvas = document.createElement('canvas');
|
|
18
|
+
return canvas;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
override getElementById(id: string): HTMLElement | null {
|
|
22
|
+
return document.getElementById(id);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
////////////////////////
|
|
26
|
+
// Update loop
|
|
27
|
+
////////////////////////
|
|
28
|
+
|
|
29
|
+
override startLoop(stage: Stage): void {
|
|
30
|
+
let isIdle = false;
|
|
31
|
+
let lastFrameTime = 0;
|
|
32
|
+
|
|
33
|
+
const runLoop = (currentTime: number = 0) => {
|
|
34
|
+
const targetFrameTime = stage.targetFrameTime;
|
|
35
|
+
|
|
36
|
+
// Check if we should throttle this frame
|
|
37
|
+
if (
|
|
38
|
+
targetFrameTime > 0 &&
|
|
39
|
+
currentTime - lastFrameTime < targetFrameTime
|
|
40
|
+
) {
|
|
41
|
+
// Too early for next frame, schedule with setTimeout for precise timing
|
|
42
|
+
const delay = targetFrameTime - (currentTime - lastFrameTime);
|
|
43
|
+
setTimeout(() => requestAnimationFrame(runLoop), delay);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
stage.updateFrameTime();
|
|
48
|
+
stage.updateAnimations();
|
|
49
|
+
|
|
50
|
+
if (!stage.hasSceneUpdates()) {
|
|
51
|
+
// We still need to calculate the fps else it looks like the app is frozen
|
|
52
|
+
stage.calculateFps();
|
|
53
|
+
|
|
54
|
+
if (targetFrameTime > 0) {
|
|
55
|
+
// Use setTimeout for throttled idle frames
|
|
56
|
+
setTimeout(
|
|
57
|
+
() => requestAnimationFrame(runLoop),
|
|
58
|
+
Math.max(targetFrameTime, 16.666666666666668),
|
|
59
|
+
);
|
|
60
|
+
} else {
|
|
61
|
+
// Use standard idle timeout when not throttling
|
|
62
|
+
setTimeout(() => requestAnimationFrame(runLoop), 16.666666666666668);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (isIdle === false) {
|
|
66
|
+
stage.shManager.cleanup();
|
|
67
|
+
stage.eventBus.emit('idle');
|
|
68
|
+
isIdle = true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (stage.txMemManager.checkCleanup() === true) {
|
|
72
|
+
stage.txMemManager.cleanup();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
stage.flushFrameEvents();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
isIdle = false;
|
|
80
|
+
stage.drawFrame();
|
|
81
|
+
stage.flushFrameEvents();
|
|
82
|
+
|
|
83
|
+
// Schedule next frame
|
|
84
|
+
if (targetFrameTime > 0) {
|
|
85
|
+
// Use setTimeout + rAF combination for precise FPS control
|
|
86
|
+
const nextFrameDelay = Math.max(
|
|
87
|
+
0,
|
|
88
|
+
targetFrameTime - (performance.now() - currentTime),
|
|
89
|
+
);
|
|
90
|
+
setTimeout(() => requestAnimationFrame(runLoop), nextFrameDelay);
|
|
91
|
+
} else {
|
|
92
|
+
// Use standard rAF when not throttling
|
|
93
|
+
requestAnimationFrame(runLoop);
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
requestAnimationFrame(runLoop);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
////////////////////////
|
|
100
|
+
// ImageBitmap
|
|
101
|
+
////////////////////////
|
|
102
|
+
|
|
103
|
+
override createImageBitmap(
|
|
104
|
+
blob: ImageBitmapSource,
|
|
105
|
+
sxOrOptions?: number | ImageBitmapOptions,
|
|
106
|
+
sy?: number,
|
|
107
|
+
sw?: number,
|
|
108
|
+
sh?: number,
|
|
109
|
+
options?: ImageBitmapOptions,
|
|
110
|
+
): Promise<ImageBitmap> {
|
|
111
|
+
if (typeof sxOrOptions === 'number') {
|
|
112
|
+
return createImageBitmap(
|
|
113
|
+
blob,
|
|
114
|
+
sxOrOptions,
|
|
115
|
+
sy ?? 0,
|
|
116
|
+
sw ?? 0,
|
|
117
|
+
sh ?? 0,
|
|
118
|
+
options,
|
|
119
|
+
);
|
|
120
|
+
} else {
|
|
121
|
+
return createImageBitmap(blob, sxOrOptions);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
getTimeStamp(): number {
|
|
126
|
+
return performance ? performance.now() : Date.now();
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
override addFont(font: FontFace): void {
|
|
130
|
+
(document.fonts as FontFaceSetWithAdd).add(font);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -34,7 +34,8 @@ export abstract class CoreContextTexture {
|
|
|
34
34
|
this.memManager.setTextureMemUse(this.textureSource, byteSize);
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
abstract load(): void
|
|
37
|
+
abstract load(): Promise<void>;
|
|
38
|
+
abstract release(): void;
|
|
38
39
|
abstract free(): void;
|
|
39
40
|
|
|
40
41
|
get renderable(): boolean {
|
|
@@ -25,7 +25,7 @@ import type { ContextSpy } from '../lib/ContextSpy.js';
|
|
|
25
25
|
import type { RenderCoords } from '../lib/RenderCoords.js';
|
|
26
26
|
import type { RectWithValid } from '../lib/utils.js';
|
|
27
27
|
import type { CoreShaderProgram } from './CoreShaderProgram.js';
|
|
28
|
-
import type { Texture } from '../textures/Texture.js';
|
|
28
|
+
import type { Texture, TextureCoords } from '../textures/Texture.js';
|
|
29
29
|
import { CoreContextTexture } from './CoreContextTexture.js';
|
|
30
30
|
import type { CoreShaderType, CoreShaderNode } from './CoreShaderNode.js';
|
|
31
31
|
|
|
@@ -38,6 +38,7 @@ export interface QuadOptions {
|
|
|
38
38
|
colorBr: number;
|
|
39
39
|
texture: Texture | null;
|
|
40
40
|
textureOptions: TextureOptions | null;
|
|
41
|
+
textureCoords: TextureCoords | undefined;
|
|
41
42
|
zIndex: number;
|
|
42
43
|
shader: CoreShaderNode | null;
|
|
43
44
|
alpha: number;
|
|
@@ -51,7 +52,8 @@ export interface QuadOptions {
|
|
|
51
52
|
renderCoords?: RenderCoords;
|
|
52
53
|
rtt: boolean;
|
|
53
54
|
parentHasRenderTexture: boolean;
|
|
54
|
-
framebufferDimensions: Dimensions;
|
|
55
|
+
framebufferDimensions: Dimensions | null;
|
|
56
|
+
time?: number | null;
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
export interface CoreRendererOptions {
|
|
@@ -69,7 +71,7 @@ export interface BufferInfo {
|
|
|
69
71
|
export abstract class CoreRenderer {
|
|
70
72
|
public options: CoreRendererOptions;
|
|
71
73
|
public mode: 'webgl' | 'canvas' | undefined;
|
|
72
|
-
|
|
74
|
+
defaultTextureCoords: TextureCoords | undefined = undefined;
|
|
73
75
|
readonly stage: Stage;
|
|
74
76
|
|
|
75
77
|
//// Core Managers
|
|
@@ -103,5 +105,7 @@ export abstract class CoreRenderer {
|
|
|
103
105
|
abstract renderToTexture(node: CoreNode): void;
|
|
104
106
|
abstract getBufferInfo(): BufferInfo | null;
|
|
105
107
|
abstract getQuadCount(): number | null;
|
|
108
|
+
abstract updateViewport(): void;
|
|
106
109
|
abstract updateClearColor(color: number): void;
|
|
110
|
+
getTextureCoords?(node: CoreNode): TextureCoords | undefined;
|
|
107
111
|
}
|
|
@@ -66,9 +66,7 @@ export function resolveShaderProps(
|
|
|
66
66
|
* You could view a ShaderType as a configuration object that contains methods,
|
|
67
67
|
* and values that you can use to alter the way a node is drawn by the Renderer.
|
|
68
68
|
*/
|
|
69
|
-
export interface CoreShaderType<
|
|
70
|
-
Props extends object = Record<string, unknown>,
|
|
71
|
-
> {
|
|
69
|
+
export interface CoreShaderType<Props extends object = any> {
|
|
72
70
|
/**
|
|
73
71
|
* Values you use to draw the Shader
|
|
74
72
|
*/
|
|
@@ -77,6 +75,11 @@ export interface CoreShaderType<
|
|
|
77
75
|
* used for making a cache key to check for reusability, currently only used for webgl ShaderTypes but might be needed for other types of renderer
|
|
78
76
|
*/
|
|
79
77
|
getCacheMarkers?: (props: Props) => string;
|
|
78
|
+
/**
|
|
79
|
+
* timer that updates every loop, by default uses the stage elapsed time If you want to do a special calculation you can define a function.
|
|
80
|
+
* When you calculate your own value you can use the Stage timing values deltaTime, lastFrameTime, and currentFrameTime;
|
|
81
|
+
*/
|
|
82
|
+
time?: boolean | ((stage: Stage) => number);
|
|
80
83
|
}
|
|
81
84
|
|
|
82
85
|
/**
|
|
@@ -91,6 +94,7 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
|
|
|
91
94
|
readonly resolvedProps: Props | undefined = undefined;
|
|
92
95
|
protected definedProps: Props | undefined = undefined;
|
|
93
96
|
protected node: CoreNode | null = null;
|
|
97
|
+
readonly time: CoreShaderType['time'] = undefined;
|
|
94
98
|
update: (() => void) | undefined = undefined;
|
|
95
99
|
|
|
96
100
|
constructor(
|
|
@@ -101,6 +105,7 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
|
|
|
101
105
|
) {
|
|
102
106
|
this.stage = stage;
|
|
103
107
|
this.shaderType = type;
|
|
108
|
+
this.time = type.time;
|
|
104
109
|
|
|
105
110
|
if (props !== undefined) {
|
|
106
111
|
/**
|
|
@@ -152,6 +157,16 @@ export class CoreShaderNode<Props extends object = Record<string, unknown>> {
|
|
|
152
157
|
this.node = node;
|
|
153
158
|
}
|
|
154
159
|
|
|
160
|
+
createValueKey() {
|
|
161
|
+
let valueKey = '';
|
|
162
|
+
for (const key in this.resolvedProps) {
|
|
163
|
+
valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
164
|
+
}
|
|
165
|
+
valueKey += `node-width:${this.node!.w}`;
|
|
166
|
+
valueKey += `node-height:${this.node!.h}`;
|
|
167
|
+
return valueKey;
|
|
168
|
+
}
|
|
169
|
+
|
|
155
170
|
get props(): Props | undefined {
|
|
156
171
|
return this.definedProps;
|
|
157
172
|
}
|
|
@@ -26,13 +26,9 @@ import {
|
|
|
26
26
|
type QuadOptions,
|
|
27
27
|
} from '../CoreRenderer.js';
|
|
28
28
|
import { CanvasTexture } from './CanvasTexture.js';
|
|
29
|
-
import {
|
|
30
|
-
parseColor,
|
|
31
|
-
parseToAbgrString,
|
|
32
|
-
parseToRgbaString,
|
|
33
|
-
} from './internal/ColorUtils.js';
|
|
34
|
-
import { assertTruthy } from '../../../utils.js';
|
|
29
|
+
import { parseColor } from '../../lib/colorParser.js';
|
|
35
30
|
import { CanvasShaderNode, type CanvasShaderType } from './CanvasShaderNode.js';
|
|
31
|
+
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
36
32
|
|
|
37
33
|
export class CanvasRenderer extends CoreRenderer {
|
|
38
34
|
private context: CanvasRenderingContext2D;
|
|
@@ -42,18 +38,15 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
42
38
|
public renderToTextureActive = false;
|
|
43
39
|
activeRttNode: CoreNode | null = null;
|
|
44
40
|
|
|
45
|
-
private parsedColorCache: Map<number, string> = new Map();
|
|
46
|
-
|
|
47
41
|
constructor(options: CoreRendererOptions) {
|
|
48
42
|
super(options);
|
|
49
43
|
|
|
50
44
|
this.mode = 'canvas';
|
|
51
|
-
|
|
52
45
|
const { canvas } = options;
|
|
53
46
|
this.canvas = canvas as HTMLCanvasElement;
|
|
54
47
|
this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
|
|
55
48
|
this.pixelRatio = this.stage.pixelRatio;
|
|
56
|
-
this.clearColor =
|
|
49
|
+
this.clearColor = normalizeCanvasColor(this.stage.clearColor);
|
|
57
50
|
}
|
|
58
51
|
|
|
59
52
|
reset(): void {
|
|
@@ -77,28 +70,15 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
77
70
|
const ctx = this.context;
|
|
78
71
|
const { tx, ty, ta, tb, tc, td, clippingRect } = quad;
|
|
79
72
|
let texture = quad.texture;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
) {
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (texture) {
|
|
94
|
-
if (texture instanceof SubTexture) {
|
|
95
|
-
texture = texture.parentTexture;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
if (texture.state === 'freed') {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (texture.state !== 'loaded') {
|
|
73
|
+
// The Canvas2D renderer only supports image textures, no textures are used for color blocks
|
|
74
|
+
if (texture !== null) {
|
|
75
|
+
const textureType = texture.type;
|
|
76
|
+
if (
|
|
77
|
+
textureType !== TextureType.image &&
|
|
78
|
+
textureType !== TextureType.subTexture &&
|
|
79
|
+
textureType !== TextureType.color &&
|
|
80
|
+
textureType !== TextureType.noise
|
|
81
|
+
) {
|
|
102
82
|
return;
|
|
103
83
|
}
|
|
104
84
|
}
|
|
@@ -156,50 +136,46 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
156
136
|
|
|
157
137
|
renderContext(quad: QuadOptions) {
|
|
158
138
|
const color = quad.colorTl;
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
textureType === TextureType.subTexture ||
|
|
163
|
-
textureType === TextureType.noise) &&
|
|
164
|
-
quad.texture?.ctxTexture
|
|
165
|
-
) {
|
|
139
|
+
const texture = quad.texture!;
|
|
140
|
+
const textureType = texture.type;
|
|
141
|
+
if (textureType !== TextureType.color) {
|
|
166
142
|
const tintColor = parseColor(color);
|
|
167
|
-
|
|
168
|
-
tintColor
|
|
169
|
-
|
|
170
|
-
this.context.globalAlpha = tintColor.a ?? quad.alpha;
|
|
171
|
-
if (textureType === TextureType.subTexture) {
|
|
143
|
+
if (textureType !== TextureType.subTexture) {
|
|
144
|
+
const image = (texture.ctxTexture as CanvasTexture).getImage(tintColor);
|
|
145
|
+
this.context.globalAlpha = tintColor.a ?? quad.alpha;
|
|
172
146
|
this.context.drawImage(
|
|
173
147
|
image,
|
|
174
|
-
(quad.texture as SubTexture).props.x,
|
|
175
|
-
(quad.texture as SubTexture).props.y,
|
|
176
|
-
(quad.texture as SubTexture).props.width,
|
|
177
|
-
(quad.texture as SubTexture).props.height,
|
|
178
148
|
quad.tx,
|
|
179
149
|
quad.ty,
|
|
180
150
|
quad.width,
|
|
181
151
|
quad.height,
|
|
182
152
|
);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
this.context.drawImage(
|
|
186
|
-
image,
|
|
187
|
-
quad.tx,
|
|
188
|
-
quad.ty,
|
|
189
|
-
quad.width,
|
|
190
|
-
quad.height,
|
|
191
|
-
);
|
|
192
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
193
|
-
} catch (error) {
|
|
194
|
-
// noop
|
|
195
|
-
}
|
|
153
|
+
this.context.globalAlpha = 1;
|
|
154
|
+
return;
|
|
196
155
|
}
|
|
156
|
+
const image = (
|
|
157
|
+
(texture as SubTexture).parentTexture.ctxTexture as CanvasTexture
|
|
158
|
+
).getImage(tintColor);
|
|
159
|
+
const props = (texture as SubTexture).props;
|
|
160
|
+
|
|
161
|
+
this.context.globalAlpha = tintColor.a ?? quad.alpha;
|
|
162
|
+
this.context.drawImage(
|
|
163
|
+
image,
|
|
164
|
+
props.x,
|
|
165
|
+
props.y,
|
|
166
|
+
props.w,
|
|
167
|
+
props.h,
|
|
168
|
+
quad.tx,
|
|
169
|
+
quad.ty,
|
|
170
|
+
quad.width,
|
|
171
|
+
quad.height,
|
|
172
|
+
);
|
|
197
173
|
this.context.globalAlpha = 1;
|
|
198
174
|
return;
|
|
199
175
|
}
|
|
200
176
|
const hasGradient =
|
|
201
177
|
quad.colorTl !== quad.colorTr || quad.colorTl !== quad.colorBr;
|
|
202
|
-
if (
|
|
178
|
+
if (hasGradient === true) {
|
|
203
179
|
let endX: number = quad.tx;
|
|
204
180
|
let endY: number = quad.ty;
|
|
205
181
|
let endColor: number;
|
|
@@ -220,12 +196,12 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
220
196
|
endX,
|
|
221
197
|
endY,
|
|
222
198
|
);
|
|
223
|
-
gradient.addColorStop(0,
|
|
224
|
-
gradient.addColorStop(1,
|
|
199
|
+
gradient.addColorStop(0, normalizeCanvasColor(color));
|
|
200
|
+
gradient.addColorStop(1, normalizeCanvasColor(endColor));
|
|
225
201
|
this.context.fillStyle = gradient;
|
|
226
202
|
this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
227
|
-
} else
|
|
228
|
-
this.context.fillStyle =
|
|
203
|
+
} else {
|
|
204
|
+
this.context.fillStyle = normalizeCanvasColor(color);
|
|
229
205
|
this.context.fillRect(quad.tx, quad.ty, quad.width, quad.height);
|
|
230
206
|
}
|
|
231
207
|
}
|
|
@@ -269,30 +245,20 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
269
245
|
return null;
|
|
270
246
|
}
|
|
271
247
|
|
|
272
|
-
getParsedColor(color: number, isRGBA: boolean = false) {
|
|
273
|
-
let out = this.parsedColorCache.get(color);
|
|
274
|
-
if (out !== undefined) {
|
|
275
|
-
return out;
|
|
276
|
-
}
|
|
277
|
-
if (isRGBA) {
|
|
278
|
-
out = parseToRgbaString(color);
|
|
279
|
-
} else {
|
|
280
|
-
out = parseToAbgrString(color);
|
|
281
|
-
}
|
|
282
|
-
this.parsedColorCache.set(color, out);
|
|
283
|
-
return out;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
248
|
/**
|
|
287
249
|
* Updates the clear color of the canvas renderer.
|
|
288
250
|
*
|
|
289
251
|
* @param color - The color to set as the clear color.
|
|
290
252
|
*/
|
|
291
253
|
updateClearColor(color: number) {
|
|
292
|
-
this.clearColor =
|
|
254
|
+
this.clearColor = normalizeCanvasColor(color);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
override updateViewport(): void {
|
|
258
|
+
// noop
|
|
293
259
|
}
|
|
294
260
|
|
|
295
|
-
|
|
261
|
+
getDefaultShaderNode() {
|
|
296
262
|
return null;
|
|
297
263
|
}
|
|
298
264
|
}
|
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
18
|
import type { CoreNode } from '../../CoreNode.js';
|
|
19
|
+
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
19
20
|
import type { Stage } from '../../Stage.js';
|
|
20
21
|
import type { QuadOptions } from '../CoreRenderer.js';
|
|
21
22
|
import { CoreShaderNode, type CoreShaderType } from '../CoreShaderNode.js';
|
|
22
|
-
import type { CanvasRenderer } from './CanvasRenderer.js';
|
|
23
23
|
|
|
24
24
|
export type CanvasShaderType<
|
|
25
25
|
T extends object = Record<string, unknown>,
|
|
@@ -67,10 +67,7 @@ export class CanvasShaderNode<
|
|
|
67
67
|
|
|
68
68
|
this.update = () => {
|
|
69
69
|
const prevKey = this.valueKey;
|
|
70
|
-
this.valueKey =
|
|
71
|
-
for (const key in this.resolvedProps) {
|
|
72
|
-
this.valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
73
|
-
}
|
|
70
|
+
this.valueKey = this.createValueKey();
|
|
74
71
|
|
|
75
72
|
if (prevKey === this.valueKey) {
|
|
76
73
|
return;
|
|
@@ -94,6 +91,6 @@ export class CanvasShaderNode<
|
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
toColorString(rgba: number) {
|
|
97
|
-
return (
|
|
94
|
+
return normalizeCanvasColor(rgba, true);
|
|
98
95
|
}
|
|
99
96
|
}
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
|
|
20
20
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
21
|
import { assertTruthy } from '../../../utils.js';
|
|
22
|
+
import { formatRgba, type IParsedColor } from '../../lib/colorParser.js';
|
|
22
23
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
23
|
-
import { formatRgba, type IParsedColor } from './internal/ColorUtils.js';
|
|
24
24
|
|
|
25
25
|
export class CanvasTexture extends CoreContextTexture {
|
|
26
26
|
protected image:
|
|
@@ -35,24 +35,28 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
35
35
|
}
|
|
36
36
|
| undefined;
|
|
37
37
|
|
|
38
|
-
load(): void {
|
|
38
|
+
async load(): Promise<void> {
|
|
39
39
|
this.textureSource.setState('loading');
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
try {
|
|
42
|
+
const size = await this.onLoadRequest();
|
|
43
|
+
this.textureSource.setState('loaded', size);
|
|
44
|
+
this.textureSource.freeTextureData();
|
|
45
|
+
this.updateMemSize();
|
|
46
|
+
} catch (err) {
|
|
47
|
+
this.textureSource.setState('failed', err as Error);
|
|
48
|
+
this.textureSource.freeTextureData();
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
release(): void {
|
|
54
54
|
this.image = undefined;
|
|
55
55
|
this.tintCache = undefined;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
free(): void {
|
|
59
|
+
this.release();
|
|
56
60
|
this.textureSource.setState('freed');
|
|
57
61
|
this.setTextureMemUse(0);
|
|
58
62
|
this.textureSource.freeTextureData();
|
|
@@ -65,8 +69,8 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
65
69
|
const mult = this.tintCache ? 8 : 4;
|
|
66
70
|
if (this.textureSource.dimensions) {
|
|
67
71
|
this.setTextureMemUse(
|
|
68
|
-
this.textureSource.dimensions.
|
|
69
|
-
this.textureSource.dimensions.
|
|
72
|
+
this.textureSource.dimensions.w *
|
|
73
|
+
this.textureSource.dimensions.h *
|
|
70
74
|
mult,
|
|
71
75
|
);
|
|
72
76
|
}
|
|
@@ -142,15 +146,15 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
142
146
|
const ctx = canvas.getContext('2d');
|
|
143
147
|
if (ctx) ctx.putImageData(data, 0, 0);
|
|
144
148
|
this.image = canvas;
|
|
145
|
-
return {
|
|
149
|
+
return { w: data.width, h: data.height };
|
|
146
150
|
} else if (
|
|
147
151
|
(typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) ||
|
|
148
152
|
data instanceof HTMLImageElement
|
|
149
153
|
) {
|
|
150
154
|
this.image = data;
|
|
151
|
-
return {
|
|
155
|
+
return { w: data.width, h: data.height };
|
|
152
156
|
}
|
|
153
157
|
|
|
154
|
-
return {
|
|
158
|
+
return { w: 0, h: 0 };
|
|
155
159
|
}
|
|
156
160
|
}
|