@lightningjs/renderer 3.0.0-beta1 → 3.0.0-beta10
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/COPYING +1 -0
- package/LICENSE +202 -202
- package/NOTICE +3 -3
- package/README.md +133 -147
- package/dist/exports/canvas.d.ts +1 -1
- package/dist/exports/canvas.js +1 -1
- package/dist/exports/canvas.js.map +1 -1
- package/dist/exports/index.d.ts +1 -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/core/CoreNode.d.ts +45 -69
- package/dist/src/core/CoreNode.js +323 -305
- 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 +58 -87
- package/dist/src/core/CoreTextNode.js +243 -237
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +9 -11
- package/dist/src/core/CoreTextureManager.js +80 -91
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +75 -31
- package/dist/src/core/Stage.js +270 -136
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/TextureMemoryManager.d.ts +10 -1
- package/dist/src/core/TextureMemoryManager.js +112 -78
- package/dist/src/core/TextureMemoryManager.js.map +1 -1
- package/dist/src/core/animations/CoreAnimation.js +5 -0
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreAnimationController.d.ts +1 -0
- package/dist/src/core/animations/CoreAnimationController.js +11 -4
- package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.js +3 -2
- package/dist/src/core/lib/ImageWorker.js.map +1 -1
- package/dist/src/core/lib/RenderCoords.d.ts +9 -10
- package/dist/src/core/lib/RenderCoords.js +43 -55
- package/dist/src/core/lib/RenderCoords.js.map +1 -1
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +51 -2
- package/dist/src/core/lib/WebGlContextWrapper.js +92 -22
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- 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/utils.d.ts +3 -0
- package/dist/src/core/lib/utils.js +42 -0
- package/dist/src/core/lib/utils.js.map +1 -1
- package/dist/src/core/lib/validateImageBitmap.d.ts +2 -1
- package/dist/src/core/lib/validateImageBitmap.js +4 -4
- package/dist/src/core/lib/validateImageBitmap.js.map +1 -1
- package/dist/src/core/platforms/Platform.d.ts +37 -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 +9 -0
- package/dist/src/core/platforms/web/WebPlatform.js +84 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -0
- package/dist/src/core/renderers/CoreContextTexture.d.ts +1 -1
- package/dist/src/core/renderers/CoreRenderer.d.ts +5 -2
- package/dist/src/core/renderers/CoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/CoreShaderNode.d.ts +3 -3
- package/dist/src/core/renderers/CoreShaderNode.js +8 -2
- package/dist/src/core/renderers/CoreShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +1 -2
- package/dist/src/core/renderers/canvas/CanvasRenderer.js +10 -21
- package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js +3 -5
- package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +1 -1
- package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +2 -2
- package/dist/src/core/renderers/canvas/CanvasTexture.js +11 -9
- package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +3 -0
- package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +5 -6
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +30 -21
- package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +10 -2
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js +37 -19
- package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlRenderer.js +144 -117
- package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js +1 -4
- package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +5 -3
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +55 -31
- package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +35 -35
- package/dist/src/core/shaders/canvas/Border.js +1 -1
- package/dist/src/core/shaders/canvas/Border.js.map +1 -1
- package/dist/src/core/shaders/canvas/LinearGradient.js +5 -3
- package/dist/src/core/shaders/canvas/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RadialGradient.js +13 -11
- package/dist/src/core/shaders/canvas/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js +14 -6
- package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +10 -8
- package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js +7 -5
- package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.d.ts +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js +1 -1
- package/dist/src/core/shaders/templates/BorderTemplate.js.map +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.js +1 -1
- package/dist/src/core/shaders/templates/HolePunchTemplate.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 +86 -63
- package/dist/src/core/shaders/webgl/Border.js.map +1 -1
- package/dist/src/core/shaders/webgl/Default.js +47 -47
- package/dist/src/core/shaders/webgl/DefaultBatched.js +61 -61
- package/dist/src/core/shaders/webgl/HolePunch.js +36 -35
- package/dist/src/core/shaders/webgl/HolePunch.js.map +1 -1
- package/dist/src/core/shaders/webgl/LinearGradient.js +41 -40
- package/dist/src/core/shaders/webgl/LinearGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/RadialGradient.js +39 -38
- package/dist/src/core/shaders/webgl/RadialGradient.js.map +1 -1
- package/dist/src/core/shaders/webgl/Rounded.js +71 -71
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js +115 -72
- package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +138 -88
- package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +1 -1
- package/dist/src/core/shaders/webgl/RoundedWithShadow.js +54 -54
- package/dist/src/core/shaders/webgl/SdfShader.js +63 -63
- package/dist/src/core/shaders/webgl/SdfShader.js.map +1 -1
- package/dist/src/core/shaders/webgl/Shadow.js +83 -83
- package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +25 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js +130 -0
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +22 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +366 -0
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/SdfFontHandler.d.ts +137 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js +336 -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 +355 -0
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -0
- package/dist/src/core/text-rendering/TextRenderer.d.ts +349 -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/Utils.d.ts +71 -0
- package/dist/src/core/text-rendering/Utils.js +212 -0
- package/dist/src/core/text-rendering/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
- package/dist/src/core/{renderers/CoreShader.js → text-rendering/canvas/Settings.js} +3 -11
- package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
- package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
- package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
- package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
- package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
- package/dist/src/core/text-rendering/canvas/draw.js +132 -0
- package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +5 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +50 -2
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +9 -54
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +13 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +3 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
- package/dist/src/core/text-rendering/sdf/Utils.js +304 -0
- package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
- package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
- package/dist/src/{main-api/texture-usage-trackers/TextureUsageTracker.js → core/text-rendering/sdf/index.js} +3 -11
- package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
- package/dist/src/core/textures/ImageTexture.d.ts +4 -3
- package/dist/src/core/textures/ImageTexture.js +36 -9
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/textures/Texture.d.ts +21 -2
- package/dist/src/core/textures/Texture.js +37 -6
- package/dist/src/core/textures/Texture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/INode.d.ts +2 -2
- package/dist/src/main-api/Inspector.d.ts +6 -1
- package/dist/src/main-api/Inspector.js +43 -7
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.d.ts +122 -46
- package/dist/src/main-api/Renderer.js +174 -37
- 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/exports/canvas-shaders.ts +28 -28
- package/exports/canvas.ts +45 -45
- package/exports/index.ts +82 -89
- package/exports/inspector.ts +24 -24
- package/exports/utils.ts +50 -44
- package/exports/webgl-shaders.ts +28 -28
- package/exports/webgl.ts +52 -50
- package/package.json +2 -4
- package/src/common/CommonTypes.ts +146 -146
- package/src/common/EventEmitter.ts +77 -77
- package/src/common/IAnimationController.ts +92 -92
- package/src/common/IEventEmitter.ts +28 -28
- package/src/core/CoreNode.test.ts +202 -203
- package/src/core/CoreNode.ts +2491 -2476
- package/src/core/CoreShaderManager.ts +188 -193
- package/src/core/CoreTextNode.ts +443 -448
- package/src/core/CoreTextureManager.ts +565 -597
- package/src/core/Stage.ts +906 -740
- package/src/core/TextureMemoryManager.ts +445 -395
- package/src/core/animations/AnimationManager.ts +38 -38
- package/src/core/animations/CoreAnimation.ts +291 -284
- package/src/core/animations/CoreAnimationController.ts +166 -157
- package/src/core/lib/ContextSpy.ts +41 -41
- package/src/core/lib/ImageWorker.ts +286 -279
- package/src/core/lib/Matrix3d.ts +244 -244
- package/src/core/lib/RenderCoords.ts +71 -86
- package/src/core/lib/WebGlContextWrapper.ts +1381 -1324
- package/src/core/lib/colorCache.ts +20 -0
- package/src/core/{renderers/canvas/internal/ColorUtils.ts → lib/colorParser.ts} +85 -85
- package/src/core/lib/textureCompression.ts +152 -152
- package/src/core/lib/textureSvg.ts +78 -78
- package/src/core/lib/utils.ts +412 -361
- package/src/core/lib/validateImageBitmap.ts +87 -76
- package/src/core/platforms/Platform.ts +77 -0
- package/src/core/platforms/web/WebPlatform.ts +121 -0
- package/src/core/renderers/CoreContextTexture.ts +43 -43
- package/src/core/renderers/CoreRenderOp.ts +22 -22
- package/src/core/renderers/CoreRenderer.ts +110 -107
- package/src/core/renderers/CoreShaderNode.ts +175 -171
- package/src/core/renderers/CoreShaderProgram.ts +23 -23
- package/src/core/renderers/canvas/CanvasRenderer.ts +283 -299
- package/src/core/renderers/canvas/CanvasShaderNode.ts +96 -99
- package/src/core/renderers/canvas/CanvasTexture.ts +156 -153
- package/src/core/renderers/webgl/WebGlCtxRenderTexture.ts +91 -86
- package/src/core/renderers/webgl/WebGlCtxSubTexture.ts +50 -50
- package/src/core/renderers/webgl/WebGlCtxTexture.ts +310 -301
- package/src/core/renderers/webgl/WebGlRenderOp.ts +167 -145
- package/src/core/renderers/webgl/WebGlRenderer.ts +747 -715
- package/src/core/renderers/webgl/WebGlShaderNode.ts +435 -433
- package/src/core/renderers/webgl/WebGlShaderProgram.ts +341 -310
- package/src/core/renderers/webgl/internal/BufferCollection.ts +54 -54
- package/src/core/renderers/webgl/internal/RendererUtils.ts +155 -155
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +281 -281
- package/src/core/renderers/webgl/internal/WebGlUtils.ts +35 -35
- package/src/core/shaders/canvas/Border.ts +75 -78
- package/src/core/shaders/canvas/HolePunch.ts +62 -62
- package/src/core/shaders/canvas/LinearGradient.ts +71 -69
- package/src/core/shaders/canvas/RadialGradient.ts +99 -113
- package/src/core/shaders/canvas/Rounded.ts +55 -55
- package/src/core/shaders/canvas/RoundedWithBorder.ts +74 -68
- package/src/core/shaders/canvas/RoundedWithBorderAndShadow.ts +90 -88
- package/src/core/shaders/canvas/RoundedWithShadow.ts +70 -69
- package/src/core/shaders/canvas/Shadow.ts +52 -52
- package/src/core/shaders/canvas/utils/render.ts +151 -151
- package/src/core/shaders/templates/BorderTemplate.ts +115 -115
- package/src/core/shaders/templates/HolePunchTemplate.ts +82 -82
- package/src/core/shaders/templates/LinearGradientTemplate.ts +71 -71
- package/src/core/shaders/templates/RadialGradientTemplate.ts +81 -81
- package/src/core/shaders/templates/RoundedTemplate.ts +98 -98
- package/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.ts +38 -38
- package/src/core/shaders/templates/RoundedWithBorderTemplate.ts +35 -35
- package/src/core/shaders/templates/RoundedWithShadowTemplate.ts +35 -35
- package/src/core/shaders/templates/ShadowTemplate.ts +106 -106
- package/src/core/shaders/{templates/shaderUtils.ts → utils.ts} +46 -47
- package/src/core/shaders/webgl/Border.ts +116 -96
- package/src/core/shaders/webgl/Default.ts +89 -89
- package/src/core/shaders/webgl/DefaultBatched.ts +129 -129
- package/src/core/shaders/webgl/HolePunch.ts +75 -78
- package/src/core/shaders/webgl/LinearGradient.ts +82 -81
- package/src/core/shaders/webgl/RadialGradient.ts +85 -84
- package/src/core/shaders/webgl/Rounded.ts +117 -117
- package/src/core/shaders/webgl/RoundedWithBorder.ts +155 -114
- package/src/core/shaders/webgl/RoundedWithBorderAndShadow.ts +175 -133
- package/src/core/shaders/webgl/RoundedWithShadow.ts +98 -98
- package/src/core/shaders/webgl/SdfShader.ts +134 -137
- package/src/core/shaders/webgl/Shadow.ts +115 -115
- package/src/core/text-rendering/CanvasFontHandler.ts +176 -0
- package/src/core/text-rendering/CanvasTextRenderer.ts +622 -0
- package/src/core/text-rendering/SdfFontHandler.ts +517 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +466 -0
- package/src/core/text-rendering/TextRenderer.ts +404 -0
- package/src/core/text-rendering/{TextTextureRendererUtils.ts → Utils.ts} +257 -263
- package/src/core/text-rendering/canvas/Settings.ts +99 -0
- package/src/core/text-rendering/canvas/Utils.test.ts +206 -0
- package/src/core/text-rendering/canvas/Utils.ts +178 -0
- package/src/core/text-rendering/canvas/calculateRenderInfo.ts +299 -0
- package/src/core/text-rendering/canvas/draw.ts +165 -0
- package/src/core/text-rendering/sdf/Utils.test.ts +402 -0
- package/src/core/text-rendering/sdf/Utils.ts +436 -0
- package/src/core/text-rendering/sdf/index.ts +20 -0
- package/src/core/textures/ColorTexture.ts +102 -102
- package/src/core/textures/ImageTexture.ts +418 -376
- package/src/core/textures/NoiseTexture.ts +104 -104
- package/src/core/textures/RenderTexture.ts +85 -85
- package/src/core/textures/SubTexture.ts +205 -205
- package/src/core/textures/Texture.ts +381 -337
- package/src/core/utils.ts +227 -227
- package/src/env.d.ts +7 -7
- package/src/main-api/INode.ts +100 -99
- package/src/main-api/Inspector.ts +567 -522
- package/src/main-api/Renderer.ts +873 -649
- package/src/main-api/utils.ts +45 -45
- package/src/utils.ts +267 -267
- 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/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/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.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/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -16
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -123
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -55
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -57
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -227
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -613
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -231
- package/dist/src/core/renderers/webgl/WebGlCoreShader.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/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.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/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.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/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.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.map +0 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +0 -24
- package/dist/src/render-drivers/main/MainCoreDriver.js +0 -118
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyNode.d.ts +0 -99
- package/dist/src/render-drivers/main/MainOnlyNode.js +0 -396
- package/dist/src/render-drivers/main/MainOnlyNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderController.d.ts +0 -6
- package/dist/src/render-drivers/main/MainOnlyShaderController.js +0 -15
- package/dist/src/render-drivers/main/MainOnlyShaderController.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js +0 -34
- package/dist/src/render-drivers/main/MainOnlyShaderNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +0 -47
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +0 -205
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +0 -1
- package/dist/src/render-drivers/main/MainRenderDriver.d.ts +0 -17
- package/dist/src/render-drivers/main/MainRenderDriver.js +0 -88
- package/dist/src/render-drivers/main/MainRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/NodeStruct.d.ts +0 -90
- package/dist/src/render-drivers/threadx/NodeStruct.js +0 -281
- package/dist/src/render-drivers/threadx/NodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/SharedNode.d.ts +0 -39
- package/dist/src/render-drivers/threadx/SharedNode.js +0 -60
- package/dist/src/render-drivers/threadx/SharedNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +0 -44
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +0 -201
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +0 -234
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.d.ts +0 -20
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js +0 -84
- package/dist/src/render-drivers/threadx/ThreadXMainAnimationController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainNode.d.ts +0 -44
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js +0 -154
- package/dist/src/render-drivers/threadx/ThreadXMainNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.d.ts +0 -6
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js +0 -16
- package/dist/src/render-drivers/threadx/ThreadXMainShaderController.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.d.ts +0 -7
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js +0 -15
- package/dist/src/render-drivers/threadx/ThreadXMainShaderNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +0 -28
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +0 -55
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.d.ts +0 -21
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js +0 -198
- package/dist/src/render-drivers/threadx/ThreadXRenderDriver.js.map +0 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +0 -70
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js +0 -32
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.d.ts +0 -19
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js +0 -177
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +0 -27
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +0 -108
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.d.ts +0 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +0 -145
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +0 -1
- package/dist/src/render-drivers/utils.d.ts +0 -12
- package/dist/src/render-drivers/utils.js +0 -69
- package/dist/src/render-drivers/utils.js.map +0 -1
- package/scripts/please-use-pnpm.js +0 -13
- package/src/core/platform.ts +0 -64
- package/src/core/renderers/canvas/internal/C2DShaderUtils.ts +0 -220
- package/src/core/text-rendering/TextRenderingUtils.ts +0 -36
- package/src/core/text-rendering/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
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
import type { CoreTextNodeProps } from '../CoreTextNode.js';
|
|
2
|
+
import type { CoreRenderer } from '../renderers/CoreRenderer.js';
|
|
3
|
+
import type { Stage } from '../Stage.js';
|
|
4
|
+
export type TextBaseline = 'alphabetic' | 'hanging' | 'middle' | 'ideographic' | 'bottom';
|
|
5
|
+
export type TextVerticalAlign = 'top' | 'middle' | 'bottom';
|
|
6
|
+
export type TextRenderers = 'canvas' | 'sdf';
|
|
7
|
+
/**
|
|
8
|
+
* Structure mapping font family names to a set of font faces.
|
|
9
|
+
*/
|
|
10
|
+
export interface FontFamilyMap {
|
|
11
|
+
[familyName: string]: FontFace;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Font metrics used for layout and default line height calculations.
|
|
15
|
+
*/
|
|
16
|
+
export interface FontMetrics {
|
|
17
|
+
/**
|
|
18
|
+
* The distance, in font units, from the baseline to the highest point of the font.
|
|
19
|
+
*/
|
|
20
|
+
ascender: number;
|
|
21
|
+
/**
|
|
22
|
+
* The distance, in font units, from the baseline to the lowest point of the font.
|
|
23
|
+
*/
|
|
24
|
+
descender: number;
|
|
25
|
+
/**
|
|
26
|
+
* The additional space used in the calculation of the default line height in font units.
|
|
27
|
+
*/
|
|
28
|
+
lineGap: number;
|
|
29
|
+
/**
|
|
30
|
+
* The number of font units per 1 EM.
|
|
31
|
+
*/
|
|
32
|
+
unitsPerEm: number;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Normalized font metrics where values are expressed as a fraction of 1 EM.
|
|
36
|
+
*/
|
|
37
|
+
export interface NormalizedFontMetrics {
|
|
38
|
+
/**
|
|
39
|
+
* The distance, as a fraction of 1 EM, from the baseline to the highest point of the font.
|
|
40
|
+
*/
|
|
41
|
+
ascender: number;
|
|
42
|
+
/**
|
|
43
|
+
* The distance, as a fraction of 1 EM, from the baseline to the lowest point of the font.
|
|
44
|
+
*/
|
|
45
|
+
descender: number;
|
|
46
|
+
/**
|
|
47
|
+
* The additional space used in the calculation of the default line height as a fraction of 1 EM
|
|
48
|
+
*/
|
|
49
|
+
lineGap: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Text renderer properties that are used in resolving appropriate font faces
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* Extended by {@link TrProps}
|
|
56
|
+
*/
|
|
57
|
+
export interface TrFontProps {
|
|
58
|
+
/**
|
|
59
|
+
* Font Family
|
|
60
|
+
*
|
|
61
|
+
* @internalRemarks
|
|
62
|
+
* `fontFamily` is defined currently as single string, but in the future we may want to
|
|
63
|
+
* support multiple font family fallbacks, as this is supported by CSS / Canvas2d. We can
|
|
64
|
+
* do this in a backwards compatible way by unioning an array of strings to the
|
|
65
|
+
* `fontFamily` property.
|
|
66
|
+
*/
|
|
67
|
+
fontFamily: string;
|
|
68
|
+
/**
|
|
69
|
+
* Font Style
|
|
70
|
+
*
|
|
71
|
+
* @remarks
|
|
72
|
+
* The font style to use when looking up the font face. This can be one of the
|
|
73
|
+
* following strings:
|
|
74
|
+
* - `'normal'`
|
|
75
|
+
* - `'italic'`
|
|
76
|
+
* - `'oblique'`
|
|
77
|
+
*/
|
|
78
|
+
fontStyle: 'normal' | 'italic' | 'oblique';
|
|
79
|
+
/**
|
|
80
|
+
* Font Size
|
|
81
|
+
*
|
|
82
|
+
* @remarks
|
|
83
|
+
* The font size to use when looking up the font face.
|
|
84
|
+
*
|
|
85
|
+
* The font size is specified in pixels and is the height of the font's
|
|
86
|
+
* em-square. The em-square is essentially the height of the capital letters
|
|
87
|
+
* for the font. The actual height of the text can be larger than the
|
|
88
|
+
* specified font size, as the font may have ascenders and descenders that
|
|
89
|
+
* extend beyond the em-square.
|
|
90
|
+
*
|
|
91
|
+
* @default 16
|
|
92
|
+
*/
|
|
93
|
+
fontSize: number;
|
|
94
|
+
}
|
|
95
|
+
export interface TrProps extends TrFontProps {
|
|
96
|
+
/**
|
|
97
|
+
* Text to display
|
|
98
|
+
*
|
|
99
|
+
* @default ''
|
|
100
|
+
*/
|
|
101
|
+
text: string;
|
|
102
|
+
/**
|
|
103
|
+
* Text alignment
|
|
104
|
+
*
|
|
105
|
+
* @remarks
|
|
106
|
+
* Alignment of the text relative to it's contained bounds. For best results,
|
|
107
|
+
* use {@link contain} mode `'width'` or `'both'` and a set an explicit
|
|
108
|
+
* {@link width} for the text to be aligned within.
|
|
109
|
+
*
|
|
110
|
+
* @default 'left'
|
|
111
|
+
*/
|
|
112
|
+
textAlign: 'left' | 'center' | 'right';
|
|
113
|
+
/**
|
|
114
|
+
* Color of text
|
|
115
|
+
*
|
|
116
|
+
* @remarks
|
|
117
|
+
* The color value is a number in the format 0xRRGGBBAA, where RR is the red
|
|
118
|
+
* component, GG is the green component, BB is the blue component, and AA is
|
|
119
|
+
* the alpha component.
|
|
120
|
+
*
|
|
121
|
+
* @default 0xffffffff (opaque white)
|
|
122
|
+
*/
|
|
123
|
+
color: number;
|
|
124
|
+
x: number;
|
|
125
|
+
y: number;
|
|
126
|
+
maxWidth: number;
|
|
127
|
+
maxHeight: number;
|
|
128
|
+
/**
|
|
129
|
+
* Vertical offset for text
|
|
130
|
+
*
|
|
131
|
+
* @remarks
|
|
132
|
+
* The vertical offset of the text.
|
|
133
|
+
*
|
|
134
|
+
* @default 0
|
|
135
|
+
*/
|
|
136
|
+
offsetY: number;
|
|
137
|
+
/**
|
|
138
|
+
* Letter spacing for text (in pixels)
|
|
139
|
+
*
|
|
140
|
+
* @remarks
|
|
141
|
+
* This property sets additional (or reduced, if value is negative) spacing
|
|
142
|
+
* between characters in the text.
|
|
143
|
+
*
|
|
144
|
+
* @default 0
|
|
145
|
+
*/
|
|
146
|
+
letterSpacing: number;
|
|
147
|
+
/**
|
|
148
|
+
* Line height for text (in pixels)
|
|
149
|
+
*
|
|
150
|
+
* @remarks
|
|
151
|
+
* This property sets the height of each line. If set to `undefined`, the
|
|
152
|
+
* line height will be calculated based on the font and font size to be the
|
|
153
|
+
* minimal height required to completely contain a line of text.
|
|
154
|
+
*
|
|
155
|
+
* See: https://github.com/lightning-js/renderer/issues/170
|
|
156
|
+
*
|
|
157
|
+
* @default `undefined`
|
|
158
|
+
*/
|
|
159
|
+
lineHeight: number;
|
|
160
|
+
/**
|
|
161
|
+
* Max lines for text
|
|
162
|
+
*
|
|
163
|
+
* @remarks
|
|
164
|
+
* This property sets max number of lines of a text paragraph.
|
|
165
|
+
* Not yet implemented in the SDF renderer.
|
|
166
|
+
*
|
|
167
|
+
* @default 0
|
|
168
|
+
*/
|
|
169
|
+
maxLines: number;
|
|
170
|
+
/**
|
|
171
|
+
* Baseline for text
|
|
172
|
+
*
|
|
173
|
+
* @remarks
|
|
174
|
+
* This property sets the text baseline used when drawing text.
|
|
175
|
+
* Not yet implemented in the SDF renderer.
|
|
176
|
+
*
|
|
177
|
+
* @default alphabetic
|
|
178
|
+
*/
|
|
179
|
+
textBaseline: TextBaseline;
|
|
180
|
+
/**
|
|
181
|
+
* Vertical Align for text when lineHeight > fontSize
|
|
182
|
+
*
|
|
183
|
+
* @remarks
|
|
184
|
+
* This property sets the vertical align of the text.
|
|
185
|
+
* Not yet implemented in the SDF renderer.
|
|
186
|
+
*
|
|
187
|
+
* @default middle
|
|
188
|
+
*/
|
|
189
|
+
verticalAlign: TextVerticalAlign;
|
|
190
|
+
/**
|
|
191
|
+
* Overflow Suffix for text
|
|
192
|
+
*
|
|
193
|
+
* @remarks
|
|
194
|
+
* The suffix to be added when text is cropped due to overflow.
|
|
195
|
+
* Not yet implemented in the SDF renderer.
|
|
196
|
+
*
|
|
197
|
+
* @default "..."
|
|
198
|
+
*/
|
|
199
|
+
overflowSuffix: string;
|
|
200
|
+
/**
|
|
201
|
+
* Word Break for text
|
|
202
|
+
*
|
|
203
|
+
* @remarks
|
|
204
|
+
* This property sets how words should break when reaching the end of a line.
|
|
205
|
+
*
|
|
206
|
+
* - `'normal'`: Use the default line break rule.
|
|
207
|
+
* - `'break-all'`: To prevent overflow, word breaks should happen between any two characters.
|
|
208
|
+
* - `'break-word'`: To prevent overflow, word breaks should happen between words. If words are too long word breaks happen between any two characters.
|
|
209
|
+
*
|
|
210
|
+
* @default "normal"
|
|
211
|
+
*/
|
|
212
|
+
wordBreak: 'normal' | 'break-all' | 'break-word';
|
|
213
|
+
zIndex: number;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Glyph layout information for WebGL rendering
|
|
217
|
+
*/
|
|
218
|
+
export interface GlyphLayout {
|
|
219
|
+
/**
|
|
220
|
+
* Unicode codepoint
|
|
221
|
+
*/
|
|
222
|
+
codepoint: number;
|
|
223
|
+
/**
|
|
224
|
+
* Glyph ID in the font atlas
|
|
225
|
+
*/
|
|
226
|
+
glyphId: number;
|
|
227
|
+
/**
|
|
228
|
+
* X position relative to text origin
|
|
229
|
+
*/
|
|
230
|
+
x: number;
|
|
231
|
+
/**
|
|
232
|
+
* Y position relative to text origin
|
|
233
|
+
*/
|
|
234
|
+
y: number;
|
|
235
|
+
/**
|
|
236
|
+
* Width of glyph in font units
|
|
237
|
+
*/
|
|
238
|
+
width: number;
|
|
239
|
+
/**
|
|
240
|
+
* Height of glyph in font units
|
|
241
|
+
*/
|
|
242
|
+
height: number;
|
|
243
|
+
/**
|
|
244
|
+
* X offset for glyph positioning
|
|
245
|
+
*/
|
|
246
|
+
xOffset: number;
|
|
247
|
+
/**
|
|
248
|
+
* Y offset for glyph positioning
|
|
249
|
+
*/
|
|
250
|
+
yOffset: number;
|
|
251
|
+
/**
|
|
252
|
+
* Atlas texture coordinates (normalized 0-1)
|
|
253
|
+
*/
|
|
254
|
+
atlasX: number;
|
|
255
|
+
atlasY: number;
|
|
256
|
+
atlasWidth: number;
|
|
257
|
+
atlasHeight: number;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Complete text layout information for caching
|
|
261
|
+
*/
|
|
262
|
+
export interface TextLayout {
|
|
263
|
+
/**
|
|
264
|
+
* Individual glyph layouts
|
|
265
|
+
*/
|
|
266
|
+
glyphs: GlyphLayout[];
|
|
267
|
+
/**
|
|
268
|
+
* Total text width
|
|
269
|
+
*/
|
|
270
|
+
width: number;
|
|
271
|
+
/**
|
|
272
|
+
* Total text height
|
|
273
|
+
*/
|
|
274
|
+
height: number;
|
|
275
|
+
/**
|
|
276
|
+
* Font scale factor
|
|
277
|
+
*/
|
|
278
|
+
fontScale: number;
|
|
279
|
+
/**
|
|
280
|
+
* Line height
|
|
281
|
+
*/
|
|
282
|
+
lineHeight: number;
|
|
283
|
+
/**
|
|
284
|
+
* Font family used
|
|
285
|
+
*/
|
|
286
|
+
fontFamily: string;
|
|
287
|
+
/**
|
|
288
|
+
* distanceRange used
|
|
289
|
+
*/
|
|
290
|
+
distanceRange: number;
|
|
291
|
+
}
|
|
292
|
+
export interface FontLoadOptions {
|
|
293
|
+
fontFamily: string;
|
|
294
|
+
metrics?: FontMetrics;
|
|
295
|
+
fontUrl?: string;
|
|
296
|
+
atlasUrl?: string;
|
|
297
|
+
atlasDataUrl?: string;
|
|
298
|
+
}
|
|
299
|
+
export interface FontHandler {
|
|
300
|
+
init: (c: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D) => void;
|
|
301
|
+
type: 'canvas' | 'sdf';
|
|
302
|
+
isFontLoaded: (fontFamily: string) => boolean;
|
|
303
|
+
loadFont: (stage: Stage, options: FontLoadOptions) => Promise<void>;
|
|
304
|
+
getFontFamilies: () => FontFamilyMap;
|
|
305
|
+
canRenderFont: (trProps: TrProps) => boolean;
|
|
306
|
+
getFontMetrics: (fontFamily: string, fontSize: number) => NormalizedFontMetrics;
|
|
307
|
+
setFontMetrics: (fontFamily: string, metrics: NormalizedFontMetrics) => void;
|
|
308
|
+
}
|
|
309
|
+
export interface TextRenderProps {
|
|
310
|
+
fontFamily: string;
|
|
311
|
+
fontSize: number;
|
|
312
|
+
color: number;
|
|
313
|
+
offsetY: number;
|
|
314
|
+
worldAlpha: number;
|
|
315
|
+
globalTransform: Float32Array;
|
|
316
|
+
clippingRect: unknown;
|
|
317
|
+
width: number;
|
|
318
|
+
height: number;
|
|
319
|
+
parentHasRenderTexture: boolean;
|
|
320
|
+
framebufferDimensions: unknown;
|
|
321
|
+
stage: Stage;
|
|
322
|
+
}
|
|
323
|
+
export interface TextRenderInfo {
|
|
324
|
+
width: number;
|
|
325
|
+
height: number;
|
|
326
|
+
imageData?: ImageData | null;
|
|
327
|
+
layout?: TextLayout;
|
|
328
|
+
}
|
|
329
|
+
export interface TextRenderer {
|
|
330
|
+
type: 'canvas' | 'sdf';
|
|
331
|
+
font: FontHandler;
|
|
332
|
+
renderText: (stage: Stage, props: CoreTextNodeProps) => TextRenderInfo;
|
|
333
|
+
addQuads: (layout?: TextLayout) => Float32Array | null;
|
|
334
|
+
renderQuads: (renderer: CoreRenderer, layout: TextLayout, vertexBuffer: Float32Array, renderProps: TextRenderProps) => void;
|
|
335
|
+
init: (stage: Stage) => void;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Text line struct for text mapping
|
|
339
|
+
* 0 - text
|
|
340
|
+
* 1 - width
|
|
341
|
+
*/
|
|
342
|
+
export type TextLineStruct = [string, number];
|
|
343
|
+
/**
|
|
344
|
+
* Wrapped lines struct for text mapping
|
|
345
|
+
* 0 - line structs
|
|
346
|
+
* 1 - remaining lines
|
|
347
|
+
* 2 - remaining text
|
|
348
|
+
*/
|
|
349
|
+
export type WrappedLinesStruct = [TextLineStruct[], number, boolean];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextRenderer.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/TextRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { NormalizedFontMetrics } from './TextRenderer.js';
|
|
2
|
+
/**
|
|
3
|
+
* Returns CSS font setting string for use in canvas context.
|
|
4
|
+
*
|
|
5
|
+
* @param fontFace
|
|
6
|
+
* @param fontStyle
|
|
7
|
+
* @param fontSize
|
|
8
|
+
* @param precision
|
|
9
|
+
* @param defaultFontFace
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export declare function getFontSetting(fontFace: string | string[], fontStyle: string, fontSize: number, precision: number, defaultFontFace: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Returns true if the given character is a zero-width space.
|
|
15
|
+
*
|
|
16
|
+
* @param space
|
|
17
|
+
*/
|
|
18
|
+
export declare function isZeroWidthSpace(space: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Returns true if the given character is a zero-width space or a regular space.
|
|
21
|
+
*
|
|
22
|
+
* @param space
|
|
23
|
+
*/
|
|
24
|
+
export declare function isSpace(space: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Converts a string into an array of tokens and the words between them.
|
|
27
|
+
*
|
|
28
|
+
* @param tokenRegex
|
|
29
|
+
* @param text
|
|
30
|
+
*/
|
|
31
|
+
export declare function tokenizeString(tokenRegex: RegExp, text: string): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Measure the width of a string accounting for letter spacing.
|
|
34
|
+
*
|
|
35
|
+
* @param context
|
|
36
|
+
* @param word
|
|
37
|
+
* @param space
|
|
38
|
+
*/
|
|
39
|
+
export declare function measureText(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, word: string, space?: number): number;
|
|
40
|
+
/**
|
|
41
|
+
* Get the font metrics for a font face.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* This function will attempt to grab the explicitly defined metrics from the
|
|
45
|
+
* font face first. If the font face does not have metrics defined, it will
|
|
46
|
+
* attempt to calculate the metrics using the browser's measureText method.
|
|
47
|
+
*
|
|
48
|
+
* If the browser does not support the font metrics API, it will use some
|
|
49
|
+
* default values.
|
|
50
|
+
*
|
|
51
|
+
* @param context
|
|
52
|
+
* @param fontFace
|
|
53
|
+
* @param fontSize
|
|
54
|
+
* @returns
|
|
55
|
+
*/
|
|
56
|
+
export declare function calculateFontMetrics(context: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, fontFamily: string, fontSize: number): NormalizedFontMetrics;
|
|
57
|
+
export interface WrapTextResult {
|
|
58
|
+
l: string[];
|
|
59
|
+
n: number[];
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Applies newlines to a string to have it optimally fit into the horizontal
|
|
63
|
+
* bounds set by the Text object's wordWrapWidth property.
|
|
64
|
+
*
|
|
65
|
+
* @param context
|
|
66
|
+
* @param text
|
|
67
|
+
* @param wordWrapWidth
|
|
68
|
+
* @param letterSpacing
|
|
69
|
+
* @param indent
|
|
70
|
+
*/
|
|
71
|
+
export declare function wrapText(context: CanvasRenderingContext2D, text: string, wordWrapWidth: number, letterSpacing: number, indent: number): WrapTextResult;
|
|
@@ -0,0 +1,212 @@
|
|
|
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 2025 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
|
+
* Returns CSS font setting string for use in canvas context.
|
|
21
|
+
*
|
|
22
|
+
* @param fontFace
|
|
23
|
+
* @param fontStyle
|
|
24
|
+
* @param fontSize
|
|
25
|
+
* @param precision
|
|
26
|
+
* @param defaultFontFace
|
|
27
|
+
* @returns
|
|
28
|
+
*/
|
|
29
|
+
export function getFontSetting(fontFace, fontStyle, fontSize, precision, defaultFontFace) {
|
|
30
|
+
let ff = fontFace;
|
|
31
|
+
if (!Array.isArray(ff)) {
|
|
32
|
+
ff = [ff];
|
|
33
|
+
}
|
|
34
|
+
const ffs = [];
|
|
35
|
+
for (let i = 0, n = ff.length; i < n; i++) {
|
|
36
|
+
let curFf = ff[i];
|
|
37
|
+
// Replace the default font face `null` with the actual default font face set
|
|
38
|
+
// on the stage.
|
|
39
|
+
if (curFf === null || curFf === undefined) {
|
|
40
|
+
curFf = defaultFontFace;
|
|
41
|
+
}
|
|
42
|
+
if (curFf === 'serif' || curFf === 'sans-serif') {
|
|
43
|
+
ffs.push(curFf);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
ffs.push(`"${curFf}"`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return `${fontStyle} ${fontSize * precision}px ${ffs.join(',')}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns true if the given character is a zero-width space.
|
|
53
|
+
*
|
|
54
|
+
* @param space
|
|
55
|
+
*/
|
|
56
|
+
export function isZeroWidthSpace(space) {
|
|
57
|
+
return space === '' || space === '\u200B';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Returns true if the given character is a zero-width space or a regular space.
|
|
61
|
+
*
|
|
62
|
+
* @param space
|
|
63
|
+
*/
|
|
64
|
+
export function isSpace(space) {
|
|
65
|
+
return isZeroWidthSpace(space) || space === ' ';
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Converts a string into an array of tokens and the words between them.
|
|
69
|
+
*
|
|
70
|
+
* @param tokenRegex
|
|
71
|
+
* @param text
|
|
72
|
+
*/
|
|
73
|
+
export function tokenizeString(tokenRegex, text) {
|
|
74
|
+
const delimeters = text.match(tokenRegex) || [];
|
|
75
|
+
const words = text.split(tokenRegex) || [];
|
|
76
|
+
const final = [];
|
|
77
|
+
for (let i = 0; i < words.length; i++) {
|
|
78
|
+
final.push(words[i], delimeters[i]);
|
|
79
|
+
}
|
|
80
|
+
final.pop();
|
|
81
|
+
return final.filter((word) => word != '');
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Measure the width of a string accounting for letter spacing.
|
|
85
|
+
*
|
|
86
|
+
* @param context
|
|
87
|
+
* @param word
|
|
88
|
+
* @param space
|
|
89
|
+
*/
|
|
90
|
+
export function measureText(context, word, space = 0) {
|
|
91
|
+
if (!space) {
|
|
92
|
+
return context.measureText(word).width;
|
|
93
|
+
}
|
|
94
|
+
return word.split('').reduce((acc, char) => {
|
|
95
|
+
// Zero-width spaces should not include letter spacing.
|
|
96
|
+
// And since we know the width of a zero-width space is 0, we can skip
|
|
97
|
+
// measuring it.
|
|
98
|
+
if (isZeroWidthSpace(char)) {
|
|
99
|
+
return acc;
|
|
100
|
+
}
|
|
101
|
+
return acc + context.measureText(char).width + space;
|
|
102
|
+
}, 0);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get the font metrics for a font face.
|
|
106
|
+
*
|
|
107
|
+
* @remarks
|
|
108
|
+
* This function will attempt to grab the explicitly defined metrics from the
|
|
109
|
+
* font face first. If the font face does not have metrics defined, it will
|
|
110
|
+
* attempt to calculate the metrics using the browser's measureText method.
|
|
111
|
+
*
|
|
112
|
+
* If the browser does not support the font metrics API, it will use some
|
|
113
|
+
* default values.
|
|
114
|
+
*
|
|
115
|
+
* @param context
|
|
116
|
+
* @param fontFace
|
|
117
|
+
* @param fontSize
|
|
118
|
+
* @returns
|
|
119
|
+
*/
|
|
120
|
+
export function calculateFontMetrics(context, fontFamily, fontSize) {
|
|
121
|
+
// If the font face doesn't have metrics defined, we fallback to using the
|
|
122
|
+
// browser's measureText method to calculate take a best guess at the font
|
|
123
|
+
// actual font's metrics.
|
|
124
|
+
// - fontBoundingBox[Ascent|Descent] is the best estimate but only supported
|
|
125
|
+
// in Chrome 87+ (2020), Firefox 116+ (2023), and Safari 11.1+ (2018).
|
|
126
|
+
// - It is an estimate as it can vary between browsers.
|
|
127
|
+
// - actualBoundingBox[Ascent|Descent] is less accurate and supported in
|
|
128
|
+
// Chrome 77+ (2019), Firefox 74+ (2020), and Safari 11.1+ (2018).
|
|
129
|
+
// - If neither are supported, we'll use some default values which will
|
|
130
|
+
// get text on the screen but likely not be great.
|
|
131
|
+
// NOTE: It's been decided not to rely on fontBoundingBox[Ascent|Descent]
|
|
132
|
+
// as it's browser support is limited and it also tends to produce higher than
|
|
133
|
+
// expected values. It is instead HIGHLY RECOMMENDED that developers provide
|
|
134
|
+
// explicit metrics in the font face definition.
|
|
135
|
+
const browserMetrics = context.measureText('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
|
|
136
|
+
console.warn(`Font metrics not provided for Canvas Web font ${fontFamily}. ` +
|
|
137
|
+
'Using fallback values. It is HIGHLY recommended you use the latest ' +
|
|
138
|
+
'version of the Lightning 3 `msdf-generator` tool to extract the default ' +
|
|
139
|
+
'metrics for the font and provide them in the Canvas Web font definition.');
|
|
140
|
+
let metrics;
|
|
141
|
+
if (browserMetrics.actualBoundingBoxDescent &&
|
|
142
|
+
browserMetrics.actualBoundingBoxAscent) {
|
|
143
|
+
metrics = {
|
|
144
|
+
ascender: browserMetrics.actualBoundingBoxAscent / fontSize,
|
|
145
|
+
descender: -browserMetrics.actualBoundingBoxDescent / fontSize,
|
|
146
|
+
lineGap: 0.2,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// If the browser doesn't support the font metrics API, we'll use some
|
|
151
|
+
// default values.
|
|
152
|
+
metrics = {
|
|
153
|
+
ascender: 0.8,
|
|
154
|
+
descender: -0.2,
|
|
155
|
+
lineGap: 0.2,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
return metrics;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Applies newlines to a string to have it optimally fit into the horizontal
|
|
162
|
+
* bounds set by the Text object's wordWrapWidth property.
|
|
163
|
+
*
|
|
164
|
+
* @param context
|
|
165
|
+
* @param text
|
|
166
|
+
* @param wordWrapWidth
|
|
167
|
+
* @param letterSpacing
|
|
168
|
+
* @param indent
|
|
169
|
+
*/
|
|
170
|
+
export function wrapText(context, text, wordWrapWidth, letterSpacing, indent) {
|
|
171
|
+
// Greedy wrapping algorithm that will wrap words as the line grows longer.
|
|
172
|
+
// than its horizontal bounds.
|
|
173
|
+
const spaceRegex = / |\u200B/g;
|
|
174
|
+
const lines = text.split(/\r?\n/g);
|
|
175
|
+
let allLines = [];
|
|
176
|
+
const realNewlines = [];
|
|
177
|
+
for (let i = 0; i < lines.length; i++) {
|
|
178
|
+
const resultLines = [];
|
|
179
|
+
let result = '';
|
|
180
|
+
let spaceLeft = wordWrapWidth - indent;
|
|
181
|
+
const words = lines[i].split(spaceRegex);
|
|
182
|
+
const spaces = lines[i].match(spaceRegex) || [];
|
|
183
|
+
for (let j = 0; j < words.length; j++) {
|
|
184
|
+
const space = spaces[j - 1] || '';
|
|
185
|
+
const word = words[j];
|
|
186
|
+
const wordWidth = measureText(context, word, letterSpacing);
|
|
187
|
+
const wordWidthWithSpace = wordWidth + measureText(context, space, letterSpacing);
|
|
188
|
+
if (j === 0 || wordWidthWithSpace > spaceLeft) {
|
|
189
|
+
// Skip printing the newline if it's the first word of the line that is.
|
|
190
|
+
// greater than the word wrap width.
|
|
191
|
+
if (j > 0) {
|
|
192
|
+
resultLines.push(result);
|
|
193
|
+
result = '';
|
|
194
|
+
}
|
|
195
|
+
result += word;
|
|
196
|
+
spaceLeft = wordWrapWidth - wordWidth - (j === 0 ? indent : 0);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
spaceLeft -= wordWidthWithSpace;
|
|
200
|
+
result += space + word;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
resultLines.push(result);
|
|
204
|
+
result = '';
|
|
205
|
+
allLines = allLines.concat(resultLines);
|
|
206
|
+
if (i < lines.length - 1) {
|
|
207
|
+
realNewlines.push(allLines.length);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return { l: allLines, n: realNewlines };
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=Utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Utils.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/Utils.ts"],"names":[],"mappings":"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"}
|