@lightningjs/renderer 3.0.0-beta2 → 3.0.0-beta21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -26
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -5
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -1
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -1
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +13 -2
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +196 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +124 -100
- package/dist/src/core/CoreNode.js +720 -472
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -5
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +74 -87
- package/dist/src/core/CoreTextNode.js +355 -232
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -13
- package/dist/src/core/CoreTextureManager.js +80 -104
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +93 -33
- package/dist/src/core/Stage.js +315 -151
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureError.d.ts +11 -0
- package/dist/src/core/TextureError.js +37 -0
- package/dist/src/core/TextureError.js.map +1 -0
- package/dist/src/core/TextureMemoryManager.d.ts +11 -4
- package/dist/src/core/TextureMemoryManager.js +128 -109
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/Animation.d.ts +21 -0
- package/dist/src/core/animations/Animation.js +194 -0
- package/dist/src/core/animations/Animation.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -3
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/animations/Playback.d.ts +64 -0
- package/dist/src/core/animations/Playback.js +169 -0
- package/dist/src/core/animations/Playback.js.map +1 -0
- package/dist/src/core/animations/Transition.d.ts +27 -0
- package/dist/src/core/animations/Transition.js +52 -0
- package/dist/src/core/animations/Transition.js.map +1 -0
- package/dist/src/core/animations/utils.d.ts +2 -0
- package/dist/src/core/animations/utils.js +136 -0
- package/dist/src/core/animations/utils.js.map +1 -0
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +31 -12
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +41 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +105 -28
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +100 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/lib/colorParser.d.ts +21 -0
- package/dist/src/core/lib/colorParser.js +72 -0
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -67
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -2
- package/dist/src/core/lib/utils.js +43 -21
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platform.js +30 -5
- package/dist/src/core/platform.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/{main-api/IRenderDriver.js → core/platforms/Platform.js} +4 -2
- package/dist/src/core/platforms/Platform.js.map +1 -0
- package/dist/src/core/platforms/web/WebPlatform.d.ts +10 -0
- package/dist/src/core/platforms/web/WebPlatform.js +87 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +2 -1
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -30
- package/dist/src/core/renderers/CoreRenderer.js +1 -0
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +12 -1
- package/dist/src/core/renderers/CoreShaderNode.js +26 -0
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +2 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +65 -87
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +3 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +17 -13
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +13 -0
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +113 -192
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -2
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -14
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +97 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +18 -6
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +87 -42
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +53 -17
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +21 -50
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -6
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -5
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -52
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +11 -4
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +11 -21
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +168 -152
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +9 -7
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +83 -43
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +24 -19
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +32 -5
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +64 -25
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +4 -3
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +11 -7
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +21 -17
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +3 -3
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +45 -7
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +2 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +50 -11
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +10 -7
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +4 -2
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -18
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +31 -11
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +2 -2
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +3 -3
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -2
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.js → utils.js} +2 -2
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +116 -35
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -7
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -3
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +33 -8
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -32
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +4 -2
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +153 -39
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +158 -43
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +6 -4
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +7 -17
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
- package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
- package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
- package/dist/src/core/shaders/webgl/Shadow.js +12 -6
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +224 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +157 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +182 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +391 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +303 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +383 -0
- package/dist/src/{main-api/ICoreDriver.js → core/text-rendering/TextRenderer.js} +1 -1
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +1 -1
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +84 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +35 -38
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +4 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -4
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +11 -4
- package/dist/src/core/textures/ImageTexture.js +31 -40
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -8
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -12
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -37
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +87 -10
- package/dist/src/core/textures/Texture.js +160 -17
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -1
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +131 -2
- package/dist/src/main-api/Inspector.js +345 -28
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +295 -82
- package/dist/src/main-api/Renderer.js +223 -76
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +1 -6
- package/dist/src/utils.js +2 -9
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas.ts +1 -1
- package/exports/index.ts +2 -8
- package/exports/utils.ts +7 -1
- package/exports/webgl.ts +3 -1
- package/package.json +15 -17
- package/src/common/CommonTypes.ts +18 -2
- package/src/core/Autosizer.ts +224 -0
- package/src/core/CoreNode.test.ts +179 -17
- package/src/core/CoreNode.ts +895 -599
- package/src/core/CoreShaderManager.ts +5 -10
- package/src/core/CoreTextNode.ts +422 -286
- package/src/core/CoreTextureManager.ts +110 -130
- package/src/core/Stage.ts +397 -195
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +164 -141
- package/src/core/animations/CoreAnimation.ts +15 -9
- package/src/core/animations/CoreAnimationController.ts +13 -4
- package/src/core/lib/ImageWorker.ts +43 -12
- package/src/core/lib/WebGlContextWrapper.ts +127 -79
- package/src/core/lib/collectionUtils.ts +118 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -2
- package/src/core/lib/textureCompression.ts +433 -75
- package/src/core/lib/utils.ts +54 -25
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +83 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -1
- package/src/core/renderers/CoreRenderer.ts +5 -32
- package/src/core/renderers/CoreShaderNode.ts +38 -3
- package/src/core/renderers/canvas/CanvasRenderer.ts +84 -126
- package/src/core/renderers/canvas/CanvasShaderNode.ts +4 -8
- package/src/core/renderers/canvas/CanvasTexture.ts +22 -18
- package/src/core/renderers/webgl/SdfRenderOp.ts +105 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -15
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -5
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -84
- package/src/core/renderers/webgl/WebGlRenderer.ts +203 -190
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -11
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +101 -53
- package/src/core/shaders/canvas/Border.ts +88 -34
- package/src/core/shaders/canvas/HolePunch.ts +5 -11
- package/src/core/shaders/canvas/LinearGradient.ts +14 -10
- package/src/core/shaders/canvas/RadialGradient.ts +24 -41
- package/src/core/shaders/canvas/Rounded.ts +7 -7
- package/src/core/shaders/canvas/RoundedWithBorder.ts +77 -23
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +84 -36
- package/src/core/shaders/canvas/RoundedWithShadow.ts +15 -13
- package/src/core/shaders/canvas/Shadow.ts +7 -5
- package/src/core/shaders/canvas/utils/render.ts +45 -36
- package/src/core/shaders/templates/BorderTemplate.ts +42 -12
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -5
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -8
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +1 -1
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -1
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -1
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +2 -3
- package/src/core/shaders/webgl/Border.ts +116 -39
- package/src/core/shaders/webgl/Default.ts +6 -7
- package/src/core/shaders/webgl/HolePunch.ts +4 -7
- package/src/core/shaders/webgl/LinearGradient.ts +33 -8
- package/src/core/shaders/webgl/RadialGradient.ts +58 -34
- package/src/core/shaders/webgl/Rounded.ts +4 -6
- package/src/core/shaders/webgl/RoundedWithBorder.ts +154 -46
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +159 -52
- package/src/core/shaders/webgl/RoundedWithShadow.ts +6 -8
- package/src/core/shaders/webgl/SdfShader.ts +7 -19
- package/src/core/shaders/webgl/Shadow.ts +12 -6
- package/src/core/text-rendering/CanvasFontHandler.ts +304 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +255 -0
- package/src/core/text-rendering/SdfFontHandler.ts +591 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +408 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +444 -0
- package/src/core/text-rendering/Utils.ts +99 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +453 -0
- package/src/core/textures/ColorTexture.ts +7 -5
- package/src/core/textures/ImageTexture.ts +78 -66
- package/src/core/textures/NoiseTexture.ts +14 -12
- package/src/core/textures/RenderTexture.ts +18 -16
- package/src/core/textures/SubTexture.ts +25 -46
- package/src/core/textures/Texture.ts +207 -24
- package/src/core/utils.ts +9 -7
- package/src/main-api/INode.ts +4 -3
- package/src/main-api/Inspector.ts +577 -36
- package/src/main-api/Renderer.ts +518 -139
- package/src/utils.ts +10 -10
- package/dist/exports/core-api.d.ts +0 -74
- package/dist/exports/core-api.js +0 -96
- package/dist/exports/core-api.js.map +0 -1
- package/dist/exports/main-api.d.ts +0 -30
- package/dist/exports/main-api.js +0 -45
- package/dist/exports/main-api.js.map +0 -1
- package/dist/src/core/CoreExtension.d.ts +0 -12
- package/dist/src/core/CoreExtension.js +0 -29
- package/dist/src/core/CoreExtension.js.map +0 -1
- package/dist/src/core/CoreStuff.d.ts +0 -1
- package/dist/src/core/CoreStuff.js +0 -138
- package/dist/src/core/CoreStuff.js.map +0 -1
- package/dist/src/core/CoreTexturizer.d.ts +0 -14
- package/dist/src/core/CoreTexturizer.js +0 -47
- package/dist/src/core/CoreTexturizer.js.map +0 -1
- package/dist/src/core/LngNode.d.ts +0 -736
- package/dist/src/core/LngNode.js +0 -1174
- package/dist/src/core/LngNode.js.map +0 -1
- package/dist/src/core/Matrix2DContext.d.ts +0 -15
- package/dist/src/core/Matrix2DContext.js +0 -45
- package/dist/src/core/Matrix2DContext.js.map +0 -1
- package/dist/src/core/ShaderNode.d.ts +0 -10
- package/dist/src/core/ShaderNode.js +0 -30
- package/dist/src/core/ShaderNode.js.map +0 -1
- package/dist/src/core/TextNode.d.ts +0 -103
- package/dist/src/core/TextNode.js +0 -331
- package/dist/src/core/TextNode.js.map +0 -1
- package/dist/src/core/lib/Coords.d.ts +0 -14
- package/dist/src/core/lib/Coords.js +0 -55
- package/dist/src/core/lib/Coords.js.map +0 -1
- package/dist/src/core/lib/glm/common.d.ts +0 -162
- package/dist/src/core/lib/glm/common.js +0 -81
- package/dist/src/core/lib/glm/common.js.map +0 -1
- package/dist/src/core/lib/glm/index.d.ts +0 -11
- package/dist/src/core/lib/glm/index.js +0 -30
- package/dist/src/core/lib/glm/index.js.map +0 -1
- package/dist/src/core/lib/glm/mat2.d.ts +0 -219
- package/dist/src/core/lib/glm/mat2.js +0 -396
- package/dist/src/core/lib/glm/mat2.js.map +0 -1
- package/dist/src/core/lib/glm/mat2d.d.ts +0 -237
- package/dist/src/core/lib/glm/mat2d.js +0 -442
- package/dist/src/core/lib/glm/mat2d.js.map +0 -1
- package/dist/src/core/lib/glm/mat3.d.ts +0 -283
- package/dist/src/core/lib/glm/mat3.js +0 -680
- package/dist/src/core/lib/glm/mat3.js.map +0 -1
- package/dist/src/core/lib/glm/mat4.d.ts +0 -550
- package/dist/src/core/lib/glm/mat4.js +0 -1802
- package/dist/src/core/lib/glm/mat4.js.map +0 -1
- package/dist/src/core/lib/glm/quat.d.ts +0 -363
- package/dist/src/core/lib/glm/quat.js +0 -693
- package/dist/src/core/lib/glm/quat.js.map +0 -1
- package/dist/src/core/lib/glm/quat2.d.ts +0 -356
- package/dist/src/core/lib/glm/quat2.js +0 -754
- package/dist/src/core/lib/glm/quat2.js.map +0 -1
- package/dist/src/core/lib/glm/vec2.d.ts +0 -365
- package/dist/src/core/lib/glm/vec2.js +0 -569
- package/dist/src/core/lib/glm/vec2.js.map +0 -1
- package/dist/src/core/lib/glm/vec3.d.ts +0 -406
- package/dist/src/core/lib/glm/vec3.js +0 -720
- package/dist/src/core/lib/glm/vec3.js.map +0 -1
- package/dist/src/core/lib/glm/vec4.d.ts +0 -330
- package/dist/src/core/lib/glm/vec4.js +0 -608
- package/dist/src/core/lib/glm/vec4.js.map +0 -1
- package/dist/src/core/renderers/CoreShaderManager.d.ts +0 -19
- package/dist/src/core/renderers/CoreShaderManager.js +0 -33
- package/dist/src/core/renderers/CoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.d.ts +0 -27
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js +0 -82
- package/dist/src/core/renderers/webgl/WebGlCoreShaderManager.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.d.ts +0 -11
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreShaderProgram.js.map +0 -1
- package/dist/src/core/scene/Scene.d.ts +0 -59
- package/dist/src/core/scene/Scene.js +0 -106
- package/dist/src/core/scene/Scene.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js +0 -55
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.js.map +0 -1
- package/dist/src/main-api/ICoreDriver.d.ts +0 -27
- package/dist/src/main-api/ICoreDriver.js.map +0 -1
- package/dist/src/main-api/IRenderDriver.d.ts +0 -20
- package/dist/src/main-api/IRenderDriver.js.map +0 -1
- package/dist/src/main-api/IShaderController.d.ts +0 -14
- package/dist/src/main-api/IShaderController.js +0 -30
- package/dist/src/main-api/IShaderController.js.map +0 -1
- package/dist/src/main-api/IShaderNode.d.ts +0 -17
- package/dist/src/main-api/IShaderNode.js +0 -19
- package/dist/src/main-api/IShaderNode.js.map +0 -1
- package/dist/src/main-api/RendererMain.d.ts +0 -375
- package/dist/src/main-api/RendererMain.js +0 -365
- package/dist/src/main-api/RendererMain.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.d.ts +0 -9
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js +0 -38
- package/dist/src/main-api/texture-usage-trackers/FinalizationRegistryTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.d.ts +0 -56
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js +0 -101
- package/dist/src/main-api/texture-usage-trackers/ManualCountTextureUsageTracker.js.map +0 -1
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.d.ts +0 -32
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js +0 -28
- package/dist/src/main-api/texture-usage-trackers/TextureUsageTracker.js.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/renderers/webgl/WebGlRenderOp.ts +0 -161
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/TextTextureRendererUtils.ts +0 -263
- package/src/core/text-rendering/TrFontManager.ts +0 -183
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +0 -176
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.ts +0 -139
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +0 -173
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +0 -171
- package/src/core/text-rendering/font-face-types/TrFontFace.ts +0 -187
- package/src/core/text-rendering/font-face-types/WebTrFontFace.ts +0 -94
- package/src/core/text-rendering/font-face-types/utils.ts +0 -39
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +0 -509
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +0 -815
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +0 -840
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.test.ts +0 -48
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.ts +0 -66
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.ts +0 -32
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +0 -117
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.test.ts +0 -133
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.ts +0 -38
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +0 -408
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +0 -49
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.ts +0 -52
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +0 -205
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts +0 -93
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +0 -40
- package/src/core/text-rendering/renderers/TextRenderer.ts +0 -550
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
4
4
|
|
|
5
|
-
import { assertTruthy } from '../../utils.js';
|
|
5
|
+
import { assertTruthy, isProductionEnvironment } from '../../utils.js';
|
|
6
6
|
import type {
|
|
7
7
|
Vec2,
|
|
8
8
|
Vec3,
|
|
@@ -50,6 +50,7 @@ export class WebGlContextWrapper {
|
|
|
50
50
|
private boundArrayBuffer: WebGLBuffer | null;
|
|
51
51
|
private boundElementArrayBuffer: WebGLBuffer | null;
|
|
52
52
|
private curProgram: WebGLProgram | null;
|
|
53
|
+
private curUniformLocations: Record<string, WebGLUniformLocation> = {};
|
|
53
54
|
//#endregion Cached WebGL State
|
|
54
55
|
|
|
55
56
|
//#region Canvas
|
|
@@ -72,6 +73,7 @@ export class WebGlContextWrapper {
|
|
|
72
73
|
public readonly TEXTURE_WRAP_S;
|
|
73
74
|
public readonly TEXTURE_WRAP_T;
|
|
74
75
|
public readonly LINEAR;
|
|
76
|
+
public readonly LINEAR_MIPMAP_LINEAR;
|
|
75
77
|
public readonly CLAMP_TO_EDGE;
|
|
76
78
|
public readonly RGB;
|
|
77
79
|
public readonly RGBA;
|
|
@@ -163,6 +165,7 @@ export class WebGlContextWrapper {
|
|
|
163
165
|
this.TEXTURE_WRAP_S = gl.TEXTURE_WRAP_S;
|
|
164
166
|
this.TEXTURE_WRAP_T = gl.TEXTURE_WRAP_T;
|
|
165
167
|
this.LINEAR = gl.LINEAR;
|
|
168
|
+
this.LINEAR_MIPMAP_LINEAR = gl.LINEAR_MIPMAP_LINEAR;
|
|
166
169
|
this.CLAMP_TO_EDGE = gl.CLAMP_TO_EDGE;
|
|
167
170
|
this.RGB = gl.RGB;
|
|
168
171
|
this.RGBA = gl.RGBA;
|
|
@@ -689,16 +692,23 @@ export class WebGlContextWrapper {
|
|
|
689
692
|
* @param program
|
|
690
693
|
* @returns object with numbers
|
|
691
694
|
*/
|
|
692
|
-
getUniformLocations(
|
|
695
|
+
getUniformLocations(
|
|
696
|
+
program: WebGLProgram,
|
|
697
|
+
): Record<string, WebGLUniformLocation> {
|
|
693
698
|
const gl = this.gl;
|
|
694
699
|
const length = gl.getProgramParameter(
|
|
695
700
|
program,
|
|
696
701
|
gl.ACTIVE_UNIFORMS,
|
|
697
702
|
) as number;
|
|
698
|
-
const result = {} as Record<string,
|
|
703
|
+
const result = {} as Record<string, WebGLUniformLocation>;
|
|
699
704
|
for (let i = 0; i < length; i++) {
|
|
700
|
-
const
|
|
701
|
-
|
|
705
|
+
const info = gl.getActiveUniform(program, i) as WebGLActiveInfo;
|
|
706
|
+
//remove bracket + value from uniform name;
|
|
707
|
+
let name = info.name.replace(/\[.*?\]/g, '');
|
|
708
|
+
result[name] = gl.getUniformLocation(
|
|
709
|
+
program,
|
|
710
|
+
name,
|
|
711
|
+
) as WebGLUniformLocation;
|
|
702
712
|
}
|
|
703
713
|
return result;
|
|
704
714
|
}
|
|
@@ -708,16 +718,17 @@ export class WebGlContextWrapper {
|
|
|
708
718
|
* @param program
|
|
709
719
|
* @returns object with numbers
|
|
710
720
|
*/
|
|
711
|
-
getAttributeLocations(program: WebGLProgram):
|
|
721
|
+
getAttributeLocations(program: WebGLProgram): string[] {
|
|
712
722
|
const gl = this.gl;
|
|
713
723
|
const length = gl.getProgramParameter(
|
|
714
724
|
program,
|
|
715
725
|
gl.ACTIVE_ATTRIBUTES,
|
|
716
726
|
) as number;
|
|
717
|
-
|
|
727
|
+
|
|
728
|
+
const result: string[] = [];
|
|
718
729
|
for (let i = 0; i < length; i++) {
|
|
719
730
|
const { name } = gl.getActiveAttrib(program, i) as WebGLActiveInfo;
|
|
720
|
-
result[name] =
|
|
731
|
+
result[gl.getAttribLocation(program, name)] = name;
|
|
721
732
|
}
|
|
722
733
|
return result;
|
|
723
734
|
}
|
|
@@ -730,12 +741,16 @@ export class WebGlContextWrapper {
|
|
|
730
741
|
* @param program
|
|
731
742
|
* @returns
|
|
732
743
|
*/
|
|
733
|
-
useProgram(
|
|
744
|
+
useProgram(
|
|
745
|
+
program: WebGLProgram | null,
|
|
746
|
+
uniformLocations: Record<string, WebGLUniformLocation>,
|
|
747
|
+
) {
|
|
734
748
|
if (this.curProgram === program) {
|
|
735
749
|
return;
|
|
736
750
|
}
|
|
737
751
|
this.gl.useProgram(program);
|
|
738
752
|
this.curProgram = program;
|
|
753
|
+
this.curUniformLocations = uniformLocations;
|
|
739
754
|
}
|
|
740
755
|
|
|
741
756
|
/**
|
|
@@ -745,10 +760,7 @@ export class WebGlContextWrapper {
|
|
|
745
760
|
* @param v0 - The value to set.
|
|
746
761
|
*/
|
|
747
762
|
uniform1f(location: string, v0: number) {
|
|
748
|
-
this.gl.uniform1f(
|
|
749
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
750
|
-
v0,
|
|
751
|
-
);
|
|
763
|
+
this.gl.uniform1f(this.curUniformLocations[location] || null, v0);
|
|
752
764
|
}
|
|
753
765
|
|
|
754
766
|
/**
|
|
@@ -758,10 +770,7 @@ export class WebGlContextWrapper {
|
|
|
758
770
|
* @param value - The array of values to set.
|
|
759
771
|
*/
|
|
760
772
|
uniform1fv(location: string, value: Float32Array) {
|
|
761
|
-
this.gl.uniform1fv(
|
|
762
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
763
|
-
value,
|
|
764
|
-
);
|
|
773
|
+
this.gl.uniform1fv(this.curUniformLocations[location] || null, value);
|
|
765
774
|
}
|
|
766
775
|
|
|
767
776
|
/**
|
|
@@ -771,10 +780,7 @@ export class WebGlContextWrapper {
|
|
|
771
780
|
* @param v0 - The value to set.
|
|
772
781
|
*/
|
|
773
782
|
uniform1i(location: string, v0: number) {
|
|
774
|
-
this.gl.uniform1i(
|
|
775
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
776
|
-
v0,
|
|
777
|
-
);
|
|
783
|
+
this.gl.uniform1i(this.curUniformLocations[location] || null, v0);
|
|
778
784
|
}
|
|
779
785
|
|
|
780
786
|
/**
|
|
@@ -784,10 +790,7 @@ export class WebGlContextWrapper {
|
|
|
784
790
|
* @param value - The array of values to set.
|
|
785
791
|
*/
|
|
786
792
|
uniform1iv(location: string, value: Int32Array) {
|
|
787
|
-
this.gl.uniform1iv(
|
|
788
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
789
|
-
value,
|
|
790
|
-
);
|
|
793
|
+
this.gl.uniform1iv(this.curUniformLocations[location] || null, value);
|
|
791
794
|
}
|
|
792
795
|
|
|
793
796
|
/**
|
|
@@ -798,11 +801,7 @@ export class WebGlContextWrapper {
|
|
|
798
801
|
* @param v1 - The second component of the vector.
|
|
799
802
|
*/
|
|
800
803
|
uniform2f(location: string, v0: number, v1: number) {
|
|
801
|
-
this.gl.uniform2f(
|
|
802
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
803
|
-
v0,
|
|
804
|
-
v1,
|
|
805
|
-
);
|
|
804
|
+
this.gl.uniform2f(this.curUniformLocations[location] || null, v0, v1);
|
|
806
805
|
}
|
|
807
806
|
|
|
808
807
|
/**
|
|
@@ -813,7 +812,7 @@ export class WebGlContextWrapper {
|
|
|
813
812
|
*/
|
|
814
813
|
uniform2fa(location: string, value: Vec2) {
|
|
815
814
|
this.gl.uniform2f(
|
|
816
|
-
this.
|
|
815
|
+
this.curUniformLocations[location] || null,
|
|
817
816
|
value[0],
|
|
818
817
|
value[1],
|
|
819
818
|
);
|
|
@@ -826,10 +825,7 @@ export class WebGlContextWrapper {
|
|
|
826
825
|
* @param value - The array of vec2 values to set.
|
|
827
826
|
*/
|
|
828
827
|
uniform2fv(location: string, value: Float32Array) {
|
|
829
|
-
this.gl.uniform2fv(
|
|
830
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
831
|
-
value,
|
|
832
|
-
);
|
|
828
|
+
this.gl.uniform2fv(this.curUniformLocations[location] || null, value);
|
|
833
829
|
}
|
|
834
830
|
|
|
835
831
|
/**
|
|
@@ -840,11 +836,7 @@ export class WebGlContextWrapper {
|
|
|
840
836
|
* @param v1 - The second component of the vector.
|
|
841
837
|
*/
|
|
842
838
|
uniform2i(location: string, v0: number, v1: number) {
|
|
843
|
-
this.gl.uniform2i(
|
|
844
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
845
|
-
v0,
|
|
846
|
-
v1,
|
|
847
|
-
);
|
|
839
|
+
this.gl.uniform2i(this.curUniformLocations[location] || null, v0, v1);
|
|
848
840
|
}
|
|
849
841
|
|
|
850
842
|
/**
|
|
@@ -854,10 +846,7 @@ export class WebGlContextWrapper {
|
|
|
854
846
|
* @param value - The array of ivec2 values to set.
|
|
855
847
|
*/
|
|
856
848
|
uniform2iv(location: string, value: Int32Array) {
|
|
857
|
-
this.gl.uniform2iv(
|
|
858
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
859
|
-
value,
|
|
860
|
-
);
|
|
849
|
+
this.gl.uniform2iv(this.curUniformLocations[location] || null, value);
|
|
861
850
|
}
|
|
862
851
|
|
|
863
852
|
/**
|
|
@@ -869,12 +858,7 @@ export class WebGlContextWrapper {
|
|
|
869
858
|
* @param v2 - The third component of the vector.
|
|
870
859
|
*/
|
|
871
860
|
uniform3f(location: string, v0: number, v1: number, v2: number) {
|
|
872
|
-
this.gl.uniform3f(
|
|
873
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
874
|
-
v0,
|
|
875
|
-
v1,
|
|
876
|
-
v2,
|
|
877
|
-
);
|
|
861
|
+
this.gl.uniform3f(this.curUniformLocations[location] || null, v0, v1, v2);
|
|
878
862
|
}
|
|
879
863
|
|
|
880
864
|
/**
|
|
@@ -885,7 +869,7 @@ export class WebGlContextWrapper {
|
|
|
885
869
|
*/
|
|
886
870
|
uniform3fa(location: string, value: Vec3) {
|
|
887
871
|
this.gl.uniform3f(
|
|
888
|
-
this.
|
|
872
|
+
this.curUniformLocations[location] || null,
|
|
889
873
|
value[0],
|
|
890
874
|
value[1],
|
|
891
875
|
value[2],
|
|
@@ -899,10 +883,7 @@ export class WebGlContextWrapper {
|
|
|
899
883
|
* @param value - The array of vec3 values to set.
|
|
900
884
|
*/
|
|
901
885
|
uniform3fv(location: string, value: Float32Array) {
|
|
902
|
-
this.gl.uniform3fv(
|
|
903
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
904
|
-
value,
|
|
905
|
-
);
|
|
886
|
+
this.gl.uniform3fv(this.curUniformLocations[location] || null, value);
|
|
906
887
|
}
|
|
907
888
|
|
|
908
889
|
/**
|
|
@@ -914,12 +895,7 @@ export class WebGlContextWrapper {
|
|
|
914
895
|
* @param v2 - The third component of the vector.
|
|
915
896
|
*/
|
|
916
897
|
uniform3i(location: string, v0: number, v1: number, v2: number) {
|
|
917
|
-
this.gl.uniform3i(
|
|
918
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
919
|
-
v0,
|
|
920
|
-
v1,
|
|
921
|
-
v2,
|
|
922
|
-
);
|
|
898
|
+
this.gl.uniform3i(this.curUniformLocations[location] || null, v0, v1, v2);
|
|
923
899
|
}
|
|
924
900
|
|
|
925
901
|
/**
|
|
@@ -929,10 +905,7 @@ export class WebGlContextWrapper {
|
|
|
929
905
|
* @param value - The array of ivec3 values to set.
|
|
930
906
|
*/
|
|
931
907
|
uniform3iv(location: string, value: Int32Array) {
|
|
932
|
-
this.gl.uniform3iv(
|
|
933
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
934
|
-
value,
|
|
935
|
-
);
|
|
908
|
+
this.gl.uniform3iv(this.curUniformLocations[location] || null, value);
|
|
936
909
|
}
|
|
937
910
|
|
|
938
911
|
/**
|
|
@@ -946,7 +919,7 @@ export class WebGlContextWrapper {
|
|
|
946
919
|
*/
|
|
947
920
|
uniform4f(location: string, v0: number, v1: number, v2: number, v3: number) {
|
|
948
921
|
this.gl.uniform4f(
|
|
949
|
-
this.
|
|
922
|
+
this.curUniformLocations[location] || null,
|
|
950
923
|
v0,
|
|
951
924
|
v1,
|
|
952
925
|
v2,
|
|
@@ -962,7 +935,7 @@ export class WebGlContextWrapper {
|
|
|
962
935
|
*/
|
|
963
936
|
uniform4fa(location: string, value: Vec4) {
|
|
964
937
|
this.gl.uniform4f(
|
|
965
|
-
this.
|
|
938
|
+
this.curUniformLocations[location] || null,
|
|
966
939
|
value[0],
|
|
967
940
|
value[1],
|
|
968
941
|
value[2],
|
|
@@ -977,10 +950,7 @@ export class WebGlContextWrapper {
|
|
|
977
950
|
* @param value - The array of vec4 values to set.
|
|
978
951
|
*/
|
|
979
952
|
uniform4fv(location: string, value: Float32Array) {
|
|
980
|
-
this.gl.uniform4fv(
|
|
981
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
982
|
-
value,
|
|
983
|
-
);
|
|
953
|
+
this.gl.uniform4fv(this.curUniformLocations[location] || null, value);
|
|
984
954
|
}
|
|
985
955
|
|
|
986
956
|
/**
|
|
@@ -994,7 +964,7 @@ export class WebGlContextWrapper {
|
|
|
994
964
|
*/
|
|
995
965
|
uniform4i(location: string, v0: number, v1: number, v2: number, v3: number) {
|
|
996
966
|
this.gl.uniform4i(
|
|
997
|
-
this.
|
|
967
|
+
this.curUniformLocations[location] || null,
|
|
998
968
|
v0,
|
|
999
969
|
v1,
|
|
1000
970
|
v2,
|
|
@@ -1009,10 +979,7 @@ export class WebGlContextWrapper {
|
|
|
1009
979
|
* @param value - The array of ivec4 values to set.
|
|
1010
980
|
*/
|
|
1011
981
|
uniform4iv(location: string, value: Int32Array) {
|
|
1012
|
-
this.gl.uniform4iv(
|
|
1013
|
-
this.gl.getUniformLocation(this.curProgram!, location),
|
|
1014
|
-
value,
|
|
1015
|
-
);
|
|
982
|
+
this.gl.uniform4iv(this.curUniformLocations[location] || null, value);
|
|
1016
983
|
}
|
|
1017
984
|
|
|
1018
985
|
/**
|
|
@@ -1024,7 +991,7 @@ export class WebGlContextWrapper {
|
|
|
1024
991
|
*/
|
|
1025
992
|
uniformMatrix2fv(location: string, value: Float32Array) {
|
|
1026
993
|
this.gl.uniformMatrix2fv(
|
|
1027
|
-
this.
|
|
994
|
+
this.curUniformLocations[location] || null,
|
|
1028
995
|
false,
|
|
1029
996
|
value,
|
|
1030
997
|
);
|
|
@@ -1037,7 +1004,7 @@ export class WebGlContextWrapper {
|
|
|
1037
1004
|
*/
|
|
1038
1005
|
uniformMatrix3fv(location: string, value: Float32Array) {
|
|
1039
1006
|
this.gl.uniformMatrix3fv(
|
|
1040
|
-
this.
|
|
1007
|
+
this.curUniformLocations[location] || null,
|
|
1041
1008
|
false,
|
|
1042
1009
|
value,
|
|
1043
1010
|
);
|
|
@@ -1050,7 +1017,7 @@ export class WebGlContextWrapper {
|
|
|
1050
1017
|
*/
|
|
1051
1018
|
uniformMatrix4fv(location: string, value: Float32Array) {
|
|
1052
1019
|
this.gl.uniformMatrix4fv(
|
|
1053
|
-
this.
|
|
1020
|
+
this.curUniformLocations[location] || null,
|
|
1054
1021
|
false,
|
|
1055
1022
|
value,
|
|
1056
1023
|
);
|
|
@@ -1082,6 +1049,19 @@ export class WebGlContextWrapper {
|
|
|
1082
1049
|
this.gl.drawElements(mode, count, type, offset);
|
|
1083
1050
|
}
|
|
1084
1051
|
|
|
1052
|
+
/**
|
|
1053
|
+
* ```
|
|
1054
|
+
* gl.drawArrays(mode, first, count);
|
|
1055
|
+
* ```
|
|
1056
|
+
*
|
|
1057
|
+
* @param mode
|
|
1058
|
+
* @param first
|
|
1059
|
+
* @param count
|
|
1060
|
+
*/
|
|
1061
|
+
drawArrays(mode: GLenum, first: GLint, count: GLsizei) {
|
|
1062
|
+
this.gl.drawArrays(mode, first, count);
|
|
1063
|
+
}
|
|
1064
|
+
|
|
1085
1065
|
/**
|
|
1086
1066
|
* ```
|
|
1087
1067
|
* gl.drawArrays(mode, first, count);
|
|
@@ -1319,6 +1299,74 @@ export class WebGlContextWrapper {
|
|
|
1319
1299
|
deleteShader(shader: WebGLShader) {
|
|
1320
1300
|
this.gl.deleteShader(shader);
|
|
1321
1301
|
}
|
|
1302
|
+
|
|
1303
|
+
/**
|
|
1304
|
+
* ```
|
|
1305
|
+
* gl.deleteBuffer(buffer);
|
|
1306
|
+
* ```
|
|
1307
|
+
*
|
|
1308
|
+
* @param buffer - The buffer to delete
|
|
1309
|
+
*/
|
|
1310
|
+
deleteBuffer(buffer: WebGLBuffer) {
|
|
1311
|
+
const { gl } = this;
|
|
1312
|
+
gl.deleteBuffer(buffer);
|
|
1313
|
+
|
|
1314
|
+
// Reset bound buffers if they match the deleted buffer
|
|
1315
|
+
if (this.boundArrayBuffer === buffer) {
|
|
1316
|
+
this.boundArrayBuffer = null;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
/**
|
|
1321
|
+
* ```
|
|
1322
|
+
* gl.deleteVertexArray(vertexArray);
|
|
1323
|
+
* ```
|
|
1324
|
+
*
|
|
1325
|
+
* @param vertexArray - The vertex array object to delete
|
|
1326
|
+
*/
|
|
1327
|
+
deleteVertexArray(vertexArray: WebGLVertexArrayObject) {
|
|
1328
|
+
if (this.isWebGl2()) {
|
|
1329
|
+
(this.gl as WebGL2RenderingContext).deleteVertexArray(vertexArray);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
/**
|
|
1334
|
+
* Check for WebGL errors and return error information
|
|
1335
|
+
* @param operation Description of the operation for error reporting
|
|
1336
|
+
* @returns Object with error information or null if no error
|
|
1337
|
+
*/
|
|
1338
|
+
checkError(
|
|
1339
|
+
operation: string,
|
|
1340
|
+
): { error: number; errorName: string; message: string } | null {
|
|
1341
|
+
const error = this.getError();
|
|
1342
|
+
if (error !== 0) {
|
|
1343
|
+
// 0 is GL_NO_ERROR
|
|
1344
|
+
let errorName = 'UNKNOWN_ERROR';
|
|
1345
|
+
switch (error) {
|
|
1346
|
+
case this.INVALID_ENUM:
|
|
1347
|
+
errorName = 'INVALID_ENUM';
|
|
1348
|
+
break;
|
|
1349
|
+
case 0x0501: // GL_INVALID_VALUE
|
|
1350
|
+
errorName = 'INVALID_VALUE';
|
|
1351
|
+
break;
|
|
1352
|
+
case this.INVALID_OPERATION:
|
|
1353
|
+
errorName = 'INVALID_OPERATION';
|
|
1354
|
+
break;
|
|
1355
|
+
case 0x0505: // GL_OUT_OF_MEMORY
|
|
1356
|
+
errorName = 'OUT_OF_MEMORY';
|
|
1357
|
+
break;
|
|
1358
|
+
case 0x9242: // GL_CONTEXT_LOST_WEBGL
|
|
1359
|
+
errorName = 'CONTEXT_LOST_WEBGL';
|
|
1360
|
+
break;
|
|
1361
|
+
}
|
|
1362
|
+
|
|
1363
|
+
const message = `WebGL ${errorName} (0x${error.toString(
|
|
1364
|
+
16,
|
|
1365
|
+
)}) during ${operation}`;
|
|
1366
|
+
return { error, errorName, message };
|
|
1367
|
+
}
|
|
1368
|
+
return null;
|
|
1369
|
+
}
|
|
1322
1370
|
}
|
|
1323
1371
|
|
|
1324
1372
|
// prettier-ignore
|
|
@@ -0,0 +1,118 @@
|
|
|
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 { CoreNode } from '../CoreNode.js';
|
|
21
|
+
|
|
22
|
+
//Bucket sort implementation for sorting CoreNode arrays by zIndex
|
|
23
|
+
export const bucketSortByZIndex = (nodes: CoreNode[], min: number): void => {
|
|
24
|
+
const buckets: CoreNode[][] = [];
|
|
25
|
+
const bucketIndices: number[] = [];
|
|
26
|
+
//distribute nodes into buckets
|
|
27
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
28
|
+
const node = nodes[i]!;
|
|
29
|
+
const index = node.props.zIndex - min;
|
|
30
|
+
//create bucket if it doesn't exist
|
|
31
|
+
if (buckets[index] === undefined) {
|
|
32
|
+
buckets[index] = [];
|
|
33
|
+
bucketIndices.push(index);
|
|
34
|
+
}
|
|
35
|
+
buckets[index]!.push(node);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
//sort each bucket using insertion sort
|
|
39
|
+
for (let i = 1; i < bucketIndices.length; i++) {
|
|
40
|
+
const key = bucketIndices[i]!;
|
|
41
|
+
let j = i - 1;
|
|
42
|
+
while (j >= 0 && bucketIndices[j]! > key) {
|
|
43
|
+
bucketIndices[j + 1] = bucketIndices[j]!;
|
|
44
|
+
j--;
|
|
45
|
+
}
|
|
46
|
+
bucketIndices[j + 1] = key;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//flatten buckets
|
|
50
|
+
let idx = 0;
|
|
51
|
+
for (let i = 0; i < bucketIndices.length; i++) {
|
|
52
|
+
const bucket = buckets[bucketIndices[i]!]!;
|
|
53
|
+
for (let j = 0; j < bucket.length; j++) {
|
|
54
|
+
nodes[idx++] = bucket[j]!;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//clean up
|
|
59
|
+
buckets.length = 0;
|
|
60
|
+
bucketIndices.length = 0;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export const incrementalRepositionByZIndex = (
|
|
64
|
+
changedNodes: CoreNode[],
|
|
65
|
+
nodes: CoreNode[],
|
|
66
|
+
): void => {
|
|
67
|
+
for (let i = 0; i < changedNodes.length; i++) {
|
|
68
|
+
const node = changedNodes[i]!;
|
|
69
|
+
const currentIndex = findChildIndexById(node, nodes);
|
|
70
|
+
if (currentIndex === -1) continue;
|
|
71
|
+
|
|
72
|
+
const targetZIndex = node.props.zIndex;
|
|
73
|
+
|
|
74
|
+
//binary search for correct insertion position
|
|
75
|
+
let left = 0;
|
|
76
|
+
let right = nodes.length;
|
|
77
|
+
|
|
78
|
+
while (left < right) {
|
|
79
|
+
const mid = (left + right) >>> 1;
|
|
80
|
+
if (nodes[mid]!.props.zIndex <= targetZIndex) {
|
|
81
|
+
left = mid + 1;
|
|
82
|
+
} else {
|
|
83
|
+
right = mid;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//adjust target position if it's after the current position
|
|
88
|
+
const targetIndex = left > currentIndex ? left - 1 : left;
|
|
89
|
+
|
|
90
|
+
//only reposition if target is different from current
|
|
91
|
+
if (targetIndex !== currentIndex) {
|
|
92
|
+
nodes.splice(currentIndex, 1);
|
|
93
|
+
nodes.splice(targetIndex, 0, node);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export const findChildIndexById = (
|
|
99
|
+
node: CoreNode,
|
|
100
|
+
children: CoreNode[],
|
|
101
|
+
): number => {
|
|
102
|
+
for (let i = 0; i < children.length; i++) {
|
|
103
|
+
const child = children[i]!;
|
|
104
|
+
|
|
105
|
+
// @ts-ignore - accessing protected property
|
|
106
|
+
if (child._id === node._id) {
|
|
107
|
+
return i;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return -1;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
export const removeChild = (node: CoreNode, children: CoreNode[]): void => {
|
|
114
|
+
const index = findChildIndexById(node, children);
|
|
115
|
+
if (index !== -1) {
|
|
116
|
+
children.splice(index, 1);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { parseToAbgrString, parseToRgbaString } from './colorParser.js';
|
|
2
|
+
|
|
3
|
+
const parsedArgbColors: Map<number, string> = new Map();
|
|
4
|
+
const parsedRgbaColors: Map<number, string> = new Map();
|
|
5
|
+
|
|
6
|
+
export function normalizeCanvasColor(color: number, isRGBA: boolean = false) {
|
|
7
|
+
let targetCache = isRGBA === true ? parsedRgbaColors : parsedArgbColors;
|
|
8
|
+
let out = targetCache.get(color);
|
|
9
|
+
if (out !== undefined) {
|
|
10
|
+
return out;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if (isRGBA === true) {
|
|
14
|
+
out = parseToRgbaString(color);
|
|
15
|
+
} else {
|
|
16
|
+
out = parseToAbgrString(color);
|
|
17
|
+
}
|
|
18
|
+
targetCache.set(color, out);
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
@@ -47,7 +47,7 @@ export function parseColor(abgr: number): IParsedColor {
|
|
|
47
47
|
return { isWhite: false, a, r, g, b };
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
export function parseToAbgrString(abgr: number) {
|
|
50
|
+
export function parseToAbgrString(abgr: number): string {
|
|
51
51
|
const a = ((abgr >>> 24) & 0xff) / 255;
|
|
52
52
|
const b = (abgr >>> 16) & 0xff & 0xff;
|
|
53
53
|
const g = (abgr >>> 8) & 0xff & 0xff;
|
|
@@ -55,7 +55,7 @@ export function parseToAbgrString(abgr: number) {
|
|
|
55
55
|
return `rgba(${r},${g},${b},${a})`;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
export function parseToRgbaString(rgba: number) {
|
|
58
|
+
export function parseToRgbaString(rgba: number): string {
|
|
59
59
|
const r = (rgba >>> 24) & 0xff;
|
|
60
60
|
const g = (rgba >>> 16) & 0xff & 0xff;
|
|
61
61
|
const b = (rgba >>> 8) & 0xff & 0xff;
|