@lightningjs/renderer 3.0.0-beta15 → 3.0.0-beta17

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 (245) hide show
  1. package/dist/src/common/CommonTypes.d.ts +11 -0
  2. package/dist/src/core/CoreNode.js +8 -0
  3. package/dist/src/core/CoreNode.js.map +1 -1
  4. package/dist/src/core/CoreTextNode.d.ts +14 -0
  5. package/dist/src/core/CoreTextNode.js +90 -5
  6. package/dist/src/core/CoreTextNode.js.map +1 -1
  7. package/dist/src/core/Stage.js +2 -1
  8. package/dist/src/core/Stage.js.map +1 -1
  9. package/dist/src/core/animations/Animation.d.ts +16 -0
  10. package/dist/src/core/animations/Animation.js +111 -0
  11. package/dist/src/core/animations/Animation.js.map +1 -0
  12. package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
  13. package/dist/src/core/animations/CoreAnimation.js +0 -1
  14. package/dist/src/core/animations/CoreAnimation.js.map +1 -1
  15. package/dist/src/core/animations/CoreTransition.d.ts +24 -0
  16. package/dist/src/core/animations/CoreTransition.js +63 -0
  17. package/dist/src/core/animations/CoreTransition.js.map +1 -0
  18. package/dist/src/core/animations/Playback.d.ts +62 -0
  19. package/dist/src/core/animations/Playback.js +155 -0
  20. package/dist/src/core/animations/Playback.js.map +1 -0
  21. package/dist/src/core/animations/Transition.d.ts +25 -0
  22. package/dist/src/core/animations/Transition.js +63 -0
  23. package/dist/src/core/animations/Transition.js.map +1 -0
  24. package/dist/src/core/animations/utils.d.ts +2 -0
  25. package/dist/src/core/animations/utils.js +137 -0
  26. package/dist/src/core/animations/utils.js.map +1 -0
  27. package/dist/src/core/lib/collectionUtils.d.ts +5 -0
  28. package/dist/src/core/lib/collectionUtils.js +100 -0
  29. package/dist/src/core/lib/collectionUtils.js.map +1 -0
  30. package/dist/src/core/platforms/Platform.d.ts +5 -0
  31. package/dist/src/core/platforms/Platform.js.map +1 -1
  32. package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
  33. package/dist/src/core/platforms/web/WebPlatform.js +3 -0
  34. package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
  35. package/dist/src/core/text-rendering/CanvasFontHandler.js +4 -1
  36. package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
  37. package/dist/src/core/text-rendering/CanvasTextRenderer.js +7 -7
  38. package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
  39. package/dist/src/core/text-rendering/SdfFontHandler.js +3 -0
  40. package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
  41. package/dist/src/core/text-rendering/SdfTextRenderer.js +5 -5
  42. package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
  43. package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +12 -13
  44. package/dist/src/core/text-rendering/TextLayoutEngine.js +242 -186
  45. package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -1
  46. package/dist/src/core/text-rendering/TextRenderer.d.ts +22 -7
  47. package/dist/src/core/utils.d.ts +1 -1
  48. package/dist/src/main-api/Inspector.js +9 -5
  49. package/dist/src/main-api/Inspector.js.map +1 -1
  50. package/dist/src/main-api/Renderer.js +3 -2
  51. package/dist/src/main-api/Renderer.js.map +1 -1
  52. package/dist/tsconfig.dist.tsbuildinfo +1 -1
  53. package/package.json +1 -1
  54. package/src/common/CommonTypes.ts +16 -0
  55. package/src/core/CoreNode.test.ts +50 -1
  56. package/src/core/CoreNode.ts +11 -0
  57. package/src/core/CoreTextNode.ts +112 -5
  58. package/src/core/Stage.ts +2 -1
  59. package/src/core/animations/CoreAnimation.ts +0 -2
  60. package/src/core/platforms/Platform.ts +6 -0
  61. package/src/core/platforms/web/WebPlatform.ts +11 -0
  62. package/src/core/text-rendering/CanvasFontHandler.ts +4 -7
  63. package/src/core/text-rendering/CanvasTextRenderer.ts +6 -8
  64. package/src/core/text-rendering/SdfFontHandler.ts +3 -0
  65. package/src/core/text-rendering/SdfTextRenderer.ts +4 -5
  66. package/src/core/text-rendering/TextLayoutEngine.ts +396 -226
  67. package/src/core/text-rendering/TextRenderer.ts +22 -7
  68. package/src/core/text-rendering/tests/{SdfTests.test.ts → TextLayoutEngine.test.ts} +103 -64
  69. package/src/main-api/Inspector.ts +9 -5
  70. package/src/main-api/Renderer.ts +3 -2
  71. package/dist/src/core/TextureError.d.ts +0 -11
  72. package/dist/src/core/TextureError.js +0 -37
  73. package/dist/src/core/TextureError.js.map +0 -1
  74. package/dist/src/core/platform.d.ts +0 -10
  75. package/dist/src/core/platform.js +0 -81
  76. package/dist/src/core/platform.js.map +0 -1
  77. package/dist/src/core/renderers/CoreShader.d.ts +0 -9
  78. package/dist/src/core/renderers/CoreShader.js +0 -28
  79. package/dist/src/core/renderers/CoreShader.js.map +0 -1
  80. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
  81. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
  82. package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
  83. package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -17
  84. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -125
  85. package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
  86. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
  87. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
  88. package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
  89. package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
  90. package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
  91. package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
  92. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
  93. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
  94. package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
  95. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
  96. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
  97. package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
  98. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
  99. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
  100. package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
  101. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -65
  102. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -269
  103. package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
  104. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
  105. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
  106. package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
  107. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
  108. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
  109. package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
  110. package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
  111. package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
  112. package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
  113. package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
  114. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
  115. package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
  116. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
  117. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
  118. package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
  119. package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
  120. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
  121. package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
  122. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
  123. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
  124. package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
  125. package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
  126. package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
  127. package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
  128. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
  129. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
  130. package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
  131. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
  132. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
  133. package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
  134. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
  135. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
  136. package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
  137. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
  138. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
  139. package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
  140. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
  141. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
  142. package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
  143. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
  144. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
  145. package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
  146. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
  147. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
  148. package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
  149. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
  150. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
  151. package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
  152. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
  153. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
  154. package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
  155. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
  156. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
  157. package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
  158. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
  159. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
  160. package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
  161. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
  162. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
  163. package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
  164. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
  165. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
  166. package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
  167. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
  168. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
  169. package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
  170. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
  171. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
  172. package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
  173. package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
  174. package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
  175. package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
  176. package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
  177. package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
  178. package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
  179. package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
  180. package/dist/src/core/text-rendering/TrFontManager.js +0 -131
  181. package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
  182. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
  183. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
  184. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
  185. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
  186. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
  187. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
  188. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
  189. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
  190. package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
  191. package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
  192. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
  193. package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
  194. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
  195. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
  196. package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
  197. package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
  198. package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
  199. package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
  200. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
  201. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
  202. package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
  203. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
  204. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
  205. package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
  206. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
  207. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
  208. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
  209. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
  210. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
  211. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
  212. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
  213. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
  214. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
  215. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
  216. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
  217. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
  218. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
  219. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
  220. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
  221. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
  222. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
  223. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
  224. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
  225. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
  226. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
  227. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
  228. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
  229. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
  230. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
  231. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
  232. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
  233. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
  234. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
  235. package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
  236. package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
  237. package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
  238. package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
  239. package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
  240. package/dist/src/main-api/DynamicShaderController.js +0 -58
  241. package/dist/src/main-api/DynamicShaderController.js.map +0 -1
  242. package/dist/src/main-api/ShaderController.d.ts +0 -31
  243. package/dist/src/main-api/ShaderController.js +0 -37
  244. package/dist/src/main-api/ShaderController.js.map +0 -1
  245. package/src/core/text-rendering/tests/Canvas.test.ts +0 -378
