@lightningjs/renderer 3.0.3 → 3.0.5

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 (240) hide show
  1. package/dist/src/common/EventEmitter.d.ts +7 -4
  2. package/dist/src/common/EventEmitter.js +1 -1
  3. package/dist/src/common/EventEmitter.js.map +1 -1
  4. package/dist/src/core/AutosizeManager.d.ts +29 -0
  5. package/dist/src/core/AutosizeManager.js +169 -0
  6. package/dist/src/core/AutosizeManager.js.map +1 -0
  7. package/dist/src/core/CoreNode.d.ts +2 -1
  8. package/dist/src/core/CoreNode.js +6 -3
  9. package/dist/src/core/CoreNode.js.map +1 -1
  10. package/dist/src/core/CoreTextNode.d.ts +18 -5
  11. package/dist/src/core/CoreTextNode.js +141 -59
  12. package/dist/src/core/CoreTextNode.js.map +1 -1
  13. package/dist/src/core/CoreTextNodeCanvas.d.ts +215 -0
  14. package/dist/src/core/CoreTextNodeCanvas.js +236 -0
  15. package/dist/src/core/CoreTextNodeCanvas.js.map +1 -0
  16. package/dist/src/core/Stage.js +10 -0
  17. package/dist/src/core/Stage.js.map +1 -1
  18. package/dist/src/core/TextureMemoryManager.js +4 -3
  19. package/dist/src/core/TextureMemoryManager.js.map +1 -1
  20. package/dist/src/core/animations/Animation.d.ts +21 -0
  21. package/dist/src/core/animations/Animation.js +194 -0
  22. package/dist/src/core/animations/Animation.js.map +1 -0
  23. package/dist/src/core/animations/AnimationManager.d.ts +1 -1
  24. package/dist/src/core/animations/AnimationManager.js +5 -5
  25. package/dist/src/core/animations/AnimationManager.js.map +1 -1
  26. package/dist/src/core/animations/CoreAnimation.d.ts +11 -2
  27. package/dist/src/core/animations/CoreAnimation.js +44 -38
  28. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  29. package/dist/src/core/animations/CoreAnimationController.d.ts +6 -0
  30. package/dist/src/core/animations/CoreAnimationController.js +16 -3
  31. package/dist/src/core/animations/CoreAnimationController.js.map +1 -1
  32. package/dist/src/core/animations/Playback.d.ts +64 -0
  33. package/dist/src/core/animations/Playback.js +169 -0
  34. package/dist/src/core/animations/Playback.js.map +1 -0
  35. package/dist/src/core/animations/Ticker.d.ts +71 -0
  36. package/dist/src/core/animations/Ticker.js +89 -0
  37. package/dist/src/core/animations/Ticker.js.map +1 -0
  38. package/dist/src/core/animations/Transition.d.ts +38 -0
  39. package/dist/src/core/animations/Transition.js +35 -0
  40. package/dist/src/core/animations/Transition.js.map +1 -0
  41. package/dist/src/core/animations/TransitionsController.d.ts +10 -0
  42. package/dist/src/core/animations/TransitionsController.js +39 -0
  43. package/dist/src/core/animations/TransitionsController.js.map +1 -0
  44. package/dist/src/core/animations/utils.d.ts +2 -0
  45. package/dist/src/core/animations/utils.js +136 -0
  46. package/dist/src/core/animations/utils.js.map +1 -0
  47. package/dist/src/core/lib/ImageWorker.d.ts +2 -2
  48. package/dist/src/core/lib/ImageWorker.js +11 -30
  49. package/dist/src/core/lib/ImageWorker.js.map +1 -1
  50. package/dist/src/core/lib/WebGlContextWrapper.d.ts +5 -16
  51. package/dist/src/core/lib/WebGlContextWrapper.js +1 -35
  52. package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
  53. package/dist/src/core/lib/textureCompression.d.ts +2 -14
  54. package/dist/src/core/lib/textureCompression.js +67 -320
  55. package/dist/src/core/lib/textureCompression.js.map +1 -1
  56. package/dist/src/core/platform.js +9 -38
  57. package/dist/src/core/platform.js.map +1 -1
  58. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -1
  59. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +3 -11
  60. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +1 -1
  61. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +1 -2
  62. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +11 -16
  63. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +1 -1
  64. package/dist/src/core/renderers/canvas/CanvasRenderer.js +14 -1
  65. package/dist/src/core/renderers/canvas/CanvasRenderer.js.map +1 -1
  66. package/dist/src/core/renderers/canvas/CanvasTexture.d.ts +1 -1
  67. package/dist/src/core/renderers/canvas/CanvasTexture.js +16 -6
  68. package/dist/src/core/renderers/canvas/CanvasTexture.js.map +1 -1
  69. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -13
  70. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +192 -113
  71. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +1 -1
  72. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +2 -0
  73. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +14 -0
  74. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +1 -1
  75. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +1 -2
  76. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +5 -12
  77. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +1 -1
  78. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +6 -18
  79. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +60 -102
  80. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
  81. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +1 -1
  82. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +1 -3
  83. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +31 -74
  84. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
  85. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +7 -2
  86. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +50 -21
  87. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
  88. package/dist/src/core/renderers/webgl/WebGlRenderOp.d.ts +2 -3
  89. package/dist/src/core/renderers/webgl/WebGlRenderOp.js +1 -3
  90. package/dist/src/core/renderers/webgl/WebGlRenderOp.js.map +1 -1
  91. package/dist/src/core/renderers/webgl/WebGlRenderer.d.ts +2 -2
  92. package/dist/src/core/renderers/webgl/WebGlRenderer.js.map +1 -1
  93. package/dist/src/core/renderers/webgl/WebGlShaderNode.d.ts +1 -0
  94. package/dist/src/core/renderers/webgl/WebGlShaderNode.js +23 -0
  95. package/dist/src/core/renderers/webgl/WebGlShaderNode.js.map +1 -1
  96. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js +4 -5
  97. package/dist/src/core/renderers/webgl/WebGlShaderProgram.js.map +1 -1
  98. package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +1 -0
  99. package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
  100. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +6 -3
  101. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
  102. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +11 -0
  103. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
  104. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +10 -5
  105. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
  106. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +10 -5
  107. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
  108. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +12 -0
  109. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
  110. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +1 -1
  111. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +1 -1
  112. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +1 -1
  113. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +1 -1
  114. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +2 -2
  115. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +5 -5
  116. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +1 -1
  117. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +1 -0
  118. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +30 -14
  119. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +1 -1
  120. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -1
  121. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +3 -13
  122. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +1 -1
  123. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +1 -1
  124. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +5 -5
  125. package/dist/src/core/shaders/webgl/SdfShadowShader.d.ts +9 -0
  126. package/dist/src/core/shaders/webgl/SdfShadowShader.js +100 -0
  127. package/dist/src/core/shaders/webgl/SdfShadowShader.js.map +1 -0
  128. package/dist/src/core/text-rendering/CanvasFont.d.ts +1 -1
  129. package/dist/src/core/text-rendering/CanvasFont.js +7 -16
  130. package/dist/src/core/text-rendering/CanvasFont.js.map +1 -1
  131. package/dist/src/core/text-rendering/CanvasFontHandler.d.ts +1 -1
  132. package/dist/src/core/text-rendering/CanvasFontHandler.js +1 -1
  133. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  134. package/dist/src/core/text-rendering/CanvasTextRenderer.d.ts +2 -3
  135. package/dist/src/core/text-rendering/CanvasTextRenderer.js +7 -5
  136. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  137. package/dist/src/core/text-rendering/CoreFont.d.ts +1 -1
  138. package/dist/src/core/text-rendering/CoreFont.js +1 -1
  139. package/dist/src/core/text-rendering/CoreFont.js.map +1 -1
  140. package/dist/src/core/text-rendering/FontManager.js +2 -1
  141. package/dist/src/core/text-rendering/FontManager.js.map +1 -1
  142. package/dist/src/core/text-rendering/SdfTextRenderer.d.ts +3 -5
  143. package/dist/src/core/text-rendering/SdfTextRenderer.js +19 -109
  144. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  145. package/dist/src/core/text-rendering/TextLayoutEngine.js +43 -12
  146. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -1
  147. package/dist/src/core/text-rendering/TextRenderer.d.ts +16 -8
  148. package/dist/src/core/text-rendering/canvas/Settings.d.ts +64 -0
  149. package/dist/src/core/text-rendering/canvas/Settings.js +20 -0
  150. package/dist/src/core/text-rendering/canvas/Settings.js.map +1 -0
  151. package/dist/src/core/text-rendering/canvas/Utils.d.ts +20 -0
  152. package/dist/src/core/text-rendering/canvas/Utils.js +144 -0
  153. package/dist/src/core/text-rendering/canvas/Utils.js.map +1 -0
  154. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.d.ts +60 -0
  155. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js +183 -0
  156. package/dist/src/core/text-rendering/canvas/calculateRenderInfo.js.map +1 -0
  157. package/dist/src/core/text-rendering/canvas/draw.d.ts +5 -0
  158. package/dist/src/core/text-rendering/canvas/draw.js +132 -0
  159. package/dist/src/core/text-rendering/canvas/draw.js.map +1 -0
  160. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +2 -2
  161. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
  162. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -4
  163. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +46 -98
  164. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
  165. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +1 -1
  166. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +2 -2
  167. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +66 -8
  168. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
  169. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +1 -1
  170. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +1 -1
  171. package/dist/src/core/text-rendering/renderers/canvas/CanvasTextRenderer.d.ts +26 -0
  172. package/dist/src/core/text-rendering/renderers/canvas/CanvasTextRenderer.js +158 -0
  173. package/dist/src/core/text-rendering/renderers/canvas/CanvasTextRenderer.js.map +1 -0
  174. package/dist/src/core/text-rendering/renderers/canvas/internal/draw.d.ts +5 -0
  175. package/dist/src/core/text-rendering/renderers/canvas/internal/draw.js +127 -0
  176. package/dist/src/core/text-rendering/renderers/canvas/internal/draw.js.map +1 -0
  177. package/dist/src/core/text-rendering/renderers/canvas/internal/mergeDefaults.d.ts +2 -0
  178. package/dist/src/core/text-rendering/renderers/canvas/internal/mergeDefaults.js +50 -0
  179. package/dist/src/core/text-rendering/renderers/canvas/internal/mergeDefaults.js.map +1 -0
  180. package/dist/src/core/text-rendering/renderers/canvas/internal/renderInfo.d.ts +33 -0
  181. package/dist/src/core/text-rendering/renderers/canvas/internal/renderInfo.js +192 -0
  182. package/dist/src/core/text-rendering/renderers/canvas/internal/renderInfo.js.map +1 -0
  183. package/dist/src/core/text-rendering/renderers/canvas/internal/types.d.ts +66 -0
  184. package/dist/src/core/text-rendering/renderers/canvas/internal/types.js +2 -0
  185. package/dist/src/core/text-rendering/renderers/canvas/internal/types.js.map +1 -0
  186. package/dist/src/core/text-rendering/renderers/canvas/internal/utils.d.ts +91 -0
  187. package/dist/src/core/text-rendering/renderers/canvas/internal/utils.js +282 -0
  188. package/dist/src/core/text-rendering/renderers/canvas/internal/utils.js.map +1 -0
  189. package/dist/src/core/text-rendering/sdf/PeekableGenerator.d.ts +12 -0
  190. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js +61 -0
  191. package/dist/src/core/text-rendering/sdf/PeekableGenerator.js.map +1 -0
  192. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.d.ts +45 -0
  193. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js +69 -0
  194. package/dist/src/core/text-rendering/sdf/SimpleFontShaper.js.map +1 -0
  195. package/dist/src/core/text-rendering/sdf/Utils.d.ts +26 -0
  196. package/dist/src/core/text-rendering/sdf/Utils.js +301 -0
  197. package/dist/src/core/text-rendering/sdf/Utils.js.map +1 -0
  198. package/dist/src/core/text-rendering/sdf/index.d.ts +1 -0
  199. package/dist/src/core/text-rendering/sdf/index.js +20 -0
  200. package/dist/src/core/text-rendering/sdf/index.js.map +1 -0
  201. package/dist/src/core/textures/ImageTexture.js +11 -0
  202. package/dist/src/core/textures/ImageTexture.js.map +1 -1
  203. package/dist/src/core/textures/Texture.js +5 -0
  204. package/dist/src/core/textures/Texture.js.map +1 -1
  205. package/dist/src/main-api/Inspector.d.ts +1 -1
  206. package/dist/src/main-api/Inspector.js +25 -20
  207. package/dist/src/main-api/Inspector.js.map +1 -1
  208. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  209. package/dist/tsconfig.tsbuildinfo +1 -0
  210. package/package.json +1 -1
  211. package/src/common/EventEmitter.ts +6 -8
  212. package/src/core/CoreNode.test.ts +1 -1
  213. package/src/core/CoreNode.ts +8 -4
  214. package/src/core/CoreTextNode.test.ts +138 -25
  215. package/src/core/CoreTextNode.ts +174 -67
  216. package/src/core/Stage.ts +11 -0
  217. package/src/core/TextureMemoryManager.ts +4 -3
  218. package/src/core/animations/AnimationManager.ts +5 -5
  219. package/src/core/animations/CoreAnimation.ts +61 -45
  220. package/src/core/animations/CoreAnimationController.ts +16 -7
  221. package/src/core/renderers/canvas/CanvasRenderer.ts +19 -1
  222. package/src/core/renderers/canvas/CanvasTexture.ts +23 -8
  223. package/src/core/renderers/webgl/WebGlRenderer.ts +2 -3
  224. package/src/core/renderers/webgl/WebGlShaderNode.ts +24 -0
  225. package/src/core/renderers/webgl/WebGlShaderProgram.test.ts +274 -0
  226. package/src/core/renderers/webgl/WebGlShaderProgram.ts +10 -10
  227. package/src/core/renderers/webgl/internal/ShaderUtils.ts +1 -0
  228. package/src/core/text-rendering/CanvasFontHandler.ts +2 -2
  229. package/src/core/text-rendering/CanvasTextRenderer.ts +14 -7
  230. package/src/core/text-rendering/SdfTextRenderer.ts +28 -140
  231. package/src/core/text-rendering/TextLayoutEngine.ts +61 -28
  232. package/src/core/text-rendering/TextRenderer.ts +19 -12
  233. package/src/core/text-rendering/tests/TextLayoutEngine.test.ts +20 -0
  234. package/src/core/textures/ImageTexture.ts +18 -0
  235. package/src/core/textures/Texture.ts +6 -0
  236. package/src/main-api/Inspector.ts +25 -25
  237. package/dist/src/core/text-rendering/TextGenerator.d.ts +0 -10
  238. package/dist/src/core/text-rendering/TextGenerator.js +0 -36
  239. package/dist/src/core/text-rendering/TextGenerator.js.map +0 -1
  240. package/src/core/renderers/webgl/SdfRenderOp.ts +0 -106
