@lightningtv/renderer 3.0.0-beta1 → 3.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/NOTICE +4 -0
- package/README.md +22 -28
- package/dist/exports/canvas-shaders.js +0 -16
- package/dist/exports/canvas-shaders.js.map +1 -1
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -19
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +2 -5
- package/dist/exports/index.js +1 -23
- package/dist/exports/index.js.map +1 -1
- package/dist/exports/inspector.js +0 -18
- package/dist/exports/inspector.js.map +1 -1
- package/dist/exports/utils.d.ts +2 -1
- package/dist/exports/utils.js +2 -19
- package/dist/exports/utils.js.map +1 -1
- package/dist/exports/webgl-shaders.js +0 -16
- package/dist/exports/webgl-shaders.js.map +1 -1
- package/dist/exports/webgl.d.ts +2 -1
- package/dist/exports/webgl.js +2 -19
- package/dist/exports/webgl.js.map +1 -1
- package/dist/src/common/CommonTypes.d.ts +15 -3
- package/dist/src/common/CommonTypes.js +0 -18
- package/dist/src/common/CommonTypes.js.map +1 -1
- package/dist/src/common/EventEmitter.js +0 -18
- package/dist/src/common/EventEmitter.js.map +1 -1
- package/dist/src/common/IEventEmitter.js +0 -16
- package/dist/src/common/IEventEmitter.js.map +1 -1
- package/dist/src/core/Autosizer.d.ts +35 -0
- package/dist/src/core/Autosizer.js +178 -0
- package/dist/src/core/Autosizer.js.map +1 -0
- package/dist/src/core/CoreNode.d.ts +139 -101
- package/dist/src/core/CoreNode.js +813 -528
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreShaderManager.d.ts +3 -3
- package/dist/src/core/CoreShaderManager.js +0 -18
- package/dist/src/core/CoreShaderManager.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +75 -87
- package/dist/src/core/CoreTextNode.js +380 -258
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +25 -14
- package/dist/src/core/CoreTextureManager.js +83 -140
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +102 -36
- package/dist/src/core/Stage.js +424 -191
- 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 +114 -134
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/AnimationManager.js +0 -18
- package/dist/src/core/animations/AnimationManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.d.ts +3 -3
- package/dist/src/core/animations/CoreAnimation.js +8 -24
- 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 -22
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ContextSpy.js +0 -18
- package/dist/src/core/lib/ContextSpy.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +2 -2
- package/dist/src/core/lib/ImageWorker.js +33 -31
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/Matrix3d.d.ts +1 -0
- package/dist/src/core/lib/Matrix3d.js +7 -19
- package/dist/src/core/lib/Matrix3d.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +27 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +78 -3
- package/dist/src/core/lib/WebGlContextWrapper.js +150 -25
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +82 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/lib/colorCache.d.ts +1 -0
- package/dist/src/core/lib/colorCache.js +19 -0
- package/dist/src/core/lib/colorCache.js.map +1 -0
- package/dist/src/core/{renderers/canvas/internal/ColorUtils.js → lib/colorParser.js} +1 -19
- package/dist/src/core/lib/colorParser.js.map +1 -0
- package/dist/src/core/lib/textureCompression.d.ts +14 -2
- package/dist/src/core/lib/textureCompression.js +320 -85
- package/dist/src/core/lib/textureCompression.js.map +1 -1
- package/dist/src/core/lib/textureSvg.js +0 -18
- package/dist/src/core/lib/textureSvg.js.map +1 -1
- package/dist/src/core/lib/utils.d.ts +8 -1
- package/dist/src/core/lib/utils.js +44 -20
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +42 -0
- package/dist/src/core/platforms/Platform.js +4 -0
- 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 +90 -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 +0 -18
- package/dist/src/core/renderers/CoreContextTexture.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderOp.js +0 -18
- package/dist/src/core/renderers/CoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +15 -3
- package/dist/src/core/renderers/CoreRenderer.js +1 -18
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +13 -3
- package/dist/src/core/renderers/CoreShaderNode.js +25 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderProgram.js +0 -18
- package/dist/src/core/renderers/CoreShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +4 -5
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +89 -83
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -21
- 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 +18 -31
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/BatchRenderOp.d.ts +25 -0
- package/dist/src/core/renderers/webgl/BatchRenderOp.js +60 -0
- package/dist/src/core/renderers/webgl/BatchRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.d.ts +33 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js +80 -0
- package/dist/src/core/renderers/webgl/SdfRenderOp.js.map +1 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +2 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +14 -24
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +13 -0
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +34 -23
- package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +16 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +102 -70
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +34 -20
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +319 -195
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -3
- 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 +99 -48
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/BufferCollection.d.ts +1 -0
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js +12 -21
- package/dist/src/core/renderers/webgl/internal/BufferCollection.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js +0 -18
- package/dist/src/core/renderers/webgl/internal/WebGlUtils.js.map +1 -1
- package/dist/src/core/shaders/canvas/Border.d.ts +8 -2
- package/dist/src/core/shaders/canvas/Border.js +67 -41
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/HolePunch.js +3 -19
- package/dist/src/core/shaders/canvas/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +7 -21
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +14 -28
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/Rounded.js +1 -17
- package/dist/src/core/shaders/canvas/Rounded.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +6 -3
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +44 -22
- 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 +47 -25
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +9 -21
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/Shadow.js +0 -16
- package/dist/src/core/shaders/canvas/Shadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/utils/render.d.ts +1 -1
- package/dist/src/core/shaders/canvas/utils/render.js +31 -34
- package/dist/src/core/shaders/canvas/utils/render.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +12 -2
- package/dist/src/core/shaders/templates/BorderTemplate.js +31 -27
- 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 -19
- package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -16
- package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +8 -6
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js +2 -18
- package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedTemplate.js +1 -17
- 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/RoundedWithBorderAndShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +4 -2
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +3 -17
- package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -16
- package/dist/src/core/shaders/templates/ShadowTemplate.js.map +1 -1
- package/dist/src/core/shaders/{templates/shaderUtils.d.ts → utils.d.ts} +1 -1
- package/dist/src/core/shaders/utils.js +25 -0
- package/dist/src/core/shaders/utils.js.map +1 -0
- package/dist/src/core/shaders/webgl/Border.js +118 -51
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +6 -41
- package/dist/src/core/shaders/webgl/Default.js.map +1 -1
- package/dist/src/core/shaders/webgl/HolePunch.js +4 -19
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +73 -34
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +56 -48
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +25 -23
- package/dist/src/core/shaders/webgl/Rounded.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +160 -55
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +168 -58
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +73 -34
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -2
- package/dist/src/core/shaders/webgl/SdfShader.js +8 -36
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +39 -34
- package/dist/src/core/shaders/webgl/Shadow.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +59 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +206 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +17 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +139 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +167 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +371 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +18 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js +301 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +18 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js +380 -0
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +384 -0
- package/dist/src/core/text-rendering/TextRenderer.js +2 -0
- package/dist/src/core/text-rendering/TextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/Utils.d.ts +30 -0
- package/dist/src/core/text-rendering/Utils.js +66 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/textures/ColorTexture.d.ts +1 -1
- package/dist/src/core/textures/ColorTexture.js +3 -22
- package/dist/src/core/textures/ColorTexture.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.d.ts +13 -6
- package/dist/src/core/textures/ImageTexture.js +57 -66
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/NoiseTexture.d.ts +3 -3
- package/dist/src/core/textures/NoiseTexture.js +8 -26
- package/dist/src/core/textures/NoiseTexture.js.map +1 -1
- package/dist/src/core/textures/RenderTexture.d.ts +7 -7
- package/dist/src/core/textures/RenderTexture.js +12 -30
- package/dist/src/core/textures/RenderTexture.js.map +1 -1
- package/dist/src/core/textures/SubTexture.d.ts +6 -8
- package/dist/src/core/textures/SubTexture.js +19 -55
- package/dist/src/core/textures/SubTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +90 -12
- package/dist/src/core/textures/Texture.js +160 -35
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +2 -1
- package/dist/src/core/utils.js +1 -19
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/INode.js.map +1 -1
- package/dist/src/main-api/Inspector.d.ts +135 -2
- package/dist/src/main-api/Inspector.js +507 -30
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +294 -81
- package/dist/src/main-api/Renderer.js +225 -96
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/src/utils.d.ts +19 -6
- package/dist/src/utils.js +32 -27
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/exports/canvas-shaders.ts +0 -17
- package/exports/canvas.ts +1 -19
- package/exports/index.ts +6 -27
- package/exports/inspector.ts +0 -19
- package/exports/utils.ts +7 -19
- package/exports/webgl-shaders.ts +0 -16
- package/exports/webgl.ts +3 -20
- package/package.json +23 -22
- package/src/common/CommonTypes.ts +20 -22
- package/src/common/EventEmitter.ts +0 -19
- package/src/common/IAnimationController.ts +0 -18
- package/src/common/IEventEmitter.ts +0 -17
- package/src/core/Autosizer.ts +205 -0
- package/src/core/CoreNode.test.ts +376 -45
- package/src/core/CoreNode.ts +1017 -656
- package/src/core/CoreShaderManager.ts +3 -21
- package/src/core/CoreTextNode.ts +457 -314
- package/src/core/CoreTextureManager.ts +123 -168
- package/src/core/Stage.ts +526 -236
- package/src/core/TextureError.ts +46 -0
- package/src/core/TextureMemoryManager.ts +150 -167
- package/src/core/animations/AnimationManager.ts +0 -19
- package/src/core/animations/CoreAnimation.ts +15 -32
- package/src/core/animations/CoreAnimationController.ts +13 -23
- package/src/core/lib/ContextSpy.ts +0 -19
- package/src/core/lib/ImageWorker.ts +45 -32
- package/src/core/lib/Matrix3d.ts +7 -20
- package/src/core/lib/RenderCoords.ts +36 -67
- package/src/core/lib/WebGlContextWrapper.ts +196 -72
- package/src/core/lib/collectionUtils.ts +99 -0
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +2 -21
- package/src/core/lib/textureCompression.ts +433 -93
- package/src/core/lib/textureSvg.ts +0 -19
- package/src/core/lib/utils.ts +58 -19
- package/src/core/lib/validateImageBitmap.ts +17 -6
- package/src/core/platforms/Platform.ts +64 -0
- package/src/core/platforms/web/WebPlatform.ts +132 -0
- package/src/core/renderers/CoreContextTexture.ts +2 -20
- package/src/core/renderers/CoreRenderOp.ts +0 -19
- package/src/core/renderers/CoreRenderer.ts +16 -23
- package/src/core/renderers/CoreShaderNode.ts +37 -6
- package/src/core/renderers/CoreShaderProgram.ts +0 -19
- package/src/core/renderers/canvas/CanvasRenderer.ts +108 -137
- package/src/core/renderers/canvas/CanvasShaderNode.ts +3 -23
- package/src/core/renderers/canvas/CanvasTexture.ts +25 -37
- package/src/core/renderers/webgl/SdfRenderOp.ts +88 -0
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +18 -34
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -24
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +134 -103
- package/src/core/renderers/webgl/WebGlRenderer.ts +368 -233
- package/src/core/renderers/webgl/WebGlShaderNode.ts +4 -7
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +122 -76
- package/src/core/renderers/webgl/internal/BufferCollection.ts +15 -23
- package/src/core/renderers/webgl/internal/RendererUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -19
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +0 -19
- package/src/core/shaders/canvas/Border.ts +91 -50
- package/src/core/shaders/canvas/HolePunch.ts +4 -28
- package/src/core/shaders/canvas/LinearGradient.ts +10 -25
- package/src/core/shaders/canvas/RadialGradient.ts +23 -54
- package/src/core/shaders/canvas/Rounded.ts +2 -19
- package/src/core/shaders/canvas/RoundedWithBorder.ts +72 -35
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +77 -47
- package/src/core/shaders/canvas/RoundedWithShadow.ts +21 -34
- package/src/core/shaders/canvas/Shadow.ts +0 -17
- package/src/core/shaders/canvas/utils/render.ts +45 -53
- package/src/core/shaders/templates/BorderTemplate.ts +42 -29
- package/src/core/shaders/templates/HolePunchTemplate.ts +5 -22
- package/src/core/shaders/templates/LinearGradientTemplate.ts +0 -17
- package/src/core/shaders/templates/RadialGradientTemplate.ts +10 -25
- package/src/core/shaders/templates/RoundedTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +7 -19
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +1 -18
- package/src/core/shaders/templates/ShadowTemplate.ts +1 -18
- package/src/core/shaders/utils.ts +30 -0
- package/src/core/shaders/webgl/Border.ts +118 -55
- package/src/core/shaders/webgl/Default.ts +6 -43
- package/src/core/shaders/webgl/HolePunch.ts +4 -24
- package/src/core/shaders/webgl/LinearGradient.ts +73 -35
- package/src/core/shaders/webgl/RadialGradient.ts +58 -51
- package/src/core/shaders/webgl/Rounded.ts +25 -45
- package/src/core/shaders/webgl/RoundedWithBorder.ts +161 -63
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +169 -68
- package/src/core/shaders/webgl/RoundedWithShadow.ts +73 -39
- package/src/core/shaders/webgl/SdfShader.ts +8 -41
- package/src/core/shaders/webgl/Shadow.ts +39 -35
- package/src/core/text-rendering/CanvasFontHandler.ts +285 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +236 -0
- package/src/core/text-rendering/SdfFontHandler.ts +566 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +406 -0
- package/src/core/text-rendering/TextLayoutEngine.ts +672 -0
- package/src/core/text-rendering/TextRenderer.ts +426 -0
- package/src/core/text-rendering/Utils.ts +80 -0
- package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +434 -0
- package/src/core/textures/ColorTexture.ts +7 -24
- package/src/core/textures/ImageTexture.ts +110 -92
- package/src/core/textures/NoiseTexture.ts +14 -31
- package/src/core/textures/RenderTexture.ts +18 -35
- package/src/core/textures/SubTexture.ts +25 -65
- package/src/core/textures/Texture.ts +214 -46
- package/src/core/utils.ts +9 -26
- package/src/main-api/INode.ts +0 -18
- package/src/main-api/Inspector.ts +794 -38
- package/src/main-api/Renderer.ts +519 -159
- package/src/utils.ts +64 -29
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -56
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -217
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -36
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -107
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
- package/dist/src/core/shaders/templates/shaderUtils.js +0 -41
- package/dist/src/core/shaders/templates/shaderUtils.js.map +0 -1
- package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
- package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
- package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -126
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -91
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -611
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -370
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.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 -145
- package/src/core/shaders/templates/shaderUtils.ts +0 -47
- package/src/core/shaders/webgl/DefaultBatched.ts +0 -129
- 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 -841
- 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
- /package/dist/src/core/{renderers/canvas/internal/ColorUtils.d.ts → lib/colorParser.d.ts} +0 -0
|
@@ -1,21 +1,3 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
1
|
import type { CoreNode } from '../../CoreNode.js';
|
|
20
2
|
import { SubTexture } from '../../textures/SubTexture.js';
|
|
21
3
|
import { TextureType, type Texture } from '../../textures/Texture.js';
|
|
@@ -26,14 +8,9 @@ import {
|
|
|
26
8
|
type QuadOptions,
|
|
27
9
|
} from '../CoreRenderer.js';
|
|
28
10
|
import { CanvasTexture } from './CanvasTexture.js';
|
|
29
|
-
import {
|
|
30
|
-
parseColor,
|
|
31
|
-
parseToAbgrString,
|
|
32
|
-
parseToRgbaString,
|
|
33
|
-
} from './internal/ColorUtils.js';
|
|
34
|
-
import { assertTruthy } from '../../../utils.js';
|
|
11
|
+
import { parseColor } from '../../lib/colorParser.js';
|
|
35
12
|
import { CanvasShaderNode, type CanvasShaderType } from './CanvasShaderNode.js';
|
|
36
|
-
import
|
|
13
|
+
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
37
14
|
|
|
38
15
|
export class CanvasRenderer extends CoreRenderer {
|
|
39
16
|
private context: CanvasRenderingContext2D;
|
|
@@ -43,18 +20,15 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
43
20
|
public renderToTextureActive = false;
|
|
44
21
|
activeRttNode: CoreNode | null = null;
|
|
45
22
|
|
|
46
|
-
private parsedColorCache: Map<number, string> = new Map();
|
|
47
|
-
|
|
48
23
|
constructor(options: CoreRendererOptions) {
|
|
49
24
|
super(options);
|
|
50
25
|
|
|
51
26
|
this.mode = 'canvas';
|
|
52
|
-
|
|
53
27
|
const { canvas } = options;
|
|
54
28
|
this.canvas = canvas as HTMLCanvasElement;
|
|
55
29
|
this.context = canvas.getContext('2d') as CanvasRenderingContext2D;
|
|
56
30
|
this.pixelRatio = this.stage.pixelRatio;
|
|
57
|
-
this.clearColor =
|
|
31
|
+
this.clearColor = normalizeCanvasColor(this.stage.clearColor);
|
|
58
32
|
}
|
|
59
33
|
|
|
60
34
|
reset(): void {
|
|
@@ -74,44 +48,32 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
74
48
|
// noop
|
|
75
49
|
}
|
|
76
50
|
|
|
77
|
-
addQuad(
|
|
51
|
+
addQuad(node: CoreNode): void {
|
|
78
52
|
const ctx = this.context;
|
|
79
|
-
const { tx, ty, ta, tb, tc, td
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (texture) {
|
|
95
|
-
if (texture instanceof SubTexture) {
|
|
96
|
-
texture = texture.parentTexture;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
if (texture.state === 'freed') {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
if (texture.state !== 'loaded') {
|
|
53
|
+
const { tx, ty, ta, tb, tc, td } = node.globalTransform!;
|
|
54
|
+
const clippingRect = node.clippingRect;
|
|
55
|
+
let texture = node.renderTexture;
|
|
56
|
+
// The Canvas2D renderer only supports image textures, no textures are used for color blocks
|
|
57
|
+
if (texture !== null) {
|
|
58
|
+
const textureType = texture.type;
|
|
59
|
+
if (
|
|
60
|
+
textureType !== TextureType.image &&
|
|
61
|
+
textureType !== TextureType.subTexture &&
|
|
62
|
+
textureType !== TextureType.color &&
|
|
63
|
+
textureType !== TextureType.noise
|
|
64
|
+
) {
|
|
103
65
|
return;
|
|
104
66
|
}
|
|
105
67
|
}
|
|
106
68
|
|
|
107
69
|
const hasTransform = ta !== 1;
|
|
108
70
|
const hasClipping = clippingRect.width !== 0 && clippingRect.height !== 0;
|
|
109
|
-
const
|
|
71
|
+
const shader = node.props.shader;
|
|
72
|
+
const hasShader = shader !== null;
|
|
110
73
|
|
|
111
74
|
let saveAndRestore = hasTransform === true || hasClipping === true;
|
|
112
75
|
if (hasShader === true) {
|
|
113
|
-
saveAndRestore =
|
|
114
|
-
saveAndRestore || (quad.shader as CanvasShaderNode).applySNR;
|
|
76
|
+
saveAndRestore = saveAndRestore || (shader as CanvasShaderNode).applySNR;
|
|
115
77
|
}
|
|
116
78
|
|
|
117
79
|
if (saveAndRestore) {
|
|
@@ -142,12 +104,40 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
142
104
|
|
|
143
105
|
if (hasShader === true) {
|
|
144
106
|
let renderContext: (() => void) | null = () => {
|
|
145
|
-
this.renderContext(
|
|
107
|
+
this.renderContext(node);
|
|
146
108
|
};
|
|
147
|
-
|
|
109
|
+
const quad: QuadOptions = {
|
|
110
|
+
width: node.props.w,
|
|
111
|
+
height: node.props.h,
|
|
112
|
+
colorTl: node.premultipliedColorTl,
|
|
113
|
+
colorTr: node.premultipliedColorTr,
|
|
114
|
+
colorBl: node.premultipliedColorBl,
|
|
115
|
+
colorBr: node.premultipliedColorBr,
|
|
116
|
+
texture: texture,
|
|
117
|
+
textureOptions: node.props.textureOptions,
|
|
118
|
+
textureCoords: node.renderTextureCoords,
|
|
119
|
+
zIndex: node.zIndex, // zIndex usage?
|
|
120
|
+
shader: shader,
|
|
121
|
+
alpha: node.worldAlpha,
|
|
122
|
+
clippingRect: clippingRect,
|
|
123
|
+
tx,
|
|
124
|
+
ty,
|
|
125
|
+
ta,
|
|
126
|
+
tb,
|
|
127
|
+
tc,
|
|
128
|
+
td,
|
|
129
|
+
renderCoords: node.renderCoords,
|
|
130
|
+
rtt: node.props.rtt,
|
|
131
|
+
parentHasRenderTexture: node.parentHasRenderTexture,
|
|
132
|
+
framebufferDimensions: node.parentHasRenderTexture
|
|
133
|
+
? node.parentFramebufferDimensions
|
|
134
|
+
: null,
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
(shader as CanvasShaderNode).render(ctx, quad, renderContext);
|
|
148
138
|
renderContext = null;
|
|
149
139
|
} else {
|
|
150
|
-
this.renderContext(
|
|
140
|
+
this.renderContext(node);
|
|
151
141
|
}
|
|
152
142
|
|
|
153
143
|
if (saveAndRestore) {
|
|
@@ -155,79 +145,70 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
155
145
|
}
|
|
156
146
|
}
|
|
157
147
|
|
|
158
|
-
renderContext(
|
|
159
|
-
const color =
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
148
|
+
renderContext(node: CoreNode) {
|
|
149
|
+
const color = node.premultipliedColorTl;
|
|
150
|
+
const texture = node.renderTexture!;
|
|
151
|
+
const textureType = texture.type;
|
|
152
|
+
const tx = node.globalTransform!.tx;
|
|
153
|
+
const ty = node.globalTransform!.ty;
|
|
154
|
+
const width = node.props.w;
|
|
155
|
+
const height = node.props.h;
|
|
156
|
+
|
|
157
|
+
if (textureType !== TextureType.color) {
|
|
167
158
|
const tintColor = parseColor(color);
|
|
168
|
-
|
|
169
|
-
tintColor
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
image,
|
|
175
|
-
(quad.texture as SubTexture).props.x,
|
|
176
|
-
(quad.texture as SubTexture).props.y,
|
|
177
|
-
(quad.texture as SubTexture).props.width,
|
|
178
|
-
(quad.texture as SubTexture).props.height,
|
|
179
|
-
quad.tx,
|
|
180
|
-
quad.ty,
|
|
181
|
-
quad.width,
|
|
182
|
-
quad.height,
|
|
183
|
-
);
|
|
184
|
-
} else {
|
|
185
|
-
try {
|
|
186
|
-
this.context.drawImage(
|
|
187
|
-
image,
|
|
188
|
-
quad.tx,
|
|
189
|
-
quad.ty,
|
|
190
|
-
quad.width,
|
|
191
|
-
quad.height,
|
|
192
|
-
);
|
|
193
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
194
|
-
} catch (error) {
|
|
195
|
-
// noop
|
|
196
|
-
}
|
|
159
|
+
if (textureType !== TextureType.subTexture) {
|
|
160
|
+
const image = (texture.ctxTexture as CanvasTexture).getImage(tintColor);
|
|
161
|
+
this.context.globalAlpha = tintColor.a ?? node.worldAlpha;
|
|
162
|
+
this.context.drawImage(image, tx, ty, width, height);
|
|
163
|
+
this.context.globalAlpha = 1;
|
|
164
|
+
return;
|
|
197
165
|
}
|
|
166
|
+
const image = (
|
|
167
|
+
(texture as SubTexture).parentTexture.ctxTexture as CanvasTexture
|
|
168
|
+
).getImage(tintColor);
|
|
169
|
+
const props = (texture as SubTexture).props;
|
|
170
|
+
|
|
171
|
+
this.context.globalAlpha = tintColor.a ?? node.worldAlpha;
|
|
172
|
+
this.context.drawImage(
|
|
173
|
+
image,
|
|
174
|
+
props.x,
|
|
175
|
+
props.y,
|
|
176
|
+
props.w,
|
|
177
|
+
props.h,
|
|
178
|
+
tx,
|
|
179
|
+
ty,
|
|
180
|
+
width,
|
|
181
|
+
height,
|
|
182
|
+
);
|
|
198
183
|
this.context.globalAlpha = 1;
|
|
199
184
|
return;
|
|
200
185
|
}
|
|
201
186
|
const hasGradient =
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
let
|
|
187
|
+
node.premultipliedColorTl !== node.premultipliedColorTr ||
|
|
188
|
+
node.premultipliedColorTl !== node.premultipliedColorBr;
|
|
189
|
+
if (hasGradient === true) {
|
|
190
|
+
let endX: number = tx;
|
|
191
|
+
let endY: number = ty;
|
|
206
192
|
let endColor: number;
|
|
207
|
-
if (
|
|
193
|
+
if (node.premultipliedColorTl === node.premultipliedColorTr) {
|
|
208
194
|
// vertical
|
|
209
|
-
endX =
|
|
210
|
-
endY =
|
|
211
|
-
endColor =
|
|
195
|
+
endX = tx;
|
|
196
|
+
endY = ty + height;
|
|
197
|
+
endColor = node.premultipliedColorBr;
|
|
212
198
|
} else {
|
|
213
199
|
// horizontal
|
|
214
|
-
endX =
|
|
215
|
-
endY =
|
|
216
|
-
endColor =
|
|
200
|
+
endX = tx + width;
|
|
201
|
+
endY = ty;
|
|
202
|
+
endColor = node.premultipliedColorTr;
|
|
217
203
|
}
|
|
218
|
-
const gradient = this.context.createLinearGradient(
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
endX,
|
|
222
|
-
endY,
|
|
223
|
-
);
|
|
224
|
-
gradient.addColorStop(0, this.getParsedColor(color));
|
|
225
|
-
gradient.addColorStop(1, this.getParsedColor(endColor));
|
|
204
|
+
const gradient = this.context.createLinearGradient(tx, ty, endX, endY);
|
|
205
|
+
gradient.addColorStop(0, normalizeCanvasColor(color));
|
|
206
|
+
gradient.addColorStop(1, normalizeCanvasColor(endColor));
|
|
226
207
|
this.context.fillStyle = gradient;
|
|
227
|
-
this.context.fillRect(
|
|
228
|
-
} else
|
|
229
|
-
this.context.fillStyle =
|
|
230
|
-
this.context.fillRect(
|
|
208
|
+
this.context.fillRect(tx, ty, width, height);
|
|
209
|
+
} else {
|
|
210
|
+
this.context.fillStyle = normalizeCanvasColor(color);
|
|
211
|
+
this.context.fillRect(tx, ty, width, height);
|
|
231
212
|
}
|
|
232
213
|
}
|
|
233
214
|
|
|
@@ -270,30 +251,20 @@ export class CanvasRenderer extends CoreRenderer {
|
|
|
270
251
|
return null;
|
|
271
252
|
}
|
|
272
253
|
|
|
273
|
-
getParsedColor(color: number, isRGBA: boolean = false) {
|
|
274
|
-
let out = this.parsedColorCache.get(color);
|
|
275
|
-
if (out !== undefined) {
|
|
276
|
-
return out;
|
|
277
|
-
}
|
|
278
|
-
if (isRGBA) {
|
|
279
|
-
out = parseToRgbaString(color);
|
|
280
|
-
} else {
|
|
281
|
-
out = parseToAbgrString(color);
|
|
282
|
-
}
|
|
283
|
-
this.parsedColorCache.set(color, out);
|
|
284
|
-
return out;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
254
|
/**
|
|
288
255
|
* Updates the clear color of the canvas renderer.
|
|
289
256
|
*
|
|
290
257
|
* @param color - The color to set as the clear color.
|
|
291
258
|
*/
|
|
292
259
|
updateClearColor(color: number) {
|
|
293
|
-
this.clearColor =
|
|
260
|
+
this.clearColor = normalizeCanvasColor(color);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
override updateViewport(): void {
|
|
264
|
+
// noop
|
|
294
265
|
}
|
|
295
266
|
|
|
296
|
-
|
|
267
|
+
getDefaultShaderNode() {
|
|
297
268
|
return null;
|
|
298
269
|
}
|
|
299
270
|
}
|
|
@@ -1,25 +1,8 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC
|
|
3
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
* you may not use this file except in compliance with the License.
|
|
5
|
-
* You may obtain a copy of the License at
|
|
6
|
-
*
|
|
7
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
*
|
|
9
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
* See the License for the specific language governing permissions and
|
|
13
|
-
* limitations under the License.
|
|
14
|
-
*
|
|
15
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
1
|
import type { CoreNode } from '../../CoreNode.js';
|
|
2
|
+
import { normalizeCanvasColor } from '../../lib/colorCache.js';
|
|
19
3
|
import type { Stage } from '../../Stage.js';
|
|
20
4
|
import type { QuadOptions } from '../CoreRenderer.js';
|
|
21
5
|
import { CoreShaderNode, type CoreShaderType } from '../CoreShaderNode.js';
|
|
22
|
-
import type { CanvasRenderer } from './CanvasRenderer.js';
|
|
23
6
|
|
|
24
7
|
export type CanvasShaderType<
|
|
25
8
|
T extends object = Record<string, unknown>,
|
|
@@ -67,10 +50,7 @@ export class CanvasShaderNode<
|
|
|
67
50
|
|
|
68
51
|
this.update = () => {
|
|
69
52
|
const prevKey = this.valueKey;
|
|
70
|
-
this.valueKey =
|
|
71
|
-
for (const key in this.resolvedProps) {
|
|
72
|
-
this.valueKey += `${key}:${this.resolvedProps[key]!};`;
|
|
73
|
-
}
|
|
53
|
+
this.valueKey = this.createValueKey();
|
|
74
54
|
|
|
75
55
|
if (prevKey === this.valueKey) {
|
|
76
56
|
return;
|
|
@@ -94,6 +74,6 @@ export class CanvasShaderNode<
|
|
|
94
74
|
}
|
|
95
75
|
|
|
96
76
|
toColorString(rgba: number) {
|
|
97
|
-
return (
|
|
77
|
+
return normalizeCanvasColor(rgba, true);
|
|
98
78
|
}
|
|
99
79
|
}
|
|
@@ -1,26 +1,7 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* If not stated otherwise in this file or this component's LICENSE file the
|
|
3
|
-
* following copyright and licenses apply:
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2023 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
1
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
2
|
import { assertTruthy } from '../../../utils.js';
|
|
3
|
+
import { formatRgba, type IParsedColor } from '../../lib/colorParser.js';
|
|
22
4
|
import { CoreContextTexture } from '../CoreContextTexture.js';
|
|
23
|
-
import { formatRgba, type IParsedColor } from './internal/ColorUtils.js';
|
|
24
5
|
|
|
25
6
|
export class CanvasTexture extends CoreContextTexture {
|
|
26
7
|
protected image:
|
|
@@ -35,24 +16,28 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
35
16
|
}
|
|
36
17
|
| undefined;
|
|
37
18
|
|
|
38
|
-
load(): void {
|
|
19
|
+
async load(): Promise<void> {
|
|
39
20
|
this.textureSource.setState('loading');
|
|
40
21
|
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
22
|
+
try {
|
|
23
|
+
const size = await this.onLoadRequest();
|
|
24
|
+
this.textureSource.setState('loaded', size);
|
|
25
|
+
this.textureSource.freeTextureData();
|
|
26
|
+
this.updateMemSize();
|
|
27
|
+
} catch (err) {
|
|
28
|
+
this.textureSource.setState('failed', err as Error);
|
|
29
|
+
this.textureSource.freeTextureData();
|
|
30
|
+
throw err;
|
|
31
|
+
}
|
|
51
32
|
}
|
|
52
33
|
|
|
53
|
-
|
|
34
|
+
release(): void {
|
|
54
35
|
this.image = undefined;
|
|
55
36
|
this.tintCache = undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
free(): void {
|
|
40
|
+
this.release();
|
|
56
41
|
this.textureSource.setState('freed');
|
|
57
42
|
this.setTextureMemUse(0);
|
|
58
43
|
this.textureSource.freeTextureData();
|
|
@@ -64,8 +49,11 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
64
49
|
// - tinted image
|
|
65
50
|
const mult = this.tintCache ? 8 : 4;
|
|
66
51
|
if (this.textureSource.dimensions) {
|
|
67
|
-
|
|
68
|
-
|
|
52
|
+
this.setTextureMemUse(
|
|
53
|
+
this.textureSource.dimensions.w *
|
|
54
|
+
this.textureSource.dimensions.h *
|
|
55
|
+
mult,
|
|
56
|
+
);
|
|
69
57
|
}
|
|
70
58
|
}
|
|
71
59
|
|
|
@@ -139,15 +127,15 @@ export class CanvasTexture extends CoreContextTexture {
|
|
|
139
127
|
const ctx = canvas.getContext('2d');
|
|
140
128
|
if (ctx) ctx.putImageData(data, 0, 0);
|
|
141
129
|
this.image = canvas;
|
|
142
|
-
return {
|
|
130
|
+
return { w: data.width, h: data.height };
|
|
143
131
|
} else if (
|
|
144
132
|
(typeof ImageBitmap !== 'undefined' && data instanceof ImageBitmap) ||
|
|
145
133
|
data instanceof HTMLImageElement
|
|
146
134
|
) {
|
|
147
135
|
this.image = data;
|
|
148
|
-
return {
|
|
136
|
+
return { w: data.width, h: data.height };
|
|
149
137
|
}
|
|
150
138
|
|
|
151
|
-
return {
|
|
139
|
+
return { w: 0, h: 0 };
|
|
152
140
|
}
|
|
153
141
|
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { CoreRenderOp } from '../CoreRenderOp.js';
|
|
2
|
+
import { USE_RTT } from '../../../utils.js';
|
|
3
|
+
import type { WebGlCtxTexture } from './WebGlCtxTexture.js';
|
|
4
|
+
import type { WebGlRenderer } from './WebGlRenderer.js';
|
|
5
|
+
import type { BufferCollection } from './internal/BufferCollection.js';
|
|
6
|
+
import type { WebGlShaderNode } from './WebGlShaderNode.js';
|
|
7
|
+
import type { RectWithValid } from '../../lib/utils.js';
|
|
8
|
+
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
9
|
+
import type { Stage } from '../../Stage.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Can render multiple quads with multiple textures (up to vertex shader texture limit)
|
|
13
|
+
*
|
|
14
|
+
*/
|
|
15
|
+
export class SdfRenderOp extends CoreRenderOp {
|
|
16
|
+
public numQuads = 0;
|
|
17
|
+
public readonly isCoreNode = false as const;
|
|
18
|
+
public renderOpTextures: WebGlCtxTexture[] = [];
|
|
19
|
+
public time: number = 0;
|
|
20
|
+
readonly stage: Stage;
|
|
21
|
+
|
|
22
|
+
constructor(
|
|
23
|
+
readonly renderer: WebGlRenderer,
|
|
24
|
+
readonly shader: WebGlShaderNode,
|
|
25
|
+
public sdfShaderProps: Record<string, unknown>,
|
|
26
|
+
readonly quadBufferCollection: BufferCollection,
|
|
27
|
+
public worldAlpha: number,
|
|
28
|
+
public clippingRect: RectWithValid,
|
|
29
|
+
readonly width: number,
|
|
30
|
+
readonly height: number,
|
|
31
|
+
readonly rtt: boolean,
|
|
32
|
+
public parentHasRenderTexture: boolean,
|
|
33
|
+
public framebufferDimensions: Dimensions | null,
|
|
34
|
+
) {
|
|
35
|
+
super();
|
|
36
|
+
this.stage = renderer.stage;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
addTexture(texture: WebGlCtxTexture): number {
|
|
40
|
+
const { renderOpTextures } = this;
|
|
41
|
+
const length = renderOpTextures.length;
|
|
42
|
+
|
|
43
|
+
// We only support 1 texture (atlas) for SDF for now, but following the pattern
|
|
44
|
+
for (let i = 0; i < length; i++) {
|
|
45
|
+
if (renderOpTextures[i] === texture) {
|
|
46
|
+
return i;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
renderOpTextures.push(texture);
|
|
51
|
+
return length;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
draw() {
|
|
55
|
+
const { glw, options, stage } = this.renderer;
|
|
56
|
+
|
|
57
|
+
stage.shManager.useShader(this.shader.program);
|
|
58
|
+
this.shader.program.bindRenderOp(this);
|
|
59
|
+
|
|
60
|
+
// Clipping
|
|
61
|
+
if (this.clippingRect.valid === true) {
|
|
62
|
+
const pixelRatio =
|
|
63
|
+
USE_RTT && this.parentHasRenderTexture ? 1 : stage.pixelRatio;
|
|
64
|
+
const clipX = Math.round(this.clippingRect.x * pixelRatio);
|
|
65
|
+
const clipWidth = Math.round(this.clippingRect.width * pixelRatio);
|
|
66
|
+
const clipHeight = Math.round(this.clippingRect.height * pixelRatio);
|
|
67
|
+
let clipY = Math.round(
|
|
68
|
+
options.canvas.height - clipHeight - this.clippingRect.y * pixelRatio,
|
|
69
|
+
);
|
|
70
|
+
// if parent has render texture, we need to adjust the scissor rect
|
|
71
|
+
// to be relative to the parent's framebuffer
|
|
72
|
+
if (USE_RTT && this.parentHasRenderTexture) {
|
|
73
|
+
clipY = this.framebufferDimensions
|
|
74
|
+
? this.framebufferDimensions.h - this.height
|
|
75
|
+
: 0;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
glw.setScissorTest(true);
|
|
79
|
+
glw.scissor(clipX, clipY, clipWidth, clipHeight);
|
|
80
|
+
} else {
|
|
81
|
+
glw.setScissorTest(false);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// SDF rendering uses drawArrays with explicit triangle vertices (6 vertices per quad)
|
|
85
|
+
// Note: buffers should be bound by bindRenderOp -> bindBufferCollection
|
|
86
|
+
glw.drawArrays(glw.TRIANGLES, 0, 6 * this.numQuads);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -1,26 +1,7 @@
|
|
|
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 2024 Comcast Cable Communications Management, LLC.
|
|
6
|
-
*
|
|
7
|
-
* Licensed under the Apache License, Version 2.0 (the License);
|
|
8
|
-
* you may not use this file except in compliance with the License.
|
|
9
|
-
* You may obtain a copy of the License at
|
|
10
|
-
*
|
|
11
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
-
*
|
|
13
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
14
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
-
* See the License for the specific language governing permissions and
|
|
17
|
-
* limitations under the License.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
1
|
import type { Dimensions } from '../../../common/CommonTypes.js';
|
|
21
|
-
import { assertTruthy } from '../../../utils.js';
|
|
22
2
|
import type { TextureMemoryManager } from '../../TextureMemoryManager.js';
|
|
23
3
|
import type { WebGlContextWrapper } from '../../lib/WebGlContextWrapper.js';
|
|
4
|
+
import type { Bound } from '../../lib/utils.js';
|
|
24
5
|
import type { RenderTexture } from '../../textures/RenderTexture.js';
|
|
25
6
|
import { WebGlCtxTexture } from './WebGlCtxTexture.js';
|
|
26
7
|
|
|
@@ -29,6 +10,13 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
29
10
|
|
|
30
11
|
public framebuffer: WebGLFramebuffer | null = null;
|
|
31
12
|
|
|
13
|
+
override txCoords: Bound = {
|
|
14
|
+
x1: 0,
|
|
15
|
+
y1: 1,
|
|
16
|
+
x2: 1,
|
|
17
|
+
y2: 0,
|
|
18
|
+
};
|
|
19
|
+
|
|
32
20
|
constructor(
|
|
33
21
|
glw: WebGlContextWrapper,
|
|
34
22
|
memManager: TextureMemoryManager,
|
|
@@ -41,25 +29,21 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
41
29
|
const { glw } = this;
|
|
42
30
|
const nativeTexture = (this._nativeCtxTexture =
|
|
43
31
|
this.createNativeCtxTexture());
|
|
44
|
-
|
|
32
|
+
|
|
33
|
+
if (!nativeTexture) {
|
|
34
|
+
throw new Error('Failed to create native texture for RenderTexture');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const { w, h } = this.textureSource;
|
|
45
38
|
|
|
46
39
|
// Create Framebuffer object
|
|
47
40
|
this.framebuffer = glw.createFramebuffer();
|
|
48
41
|
|
|
49
42
|
// Set the dimensions of the render texture
|
|
50
|
-
glw.texImage2D(
|
|
51
|
-
0,
|
|
52
|
-
glw.RGBA,
|
|
53
|
-
width,
|
|
54
|
-
height,
|
|
55
|
-
0,
|
|
56
|
-
glw.RGBA,
|
|
57
|
-
glw.UNSIGNED_BYTE,
|
|
58
|
-
null,
|
|
59
|
-
);
|
|
43
|
+
glw.texImage2D(0, glw.RGBA, w, h, 0, glw.RGBA, glw.UNSIGNED_BYTE, null);
|
|
60
44
|
|
|
61
45
|
// Update the texture memory manager
|
|
62
|
-
this.setTextureMemUse(
|
|
46
|
+
this.setTextureMemUse(w * h * 4);
|
|
63
47
|
|
|
64
48
|
// Bind the framebuffer
|
|
65
49
|
glw.bindFramebuffer(this.framebuffer);
|
|
@@ -71,8 +55,8 @@ export class WebGlCtxRenderTexture extends WebGlCtxTexture {
|
|
|
71
55
|
glw.bindFramebuffer(null);
|
|
72
56
|
|
|
73
57
|
return {
|
|
74
|
-
|
|
75
|
-
|
|
58
|
+
w,
|
|
59
|
+
h,
|
|
76
60
|
};
|
|
77
61
|
}
|
|
78
62
|
|