@@ -1,373 +0,0 @@
1
- import type { Dimensions } from '../../../common/CommonTypes.js';
2
- import type { EventEmitter } from '../../../common/EventEmitter.js';
3
- import type { CoreTextNode } from '../../CoreTextNode.js';
4
- import type { Stage } from '../../Stage.js';
5
- import type { Matrix3d } from '../../lib/Matrix3d.js';
6
- import type { RectWithValid } from '../../lib/utils.js';
7
- import type { TrFontFace, TrFontFaceDescriptors } from '../font-face-types/TrFontFace.js';
8
- import type { TextBaseline, TextVerticalAlign } from './LightningTextTextureRenderer.js';
9
- /**
10
- * Augmentable map of text renderer type IDs to text renderer types.
11
- *
12
- * @example
13
- * ```ts
14
- * declare module './TextRenderer' {
15
- * interface TextRendererMap {
16
- * canvas: CanvasTextRenderer;
17
- * }
18
- * }
19
- * ```
20
- */
21
- export interface TextRendererMap {
22
- }
23
- export interface TextRendererState {
24
- props: TrProps;
25
- /**
26
- * Whether or not the text renderer state is scheduled to be updated
27
- * via queueMicrotask.
28
- */
29
- updateScheduled: boolean;
30
- status: 'initialState' | 'loading' | 'loaded' | 'failed' | 'destroyed';
31
- /**
32
- * Event emitter for the text renderer
33
- */
34
- emitter: EventEmitter;
35
- /**
36
- * Force a full layout pass for the calculation of the
37
- * total dimensions of the text
38
- */
39
- forceFullLayoutCalc: boolean;
40
- textW: number | undefined;
41
- textH: number | undefined;
42
- isRenderable: boolean;
43
- debugData: {
44
- updateCount: number;
45
- layoutCount: number;
46
- drawCount: number;
47
- lastLayoutNumCharacters: number;
48
- layoutSum: number;
49
- drawSum: number;
50
- bufferSize: number;
51
- };
52
- }
53
- export interface TextRendererDebugProps {
54
- showRenderWindow: boolean;
55
- showVisibleRect: boolean;
56
- showElementRect: boolean;
57
- disableScissor: boolean;
58
- printLayoutTime: boolean;
59
- }
60
- /**
61
- * Text renderer properties that are used in resolving appropriate font faces
62
- *
63
- * @remarks
64
- * Extended by {@link TrProps}
65
- */
66
- export interface TrFontProps {
67
- /**
68
- * Font Family
69
- *
70
- * @internalRemarks
71
- * `fontFamily` is defined currently as single string, but in the future we may want to
72
- * support multiple font family fallbacks, as this is supported by CSS / Canvas2d. We can
73
- * do this in a backwards compatible way by unioning an array of strings to the
74
- * `fontFamily` property.
75
- */
76
- fontFamily: string;
77
- /**
78
- * Font Weight
79
- *
80
- * @remarks
81
- * The font weight to use when looking up the font face. This can be a numeric
82
- * value between 1 and 1000, or one of the following strings:
83
- * - `'normal'` - same as 400
84
- * - `'bold'` - same as 700
85
- * - `'bolder'` - (Not yet properly supported)
86
- */
87
- fontWeight: TrFontFaceDescriptors['weight'] | 'bolder' | 'lighter';
88
- /**
89
- * Font Style
90
- *
91
- * @remarks
92
- * The font style to use when looking up the font face. This can be one of the
93
- * following strings:
94
- * - `'normal'`
95
- * - `'italic'`
96
- * - `'oblique'`
97
- */
98
- fontStyle: TrFontFaceDescriptors['style'];
99
- /**
100
- * Font Stretch
101
- *
102
- * @remarks
103
- * The font stretch to use when looking up the font face. This can be one of the
104
- * following strings:
105
- * - `'normal'`
106
- * - `'ultra-condensed'`
107
- * - `'extra-condensed'`
108
- * - `'condensed'`
109
- * - `'semi-condensed'`
110
- * - `'semi-expanded'`
111
- * - `'expanded'`
112
- * - `'extra-expanded'`
113
- * - `'ultra-expanded'`
114
- *
115
- * @default 'normal'
116
- */
117
- fontStretch: TrFontFaceDescriptors['stretch'];
118
- /**
119
- * Font Size
120
- *
121
- * @remarks
122
- * The font size to use when looking up the font face.
123
- *
124
- * The font size is specified in pixels and is the height of the font's
125
- * em-square. The em-square is essentially the height of the capital letters
126
- * for the font. The actual height of the text can be larger than the
127
- * specified font size, as the font may have ascenders and descenders that
128
- * extend beyond the em-square.
129
- *
130
- * @default 16
131
- */
132
- fontSize: number;
133
- }
134
- export interface TrProps extends TrFontProps {
135
- /**
136
- * Text to display
137
- *
138
- * @default ''
139
- */
140
- text: string;
141
- /**
142
- * Text alignment
143
- *
144
- * @remarks
145
- * Alignment of the text relative to it's contained bounds. For best results,
146
- * use {@link contain} mode `'width'` or `'both'` and a set an explicit
147
- * {@link width} for the text to be aligned within.
148
- *
149
- * @default 'left'
150
- */
151
- textAlign: 'left' | 'center' | 'right';
152
- /**
153
- * Color of text
154
- *
155
- * @remarks
156
- * The color value is a number in the format 0xRRGGBBAA, where RR is the red
157
- * component, GG is the green component, BB is the blue component, and AA is
158
- * the alpha component.
159
- *
160
- * @default 0xffffffff (opaque white)
161
- */
162
- color: number;
163
- x: number;
164
- y: number;
165
- /**
166
- * Contain mode for text
167
- *
168
- * @remarks
169
- * The contain mode determines how the text is contained within the bounds
170
- * of the Text Node. The default value is `'none'`, which means that the
171
- * Text Renderer will not constrain the text in any way. `'width'` mode will
172
- * constrain the text to the set width wrapping lines as necessary, and
173
- * `'both'` mode will constrain the text to both the set width and height
174
- * wrapping lines and truncating text as necessary.
175
- *
176
- * ## Text Auto-size Behavior
177
- * Depending on the set contain mode, after the text 'loaded' event is emitted,
178
- * the text node may have either its {@link width} and {@link height} updated
179
- * to match the rendered size of the text.
180
- *
181
- * When contain mode is 'none', both the {@link width} and {@link height}
182
- * properties are updated.
183
- *
184
- * When contain mode is 'width', only the {@link height} property is updated.
185
- *
186
- * When contain mode is 'both', neither property is updated.
187
- *
188
- * @default 'none'
189
- */
190
- contain: 'none' | 'width' | 'both';
191
- width: number;
192
- height: number;
193
- /**
194
- * Whether or not the text is scrollable
195
- *
196
- * @remarks
197
- * If `scrollable` is `true`, the text can be scrolled vertically within the
198
- * bounds of the Text Node. You can set the scroll position using the
199
- * {@link scrollY} property.
200
- *
201
- * @default false
202
- */
203
- scrollable: boolean;
204
- /**
205
- * Vertical scroll position for text
206
- *
207
- * @remarks
208
- * The vertical scroll position of the text. This property is only used if
209
- * {@link scrollable} is `true`.
210
- *
211
- * @default 0
212
- */
213
- scrollY: number;
214
- /**
215
- * Vertical offset for text
216
- *
217
- * @remarks
218
- * The vertical offset of the text. This property is only used if
219
- * {@link scrollable} is `true`.
220
- *
221
- * @default 0
222
- */
223
- offsetY: number;
224
- /**
225
- * Letter spacing for text (in pixels)
226
- *
227
- * @remarks
228
- * This property sets additional (or reduced, if value is negative) spacing
229
- * between characters in the text.
230
- *
231
- * @default 0
232
- */
233
- letterSpacing: number;
234
- /**
235
- * Line height for text (in pixels)
236
- *
237
- * @remarks
238
- * This property sets the height of each line. If set to `undefined`, the
239
- * line height will be calculated based on the font and font size to be the
240
- * minimal height required to completely contain a line of text.
241
- *
242
- * See: https://github.com/lightning-js/renderer/issues/170
243
- *
244
- * @default `undefined`
245
- */
246
- lineHeight: number | undefined;
247
- /**
248
- * Max lines for text
249
- *
250
- * @remarks
251
- * This property sets max number of lines of a text paragraph.
252
- * Not yet implemented in the SDF renderer.
253
- *
254
- * @default 0
255
- */
256
- maxLines: number;
257
- /**
258
- * Baseline for text
259
- *
260
- * @remarks
261
- * This property sets the text baseline used when drawing text.
262
- * Not yet implemented in the SDF renderer.
263
- *
264
- * @default alphabetic
265
- */
266
- textBaseline: TextBaseline;
267
- /**
268
- * Vertical Align for text when lineHeight > fontSize
269
- *
270
- * @remarks
271
- * This property sets the vertical align of the text.
272
- * Not yet implemented in the SDF renderer.
273
- *
274
- * @default middle
275
- */
276
- verticalAlign: TextVerticalAlign;
277
- /**
278
- * Overflow Suffix for text
279
- *
280
- * @remarks
281
- * The suffix to be added when text is cropped due to overflow.
282
- * Not yet implemented in the SDF renderer.
283
- *
284
- * @default "..."
285
- */
286
- overflowSuffix: string;
287
- zIndex: number;
288
- debug: Partial<TextRendererDebugProps>;
289
- }
290
- export type TrPropSetters<StateT = TextRendererState> = {
291
- [key in keyof TrProps]: (state: StateT, value: TrProps[key]) => void;
292
- };
293
- /**
294
- * Event handler for when text is loaded
295
- *
296
- * @remarks
297
- * Emitted by state.emitter
298
- */
299
- export type TrLoadedEventHandler = (target: any) => void;
300
- /**
301
- * Event handler for when text failed to load
302
- *
303
- * @remarks
304
- * Emitted by state.emitter
305
- */
306
- export type TrFailedEventHandler = (target: any, error: Error) => void;
307
- export declare abstract class TextRenderer<StateT extends TextRendererState = TextRendererState> {
308
- protected stage: Stage;
309
- readonly set: Readonly<TrPropSetters<StateT>>;
310
- abstract type: 'canvas' | 'sdf';
311
- constructor(stage: Stage);
312
- setStatus(state: StateT, status: StateT['status'], error?: Error): void;
313
- /**
314
- * Allows the CoreTextNode to communicate changes to the isRenderable state of
315
- * the itself.
316
- *
317
- * @param state
318
- * @param renderable
319
- */
320
- setIsRenderable(state: StateT, renderable: boolean): void;
321
- /**
322
- * Called by constructor to get a map of property setter functions for this renderer.
323
- */
324
- abstract getPropertySetters(): Partial<TrPropSetters<StateT>>;
325
- /**
326
- * Given text renderer properties (particularly the specific properties related to font selection)
327
- * returns whether or not the renderer can render it.
328
- *
329
- * @param props
330
- */
331
- abstract canRenderFont(props: TrFontProps): boolean;
332
- /**
333
- * Called by the TrFontManager to find out if a newly added font face is supported
334
- * by this renderer.
335
- *
336
- * @param fontFace
337
- */
338
- abstract isFontFaceSupported(fontFace: TrFontFace): boolean;
339
- /**
340
- * Called by the TrFontManager to add a font face to the renderer's font registry.
341
- *
342
- * @remarks
343
- * This method MUST ONLY be called for a fontFace that previously passed the
344
- * {@link isFontFaceSupported} check.
345
- *
346
- * @param fontFace
347
- */
348
- abstract addFontFace(fontFace: TrFontFace): void;
349
- abstract createState(props: TrProps, node: CoreTextNode): StateT;
350
- /**
351
- * Destroy/Clean up the state object
352
- *
353
- * @remarks
354
- * Opposite of createState(). Frees any event listeners / resources held by
355
- * the state that may not reliably get garbage collected.
356
- *
357
- * @param state
358
- */
359
- destroyState(state: StateT): void;
360
- /**
361
- * Schedule a state update via queueMicrotask
362
- *
363
- * @remarks
364
- * This method is used to schedule a state update via queueMicrotask. This
365
- * method should be called whenever a state update is needed, and it will
366
- * ensure that the state is only updated once per microtask.
367
- * @param state
368
- * @returns
369
- */
370
- scheduleUpdateState(state: StateT): void;
371
- abstract updateState(state: StateT): void;
372
- renderQuads?(state: StateT, transform: Matrix3d, clippingRect: RectWithValid, alpha: number, parentHasRenderTexture: boolean, framebufferDimensions: Dimensions | undefined): void;
373
- }
@@ -1,178 +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 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
- const trPropSetterDefaults = {
20
- x: (state, value) => {
21
- state.props.x = value;
22
- },
23
- y: (state, value) => {
24
- state.props.y = value;
25
- },
26
- width: (state, value) => {
27
- state.props.width = value;
28
- },
29
- height: (state, value) => {
30
- state.props.height = value;
31
- },
32
- color: (state, value) => {
33
- state.props.color = value;
34
- },
35
- zIndex: (state, value) => {
36
- state.props.zIndex = value;
37
- },
38
- fontFamily: (state, value) => {
39
- state.props.fontFamily = value;
40
- },
41
- fontWeight: (state, value) => {
42
- state.props.fontWeight = value;
43
- },
44
- fontStyle: (state, value) => {
45
- state.props.fontStyle = value;
46
- },
47
- fontStretch: (state, value) => {
48
- state.props.fontStretch = value;
49
- },
50
- fontSize: (state, value) => {
51
- state.props.fontSize = value;
52
- },
53
- text: (state, value) => {
54
- state.props.text = value;
55
- },
56
- textAlign: (state, value) => {
57
- state.props.textAlign = value;
58
- },
59
- contain: (state, value) => {
60
- state.props.contain = value;
61
- },
62
- offsetY: (state, value) => {
63
- state.props.offsetY = value;
64
- },
65
- scrollable: (state, value) => {
66
- state.props.scrollable = value;
67
- },
68
- scrollY: (state, value) => {
69
- state.props.scrollY = value;
70
- },
71
- letterSpacing: (state, value) => {
72
- state.props.letterSpacing = value;
73
- },
74
- lineHeight: (state, value) => {
75
- state.props.lineHeight = value;
76
- },
77
- maxLines: (state, value) => {
78
- state.props.maxLines = value;
79
- },
80
- textBaseline: (state, value) => {
81
- state.props.textBaseline = value;
82
- },
83
- verticalAlign: (state, value) => {
84
- state.props.verticalAlign = value;
85
- },
86
- overflowSuffix: (state, value) => {
87
- state.props.overflowSuffix = value;
88
- },
89
- debug: (state, value) => {
90
- state.props.debug = value;
91
- },
92
- };
93
- export class TextRenderer {
94
- stage;
95
- set;
96
- constructor(stage) {
97
- this.stage = stage;
98
- const propSetters = {
99
- ...trPropSetterDefaults,
100
- ...this.getPropertySetters(),
101
- };
102
- // For each prop setter add a wrapper method that checks if the prop is
103
- // different before calling the setter
104
- const propSet = {};
105
- Object.keys(propSetters).forEach((key) => {
106
- Object.defineProperty(propSet, key, {
107
- value: (state, value) => {
108
- // Check if the current prop value is different before calling the setter
109
- if (state.props[key] !== value) {
110
- propSetters[key](state, value);
111
- // Assume any prop change will require a render
112
- // This ensures that renders are triggered appropriately even with RAF paused
113
- this.stage.requestRender();
114
- }
115
- },
116
- writable: false, // Prevents property from being changed
117
- configurable: false, // Prevents property from being deleted
118
- });
119
- });
120
- this.set = propSet;
121
- }
122
- setStatus(state, status, error) {
123
- // Don't emit the same status twice
124
- if (state.status === status) {
125
- return;
126
- }
127
- state.status = status;
128
- state.emitter.emit(status, error);
129
- }
130
- /**
131
- * Allows the CoreTextNode to communicate changes to the isRenderable state of
132
- * the itself.
133
- *
134
- * @param state
135
- * @param renderable
136
- */
137
- setIsRenderable(state, renderable) {
138
- state.isRenderable = renderable;
139
- }
140
- /**
141
- * Destroy/Clean up the state object
142
- *
143
- * @remarks
144
- * Opposite of createState(). Frees any event listeners / resources held by
145
- * the state that may not reliably get garbage collected.
146
- *
147
- * @param state
148
- */
149
- destroyState(state) {
150
- this.setStatus(state, 'destroyed');
151
- state.emitter.removeAllListeners();
152
- }
153
- /**
154
- * Schedule a state update via queueMicrotask
155
- *
156
- * @remarks
157
- * This method is used to schedule a state update via queueMicrotask. This
158
- * method should be called whenever a state update is needed, and it will
159
- * ensure that the state is only updated once per microtask.
160
- * @param state
161
- * @returns
162
- */
163
- scheduleUpdateState(state) {
164
- if (state.updateScheduled) {
165
- return;
166
- }
167
- state.updateScheduled = true;
168
- queueMicrotask(() => {
169
- // If the state has been destroyed, don't update it
170
- if (state.status === 'destroyed') {
171
- return;
172
- }
173
- state.updateScheduled = false;
174
- this.updateState(state);
175
- });
176
- }
177
- }
178
- //# sourceMappingURL=TextRenderer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextRenderer.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/renderers/TextRenderer.ts"],"names":[],"mappings":"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"}
@@ -1,29 +0,0 @@
1
- import type { CoreShaderManager, EffectMap, ShaderMap } from '../core/CoreShaderManager.js';
2
- import type { ExtractProps } from '../core/CoreTextureManager.js';
3
- import type { EffectDesc } from '../core/renderers/webgl/shaders/effects/ShaderEffect.js';
4
- import type { BaseShaderController } from './ShaderController.js';
5
- type OptionalName<T> = T extends string ? T : never;
6
- type MapEffectProps<Effects extends [...{
7
- name?: string;
8
- type: keyof EffectMap;
9
- }[]]> = {
10
- [K in Effects[number] as OptionalName<K['name']>]: ExtractProps<EffectMap[K['type']]>;
11
- };
12
- export type DynamicEffects<T extends [...{
13
- name?: string;
14
- type: keyof EffectMap;
15
- }[]]> = {
16
- [K in keyof T]: EffectDesc<T[K]>;
17
- };
18
- export declare class DynamicShaderController<Effects extends [...{
19
- name?: string;
20
- type: keyof EffectMap;
21
- }[]]> implements BaseShaderController {
22
- readonly shader: InstanceType<ShaderMap['DynamicShader']>;
23
- private resolvedProps;
24
- props: MapEffectProps<Effects>;
25
- type: 'DynamicShader';
26
- constructor(shader: InstanceType<ShaderMap['DynamicShader']>, props: ExtractProps<ShaderMap['DynamicShader']>, shManager: CoreShaderManager);
27
- getResolvedProps(): import("../core/renderers/webgl/shaders/DynamicShader.js").DynamicShaderProps;
28
- }
29
- export {};
@@ -1,58 +0,0 @@
1
- export class DynamicShaderController {
2
- shader;
3
- resolvedProps;
4
- props;
5
- type;
6
- constructor(shader, props, shManager) {
7
- this.shader = shader;
8
- this.type = 'DynamicShader';
9
- this.resolvedProps = props;
10
- const effectConstructors = shManager.getRegisteredEffects();
11
- const definedProps = {};
12
- const effects = props.effects;
13
- const effectsLength = effects.length;
14
- for (let i = 0; i < effectsLength; i++) {
15
- const { name: effectName, props: effectProps, type: effectType, } = effects[i];
16
- if (effectName === undefined) {
17
- continue;
18
- }
19
- const definedEffectProps = {};
20
- const propEntries = Object.keys(effectProps);
21
- const propEntriesLength = propEntries.length;
22
- for (let j = 0; j < propEntriesLength; j++) {
23
- const propName = propEntries[j];
24
- Object.defineProperty(definedEffectProps, propName, {
25
- get: () => {
26
- return this.resolvedProps.effects[i].props[propName].value;
27
- },
28
- set: (value) => {
29
- const target = this.resolvedProps.effects[i].props[propName];
30
- target.value = value;
31
- if (target.hasValidator) {
32
- value = target.validatedValue = effectConstructors[effectType]
33
- .uniforms[propName]?.validator(value, effectProps);
34
- }
35
- if (target.hasProgramValueUpdater) {
36
- effectConstructors[effectType].uniforms[propName]
37
- ?.updateProgramValue(target);
38
- }
39
- else {
40
- target.programValue = value;
41
- }
42
- shManager.renderer.stage.requestRender();
43
- },
44
- });
45
- }
46
- Object.defineProperty(definedProps, effectName, {
47
- get: () => {
48
- return definedEffectProps;
49
- },
50
- });
51
- }
52
- this.props = definedProps;
53
- }
54
- getResolvedProps() {
55
- return this.resolvedProps;
56
- }
57
- }
58
- //# sourceMappingURL=DynamicShaderController.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DynamicShaderController.js","sourceRoot":"","sources":["../../../src/main-api/DynamicShaderController.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAO,uBAAuB;IASvB;IALH,aAAa,CAA2C;IAChE,KAAK,CAA0B;IAC/B,IAAI,CAAkB;IAEtB,YACW,MAAgD,EACzD,KAA+C,EAC/C,SAA4B;QAFnB,WAAM,GAAN,MAAM,CAA0C;QAIzD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,MAAM,kBAAkB,GAAG,SAAS,CAAC,oBAAoB,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAQ,CAAC;QAC/B,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;QAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,EACJ,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,UAAU,GACjB,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YAChB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YACD,MAAM,kBAAkB,GAAG,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC;gBACjC,MAAM,CAAC,cAAc,CAAC,kBAAkB,EAAE,QAAQ,EAAE;oBAClD,GAAG,EAAE,GAAG,EAAE;wBACR,OACE,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,QAAQ,CAI/C,CAAC,KAAK,CAAC;oBACV,CAAC;oBACD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;wBACb,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAQ,CAAC,CAAC,CAAE,CAAC,KAAK,CAClD,QAAQ,CACc,CAAC;wBACzB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;wBACrB,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;4BACxB,KAAK,GAAG,MAAM,CAAC,cAAc,GAAG,kBAAkB,CAAC,UAAU,CAAE;iCAC5D,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;wBACxD,CAAC;wBACD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;4BAClC,kBAAkB,CAAC,UAAU,CAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCAChD,EAAE,kBAAmB,CAAC,MAA8B,CAAC,CAAC;wBAC1D,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC9B,CAAC;wBACD,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;oBAC3C,CAAC;iBACF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EAAE;gBAC9C,GAAG,EAAE,GAAG,EAAE;oBACR,OAAO,kBAAkB,CAAC;gBAC5B,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,YAAuC,CAAC;IACvD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF"}
@@ -1,31 +0,0 @@
1
- import type { ShaderMap } from '../core/CoreShaderManager.js';
2
- import type { ExtractProps } from '../core/CoreTextureManager.js';
3
- import type { Stage } from '../core/Stage.js';
4
- import type { CoreShader } from '../core/renderers/CoreShader.js';
5
- /**
6
- * Shader Controller Base Interface
7
- *
8
- * @remarks
9
- * Used directly this interface is like an `any` type for Shader Controllers.
10
- * But it is also used as a base for more specific Shader Controller interfaces.
11
- */
12
- export interface BaseShaderController {
13
- type: keyof ShaderMap;
14
- shader: CoreShader;
15
- props: Record<string, any>;
16
- getResolvedProps: () => Record<string, any>;
17
- }
18
- /**
19
- * Shader Controller Class
20
- *
21
- * @remarks
22
- * This class is used to control shader props.
23
- */
24
- export declare class ShaderController<S extends keyof ShaderMap> implements BaseShaderController {
25
- readonly type: S;
26
- readonly shader: InstanceType<ShaderMap[S]>;
27
- private resolvedProps;
28
- props: ExtractProps<ShaderMap[S]>;
29
- constructor(type: S, shader: InstanceType<ShaderMap[S]>, props: ExtractProps<ShaderMap[S]>, stage: Stage);
30
- getResolvedProps(): ExtractProps<ShaderMap[S]>;
31
- }