@lightningjs/renderer 2.19.1 → 2.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/dist/src/core/lib/WebGlContextWrapper.d.ts +14 -0
  2. package/dist/src/core/lib/WebGlContextWrapper.js +35 -0
  3. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  4. package/dist/src/core/lib/textureCompression.d.ts +14 -2
  5. package/dist/src/core/lib/textureCompression.js +301 -65
  6. package/dist/src/core/lib/textureCompression.js.map +1 -1
  7. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +4 -0
  8. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +14 -11
  9. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  10. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  11. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +43 -8
  12. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  13. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -7
  14. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +18 -49
  15. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  16. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +0 -2
  17. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  18. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
  19. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  20. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -11
  21. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  22. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +5 -10
  23. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  24. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +5 -10
  25. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  26. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -12
  27. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  28. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  29. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  30. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  31. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  32. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  33. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  34. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +1 -1
  35. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +1 -1
  36. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  37. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  38. package/dist/src/core/textures/Texture.d.ts +12 -5
  39. package/dist/src/core/textures/Texture.js.map +1 -1
  40. package/dist/src/main-api/Inspector.js +9 -5
  41. package/dist/src/main-api/Inspector.js.map +1 -1
  42. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  43. package/package.json +1 -1
  44. package/src/core/lib/WebGlContextWrapper.ts +49 -0
  45. package/src/core/lib/textureCompression.ts +416 -75
  46. package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +16 -14
  47. package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +1 -1
  48. package/src/core/renderers/webgl/WebGlCoreRenderer.ts +44 -11
  49. package/src/core/renderers/webgl/WebGlCoreShader.ts +27 -75
  50. package/src/core/renderers/webgl/internal/ShaderUtils.ts +0 -2
  51. package/src/core/renderers/webgl/shaders/DefaultShader.ts +3 -6
  52. package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +0 -11
  53. package/src/core/renderers/webgl/shaders/DynamicShader.ts +5 -10
  54. package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +5 -10
  55. package/src/core/renderers/webgl/shaders/SdfShader.ts +0 -12
  56. package/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.ts +1 -1
  57. package/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.ts +1 -1
  58. package/src/core/renderers/webgl/shaders/effects/BorderRightEffect.ts +1 -1
  59. package/src/core/renderers/webgl/shaders/effects/BorderTopEffect.ts +1 -1
  60. package/src/core/renderers/webgl/shaders/effects/FadeOutEffect.ts +5 -5
  61. package/src/core/renderers/webgl/shaders/effects/HolePunchEffect.ts +1 -1
  62. package/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.ts +1 -1
  63. package/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.ts +1 -1
  64. package/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.ts +1 -1
  65. package/src/core/renderers/webgl/shaders/effects/RadiusEffect.ts +5 -5
  66. package/src/core/textures/Texture.ts +13 -6
  67. package/src/main-api/Inspector.ts +9 -5
  68. package/dist/exports/canvas-shaders.d.ts +0 -10
  69. package/dist/exports/canvas-shaders.js +0 -27
  70. package/dist/exports/canvas-shaders.js.map +0 -1
  71. package/dist/exports/webgl-shaders.d.ts +0 -11
  72. package/dist/exports/webgl-shaders.js +0 -28
  73. package/dist/exports/webgl-shaders.js.map +0 -1
  74. package/dist/src/core/lib/colorCache.d.ts +0 -1
  75. package/dist/src/core/lib/colorCache.js +0 -19
  76. package/dist/src/core/lib/colorCache.js.map +0 -1
  77. package/dist/src/core/lib/colorParser.d.ts +0 -21
  78. package/dist/src/core/lib/colorParser.js +0 -72
  79. package/dist/src/core/lib/colorParser.js.map +0 -1
  80. package/dist/src/core/platforms/Platform.d.ts +0 -37
  81. package/dist/src/core/platforms/Platform.js +0 -22
  82. package/dist/src/core/platforms/Platform.js.map +0 -1
  83. package/dist/src/core/platforms/web/WebPlatform.d.ts +0 -9
  84. package/dist/src/core/platforms/web/WebPlatform.js +0 -84
  85. package/dist/src/core/platforms/web/WebPlatform.js.map +0 -1
  86. package/dist/src/core/renderers/CoreShaderNode.d.ts +0 -59
  87. package/dist/src/core/renderers/CoreShaderNode.js +0 -113
  88. package/dist/src/core/renderers/CoreShaderNode.js.map +0 -1
  89. package/dist/src/core/renderers/CoreShaderProgram.d.ts +0 -4
  90. package/dist/src/core/renderers/CoreShaderProgram.js +0 -20
  91. package/dist/src/core/renderers/CoreShaderProgram.js.map +0 -1
  92. package/dist/src/core/renderers/canvas/CanvasRenderer.d.ts +0 -35
  93. package/dist/src/core/renderers/canvas/CanvasRenderer.js +0 -201
  94. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +0 -1
  95. package/dist/src/core/renderers/canvas/CanvasShaderNode.d.ts +0 -21
  96. package/dist/src/core/renderers/canvas/CanvasShaderNode.js +0 -58
  97. package/dist/src/core/renderers/canvas/CanvasShaderNode.js.map +0 -1
  98. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +0 -16
  99. package/dist/src/core/renderers/canvas/CanvasTexture.js +0 -125
  100. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +0 -1
  101. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.d.ts +0 -12
  102. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js +0 -57
  103. package/dist/src/core/renderers/webgl/WebGlCtxRenderTexture.js.map +0 -1
  104. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.d.ts +0 -22
  105. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js +0 -67
  106. package/dist/src/core/renderers/webgl/WebGlCtxSubTexture.js.map +0 -1
  107. package/dist/src/core/renderers/webgl/WebGlCtxTexture.d.ts +0 -56
  108. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js +0 -236
  109. package/dist/src/core/renderers/webgl/WebGlCtxTexture.js.map +0 -1
  110. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +0 -44
  111. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +0 -125
  112. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +0 -1
  113. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +0 -136
  114. package/dist/src/core/renderers/webgl/WebGlRenderer.js +0 -573
  115. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +0 -1
  116. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +0 -222
  117. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +0 -331
  118. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +0 -1
  119. package/dist/src/core/renderers/webgl/WebGlShaderProgram.d.ts +0 -37
  120. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +0 -218
  121. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +0 -1
  122. package/dist/src/core/shaders/canvas/Border.d.ts +0 -9
  123. package/dist/src/core/shaders/canvas/Border.js +0 -57
  124. package/dist/src/core/shaders/canvas/Border.js.map +0 -1
  125. package/dist/src/core/shaders/canvas/HolePunch.d.ts +0 -7
  126. package/dist/src/core/shaders/canvas/HolePunch.js +0 -38
  127. package/dist/src/core/shaders/canvas/HolePunch.js.map +0 -1
  128. package/dist/src/core/shaders/canvas/LinearGradient.d.ts +0 -10
  129. package/dist/src/core/shaders/canvas/LinearGradient.js +0 -48
  130. package/dist/src/core/shaders/canvas/LinearGradient.js.map +0 -1
  131. package/dist/src/core/shaders/canvas/RadialGradient.d.ts +0 -11
  132. package/dist/src/core/shaders/canvas/RadialGradient.js +0 -70
  133. package/dist/src/core/shaders/canvas/RadialGradient.js.map +0 -1
  134. package/dist/src/core/shaders/canvas/Rounded.d.ts +0 -7
  135. package/dist/src/core/shaders/canvas/Rounded.js +0 -33
  136. package/dist/src/core/shaders/canvas/Rounded.js.map +0 -1
  137. package/dist/src/core/shaders/canvas/RoundedWithBorder.d.ts +0 -7
  138. package/dist/src/core/shaders/canvas/RoundedWithBorder.js +0 -43
  139. package/dist/src/core/shaders/canvas/RoundedWithBorder.js.map +0 -1
  140. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.d.ts +0 -8
  141. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js +0 -41
  142. package/dist/src/core/shaders/canvas/RoundedWithBorderAndShadow.js.map +0 -1
  143. package/dist/src/core/shaders/canvas/RoundedWithShadow.d.ts +0 -7
  144. package/dist/src/core/shaders/canvas/RoundedWithShadow.js +0 -40
  145. package/dist/src/core/shaders/canvas/RoundedWithShadow.js.map +0 -1
  146. package/dist/src/core/shaders/canvas/Shadow.d.ts +0 -8
  147. package/dist/src/core/shaders/canvas/Shadow.js +0 -31
  148. package/dist/src/core/shaders/canvas/Shadow.js.map +0 -1
  149. package/dist/src/core/shaders/canvas/utils/render.d.ts +0 -5
  150. package/dist/src/core/shaders/canvas/utils/render.js +0 -84
  151. package/dist/src/core/shaders/canvas/utils/render.js.map +0 -1
  152. package/dist/src/core/shaders/templates/BorderTemplate.d.ts +0 -37
  153. package/dist/src/core/shaders/templates/BorderTemplate.js +0 -73
  154. package/dist/src/core/shaders/templates/BorderTemplate.js.map +0 -1
  155. package/dist/src/core/shaders/templates/HolePunchTemplate.d.ts +0 -46
  156. package/dist/src/core/shaders/templates/HolePunchTemplate.js +0 -35
  157. package/dist/src/core/shaders/templates/HolePunchTemplate.js.map +0 -1
  158. package/dist/src/core/shaders/templates/LinearGradientTemplate.d.ts +0 -23
  159. package/dist/src/core/shaders/templates/LinearGradientTemplate.js +0 -47
  160. package/dist/src/core/shaders/templates/LinearGradientTemplate.js.map +0 -1
  161. package/dist/src/core/shaders/templates/RadialGradientTemplate.d.ts +0 -31
  162. package/dist/src/core/shaders/templates/RadialGradientTemplate.js +0 -49
  163. package/dist/src/core/shaders/templates/RadialGradientTemplate.js.map +0 -1
  164. package/dist/src/core/shaders/templates/RoundedTemplate.d.ts +0 -29
  165. package/dist/src/core/shaders/templates/RoundedTemplate.js +0 -67
  166. package/dist/src/core/shaders/templates/RoundedTemplate.js.map +0 -1
  167. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.d.ts +0 -7
  168. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js +0 -24
  169. package/dist/src/core/shaders/templates/RoundedWithBorderAndShadowTemplate.js.map +0 -1
  170. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.d.ts +0 -6
  171. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js +0 -23
  172. package/dist/src/core/shaders/templates/RoundedWithBorderTemplate.js.map +0 -1
  173. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.d.ts +0 -6
  174. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js +0 -23
  175. package/dist/src/core/shaders/templates/RoundedWithShadowTemplate.js.map +0 -1
  176. package/dist/src/core/shaders/templates/ShadowTemplate.d.ts +0 -34
  177. package/dist/src/core/shaders/templates/ShadowTemplate.js +0 -66
  178. package/dist/src/core/shaders/templates/ShadowTemplate.js.map +0 -1
  179. package/dist/src/core/shaders/utils.d.ts +0 -5
  180. package/dist/src/core/shaders/utils.js +0 -41
  181. package/dist/src/core/shaders/utils.js.map +0 -1
  182. package/dist/src/core/shaders/webgl/Border.d.ts +0 -3
  183. package/dist/src/core/shaders/webgl/Border.js +0 -110
  184. package/dist/src/core/shaders/webgl/Border.js.map +0 -1
  185. package/dist/src/core/shaders/webgl/Default.d.ts +0 -2
  186. package/dist/src/core/shaders/webgl/Default.js +0 -86
  187. package/dist/src/core/shaders/webgl/Default.js.map +0 -1
  188. package/dist/src/core/shaders/webgl/DefaultBatched.d.ts +0 -2
  189. package/dist/src/core/shaders/webgl/DefaultBatched.js +0 -104
  190. package/dist/src/core/shaders/webgl/DefaultBatched.js.map +0 -1
  191. package/dist/src/core/shaders/webgl/HolePunch.d.ts +0 -3
  192. package/dist/src/core/shaders/webgl/HolePunch.js +0 -65
  193. package/dist/src/core/shaders/webgl/HolePunch.js.map +0 -1
  194. package/dist/src/core/shaders/webgl/LinearGradient.d.ts +0 -3
  195. package/dist/src/core/shaders/webgl/LinearGradient.js +0 -99
  196. package/dist/src/core/shaders/webgl/LinearGradient.js.map +0 -1
  197. package/dist/src/core/shaders/webgl/RadialGradient.d.ts +0 -3
  198. package/dist/src/core/shaders/webgl/RadialGradient.js +0 -96
  199. package/dist/src/core/shaders/webgl/RadialGradient.js.map +0 -1
  200. package/dist/src/core/shaders/webgl/Rounded.d.ts +0 -7
  201. package/dist/src/core/shaders/webgl/Rounded.js +0 -86
  202. package/dist/src/core/shaders/webgl/Rounded.js.map +0 -1
  203. package/dist/src/core/shaders/webgl/RoundedWithBorder.d.ts +0 -3
  204. package/dist/src/core/shaders/webgl/RoundedWithBorder.js +0 -140
  205. package/dist/src/core/shaders/webgl/RoundedWithBorder.js.map +0 -1
  206. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.d.ts +0 -3
  207. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js +0 -162
  208. package/dist/src/core/shaders/webgl/RoundedWithBorderAndShadow.js.map +0 -1
  209. package/dist/src/core/shaders/webgl/RoundedWithShadow.d.ts +0 -3
  210. package/dist/src/core/shaders/webgl/RoundedWithShadow.js +0 -84
  211. package/dist/src/core/shaders/webgl/RoundedWithShadow.js.map +0 -1
  212. package/dist/src/core/shaders/webgl/SdfShader.d.ts +0 -30
  213. package/dist/src/core/shaders/webgl/SdfShader.js +0 -107
  214. package/dist/src/core/shaders/webgl/SdfShader.js.map +0 -1
  215. package/dist/src/core/shaders/webgl/Shadow.d.ts +0 -3
  216. package/dist/src/core/shaders/webgl/Shadow.js +0 -110
  217. package/dist/src/core/shaders/webgl/Shadow.js.map +0 -1
  218. package/dist/src/core/text-rendering/CanvasFont.d.ts +0 -14
  219. package/dist/src/core/text-rendering/CanvasFont.js +0 -111
  220. package/dist/src/core/text-rendering/CanvasFont.js.map +0 -1
  221. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +0 -59
  222. package/dist/src/core/text-rendering/CanvasFontHandler.js +0 -221
  223. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +0 -1
  224. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +0 -19
  225. package/dist/src/core/text-rendering/CanvasTextRenderer.js +0 -165
  226. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +0 -1
  227. package/dist/src/core/text-rendering/CoreFont.d.ts +0 -33
  228. package/dist/src/core/text-rendering/CoreFont.js +0 -48
  229. package/dist/src/core/text-rendering/CoreFont.js.map +0 -1
  230. package/dist/src/core/text-rendering/FontManager.d.ts +0 -11
  231. package/dist/src/core/text-rendering/FontManager.js +0 -42
  232. package/dist/src/core/text-rendering/FontManager.js.map +0 -1
  233. package/dist/src/core/text-rendering/SdfFont.d.ts +0 -29
  234. package/dist/src/core/text-rendering/SdfFont.js +0 -142
  235. package/dist/src/core/text-rendering/SdfFont.js.map +0 -1
  236. package/dist/src/core/text-rendering/SdfFontHandler.d.ts +0 -85
  237. package/dist/src/core/text-rendering/SdfFontHandler.js +0 -58
  238. package/dist/src/core/text-rendering/SdfFontHandler.js.map +0 -1
  239. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +0 -18
  240. package/dist/src/core/text-rendering/SdfTextRenderer.js +0 -315
  241. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +0 -1
  242. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +0 -20
  243. package/dist/src/core/text-rendering/TextLayoutEngine.js +0 -324
  244. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +0 -1
  245. package/dist/src/core/text-rendering/TextRenderer.d.ts +0 -369
  246. package/dist/src/core/text-rendering/TextRenderer.js +0 -20
  247. package/dist/src/core/text-rendering/TextRenderer.js.map +0 -1
  248. package/dist/src/core/text-rendering/Utils.d.ts +0 -30
  249. package/dist/src/core/text-rendering/Utils.js +0 -84
  250. package/dist/src/core/text-rendering/Utils.js.map +0 -1