@@ -58,11 +58,11 @@ export class RadiusEffect extends ShaderEffect {
58
58
  }
59
59
  static onShaderMask = `
60
60
  vec2 halfDimensions = u_dimensions * 0.5;
61
- vec2 p = v_nodeCoordinate.xy * u_dimensions - halfDimensions;
62
- vec4 r = radius;
63
- r.xy = (p.x > 0.0) ? r.yz : r.xw;
64
- float cornerRadius = (p.y > 0.0) ? r.y : r.x;
65
- return $boxDist(p, halfDimensions, cornerRadius);
61
+ float r = radius[0] * step(v_textureCoordinate.x, 0.5) * step(v_textureCoordinate.y, 0.5);
62
+ r = r + radius[1] * step(0.5, v_textureCoordinate.x) * step(v_textureCoordinate.y, 0.5);
63
+ r = r + radius[2] * step(0.5, v_textureCoordinate.x) * step(0.5, v_textureCoordinate.y);
64
+ r = r + radius[3] * step(v_textureCoordinate.x, 0.5) * step(0.5, v_textureCoordinate.y);
65
+ return $boxDist(v_textureCoordinate.xy * u_dimensions - halfDimensions, halfDimensions, r);
66
66
  `;
67
67
  static onEffectMask = `
68
68
  return mix(vec4(0.0), maskColor, $fillMask(shaderMask));
@@ -0,0 +1,9 @@
1
+ import type { WebGlShaderType } from '../../renderers/webgl/WebGlShaderNode.js';
2
+ import { type SdfShaderProps } from './SdfShader.js';
3
+ export type SdfShadowShaderProps = SdfShaderProps & {
4
+ shadowColor: number;
5
+ shadowBlur: number;
6
+ shadowOffsetX: number;
7
+ shadowOffsetY: number;
8
+ };
9
+ export declare const SdfShadow: WebGlShaderType<SdfShadowShaderProps>;
@@ -0,0 +1,100 @@
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2023 Comcast Cable Communications Management, LLC.
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+ import { getNormalizedRgbaComponents } from '../../lib/utils.js';
20
+ import { Sdf } from './SdfShader.js';
21
+ export const SdfShadow = {
22
+ props: {
23
+ ...Sdf.props,
24
+ shadowColor: 0x000000ff,
25
+ shadowBlur: 0,
26
+ shadowOffsetX: 0,
27
+ shadowOffsetY: 0,
28
+ },
29
+ onSdfBind(props) {
30
+ Sdf.onSdfBind.call(this, props);
31
+ this.uniform4fa('u_shadowColor', getNormalizedRgbaComponents(props.shadowColor));
32
+ this.uniform1f('u_shadowBlur', props.shadowBlur);
33
+ this.uniform2f('u_shadowOffset', props.shadowOffsetX, props.shadowOffsetY);
34
+ },
35
+ vertex: `
36
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
37
+ precision highp float;
38
+ # else
39
+ precision mediump float;
40
+ # endif
41
+ // an attribute is an input (in) to a vertex shader.
42
+ // It will receive data from a buffer
43
+ attribute vec2 a_position;
44
+ attribute vec2 a_textureCoords;
45
+
46
+ uniform vec2 u_resolution;
47
+ uniform mat3 u_transform;
48
+ uniform float u_pixelRatio;
49
+ uniform float u_size;
50
+ uniform float u_distanceRange;
51
+ uniform vec2 u_shadowOffset;
52
+
53
+ varying vec2 v_texcoord;
54
+ varying float v_scaledDistRange;
55
+
56
+ void main() {
57
+ vec2 scrolledPosition = a_position * u_size;
58
+ vec2 transformedPosition = (u_transform * vec3(scrolledPosition, 1)).xy;
59
+
60
+ // Apply shadow offset after transform
61
+ transformedPosition += u_shadowOffset;
62
+
63
+ // Calculate screen space with pixel ratio
64
+ vec2 screenSpace = (transformedPosition * u_pixelRatio / u_resolution * 2.0 - 1.0) * vec2(1, -1);
65
+
66
+ gl_Position = vec4(screenSpace, 0.0, 1.0);
67
+ v_texcoord = a_textureCoords;
68
+ v_scaledDistRange = u_distanceRange * u_pixelRatio;
69
+ }
70
+ `,
71
+ fragment: `
72
+ # ifdef GL_FRAGMENT_PRECISION_HIGH
73
+ precision highp float;
74
+ # else
75
+ precision mediump float;
76
+ # endif
77
+ uniform vec4 u_color;
78
+ uniform sampler2D u_texture;
79
+ uniform float u_shadowBlur;
80
+ uniform float u_size;
81
+ uniform vec4 u_shadowColor;
82
+ varying vec2 v_texcoord;
83
+ varying float v_scaledDistRange;
84
+
85
+ float median(float r, float g, float b) {
86
+ return clamp(b, min(r, g), max(r, g));
87
+ }
88
+
89
+ void main() {
90
+ vec3 sample = texture2D(u_texture, v_texcoord).rgb;
91
+ float sigDist = v_scaledDistRange * (median(sample.r, sample.g, sample.b) - 0.5);
92
+ float opacity = clamp(sigDist + 0.5, 0.0, 1.0) * u_shadowColor.a;
93
+
94
+ // Build the final color.
95
+ // IMPORTANT: We must premultiply the color by the alpha value before returning it.
96
+ gl_FragColor = vec4(u_shadowColor.r * opacity, u_shadowColor.g * opacity, u_shadowColor.b * opacity, opacity);
97
+ }
98
+ `,
99
+ };
100
+ //# sourceMappingURL=SdfShadowShader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdfShadowShader.js","sourceRoot":"","sources":["../../../../../src/core/shaders/webgl/SdfShadowShader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,GAAG,EAAuB,MAAM,gBAAgB,CAAC;AAS1D,MAAM,CAAC,MAAM,SAAS,GAA0C;IAC9D,KAAK,EAAE;QACL,GAAI,GAAG,CAAC,KAAwB;QAChC,WAAW,EAAE,UAAU;QACvB,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;KACjB;IACD,SAAS,CAAC,KAA2B;QACnC,GAAG,CAAC,SAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CACb,eAAe,EACf,2BAA2B,CAAC,KAAK,CAAC,WAAW,CAAC,CAC/C,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCP;IACD,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BT;CACF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { CoreFont, type CoreFontProps } from './CoreFont.js';
2
2
  import type { NormalizedFontMetrics, TextRenderer } from './TextRenderer.js';
3
3
  export type CanvasFontProps = CoreFontProps & {
4
- fontUrl: string;
4
+ url: string;
5
5
  };
6
6
  export declare class CanvasFont extends CoreFont {
7
7
  private measureContext;
@@ -26,19 +26,15 @@ export class CanvasFont extends CoreFont {
26
26
  constructor(textRenderer, props, measureContext) {
27
27
  super(textRenderer, props);
28
28
  this.measureContext = measureContext;
29
- this.url = props.fontUrl;
29
+ this.url = props.url;
30
30
  this.metrics = props.metrics;
31
31
  }
32
32
  load() {
33
33
  if (this.state !== FontState.Created) {
34
34
  return;
35
35
  }
36
- if (this.family === 'sans-serif') {
37
- // Default font, skip loading
38
- this.onLoaded();
39
- return;
40
- }
41
36
  this.state = FontState.Loading;
37
+ const waitingNodes = this.waitingNodes;
42
38
  new FontFace(this.family, `url(${this.url})`)
43
39
  .load()
44
40
  .then((loadedFont) => {
@@ -77,7 +73,6 @@ export class CanvasFont extends CoreFont {
77
73
  metrics = calculateCanvasMetrics(this.family, fontSize, this.measureContext);
78
74
  }
79
75
  m = this.normalizedMetrics[fontSize] = normalizeFontMetrics(metrics, fontSize);
80
- console.log('normalized metrics for font', this.family, 'at size', fontSize, 'calculated as', m);
81
76
  return m;
82
77
  }
83
78
  }
@@ -96,11 +91,7 @@ function calculateCanvasMetrics(fontFamily, fontSize, measureContext) {
96
91
  // as it's browser support is limited and it also tends to produce higher than
97
92
  // expected values. It is instead HIGHLY RECOMMENDED that developers provide
98
93
  // explicit metrics in the font face definition.
99
- // Ensure font is loaded by checking document.fonts
100
- if (!document.fonts.check(`${fontSize}px ${fontFamily}`)) {
101
- console.warn(`Font ${fontFamily} may not be fully loaded yet when calculating metrics`);
102
- }
103
- measureContext.font = `${fontSize}px ${fontFamily}`;
94
+ measureContext.font = `normal ${fontSize}px Unknown, ${fontFamily}`;
104
95
  const metrics = measureContext.measureText('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz');
105
96
  console.warn(`Font metrics not provided for Canvas Web font ${fontFamily}. ` +
106
97
  'Using fallback values. It is HIGHLY recommended you use the latest ' +
@@ -108,13 +99,13 @@ function calculateCanvasMetrics(fontFamily, fontSize, measureContext) {
108
99
  'metrics for the font and provide them in the Canvas Web font definition.');
109
100
  const ascender = metrics.fontBoundingBoxAscent ?? metrics.actualBoundingBoxAscent ?? 0;
110
101
  const descender = metrics.fontBoundingBoxDescent ?? metrics.actualBoundingBoxDescent ?? 0;
111
- const emHeight = (metrics.emHeightAscent ?? 0) + (metrics.emHeightDescent ?? 0);
112
- const unitsPerEm = emHeight > 0 ? emHeight : ascender + descender;
113
102
  return {
114
103
  ascender,
115
104
  descender: -descender,
116
- lineGap: emHeight - (ascender + descender),
117
- unitsPerEm,
105
+ lineGap: (metrics.emHeightAscent ?? 0) +
106
+ (metrics.emHeightDescent ?? 0) -
107
+ (ascender + descender),
108
+ unitsPerEm: (metrics.emHeightAscent ?? 0) + (metrics.emHeightDescent ?? 0),
118
109
  };
119
110
  }
120
111
  //# sourceMappingURL=CanvasFont.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasFont.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFont.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CanvasFont.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFont.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export declare const getFontFamilies: () => FontFamilyMap;
16
16
  /**
17
17
  * Initialize the global font handler
18
18
  */
19
- export declare const init: (c: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, mc: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D) => void;
19
+ export declare const init: (c: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, mc?: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D) => void;
20
20
  export declare const type = "canvas";
21
21
  /**
22
22
  * Check if a font is already loaded by font family
@@ -100,7 +100,7 @@ export const init = (c, mc) => {
100
100
  throw new Error('Canvas context is not provided for font handler initialization');
101
101
  }
102
102
  context = c;
103
- measureContext = mc;
103
+ measureContext = mc || c;
104
104
  // Register the default 'sans-serif' font face
105
105
  const defaultMetrics = {
106
106
  ascender: 800,
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFontHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CanvasFontHandler.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasFontHandler.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  import type { Stage } from '../Stage.js';
2
- import type { TextRenderInfo } from './TextRenderer.js';
3
- import * as CanvasFontHandler from './CanvasFontHandler.js';
2
+ import type { FontHandler, TextRenderInfo } from './TextRenderer.js';
4
3
  import type { CoreTextNodeProps } from '../CoreTextNode.js';
5
4
  /**
6
5
  * Canvas Text Renderer - implements TextRenderer interface
7
6
  */
8
7
  declare const CanvasTextRenderer: {
9
8
  type: "canvas";
10
- font: typeof CanvasFontHandler;
9
+ font: FontHandler;
11
10
  renderText: (props: CoreTextNodeProps) => TextRenderInfo;
12
11
  renderQuads: () => void;
13
12
  init: (stage: Stage) => void;
@@ -22,13 +22,14 @@ import { getLayoutCacheKey, hasZeroWidthSpace } from './Utils.js';
22
22
  import { mapTextLayout } from './TextLayoutEngine.js';
23
23
  const MAX_TEXTURE_DIMENSION = 4096;
24
24
  const type = 'canvas';
25
+ const font = CanvasFontHandler;
25
26
  let canvas = null;
26
27
  let context = null;
27
28
  // Separate canvas and context for text measurements
28
29
  let measureCanvas = null;
29
30
  let measureContext = null;
30
31
  // Cache for text layout calculations
31
- const layoutCache = new Map();
32
+ const renderInfoCache = new Map();
32
33
  // Initialize the Text Renderer
33
34
  const init = (stage) => {
34
35
  const dpr = stage.options.devicePhysicalPixelRatio;
@@ -59,7 +60,7 @@ const renderText = (props) => {
59
60
  assertTruthy(context, 'Canvas context is not available');
60
61
  assertTruthy(measureContext, 'Canvas measureContext is not available');
61
62
  const cacheKey = getLayoutCacheKey(props);
62
- let layout = layoutCache.get(cacheKey);
63
+ let layout = renderInfoCache.get(cacheKey);
63
64
  if (layout !== undefined) {
64
65
  return layout;
65
66
  }
@@ -112,20 +113,21 @@ const renderText = (props) => {
112
113
  imageData = context.getImageData(0, 0, canvasW, canvasH);
113
114
  }
114
115
  const renderInfo = {
116
+ type,
115
117
  imageData,
116
118
  width: effectiveWidth,
117
119
  height: effectiveHeight,
118
120
  remainingLines,
119
121
  hasRemainingText,
120
122
  };
121
- layoutCache.set(cacheKey, renderInfo);
123
+ renderInfoCache.set(cacheKey, renderInfo);
122
124
  return renderInfo;
123
125
  };
124
126
  /**
125
127
  * Clear layout cache for memory management
126
128
  */
127
129
  const clearCache = () => {
128
- layoutCache.clear();
130
+ renderInfoCache.clear();
129
131
  };
130
132
  /**
131
133
  * Render quads for Canvas renderer (Canvas doesn't use quad-based rendering)
@@ -139,7 +141,7 @@ const renderQuads = () => {
139
141
  */
140
142
  const CanvasTextRenderer = {
141
143
  type,
142
- font: CanvasFontHandler,
144
+ font,
143
145
  renderText,
144
146
  renderQuads,
145
147
  init,
@@ -1 +1 @@
1
- {"version":3,"file":"CanvasTextRenderer.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasTextRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CanvasTextRenderer.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CanvasTextRenderer.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ export declare enum FontState {
8
8
  Failed = 3
9
9
  }
10
10
  export interface CoreFontProps {
11
- fontFamily: string;
11
+ family: string;
12
12
  metrics?: FontMetrics;
13
13
  }
14
14
  /**
@@ -19,7 +19,7 @@ export class CoreFont extends EventEmitter {
19
19
  metrics;
20
20
  constructor(textRenderer, props) {
21
21
  super();
22
- this.family = props.fontFamily;
22
+ this.family = props.family;
23
23
  this.state = FontState.Created;
24
24
  this.textRenderer = textRenderer;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CoreFont.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CoreFont.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,+CAAO,CAAA;IACP,+CAAO,CAAA;IACP,6CAAM,CAAA;IACN,6CAAM,CAAA;AACR,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAOD;;GAEG;AACH,MAAM,OAAgB,QAAS,SAAQ,YAAY;IACvC,YAAY,GAAkC,MAAM,CAAC,MAAM,CACnE,IAAI,CAC2B,CAAC;IACxB,iBAAiB,GACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAA0C,CAAC;IAExD,YAAY,CAAe;IAC3B,KAAK,CAAY;IACjB,MAAM,CAAS;IACf,OAAO,CAAe;IAE7B,YAAY,YAA0B,EAAE,KAAoB;QAC1D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAES,QAAQ;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,YAAY,CAAC,GAAG,CAAE,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,CAAC;IAEM,OAAO,CAAC,IAAkB;QAC/B,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,IAAkB;QACnC,IAAI,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CAMF"}
1
+ {"version":3,"file":"CoreFont.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/CoreFont.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D,MAAM,CAAN,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,+CAAO,CAAA;IACP,+CAAO,CAAA;IACP,6CAAM,CAAA;IACN,6CAAM,CAAA;AACR,CAAC,EALW,SAAS,KAAT,SAAS,QAKpB;AAOD;;GAEG;AACH,MAAM,OAAgB,QAAS,SAAQ,YAAY;IACvC,YAAY,GAAkC,MAAM,CAAC,MAAM,CACnE,IAAI,CAC2B,CAAC;IACxB,iBAAiB,GACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAA0C,CAAC;IAExD,YAAY,CAAe;IAC3B,KAAK,CAAY;IACjB,MAAM,CAAS;IACf,OAAO,CAAe;IAE7B,YAAY,YAA0B,EAAE,KAAoB;QAC1D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAES,QAAQ;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;YAC7B,YAAY,CAAC,GAAG,CAAE,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,CAAC;IAEM,OAAO,CAAC,IAAkB;QAC/B,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,IAAkB;QACnC,IAAI,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,YAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CAMF"}
@@ -4,8 +4,8 @@ export class CoreFontManager {
4
4
  constructor(stage, textRenderers) {
5
5
  for (let i = 0; i < textRenderers.length; i++) {
6
6
  const renderer = textRenderers[i];
7
+ renderer.init(stage);
7
8
  this.renderers[renderer.type] = renderer;
8
- renderer.init(stage, this);
9
9
  }
10
10
  }
11
11
  loadFont(type, options) {
@@ -14,6 +14,7 @@ export class CoreFontManager {
14
14
  console.error('renderer type for this font does not exist');
15
15
  return;
16
16
  }
17
+ console.log('loadFOnt', type, options);
17
18
  const font = targetRenderer.createFont(options);
18
19
  if (font === undefined) {
19
20
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"FontManager.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/FontManager.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IAClB,KAAK,GAA6B,MAAM,CAAC,MAAM,CAAC,IAAI,CAG3D,CAAC;IACM,SAAS,GAAiC,MAAM,CAAC,MAAM,CAC7D,IAAI,CAC2B,CAAC;IAElC,YAAY,KAAY,EAAE,aAA6B;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAmB,EAAE,OAAwB;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,UAAkB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,UAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"FontManager.js","sourceRoot":"","sources":["../../../../src/core/text-rendering/FontManager.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,eAAe;IAClB,KAAK,GAA6B,MAAM,CAAC,MAAM,CAAC,IAAI,CAG3D,CAAC;IACM,SAAS,GAAiC,MAAM,CAAC,MAAM,CAC7D,IAAI,CAC2B,CAAC;IAElC,YAAY,KAAY,EAAE,aAA6B;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;YACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAmB,EAAE,OAAwB;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,UAAkB;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,UAAU,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,CAAC,UAAkB;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -1,8 +1,6 @@
1
1
  import type { Stage } from '../Stage.js';
2
- import type { FontHandler, 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';
2
+ import type { FontHandler, TextRenderInfo } from './TextRenderer.js';
3
+ import type { CoreTextNode, CoreTextNodeProps } from '../CoreTextNode.js';
6
4
  /**
7
5
  * SDF Text Renderer - implements TextRenderer interface
8
6
  */
@@ -10,7 +8,7 @@ declare const SdfTextRenderer: {
10
8
  type: "sdf";
11
9
  font: FontHandler;
12
10
  renderText: (props: CoreTextNodeProps) => TextRenderInfo;
13
- renderQuads: (renderer: CoreRenderer, layout: TextLayout, renderProps: TextRenderProps) => void;
11
+ renderQuads: (textNode: CoreTextNode) => void;
14
12
  init: (stage: Stage) => void;
15
13
  clearCache: () => void;
16
14
  };
@@ -19,10 +19,7 @@
19
19
  import { getLayoutCacheKey, hasZeroWidthSpace } from './Utils.js';
20
20
  import * as SdfFontHandler from './SdfFontHandler.js';
21
21
  import { WebGlRenderer } from '../renderers/webgl/WebGlRenderer.js';
22
- import { SdfRenderOp } from '../renderers/webgl/SdfRenderOp.js';
23
22
  import { Sdf } from '../shaders/webgl/SdfShader.js';
24
- import { BufferCollection } from '../renderers/webgl/internal/BufferCollection.js';
25
- import { mergeColorAlpha } from '../../utils.js';
26
23
  import { mapTextLayout } from './TextLayoutEngine.js';
27
24
  // Each glyph requires 6 vertices (2 triangles) with 4 floats each (x, y, u, v)
28
25
  const FLOATS_PER_VERTEX = 4;
@@ -30,15 +27,17 @@ const VERTICES_PER_GLYPH = 6;
30
27
  // Type definition to match interface
31
28
  const type = 'sdf';
32
29
  let sdfShader = null;
30
+ let renderer = null;
33
31
  // Initialize the SDF text renderer
34
32
  const init = (stage) => {
35
33
  SdfFontHandler.init();
36
34
  // Register SDF shader with the shader manager
37
35
  stage.shManager.registerShaderType('Sdf', Sdf);
38
36
  sdfShader = stage.shManager.createShader('Sdf');
37
+ renderer = stage.renderer;
39
38
  };
40
39
  const font = SdfFontHandler;
41
- const layoutCache = new Map();
40
+ const renderInfoCache = new Map();
42
41
  /**
43
42
  * SDF text renderer using MSDF/SDF fonts with WebGL
44
43
  *
@@ -47,123 +46,34 @@ const layoutCache = new Map();
47
46
  * @returns Object containing ImageData and dimensions
48
47
  */
49
48
  const renderText = (props) => {
50
- // Early return if no text
51
- if (props.text.length === 0) {
52
- return {
53
- width: 0,
54
- height: 0,
55
- };
56
- }
57
49
  const cacheKey = getLayoutCacheKey(props);
58
- let layout = layoutCache.get(cacheKey);
59
- if (layout !== undefined) {
60
- return {
61
- width: layout.width,
62
- height: layout.height,
63
- remainingLines: layout.remainingLines,
64
- hasRemainingText: layout.hasRemainingText,
65
- layout, // Cache layout for addQuads
66
- };
67
- }
68
- // Get font cache for this font family
69
- const fontData = SdfFontHandler.getFontData(props.fontFamily);
70
- if (fontData === undefined) {
71
- // Font not loaded, return empty result
72
- return {
73
- width: 0,
74
- height: 0,
75
- };
50
+ let renderInfo = renderInfoCache.get(cacheKey);
51
+ if (renderInfo !== undefined) {
52
+ return renderInfo;
76
53
  }
77
54
  // Calculate text layout and generate glyph data for caching
78
- layout = generateTextLayout(props, fontData);
79
- layoutCache.set(cacheKey, layout);
80
- // For SDF renderer, ImageData is null since we render via WebGL
81
- return {
55
+ const layout = generateTextLayout(props, SdfFontHandler.getFontData(props.fontFamily));
56
+ renderInfo = {
57
+ type,
58
+ layout,
82
59
  width: layout.width,
83
60
  height: layout.height,
84
61
  remainingLines: layout.remainingLines,
85
62
  hasRemainingText: layout.hasRemainingText,
86
- layout, // Cache layout for addQuads
63
+ atlasTexture: SdfFontHandler.getAtlas(props.fontFamily)
64
+ .ctxTexture,
87
65
  };
66
+ renderInfoCache.set(cacheKey, renderInfo);
67
+ // For SDF renderer, ImageData is null since we render via WebGL
68
+ return renderInfo;
88
69
  };
89
70
  /**
90
71
  * Create and submit WebGL render operations for SDF text
91
72
  * This is called from CoreTextNode during rendering to add SDF text to the render pipeline
92
73
  */
93
- const renderQuads = (renderer, layout, renderProps) => {
94
- const fontFamily = renderProps.fontFamily;
95
- const color = renderProps.color;
96
- const worldAlpha = renderProps.worldAlpha;
97
- const globalTransform = renderProps.globalTransform;
98
- const vertexBuffer = layout.vertexBuffer;
99
- const atlasTexture = SdfFontHandler.getAtlas(fontFamily);
100
- if (atlasTexture === null) {
101
- console.warn(`SDF atlas texture not found for font: ${fontFamily}`);
102
- return;
103
- }
104
- // We can safely assume this is a WebGL renderer else this wouldn't be called
105
- const glw = renderer.glw;
106
- const stride = 4 * Float32Array.BYTES_PER_ELEMENT;
107
- /**
108
- * Wraps a WebGLBuffer in a BufferCollection with the standard SDF vertex
109
- * layout, creates and submits an SdfRenderOp. Called by both the cache-miss
110
- * and cache-hit paths so attribute/op setup only exists in one place.
111
- */
112
- const buildAndSubmitRenderOp = (gpuBuffer) => {
113
- const webGlBuffers = new BufferCollection([
114
- {
115
- buffer: gpuBuffer,
116
- attributes: {
117
- a_position: {
118
- name: 'a_position',
119
- size: 2,
120
- type: glw.FLOAT,
121
- normalized: false,
122
- stride,
123
- offset: 0,
124
- },
125
- a_textureCoords: {
126
- name: 'a_textureCoords',
127
- size: 2,
128
- type: glw.FLOAT,
129
- normalized: false,
130
- stride,
131
- offset: 2 * Float32Array.BYTES_PER_ELEMENT,
132
- },
133
- },
134
- },
135
- ]);
136
- const renderOp = new SdfRenderOp(renderer, sdfShader, {
137
- transform: globalTransform,
138
- color: mergeColorAlpha(color, worldAlpha),
139
- size: layout.fontScale,
140
- distanceRange: layout.distanceRange,
141
- }, webGlBuffers, worldAlpha,
142
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
- renderProps.clippingRect, layout.width, layout.height, false, renderProps.parentHasRenderTexture,
144
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
- renderProps.framebufferDimensions);
146
- renderOp.addTexture(atlasTexture.ctxTexture);
147
- renderOp.numQuads = layout.glyphCount;
148
- renderer.addRenderOp(renderOp);
149
- };
150
- // Reuse the cached WebGLBuffer if one was provided — avoids a createBuffer
151
- // call every frame on nodes whose text has not changed.
152
- const glBufferRefBox = renderProps.glBufferRef;
153
- if (glBufferRefBox.current === null) {
154
- // Cache miss: allocate a new buffer, upload vertex data, then cache it.
155
- const newBuffer = glw.createBuffer();
156
- if (newBuffer === null) {
157
- console.warn('Failed to create WebGL buffer for SDF text');
158
- return;
159
- }
160
- // Upload vertex data directly into the new buffer.
161
- glw.arrayBufferData(newBuffer, vertexBuffer, glw.STATIC_DRAW);
162
- // Write back into the ref box so the owning node can reuse it next frame.
163
- glBufferRefBox.current = newBuffer;
164
- }
165
- // Cache hit (or freshly allocated): build the render op and submit.
166
- buildAndSubmitRenderOp(glBufferRefBox.current);
74
+ const renderQuads = (textNode) => {
75
+ textNode.props.shader = sdfShader;
76
+ renderer.addRenderOp(textNode);
167
77
  };
168
78
  /**
169
79
  * Generate complete text layout with glyph positioning for caching
@@ -293,7 +203,7 @@ const generateTextLayout = (props, fontCache) => {
293
203
  };
294
204
  };
295
205
  const clearCache = () => {
296
- layoutCache.clear();
206
+ renderInfoCache.clear();
297
207
  };
298
208
  /**
299
209
  * SDF Text Renderer - implements TextRenderer interface