@@ -1,142 +0,0 @@
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
- import { CoreFont, FontState } from './CoreFont.js';
20
- import { buildGlyphMap, buildKerningTable, } from './SdfFontHandler.js';
21
- import { normalizeFontMetrics } from './TextLayoutEngine.js';
22
- import { hasZeroWidthSpace } from './Utils.js';
23
- export class SdfFont extends CoreFont {
24
- stage;
25
- type = 'sdf';
26
- atlasUrl;
27
- atlasDataUrl;
28
- atlasTexture;
29
- glyphMap;
30
- kerningTable;
31
- data;
32
- constructor(textRenderer, props, stage) {
33
- super(textRenderer, props);
34
- this.stage = stage;
35
- this.atlasUrl = props.atlasUrl;
36
- this.atlasDataUrl = props.atlasDataUrl;
37
- }
38
- load() {
39
- new Promise(async () => {
40
- const atlasData = await fetch(this.atlasDataUrl);
41
- if (atlasData.ok === false) {
42
- this.hardFail(`Failed to load font data: ${atlasData.statusText}`);
43
- }
44
- const fontData = (await atlasData.json());
45
- if (fontData.chars === undefined) {
46
- this.hardFail('Invalid SDF font data format');
47
- }
48
- const atlasTexture = this.stage.txManager.createTexture('ImageTexture', {
49
- src: this.atlasUrl,
50
- premultiplyAlpha: false,
51
- });
52
- atlasTexture.setRenderableOwner(this.family, true);
53
- atlasTexture.preventCleanup = true;
54
- atlasTexture.on('loaded', () => {
55
- this.onLoaded();
56
- });
57
- atlasTexture.on('failed', (error) => {
58
- console.error(`Failed to load SDF font: ${this.family}`, error);
59
- this.emit('failed');
60
- });
61
- this.atlasTexture = atlasTexture;
62
- this.processFontData(fontData);
63
- });
64
- }
65
- hardFail(message) {
66
- this.state = FontState.Failed;
67
- throw new Error(message);
68
- }
69
- processFontData(fontData) {
70
- this.glyphMap = buildGlyphMap(fontData.chars);
71
- this.kerningTable = buildKerningTable(fontData.kernings);
72
- this.metrics = this.metrics ||
73
- fontData.lightningMetrics || {
74
- ascender: 800,
75
- descender: -200,
76
- lineGap: 200,
77
- unitsPerEm: 1000,
78
- };
79
- this.data = fontData;
80
- }
81
- measureText(text, letterSpacing) {
82
- if (text.length === 1) {
83
- const char = text.charAt(0);
84
- const codepoint = text.codePointAt(0);
85
- if (codepoint === undefined)
86
- return 0;
87
- if (hasZeroWidthSpace(char) === true)
88
- return 0;
89
- const glyph = this.getGlyph(codepoint);
90
- if (glyph === null)
91
- return 0;
92
- return glyph.xadvance + letterSpacing;
93
- }
94
- let width = 0;
95
- let prevCodepoint = 0;
96
- for (let i = 0; i < text.length; i++) {
97
- const char = text.charAt(i);
98
- const codepoint = text.codePointAt(i);
99
- if (codepoint === undefined)
100
- continue;
101
- // Skip zero-width spaces in width calculations
102
- if (hasZeroWidthSpace(char)) {
103
- continue;
104
- }
105
- const glyph = this.getGlyph(codepoint);
106
- if (glyph === null)
107
- continue;
108
- let advance = glyph.xadvance;
109
- // Add kerning if there's a previous character
110
- if (prevCodepoint !== 0) {
111
- const kerning = this.getKerning(prevCodepoint, codepoint);
112
- advance += kerning;
113
- }
114
- width += advance + letterSpacing;
115
- prevCodepoint = codepoint;
116
- }
117
- return width;
118
- }
119
- getMetrics(fontSize) {
120
- let m = this.normalizedMetrics[fontSize];
121
- if (m !== undefined) {
122
- return m;
123
- }
124
- m = this.normalizedMetrics[fontSize] = normalizeFontMetrics(this.metrics, fontSize);
125
- return m;
126
- }
127
- getGlyph(codepoint) {
128
- const gm = this.glyphMap;
129
- return gm[codepoint] || gm[63] || null;
130
- }
131
- getKerning(firstGlyph, secondGlyph) {
132
- const seconds = this.kerningTable[secondGlyph];
133
- return (seconds !== undefined && seconds[firstGlyph]) || 0;
134
- }
135
- getAtlas() {
136
- return this.atlasTexture;
137
- }
138
- getData() {
139
- return this.data;
140
- }
141
- }
142
- //# sourceMappingURL=SdfFont.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdfFont.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/SdfFont.ts"],"names":[],"mappings":"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"}
@@ -1,85 +0,0 @@
1
- import type { FontMetrics } from './TextRenderer.js';
2
- export interface SdfGlyph {
3
- id: number;
4
- char: string;
5
- x: number;
6
- y: number;
7
- width: number;
8
- height: number;
9
- xoffset: number;
10
- yoffset: number;
11
- xadvance: number;
12
- page: number;
13
- chnl: number;
14
- }
15
- export type SdfGlyphMap = Record<number, SdfGlyph>;
16
- export interface SdfKerning {
17
- first: number;
18
- second: number;
19
- amount: number;
20
- }
21
- /**
22
- * SDF Font Data structure matching msdf-bmfont-xml output
23
- */
24
- export interface SdfFontData {
25
- pages: string[];
26
- chars: SdfGlyph[];
27
- kernings: SdfKerning[];
28
- info: {
29
- face: string;
30
- size: number;
31
- bold: number;
32
- italic: number;
33
- charset: string[];
34
- unicode: number;
35
- stretchH: number;
36
- smooth: number;
37
- aa: number;
38
- padding: [number, number, number, number];
39
- spacing: [number, number];
40
- outline: number;
41
- };
42
- common: {
43
- lineHeight: number;
44
- base: number;
45
- scaleW: number;
46
- scaleH: number;
47
- pages: number;
48
- packed: number;
49
- alphaChnl: number;
50
- redChnl: number;
51
- greenChnl: number;
52
- blueChnl: number;
53
- };
54
- distanceField: {
55
- fieldType: 'sdf' | 'msdf';
56
- distanceRange: number;
57
- };
58
- lightningMetrics?: FontMetrics;
59
- }
60
- /**
61
- * @typedef {Object} SdfGlyph
62
- * @property {number} id - Glyph ID
63
- * @property {string} char - Character
64
- * @property {number} x - Atlas x position
65
- * @property {number} y - Atlas y position
66
- * @property {number} width - Glyph width
67
- * @property {number} height - Glyph height
68
- * @property {number} xoffset - X offset
69
- * @property {number} yoffset - Y offset
70
- * @property {number} xadvance - Character advance width
71
- * @property {number} page - Page number
72
- * @property {number} chnl - Channel
73
- */
74
- /**
75
- * @typedef {Object} KerningTable
76
- * Fast lookup table for kerning values
77
- */
78
- export type KerningTable = Record<number, Record<number, number | undefined> | undefined>;
79
- /**
80
- * Build kerning lookup table for fast access
81
- * @param {Array} kernings - Kerning data from font
82
- * @returns {KerningTable} Optimized kerning lookup table
83
- */
84
- export declare const buildKerningTable: (kernings: SdfKerning[]) => KerningTable;
85
- export declare const buildGlyphMap: (chars: SdfGlyph[]) => SdfGlyphMap;
@@ -1,58 +0,0 @@
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
- * Build kerning lookup table for fast access
21
- * @param {Array} kernings - Kerning data from font
22
- * @returns {KerningTable} Optimized kerning lookup table
23
- */
24
- export const buildKerningTable = (kernings) => {
25
- const kerningTable = {};
26
- let i = 0;
27
- const length = kernings.length;
28
- while (i < length) {
29
- const kerning = kernings[i];
30
- i++;
31
- if (kerning === undefined) {
32
- continue;
33
- }
34
- const second = kerning.second;
35
- let firsts = kerningTable[second];
36
- if (firsts === undefined) {
37
- firsts = {};
38
- kerningTable[second] = firsts;
39
- }
40
- firsts[kerning.first] = kerning.amount;
41
- }
42
- return kerningTable;
43
- };
44
- export const buildGlyphMap = (chars) => {
45
- const glyphMap = Object.create(null);
46
- let i = 0;
47
- const length = chars.length;
48
- while (i < length) {
49
- const glyph = chars[i];
50
- i++;
51
- if (glyph === undefined) {
52
- continue;
53
- }
54
- glyphMap[glyph.id] = glyph;
55
- }
56
- return glyphMap;
57
- };
58
- //# sourceMappingURL=SdfFontHandler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdfFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/SdfFontHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAyFH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAsB,EAAgB,EAAE;IACxE,MAAM,YAAY,GAAiB,EAAE,CAAC;IAEtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC,EAAE,CAAC;QACJ,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,GAAG,EAAE,CAAC;YACZ,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;QAChC,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IACzC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAiB,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAgB,CAAC;IAEpD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvB,CAAC,EAAE,CAAC;QACJ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
@@ -1,18 +0,0 @@
1
- import type { Stage } from '../Stage.js';
2
- import type { FontLoadOptions, TextRenderInfo, TextRenderProps } from './TextRenderer.js';
3
- import type { CoreTextNodeProps } from '../CoreTextNode.js';
4
- import type { CoreRenderer } from '../renderers/CoreRenderer.js';
5
- import type { TextLayout } from './TextRenderer.js';
6
- import { SdfFont } from './SdfFont.js';
7
- /**
8
- * SDF Text Renderer - implements TextRenderer interface
9
- */
10
- declare const SdfTextRenderer: {
11
- type: "sdf";
12
- createFont: (settings: FontLoadOptions) => SdfFont | undefined;
13
- renderText: (font: SdfFont, props: CoreTextNodeProps) => TextRenderInfo;
14
- addQuads: (layout?: TextLayout) => Float32Array | null;
15
- renderQuads: (renderer: CoreRenderer, font: SdfFont, layout: TextLayout, vertexBuffer: Float32Array, renderProps: TextRenderProps) => void;
16
- init: (s: Stage) => void;
17
- };
18
- export default SdfTextRenderer;
@@ -1,315 +0,0 @@
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
- import { hasZeroWidthSpace } from './Utils.js';
20
- import * as SdfFontHandler from './SdfFontHandler.js';
21
- import { WebGlRenderer } from '../renderers/webgl/WebGlRenderer.js';
22
- import { WebGlRenderOp } from '../renderers/webgl/WebGlRenderOp.js';
23
- import { Sdf } from '../shaders/webgl/SdfShader.js';
24
- import { BufferCollection } from '../renderers/webgl/internal/BufferCollection.js';
25
- import { mergeColorAlpha } from '../../utils.js';
26
- import { mapTextLayout } from './TextLayoutEngine.js';
27
- import { SdfFont } from './SdfFont.js';
28
- // Each glyph requires 6 vertices (2 triangles) with 4 floats each (x, y, u, v)
29
- const FLOATS_PER_VERTEX = 4;
30
- const VERTICES_PER_GLYPH = 6;
31
- // Type definition to match interface
32
- const type = 'sdf';
33
- let sdfShader = null;
34
- let stage = null;
35
- // Initialize the SDF text renderer
36
- const init = (s) => {
37
- stage = s;
38
- // Register SDF shader with the shader manager
39
- stage.shManager.registerShaderType('Sdf', Sdf);
40
- sdfShader = stage.shManager.createShader('Sdf');
41
- };
42
- /**
43
- * SDF text renderer using MSDF/SDF fonts with WebGL
44
- *
45
- * @param stage - Stage instance for font resolution
46
- * @param props - Text rendering properties
47
- * @returns Object containing ImageData and dimensions
48
- */
49
- const renderText = (font, props) => {
50
- // Early return if no text
51
- if (props.text.length === 0) {
52
- return {
53
- width: 0,
54
- height: 0,
55
- };
56
- }
57
- // Get font cache for this font family
58
- const fontData = font.getData();
59
- if (fontData === undefined) {
60
- // Font not loaded, return empty result
61
- return {
62
- width: 0,
63
- height: 0,
64
- };
65
- }
66
- // Calculate text layout and generate glyph data for caching
67
- const layout = generateTextLayout(props, font);
68
- // For SDF renderer, ImageData is null since we render via WebGL
69
- return {
70
- remainingLines: 0,
71
- hasRemainingText: false,
72
- width: layout.width,
73
- height: layout.height,
74
- layout, // Cache layout for addQuads
75
- };
76
- };
77
- /**
78
- * Add quads for rendering using cached layout data
79
- */
80
- const addQuads = (layout) => {
81
- if (layout === undefined) {
82
- return null; // No layout data available
83
- }
84
- const glyphs = layout.glyphs;
85
- const glyphsLength = glyphs.length;
86
- if (glyphsLength === 0) {
87
- return null;
88
- }
89
- const vertexBuffer = new Float32Array(glyphsLength * VERTICES_PER_GLYPH * FLOATS_PER_VERTEX);
90
- let bufferIndex = 0;
91
- let glyphIndex = 0;
92
- while (glyphIndex < glyphsLength) {
93
- const glyph = glyphs[glyphIndex];
94
- glyphIndex++;
95
- if (glyph === undefined) {
96
- continue;
97
- }
98
- const x1 = glyph.x;
99
- const y1 = glyph.y;
100
- const x2 = x1 + glyph.width;
101
- const y2 = y1 + glyph.height;
102
- const u1 = glyph.atlasX;
103
- const v1 = glyph.atlasY;
104
- const u2 = u1 + glyph.atlasWidth;
105
- const v2 = v1 + glyph.atlasHeight;
106
- // Triangle 1: Top-left, top-right, bottom-left
107
- // Vertex 1: Top-left
108
- vertexBuffer[bufferIndex++] = x1;
109
- vertexBuffer[bufferIndex++] = y1;
110
- vertexBuffer[bufferIndex++] = u1;
111
- vertexBuffer[bufferIndex++] = v1;
112
- // Vertex 2: Top-right
113
- vertexBuffer[bufferIndex++] = x2;
114
- vertexBuffer[bufferIndex++] = y1;
115
- vertexBuffer[bufferIndex++] = u2;
116
- vertexBuffer[bufferIndex++] = v1;
117
- // Vertex 3: Bottom-left
118
- vertexBuffer[bufferIndex++] = x1;
119
- vertexBuffer[bufferIndex++] = y2;
120
- vertexBuffer[bufferIndex++] = u1;
121
- vertexBuffer[bufferIndex++] = v2;
122
- // Triangle 2: Top-right, bottom-right, bottom-left
123
- // Vertex 4: Top-right (duplicate)
124
- vertexBuffer[bufferIndex++] = x2;
125
- vertexBuffer[bufferIndex++] = y1;
126
- vertexBuffer[bufferIndex++] = u2;
127
- vertexBuffer[bufferIndex++] = v1;
128
- // Vertex 5: Bottom-right
129
- vertexBuffer[bufferIndex++] = x2;
130
- vertexBuffer[bufferIndex++] = y2;
131
- vertexBuffer[bufferIndex++] = u2;
132
- vertexBuffer[bufferIndex++] = v2;
133
- // Vertex 6: Bottom-left (duplicate)
134
- vertexBuffer[bufferIndex++] = x1;
135
- vertexBuffer[bufferIndex++] = y2;
136
- vertexBuffer[bufferIndex++] = u1;
137
- vertexBuffer[bufferIndex++] = v2;
138
- }
139
- return vertexBuffer;
140
- };
141
- /**
142
- * Create and submit WebGL render operations for SDF text
143
- * This is called from CoreTextNode during rendering to add SDF text to the render pipeline
144
- */
145
- const renderQuads = (renderer, font, layout, vertexBuffer, renderProps) => {
146
- const fontFamily = renderProps.fontFamily;
147
- const color = renderProps.color;
148
- const worldAlpha = renderProps.worldAlpha;
149
- const globalTransform = renderProps.globalTransform;
150
- const atlasTexture = font.getAtlas();
151
- if (atlasTexture === null) {
152
- console.warn(`SDF atlas texture not found for font: ${fontFamily}`);
153
- return;
154
- }
155
- // We can safely assume this is a WebGL renderer else this wouldn't be called
156
- const glw = renderer.glw;
157
- const stride = 4 * Float32Array.BYTES_PER_ELEMENT;
158
- const webGlBuffer = glw.createBuffer();
159
- if (!webGlBuffer) {
160
- console.warn('Failed to create WebGL buffer for SDF text');
161
- return;
162
- }
163
- const webGlBuffers = new BufferCollection([
164
- {
165
- buffer: webGlBuffer,
166
- attributes: {
167
- a_position: {
168
- name: 'a_position',
169
- size: 2,
170
- type: glw.FLOAT,
171
- normalized: false,
172
- stride,
173
- offset: 0,
174
- },
175
- a_textureCoords: {
176
- name: 'a_textureCoords',
177
- size: 2,
178
- type: glw.FLOAT,
179
- normalized: false,
180
- stride,
181
- offset: 2 * Float32Array.BYTES_PER_ELEMENT,
182
- },
183
- },
184
- },
185
- ]);
186
- const buffer = webGlBuffers.getBuffer('a_position');
187
- if (buffer !== undefined) {
188
- glw.arrayBufferData(buffer, vertexBuffer, glw.STATIC_DRAW);
189
- }
190
- const renderOp = new WebGlRenderOp(renderer, {
191
- sdfShaderProps: {
192
- transform: globalTransform,
193
- color: mergeColorAlpha(color, worldAlpha),
194
- size: layout.fontScale, // Use proper font scaling in shader
195
- distanceRange: layout.distanceRange,
196
- },
197
- sdfBuffers: webGlBuffers,
198
- shader: sdfShader,
199
- alpha: worldAlpha,
200
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment
201
- clippingRect: renderProps.clippingRect,
202
- height: layout.height,
203
- width: layout.width,
204
- rtt: false,
205
- parentHasRenderTexture: renderProps.parentHasRenderTexture,
206
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment
207
- framebufferDimensions: renderProps.framebufferDimensions,
208
- }, 0);
209
- // Add atlas texture and set quad count
210
- renderOp.addTexture(atlasTexture.ctxTexture);
211
- renderOp.numQuads = layout.glyphs.length;
212
- renderer.addRenderOp(renderOp);
213
- };
214
- /**
215
- * Generate complete text layout with glyph positioning for caching
216
- */
217
- const generateTextLayout = (props, font) => {
218
- const fontSize = props.fontSize;
219
- const fontFamily = props.fontFamily;
220
- const lineHeight = props.lineHeight;
221
- const metrics = font.getMetrics(fontSize);
222
- const verticalAlign = props.verticalAlign;
223
- const fontData = font.getData();
224
- const commonFontData = fontData.common;
225
- const designFontSize = fontData.info.size;
226
- const atlasWidth = commonFontData.scaleW;
227
- const atlasHeight = commonFontData.scaleH;
228
- // Calculate the pixel scale from design units to pixels
229
- const fontScale = fontSize / designFontSize;
230
- const letterSpacing = props.letterSpacing / fontScale;
231
- const maxWidth = props.maxWidth / fontScale;
232
- const maxHeight = props.maxHeight;
233
- const [lines, remainingLines, hasRemainingText, bareLineHeight, lineHeightPx, effectiveWidth, effectiveHeight,] = mapTextLayout(font, metrics, props.text, props.textAlign, verticalAlign, fontFamily, lineHeight, props.overflowSuffix, props.wordBreak, letterSpacing, props.maxLines, maxWidth, maxHeight);
234
- const lineAmount = lines.length;
235
- const glyphs = [];
236
- let currentX = 0;
237
- let currentY = 0;
238
- for (let i = 0; i < lineAmount; i++) {
239
- const line = lines[i];
240
- const textLine = line[0];
241
- const textLineLength = textLine.length;
242
- let prevCodepoint = 0;
243
- currentX = line[2];
244
- //convert Y coord to vertex value
245
- currentY = line[3] / fontScale;
246
- for (let j = 0; j < textLineLength; j++) {
247
- const char = textLine.charAt(j);
248
- if (hasZeroWidthSpace(char) === true) {
249
- continue;
250
- }
251
- const codepoint = char.codePointAt(0);
252
- if (codepoint === undefined) {
253
- continue;
254
- }
255
- // Get glyph data from font handler
256
- const glyph = font.getGlyph(codepoint);
257
- if (glyph === null) {
258
- continue;
259
- }
260
- // Calculate advance with kerning (in design units)
261
- let advance = glyph.xadvance;
262
- // Add kerning if there's a previous character
263
- if (prevCodepoint !== 0) {
264
- const kerning = font.getKerning(prevCodepoint, codepoint);
265
- advance += kerning;
266
- }
267
- // Calculate glyph position and atlas coordinates (in design units)
268
- const glyphLayout = {
269
- codepoint,
270
- glyphId: glyph.id,
271
- x: currentX + glyph.xoffset,
272
- y: currentY + glyph.yoffset,
273
- width: glyph.width,
274
- height: glyph.height,
275
- xOffset: glyph.xoffset,
276
- yOffset: glyph.yoffset,
277
- atlasX: glyph.x / atlasWidth,
278
- atlasY: glyph.y / atlasHeight,
279
- atlasWidth: glyph.width / atlasWidth,
280
- atlasHeight: glyph.height / atlasHeight,
281
- };
282
- glyphs.push(glyphLayout);
283
- // Advance position with letter spacing (in design units)
284
- currentX += advance + letterSpacing;
285
- prevCodepoint = codepoint;
286
- }
287
- currentY += lineHeightPx;
288
- }
289
- // Convert final dimensions to pixel space for the layout
290
- return {
291
- glyphs,
292
- distanceRange: fontScale * fontData.distanceField.distanceRange,
293
- width: maxWidth || effectiveWidth * fontScale,
294
- height: maxHeight || effectiveHeight,
295
- fontScale: fontScale,
296
- lineHeight: lineHeightPx,
297
- fontFamily,
298
- };
299
- };
300
- const createFont = (settings) => {
301
- return new SdfFont(SdfTextRenderer, settings, stage);
302
- };
303
- /**
304
- * SDF Text Renderer - implements TextRenderer interface
305
- */
306
- const SdfTextRenderer = {
307
- type,
308
- createFont,
309
- renderText,
310
- addQuads,
311
- renderQuads,
312
- init,
313
- };
314
- export default SdfTextRenderer;
315
- //# sourceMappingURL=SdfTextRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SdfTextRenderer.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/SdfTextRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAYH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,GAAG,EAAuB,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAG1D,+EAA+E;AAC/E,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B,qCAAqC;AACrC,MAAM,IAAI,GAAG,KAAc,CAAC;AAE5B,IAAI,SAAS,GAA2B,IAAI,CAAC;AAC7C,IAAI,KAAK,GAAiB,IAAI,CAAC;AAE/B,mCAAmC;AACnC,MAAM,IAAI,GAAG,CAAC,CAAQ,EAAQ,EAAE;IAC9B,KAAK,GAAG,CAAC,CAAC;IAEV,8CAA8C;IAC9C,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAoB,CAAC;AACrE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CACjB,IAAa,EACb,KAAwB,EACR,EAAE;IAClB,0BAA0B;IAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,uCAAuC;QACvC,OAAO;YACL,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;SACV,CAAC;IACJ,CAAC;IAED,4DAA4D;IAC5D,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAE/C,gEAAgE;IAChE,OAAO;QACL,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,KAAK;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,4BAA4B;KACrC,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,QAAQ,GAAG,CAAC,MAAmB,EAAuB,EAAE;IAC5D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,CAAC,2BAA2B;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IAEnC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,YAAY,GAAG,kBAAkB,GAAG,iBAAiB,CACtD,CAAC;IAEF,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,OAAO,UAAU,GAAG,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,UAAU,EAAE,CAAC;QACb,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACnB,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACnB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QAE7B,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;QACxB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;QAElC,+CAA+C;QAC/C,qBAAqB;QACrB,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QAEjC,sBAAsB;QACtB,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QAEjC,wBAAwB;QACxB,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QAEjC,mDAAmD;QACnD,kCAAkC;QAClC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QAEjC,yBAAyB;QACzB,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QAEjC,oCAAoC;QACpC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;QACjC,YAAY,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,CAClB,QAAsB,EACtB,IAAa,EACb,MAAkB,EAClB,YAA0B,EAC1B,WAA4B,EACtB,EAAE;IACR,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;IAC1C,MAAM,eAAe,GAAG,WAAW,CAAC,eAAe,CAAC;IAEpD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,6EAA6E;IAC7E,MAAM,GAAG,GAAI,QAA0B,CAAC,GAAG,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAClD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;IAEvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC;QACxC;YACE,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE;gBACV,UAAU,EAAE;oBACV,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,GAAG,CAAC,KAAe;oBACzB,UAAU,EAAE,KAAK;oBACjB,MAAM;oBACN,MAAM,EAAE,CAAC;iBACV;gBACD,eAAe,EAAE;oBACf,IAAI,EAAE,iBAAiB;oBACvB,IAAI,EAAE,CAAC;oBACP,IAAI,EAAE,GAAG,CAAC,KAAe;oBACzB,UAAU,EAAE,KAAK;oBACjB,MAAM;oBACN,MAAM,EAAE,CAAC,GAAG,YAAY,CAAC,iBAAiB;iBAC3C;aACF;SACF;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,GAAG,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,WAAqB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,aAAa,CAChC,QAAyB,EACzB;QACE,cAAc,EAAE;YACd,SAAS,EAAE,eAAe;YAC1B,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YACzC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,oCAAoC;YAC5D,aAAa,EAAE,MAAM,CAAC,aAAa;SACX;QAC1B,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,UAAU;QACjB,uGAAuG;QACvG,YAAY,EAAE,WAAW,CAAC,YAAmB;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,KAAK;QACV,sBAAsB,EAAE,WAAW,CAAC,sBAAsB;QAC1D,uGAAuG;QACvG,qBAAqB,EAAE,WAAW,CAAC,qBAA4B;KAChE,EACD,CAAC,CACF,CAAC;IAEF,uCAAuC;IACvC,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,UAA6B,CAAC,CAAC;IAChE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAExC,QAA0B,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,kBAAkB,GAAG,CACzB,KAAwB,EACxB,IAAa,EACD,EAAE;IACd,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAChC,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;IACvC,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;IAE1C,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC;IACzC,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;IAE1C,wDAAwD;IACxD,MAAM,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,GAAG,SAAS,CAAC;IAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAClC,MAAM,CACJ,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,eAAe,EAChB,GAAG,aAAa,CACf,IAAI,EACJ,OAAO,EACP,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,SAAS,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,SAAS,EACf,aAAa,EACb,KAAK,CAAC,QAAQ,EACd,QAAQ,EACR,SAAS,CACV,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAEhC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAmB,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC;QACvC,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,iCAAiC;QACjC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACrC,SAAS;YACX,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,SAAS;YACX,CAAC;YACD,mCAAmC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,mDAAmD;YACnD,IAAI,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC;YAE7B,8CAA8C;YAC9C,IAAI,aAAa,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBAC1D,OAAO,IAAI,OAAO,CAAC;YACrB,CAAC;YAED,mEAAmE;YACnE,MAAM,WAAW,GAAgB;gBAC/B,SAAS;gBACT,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,OAAO;gBAC3B,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,OAAO;gBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,UAAU;gBAC5B,MAAM,EAAE,KAAK,CAAC,CAAC,GAAG,WAAW;gBAC7B,UAAU,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU;gBACpC,WAAW,EAAE,KAAK,CAAC,MAAM,GAAG,WAAW;aACxC,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEzB,yDAAyD;YACzD,QAAQ,IAAI,OAAO,GAAG,aAAa,CAAC;YACpC,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;QACD,QAAQ,IAAI,YAAY,CAAC;IAC3B,CAAC;IAED,yDAAyD;IACzD,OAAO;QACL,MAAM;QACN,aAAa,EAAE,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa;QAC/D,KAAK,EAAE,QAAQ,IAAI,cAAc,GAAG,SAAS;QAC7C,MAAM,EAAE,SAAS,IAAI,eAAe;QACpC,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,YAAY;QACxB,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAyB,EAAuB,EAAE;IACpE,OAAO,IAAI,OAAO,CAChB,eAA0C,EAC1C,QAAmC,EACnC,KAAM,CACP,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,eAAe,GAAG;IACtB,IAAI;IACJ,UAAU;IACV,UAAU;IACV,QAAQ;IACR,WAAW;IACX,IAAI;CACL,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,20 +0,0 @@
1
- import type { CoreFont } from './CoreFont.js';
2
- import type { FontMetrics, NormalizedFontMetrics, TextLayoutStruct, WrappedLinesStruct } from './TextRenderer.js';
3
- export declare const defaultFontMetrics: FontMetrics;
4
- export declare const normalizeFontMetrics: (metrics: FontMetrics, fontSize: number) => NormalizedFontMetrics;
5
- export declare const mapTextLayout: (font: CoreFont, metrics: NormalizedFontMetrics, text: string, textAlign: string, verticalAlign: string, fontFamily: string, lineHeight: number, overflowSuffix: string, wordBreak: string, letterSpacing: number, maxLines: number, maxWidth: number, maxHeight: number) => TextLayoutStruct;
6
- export declare const measureLines: (font: CoreFont, lines: string[], fontFamily: string, letterSpacing: number, maxLines: number) => WrappedLinesStruct;
7
- export declare const wrapText: (font: CoreFont, text: string, fontFamily: string, maxWidth: number, letterSpacing: number, overflowSuffix: string, wordBreak: string, maxLines: number) => WrappedLinesStruct;
8
- export declare const wrapLine: (font: CoreFont, line: string, fontFamily: string, maxWidth: number, letterSpacing: number, spaceWidth: number, overflowSuffix: string, wordBreak: string, remainingLines: number, hasMaxLines: boolean) => WrappedLinesStruct;
9
- /**
10
- * Truncate a line with overflow suffix to fit within width
11
- */
12
- export declare const truncateLineWithSuffix: (font: CoreFont, line: string, fontFamily: string, maxWidth: number, letterSpacing: number, overflowSuffix: string) => string;
13
- /**
14
- * wordbreak function: https://developer.mozilla.org/en-US/docs/Web/CSS/word-break#break-word
15
- */
16
- export declare const breakWord: (font: CoreFont, word: string, fontFamily: string, maxWidth: number, letterSpacing: number, remainingLines: number) => WrappedLinesStruct;
17
- /**
18
- * wordbreak function: https://developer.mozilla.org/en-US/docs/Web/CSS/word-break#break-word
19
- */
20
- export declare const breakAll: (font: CoreFont, word: string, fontFamily: string, initial: number, maxWidth: number, letterSpacing: number, remainingLines: number) => WrappedLinesStruct;