@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.
- package/dist/src/common/CommonTypes.d.ts +11 -0
- package/dist/src/core/CoreNode.js +8 -0
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +14 -0
- package/dist/src/core/CoreTextNode.js +90 -5
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/Stage.js +2 -1
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/animations/Animation.d.ts +16 -0
- package/dist/src/core/animations/Animation.js +111 -0
- package/dist/src/core/animations/Animation.js.map +1 -0
- package/dist/src/core/animations/CoreAnimation.d.ts +0 -1
- package/dist/src/core/animations/CoreAnimation.js +0 -1
- package/dist/src/core/animations/CoreAnimation.js.map +1 -1
- package/dist/src/core/animations/CoreTransition.d.ts +24 -0
- package/dist/src/core/animations/CoreTransition.js +63 -0
- package/dist/src/core/animations/CoreTransition.js.map +1 -0
- package/dist/src/core/animations/Playback.d.ts +62 -0
- package/dist/src/core/animations/Playback.js +155 -0
- package/dist/src/core/animations/Playback.js.map +1 -0
- package/dist/src/core/animations/Transition.d.ts +25 -0
- package/dist/src/core/animations/Transition.js +63 -0
- package/dist/src/core/animations/Transition.js.map +1 -0
- package/dist/src/core/animations/utils.d.ts +2 -0
- package/dist/src/core/animations/utils.js +137 -0
- package/dist/src/core/animations/utils.js.map +1 -0
- package/dist/src/core/lib/collectionUtils.d.ts +5 -0
- package/dist/src/core/lib/collectionUtils.js +100 -0
- package/dist/src/core/lib/collectionUtils.js.map +1 -0
- package/dist/src/core/platforms/Platform.d.ts +5 -0
- package/dist/src/core/platforms/Platform.js.map +1 -1
- package/dist/src/core/platforms/web/WebPlatform.d.ts +1 -0
- package/dist/src/core/platforms/web/WebPlatform.js +3 -0
- package/dist/src/core/platforms/web/WebPlatform.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.js +4 -1
- package/dist/src/core/text-rendering/CanvasFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/CanvasTextRenderer.js +7 -7
- package/dist/src/core/text-rendering/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/SdfFontHandler.js +3 -0
- package/dist/src/core/text-rendering/SdfFontHandler.js.map +1 -1
- package/dist/src/core/text-rendering/SdfTextRenderer.js +5 -5
- package/dist/src/core/text-rendering/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/TextLayoutEngine.d.ts +12 -13
- package/dist/src/core/text-rendering/TextLayoutEngine.js +242 -186
- package/dist/src/core/text-rendering/TextLayoutEngine.js.map +1 -1
- package/dist/src/core/text-rendering/TextRenderer.d.ts +22 -7
- package/dist/src/core/utils.d.ts +1 -1
- package/dist/src/main-api/Inspector.js +9 -5
- package/dist/src/main-api/Inspector.js.map +1 -1
- package/dist/src/main-api/Renderer.js +3 -2
- package/dist/src/main-api/Renderer.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/common/CommonTypes.ts +16 -0
- package/src/core/CoreNode.test.ts +50 -1
- package/src/core/CoreNode.ts +11 -0
- package/src/core/CoreTextNode.ts +112 -5
- package/src/core/Stage.ts +2 -1
- package/src/core/animations/CoreAnimation.ts +0 -2
- package/src/core/platforms/Platform.ts +6 -0
- package/src/core/platforms/web/WebPlatform.ts +11 -0
- package/src/core/text-rendering/CanvasFontHandler.ts +4 -7
- package/src/core/text-rendering/CanvasTextRenderer.ts +6 -8
- package/src/core/text-rendering/SdfFontHandler.ts +3 -0
- package/src/core/text-rendering/SdfTextRenderer.ts +4 -5
- package/src/core/text-rendering/TextLayoutEngine.ts +396 -226
- package/src/core/text-rendering/TextRenderer.ts +22 -7
- package/src/core/text-rendering/tests/{SdfTests.test.ts → TextLayoutEngine.test.ts} +103 -64
- package/src/main-api/Inspector.ts +9 -5
- package/src/main-api/Renderer.ts +3 -2
- package/dist/src/core/TextureError.d.ts +0 -11
- package/dist/src/core/TextureError.js +0 -37
- package/dist/src/core/TextureError.js.map +0 -1
- package/dist/src/core/platform.d.ts +0 -10
- package/dist/src/core/platform.js +0 -81
- package/dist/src/core/platform.js.map +0 -1
- package/dist/src/core/renderers/CoreShader.d.ts +0 -9
- package/dist/src/core/renderers/CoreShader.js +0 -28
- package/dist/src/core/renderers/CoreShader.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.d.ts +0 -33
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js +0 -250
- package/dist/src/core/renderers/canvas/CanvasCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.d.ts +0 -17
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js +0 -125
- package/dist/src/core/renderers/canvas/CanvasCoreTexture.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.d.ts +0 -14
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js +0 -138
- package/dist/src/core/renderers/canvas/internal/C2DShaderUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/internal/ColorUtils.d.ts +0 -19
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js +0 -58
- package/dist/src/core/renderers/canvas/internal/ColorUtils.js.map +0 -1
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.d.ts +0 -10
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js +0 -43
- package/dist/src/core/renderers/canvas/shaders/UnsupportedShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.d.ts +0 -12
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js +0 -58
- package/dist/src/core/renderers/webgl/WebGlCoreCtxRenderTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +0 -9
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +0 -38
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +0 -65
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +0 -269
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +0 -34
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +0 -114
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +0 -133
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +0 -616
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +0 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +0 -83
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +0 -233
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +0 -87
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.d.ts +0 -10
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +0 -119
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +0 -29
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +0 -413
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.d.ts +0 -28
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +0 -131
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.d.ts +0 -47
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +0 -160
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderBottomEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.d.ts +0 -30
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderLeftEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderRightEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.d.ts +0 -31
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/BorderTopEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.d.ts +0 -9
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js +0 -136
- package/dist/src/core/renderers/webgl/shaders/effects/EffectUtils.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.d.ts +0 -36
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js +0 -85
- package/dist/src/core/renderers/webgl/shaders/effects/FadeOutEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.d.ts +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js +0 -104
- package/dist/src/core/renderers/webgl/shaders/effects/GlitchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +0 -22
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +0 -45
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.d.ts +0 -58
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js +0 -80
- package/dist/src/core/renderers/webgl/shaders/effects/HolePunchEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.d.ts +0 -35
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js +0 -129
- package/dist/src/core/renderers/webgl/shaders/effects/LinearGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.d.ts +0 -39
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js +0 -116
- package/dist/src/core/renderers/webgl/shaders/effects/RadialGradientEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.d.ts +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js +0 -127
- package/dist/src/core/renderers/webgl/shaders/effects/RadialProgressEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.d.ts +0 -40
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js +0 -71
- package/dist/src/core/renderers/webgl/shaders/effects/RadiusEffect.js.map +0 -1
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.d.ts +0 -115
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js +0 -61
- package/dist/src/core/renderers/webgl/shaders/effects/ShaderEffect.js.map +0 -1
- package/dist/src/core/text-rendering/TextRenderingUtils.d.ts +0 -12
- package/dist/src/core/text-rendering/TextRenderingUtils.js +0 -14
- package/dist/src/core/text-rendering/TextRenderingUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TextTextureRendererUtils.d.ts +0 -72
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js +0 -217
- package/dist/src/core/text-rendering/TextTextureRendererUtils.js.map +0 -1
- package/dist/src/core/text-rendering/TrFontManager.d.ts +0 -26
- package/dist/src/core/text-rendering/TrFontManager.js +0 -131
- package/dist/src/core/text-rendering/TrFontManager.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.d.ts +0 -39
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +0 -125
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.d.ts +0 -103
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js +0 -21
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/FontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +0 -62
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +0 -88
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.d.ts +0 -118
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js +0 -63
- package/dist/src/core/text-rendering/font-face-types/TrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.d.ts +0 -14
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js +0 -66
- package/dist/src/core/text-rendering/font-face-types/WebTrFontFace.js.map +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.d.ts +0 -1
- package/dist/src/core/text-rendering/font-face-types/utils.js +0 -38
- package/dist/src/core/text-rendering/font-face-types/utils.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.d.ts +0 -59
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +0 -397
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +0 -120
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +0 -551
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +0 -92
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +0 -607
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.d.ts +0 -12
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js +0 -61
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/PeekableGenerator.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.d.ts +0 -33
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js +0 -52
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/SpecialCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.d.ts +0 -13
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js +0 -32
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/constants.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +0 -23
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +0 -84
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.d.ts +0 -4
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js +0 -34
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getUnicodeCodepoints.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +0 -20
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +0 -308
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.d.ts +0 -10
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js +0 -40
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +0 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +0 -70
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +0 -16
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +0 -39
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +0 -1
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +0 -373
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +0 -178
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +0 -1
- package/dist/src/main-api/DynamicShaderController.d.ts +0 -29
- package/dist/src/main-api/DynamicShaderController.js +0 -58
- package/dist/src/main-api/DynamicShaderController.js.map +0 -1
- package/dist/src/main-api/ShaderController.d.ts +0 -31
- package/dist/src/main-api/ShaderController.js +0 -37
- package/dist/src/main-api/ShaderController.js.map +0 -1
- package/src/core/text-rendering/tests/Canvas.test.ts +0 -378
|
@@ -225,15 +225,29 @@ export interface TrProps extends TrFontProps {
|
|
|
225
225
|
* @remarks
|
|
226
226
|
* This property sets how words should break when reaching the end of a line.
|
|
227
227
|
*
|
|
228
|
-
* - `'
|
|
228
|
+
* - `'overflow'`: Uses the Css/HTML normal word-break behavior, generally not used in app development.
|
|
229
229
|
* - `'break-all'`: To prevent overflow, word breaks should happen between any two characters.
|
|
230
230
|
* - `'break-word'`: To prevent overflow, word breaks should happen between words. If words are too long word breaks happen between any two characters.
|
|
231
231
|
*
|
|
232
|
-
* @default "
|
|
232
|
+
* @default "break-word"
|
|
233
233
|
*/
|
|
234
|
-
wordBreak: '
|
|
234
|
+
wordBreak: 'overflow' | 'break-all' | 'break-word';
|
|
235
235
|
|
|
236
|
-
|
|
236
|
+
/**
|
|
237
|
+
* contain mode for text
|
|
238
|
+
*
|
|
239
|
+
* @remarks
|
|
240
|
+
*
|
|
241
|
+
* This property sets how the text should be contained within its bounding box.
|
|
242
|
+
*
|
|
243
|
+
* - 'width': The text is contained within the specified maxWidth, horizontal position of text will adjust according to {@link textAlign}.
|
|
244
|
+
* - 'height': The text is contained within the specified maxHeight, vertical position of text will adjust according to {@link verticalAlign}.
|
|
245
|
+
* - 'both': The text is contained within both the specified maxWidth and maxHeight.
|
|
246
|
+
* - 'none': The text is not contained within any bounding box.
|
|
247
|
+
*
|
|
248
|
+
* @default 'none'
|
|
249
|
+
*/
|
|
250
|
+
contain: 'width' | 'height' | 'both' | 'none';
|
|
237
251
|
}
|
|
238
252
|
|
|
239
253
|
/**
|
|
@@ -395,10 +409,11 @@ export interface TextRenderer {
|
|
|
395
409
|
* Text line struct for text mapping
|
|
396
410
|
* 0 - text
|
|
397
411
|
* 1 - width
|
|
398
|
-
* 2 -
|
|
399
|
-
* 3 - line offset
|
|
412
|
+
* 2 - truncated
|
|
413
|
+
* 3 - line offset x
|
|
414
|
+
* 4 - line offset y
|
|
400
415
|
*/
|
|
401
|
-
export type TextLineStruct = [string, number, number, number];
|
|
416
|
+
export type TextLineStruct = [string, number, boolean, number, number];
|
|
402
417
|
|
|
403
418
|
/**
|
|
404
419
|
* Wrapped lines struct for text mapping
|
|
@@ -21,8 +21,8 @@ import { describe, it, expect } from 'vitest';
|
|
|
21
21
|
import {
|
|
22
22
|
wrapText,
|
|
23
23
|
wrapLine,
|
|
24
|
-
truncateLineWithSuffix,
|
|
25
24
|
breakWord,
|
|
25
|
+
truncateLineEnd,
|
|
26
26
|
} from '../TextLayoutEngine.js';
|
|
27
27
|
|
|
28
28
|
// Mock font data for testing
|
|
@@ -130,9 +130,9 @@ describe('SDF Text Utils', () => {
|
|
|
130
130
|
0, // designLetterSpacing
|
|
131
131
|
10, // spaceWidth
|
|
132
132
|
'',
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
0, //overflowWidth
|
|
134
|
+
'break-word',
|
|
135
|
+
10,
|
|
136
136
|
);
|
|
137
137
|
|
|
138
138
|
const [lines] = result;
|
|
@@ -146,15 +146,15 @@ describe('SDF Text Utils', () => {
|
|
|
146
146
|
testMeasureText,
|
|
147
147
|
'hello',
|
|
148
148
|
'Arial',
|
|
149
|
-
100,
|
|
150
|
-
0,
|
|
149
|
+
100, // maxWidth (10 characters at 10 units each)
|
|
150
|
+
0, // designLetterSpacing
|
|
151
151
|
10, // spaceWidth
|
|
152
152
|
'',
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
0, //overflowWidth
|
|
154
|
+
'break-word',
|
|
155
|
+
1,
|
|
156
156
|
);
|
|
157
|
-
expect(result[0][0]).toEqual(['hello', 50, 0, 0]); // 4-element format
|
|
157
|
+
expect(result[0][0]).toEqual(['hello', 50, false, 0, 0]); // 4-element format
|
|
158
158
|
});
|
|
159
159
|
|
|
160
160
|
it('should break long words', () => {
|
|
@@ -162,19 +162,19 @@ describe('SDF Text Utils', () => {
|
|
|
162
162
|
testMeasureText,
|
|
163
163
|
'verylongwordthatdoesnotfit',
|
|
164
164
|
'Arial',
|
|
165
|
-
100, //
|
|
166
|
-
0,
|
|
165
|
+
100, // maxWidth (10 characters at 10 units each)
|
|
166
|
+
0, // designLetterSpacing
|
|
167
167
|
10, // spaceWidth
|
|
168
168
|
'',
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
169
|
+
0, //overflowWidth
|
|
170
|
+
'break-word',
|
|
171
|
+
1,
|
|
172
172
|
);
|
|
173
173
|
const [lines] = result; // Extract the lines array
|
|
174
174
|
// The implementation returns the full word when wordBreak is 'normal' (default behavior)
|
|
175
175
|
// This is correct behavior - single words are not broken unless wordBreak is set to 'break-all'
|
|
176
176
|
expect(lines.length).toBe(1);
|
|
177
|
-
expect(lines[0]?.[0]).toBe('
|
|
177
|
+
expect(lines[0]?.[0]).toBe('verylongwo');
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
it('should handle ZWSP as word break opportunity', () => {
|
|
@@ -183,13 +183,13 @@ describe('SDF Text Utils', () => {
|
|
|
183
183
|
testMeasureText,
|
|
184
184
|
'hello\u200Bworld test',
|
|
185
185
|
'Arial',
|
|
186
|
-
100, // 10 characters
|
|
187
|
-
0,
|
|
186
|
+
100, // maxWidth (10 characters at 10 units each)
|
|
187
|
+
0, // designLetterSpacing
|
|
188
188
|
10, // spaceWidth
|
|
189
189
|
'',
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
190
|
+
0, //overflowWidth
|
|
191
|
+
'break-word',
|
|
192
|
+
2,
|
|
193
193
|
);
|
|
194
194
|
|
|
195
195
|
const [lines] = result1;
|
|
@@ -201,15 +201,15 @@ describe('SDF Text Utils', () => {
|
|
|
201
201
|
testMeasureText,
|
|
202
202
|
'hi\u200Bthere',
|
|
203
203
|
'Arial',
|
|
204
|
-
200, //
|
|
205
|
-
0,
|
|
204
|
+
200, // maxWidth
|
|
205
|
+
0, // designLetterSpacing
|
|
206
206
|
10, // spaceWidth
|
|
207
207
|
'',
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
208
|
+
0, //overflowWidth
|
|
209
|
+
'break-word',
|
|
210
|
+
1,
|
|
211
211
|
);
|
|
212
|
-
expect(result2[0][0]).toEqual(['hithere', 70, 0, 0]); // ZWSP is invisible, no space added
|
|
212
|
+
expect(result2[0][0]).toEqual(['hithere', 70, false, 0, 0]); // ZWSP is invisible, no space added
|
|
213
213
|
|
|
214
214
|
// Test 3: ZWSP should break when it's the only break opportunity
|
|
215
215
|
const result3 = wrapLine(
|
|
@@ -220,12 +220,12 @@ describe('SDF Text Utils', () => {
|
|
|
220
220
|
0,
|
|
221
221
|
10, // spaceWidth
|
|
222
222
|
'',
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
0, //overflowWidth
|
|
224
|
+
'break-word',
|
|
225
|
+
2,
|
|
226
226
|
);
|
|
227
227
|
expect(result3.length).toBeGreaterThan(1); // Should break at ZWSP position
|
|
228
|
-
expect(result3[0][0]).toEqual(['
|
|
228
|
+
expect(result3[0][0]).toEqual(['verylongwo', 100, false, 0, 0]);
|
|
229
229
|
});
|
|
230
230
|
|
|
231
231
|
it('should truncate with suffix when max lines reached', () => {
|
|
@@ -237,9 +237,9 @@ describe('SDF Text Utils', () => {
|
|
|
237
237
|
0,
|
|
238
238
|
10, // spaceWidth
|
|
239
239
|
'...',
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
0, //overflowWidth
|
|
241
|
+
'break-word',
|
|
242
|
+
10, // remainingLines = 0 - this should trigger truncation when hasMaxLines is true
|
|
243
243
|
);
|
|
244
244
|
// With the current implementation, text wraps naturally across multiple lines
|
|
245
245
|
// when remainingLines is 0 and hasMaxLines is true, but doesn't truncate in this case
|
|
@@ -262,7 +262,7 @@ describe('SDF Text Utils', () => {
|
|
|
262
262
|
0,
|
|
263
263
|
);
|
|
264
264
|
expect(result[0].length).toBeGreaterThan(2);
|
|
265
|
-
expect(result[0][0]).toStrictEqual(['line one', 80, 0, 0]);
|
|
265
|
+
expect(result[0][0]).toStrictEqual(['line one', 80, false, 0, 0]);
|
|
266
266
|
});
|
|
267
267
|
|
|
268
268
|
it('should handle empty lines', () => {
|
|
@@ -297,43 +297,52 @@ describe('SDF Text Utils', () => {
|
|
|
297
297
|
|
|
298
298
|
describe('truncateLineWithSuffix', () => {
|
|
299
299
|
it('should truncate line and add suffix', () => {
|
|
300
|
-
const result =
|
|
300
|
+
const result = truncateLineEnd(
|
|
301
301
|
testMeasureText,
|
|
302
|
-
'this is a very long line',
|
|
303
302
|
'Arial',
|
|
304
|
-
100, // Max width for 10 characters
|
|
305
303
|
0,
|
|
306
|
-
'
|
|
304
|
+
'this is a very long line', //current line
|
|
305
|
+
240, // current line width
|
|
306
|
+
'',
|
|
307
|
+
100, // Max width for 10 characters
|
|
308
|
+
'...', // Suffix
|
|
309
|
+
30, // Suffix width
|
|
307
310
|
);
|
|
308
|
-
expect(result).toContain('...');
|
|
311
|
+
expect(result[0]).toContain('...');
|
|
309
312
|
expect(result.length).toBeLessThanOrEqual(10);
|
|
310
313
|
});
|
|
311
314
|
|
|
312
315
|
it('should return suffix if suffix is too long', () => {
|
|
313
|
-
const result =
|
|
316
|
+
const result = truncateLineEnd(
|
|
314
317
|
testMeasureText,
|
|
315
|
-
'hello',
|
|
316
318
|
'Arial',
|
|
317
|
-
30, // Only 3 characters fit
|
|
318
319
|
0,
|
|
320
|
+
'hello',
|
|
321
|
+
50, // current line width
|
|
322
|
+
'',
|
|
323
|
+
30, // Only 3 characters fit
|
|
319
324
|
'verylongsuffix',
|
|
325
|
+
140, // Suffix width
|
|
320
326
|
);
|
|
321
|
-
expect(result).toMatch(/verylongsuffi/); // Truncated suffix
|
|
327
|
+
expect(result[0]).toMatch(/verylongsuffi/); // Truncated suffix
|
|
322
328
|
});
|
|
323
329
|
|
|
324
330
|
it('should return original line with suffix (current behavior)', () => {
|
|
325
331
|
// Note: The current implementation always adds the suffix, even if the line fits.
|
|
326
332
|
// This is the expected behavior when used in overflow contexts where the suffix
|
|
327
333
|
// indicates that content was truncated at the line limit.
|
|
328
|
-
const result =
|
|
334
|
+
const result = truncateLineEnd(
|
|
329
335
|
testMeasureText,
|
|
330
|
-
'short',
|
|
331
336
|
'Arial',
|
|
332
|
-
100,
|
|
333
337
|
0,
|
|
338
|
+
'short',
|
|
339
|
+
50, // 5 characters fit
|
|
340
|
+
'',
|
|
341
|
+
40,
|
|
334
342
|
'...',
|
|
343
|
+
30,
|
|
335
344
|
);
|
|
336
|
-
expect(result).toBe('
|
|
345
|
+
expect(result[0]).toBe('s...');
|
|
337
346
|
});
|
|
338
347
|
});
|
|
339
348
|
|
|
@@ -342,35 +351,64 @@ describe('SDF Text Utils', () => {
|
|
|
342
351
|
const result = breakWord(
|
|
343
352
|
testMeasureText,
|
|
344
353
|
'verylongword',
|
|
354
|
+
'verylongword'.length * 10,
|
|
345
355
|
'Arial',
|
|
346
|
-
50, // 5 characters max per line
|
|
347
356
|
0,
|
|
357
|
+
[],
|
|
358
|
+
'',
|
|
359
|
+
0,
|
|
360
|
+
1,
|
|
361
|
+
'',
|
|
362
|
+
50, // 5 characters max per line
|
|
363
|
+
'',
|
|
348
364
|
0,
|
|
365
|
+
'...',
|
|
366
|
+
30,
|
|
349
367
|
);
|
|
350
|
-
expect(result
|
|
351
|
-
expect(result[
|
|
368
|
+
expect(result.length).toBeGreaterThan(1);
|
|
369
|
+
expect(result[2]).toHaveLength(12);
|
|
352
370
|
});
|
|
353
371
|
|
|
354
372
|
it('should handle single character word', () => {
|
|
355
|
-
const result = breakWord(
|
|
356
|
-
|
|
373
|
+
const result = breakWord(
|
|
374
|
+
testMeasureText,
|
|
375
|
+
'a',
|
|
376
|
+
10,
|
|
377
|
+
'Arial',
|
|
378
|
+
0,
|
|
379
|
+
[],
|
|
380
|
+
'',
|
|
381
|
+
0,
|
|
382
|
+
1,
|
|
383
|
+
'',
|
|
384
|
+
50, // 5 characters max per line
|
|
385
|
+
'',
|
|
386
|
+
0,
|
|
387
|
+
'...',
|
|
388
|
+
30,
|
|
389
|
+
);
|
|
390
|
+
expect(result).toStrictEqual(['', 0, 'a']);
|
|
357
391
|
});
|
|
358
392
|
|
|
359
393
|
it('should truncate with suffix when max lines reached', () => {
|
|
360
394
|
const result = breakWord(
|
|
361
395
|
testMeasureText,
|
|
362
396
|
'verylongword',
|
|
397
|
+
'verylongword'.length * 10,
|
|
363
398
|
'Arial',
|
|
364
|
-
50,
|
|
365
399
|
0,
|
|
366
|
-
|
|
400
|
+
[],
|
|
401
|
+
'',
|
|
402
|
+
0,
|
|
403
|
+
1,
|
|
404
|
+
'',
|
|
405
|
+
50, // 5 characters max per line
|
|
406
|
+
'',
|
|
407
|
+
0,
|
|
408
|
+
'...',
|
|
409
|
+
30,
|
|
367
410
|
);
|
|
368
|
-
expect(result[0]).toHaveLength(
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
it('should handle empty word', () => {
|
|
372
|
-
const result = breakWord(testMeasureText, '', 'Arial', 50, 0, 0);
|
|
373
|
-
expect(result[0]).toEqual([]);
|
|
411
|
+
expect(result[0]).toHaveLength(0);
|
|
374
412
|
});
|
|
375
413
|
});
|
|
376
414
|
|
|
@@ -406,9 +444,10 @@ describe('SDF Text Utils', () => {
|
|
|
406
444
|
'normal',
|
|
407
445
|
0,
|
|
408
446
|
);
|
|
409
|
-
|
|
410
|
-
expect(
|
|
411
|
-
expect(
|
|
447
|
+
const [lines] = result;
|
|
448
|
+
expect(lines.length).toBeGreaterThan(2);
|
|
449
|
+
expect(lines[0]?.[0]).toBe('Short');
|
|
450
|
+
expect(lines[lines.length - 1]?.[0]).toBe('short');
|
|
412
451
|
});
|
|
413
452
|
});
|
|
414
453
|
});
|
|
@@ -102,14 +102,16 @@ const stylePropertyMap: {
|
|
|
102
102
|
},
|
|
103
103
|
w: (w) => {
|
|
104
104
|
if (w === 0) {
|
|
105
|
-
|
|
105
|
+
// Set to 1px instead of 0px so Playwright's toBeVisible() passes
|
|
106
|
+
return { prop: 'width', value: '1px' };
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
return { prop: 'width', value: `${w}px` };
|
|
109
110
|
},
|
|
110
111
|
h: (h) => {
|
|
111
112
|
if (h === 0) {
|
|
112
|
-
|
|
113
|
+
// Set to 1px instead of 0px so Playwright's toBeVisible() passes
|
|
114
|
+
return { prop: 'height', value: '1px' };
|
|
113
115
|
}
|
|
114
116
|
|
|
115
117
|
return { prop: 'height', value: `${h}px` };
|
|
@@ -211,6 +213,7 @@ const knownProperties = new Set<string>([
|
|
|
211
213
|
'src',
|
|
212
214
|
'parent',
|
|
213
215
|
'data',
|
|
216
|
+
'text',
|
|
214
217
|
]);
|
|
215
218
|
|
|
216
219
|
export class Inspector {
|
|
@@ -908,9 +911,10 @@ export class Inspector {
|
|
|
908
911
|
if (property === 'text') {
|
|
909
912
|
div.innerHTML = String(value);
|
|
910
913
|
|
|
911
|
-
//
|
|
912
|
-
|
|
913
|
-
div.style.
|
|
914
|
+
// Keep DOM text invisible without breaking Playwright visibility checks by using color:transparent instead of opacity:0
|
|
915
|
+
div.style.color = 'transparent';
|
|
916
|
+
div.style.pointerEvents = 'none';
|
|
917
|
+
div.style.userSelect = 'none';
|
|
914
918
|
return;
|
|
915
919
|
}
|
|
916
920
|
|
package/src/main-api/Renderer.ts
CHANGED
|
@@ -522,7 +522,7 @@ export class RendererMain extends EventEmitter {
|
|
|
522
522
|
quadBufferSize: settings.quadBufferSize ?? 4 * 1024 * 1024,
|
|
523
523
|
fontEngines: settings.fontEngines ?? [],
|
|
524
524
|
textureProcessingTimeLimit: settings.textureProcessingTimeLimit || 42,
|
|
525
|
-
canvas: settings.canvas
|
|
525
|
+
canvas: settings.canvas,
|
|
526
526
|
createImageBitmapSupport: settings.createImageBitmapSupport || 'full',
|
|
527
527
|
platform: settings.platform || null,
|
|
528
528
|
};
|
|
@@ -533,7 +533,6 @@ export class RendererMain extends EventEmitter {
|
|
|
533
533
|
deviceLogicalPixelRatio,
|
|
534
534
|
devicePhysicalPixelRatio,
|
|
535
535
|
inspector,
|
|
536
|
-
canvas,
|
|
537
536
|
} = settings as RendererMainSettings;
|
|
538
537
|
|
|
539
538
|
let platform;
|
|
@@ -548,6 +547,8 @@ export class RendererMain extends EventEmitter {
|
|
|
548
547
|
platform = new WebPlatform();
|
|
549
548
|
}
|
|
550
549
|
|
|
550
|
+
const canvas = settings.canvas || platform.createCanvas();
|
|
551
|
+
|
|
551
552
|
const deviceLogicalWidth = appWidth * deviceLogicalPixelRatio;
|
|
552
553
|
const deviceLogicalHeight = appHeight * deviceLogicalPixelRatio;
|
|
553
554
|
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare enum TextureErrorCode {
|
|
2
|
-
MEMORY_THRESHOLD_EXCEEDED = "MEMORY_THRESHOLD_EXCEEDED",
|
|
3
|
-
TEXTURE_DATA_NULL = "TEXTURE_DATA_NULL",
|
|
4
|
-
TEXTURE_TYPE_NOT_REGISTERED = "TEXTURE_TYPE_NOT_REGISTERED"
|
|
5
|
-
}
|
|
6
|
-
export declare class TextureError extends Error {
|
|
7
|
-
code?: TextureErrorCode;
|
|
8
|
-
constructor(message: string);
|
|
9
|
-
constructor(code: TextureErrorCode, message?: string);
|
|
10
|
-
}
|
|
11
|
-
export declare function isTextureError(err: unknown): err is TextureError;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export var TextureErrorCode;
|
|
2
|
-
(function (TextureErrorCode) {
|
|
3
|
-
TextureErrorCode["MEMORY_THRESHOLD_EXCEEDED"] = "MEMORY_THRESHOLD_EXCEEDED";
|
|
4
|
-
TextureErrorCode["TEXTURE_DATA_NULL"] = "TEXTURE_DATA_NULL";
|
|
5
|
-
TextureErrorCode["TEXTURE_TYPE_NOT_REGISTERED"] = "TEXTURE_TYPE_NOT_REGISTERED";
|
|
6
|
-
})(TextureErrorCode || (TextureErrorCode = {}));
|
|
7
|
-
const defaultMessages = {
|
|
8
|
-
[TextureErrorCode.MEMORY_THRESHOLD_EXCEEDED]: 'Memory threshold exceeded',
|
|
9
|
-
[TextureErrorCode.TEXTURE_DATA_NULL]: 'Texture data is null',
|
|
10
|
-
[TextureErrorCode.TEXTURE_TYPE_NOT_REGISTERED]: 'Texture type is not registered',
|
|
11
|
-
};
|
|
12
|
-
export class TextureError extends Error {
|
|
13
|
-
code;
|
|
14
|
-
constructor(codeOrMessage, maybeMessage) {
|
|
15
|
-
const isCode = Object.values(TextureErrorCode).includes(codeOrMessage);
|
|
16
|
-
const code = isCode ? codeOrMessage : undefined;
|
|
17
|
-
let message;
|
|
18
|
-
if (isCode && code) {
|
|
19
|
-
message = maybeMessage ?? defaultMessages[code];
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
message = String(codeOrMessage);
|
|
23
|
-
}
|
|
24
|
-
super(message);
|
|
25
|
-
this.name = new.target.name;
|
|
26
|
-
if (code)
|
|
27
|
-
this.code = code;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export function isTextureError(err) {
|
|
31
|
-
return (err instanceof TextureError ||
|
|
32
|
-
(typeof err === 'object' &&
|
|
33
|
-
err !== null &&
|
|
34
|
-
err.name === 'TextureError' &&
|
|
35
|
-
typeof err.code === 'string'));
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=TextureError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextureError.js","sourceRoot":"","sources":["../../../src/core/TextureError.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,2EAAuD,CAAA;IACvD,2DAAuC,CAAA;IACvC,+EAA2D,CAAA;AAC7D,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,eAAe,GAAqC;IACxD,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,EAAE,2BAA2B;IACzE,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,sBAAsB;IAC5D,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,EAC5C,gCAAgC;CACnC,CAAC;AAEF,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,IAAI,CAAoB;IAIxB,YAAY,aAAwC,EAAE,YAAqB;QACzE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CACrD,aAAiC,CAClC,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAE,aAAkC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,OAAe,CAAC;QACpB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,YAAY,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,CACL,GAAG,YAAY,YAAY;QAC3B,CAAC,OAAO,GAAG,KAAK,QAAQ;YACtB,GAAG,KAAK,IAAI;YACX,GAA0B,CAAC,IAAI,KAAK,cAAc;YACnD,OAAQ,GAA0B,CAAC,IAAI,KAAK,QAAQ,CAAC,CACxD,CAAC;AACJ,CAAC"}
|
|
@@ -1,81 +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
|
-
/**
|
|
20
|
-
* Platform render loop initiator
|
|
21
|
-
*/
|
|
22
|
-
export const startLoop = (stage) => {
|
|
23
|
-
let isIdle = false;
|
|
24
|
-
let lastFrameTime = 0;
|
|
25
|
-
const runLoop = (currentTime = 0) => {
|
|
26
|
-
const targetFrameTime = stage.targetFrameTime;
|
|
27
|
-
// Check if we should throttle this frame
|
|
28
|
-
if (targetFrameTime > 0 && currentTime - lastFrameTime < targetFrameTime) {
|
|
29
|
-
// Too early for next frame, schedule with setTimeout for precise timing
|
|
30
|
-
const delay = targetFrameTime - (currentTime - lastFrameTime);
|
|
31
|
-
setTimeout(() => requestAnimationFrame(runLoop), delay);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
lastFrameTime = currentTime;
|
|
35
|
-
stage.updateFrameTime();
|
|
36
|
-
stage.updateAnimations();
|
|
37
|
-
if (!stage.hasSceneUpdates()) {
|
|
38
|
-
// We still need to calculate the fps else it looks like the app is frozen
|
|
39
|
-
stage.calculateFps();
|
|
40
|
-
if (targetFrameTime > 0) {
|
|
41
|
-
// Use setTimeout for throttled idle frames
|
|
42
|
-
setTimeout(() => requestAnimationFrame(runLoop), Math.max(targetFrameTime, 16.666666666666668));
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
// Use standard idle timeout when not throttling
|
|
46
|
-
setTimeout(() => requestAnimationFrame(runLoop), 16.666666666666668);
|
|
47
|
-
}
|
|
48
|
-
if (!isIdle) {
|
|
49
|
-
stage.eventBus.emit('idle');
|
|
50
|
-
isIdle = true;
|
|
51
|
-
}
|
|
52
|
-
if (stage.txMemManager.checkCleanup() === true) {
|
|
53
|
-
stage.txMemManager.cleanup();
|
|
54
|
-
}
|
|
55
|
-
stage.flushFrameEvents();
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
isIdle = false;
|
|
59
|
-
stage.drawFrame();
|
|
60
|
-
stage.flushFrameEvents();
|
|
61
|
-
// Schedule next frame
|
|
62
|
-
if (targetFrameTime > 0) {
|
|
63
|
-
// Use setTimeout + rAF combination for precise FPS control
|
|
64
|
-
const nextFrameDelay = Math.max(0, targetFrameTime - (performance.now() - currentTime));
|
|
65
|
-
setTimeout(() => requestAnimationFrame(runLoop), nextFrameDelay);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
// Use standard rAF when not throttling
|
|
69
|
-
requestAnimationFrame(runLoop);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
requestAnimationFrame(runLoop);
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Return unix timestamp
|
|
76
|
-
* @return {number}
|
|
77
|
-
*/
|
|
78
|
-
export const getTimeStamp = () => {
|
|
79
|
-
return performance ? performance.now() : Date.now();
|
|
80
|
-
};
|
|
81
|
-
//# sourceMappingURL=platform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/core/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;IACxC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,MAAM,OAAO,GAAG,CAAC,cAAsB,CAAC,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAE9C,yCAAyC;QACzC,IAAI,eAAe,GAAG,CAAC,IAAI,WAAW,GAAG,aAAa,GAAG,eAAe,EAAE,CAAC;YACzE,wEAAwE;YACxE,MAAM,KAAK,GAAG,eAAe,GAAG,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;YAC9D,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,aAAa,GAAG,WAAW,CAAC;QAE5B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,CAAC;YAC7B,0EAA0E;YAC1E,KAAK,CAAC,YAAY,EAAE,CAAC;YAErB,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;gBACxB,2CAA2C;gBAC3C,UAAU,CACR,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EACpC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAC9C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,gDAAgD;gBAChD,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC5B,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/C,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC/B,CAAC;YAED,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,KAAK,CAAC;QACf,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAEzB,sBAAsB;QACtB,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YACxB,2DAA2D;YAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAC7B,CAAC,EACD,eAAe,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CACpD,CAAC;YACF,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC;IAEF,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,OAAO,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AACtD,CAAC,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { CoreRenderOp } from './CoreRenderOp.js';
|
|
2
|
-
export declare abstract class CoreShader {
|
|
3
|
-
static makeCacheKey(props: Record<string, unknown>): string | false;
|
|
4
|
-
static resolveDefaults(props: Record<string, unknown>): Record<string, unknown>;
|
|
5
|
-
abstract bindRenderOp(renderOp: CoreRenderOp, props: Record<string, unknown> | null): void;
|
|
6
|
-
protected abstract bindProps(props: Record<string, unknown>): void;
|
|
7
|
-
abstract attach(): void;
|
|
8
|
-
abstract detach(): void;
|
|
9
|
-
}
|
|
@@ -1,28 +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
|
-
export class CoreShader {
|
|
20
|
-
// abstract draw(): void;
|
|
21
|
-
static makeCacheKey(props) {
|
|
22
|
-
return false;
|
|
23
|
-
}
|
|
24
|
-
static resolveDefaults(props) {
|
|
25
|
-
return {};
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=CoreShader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CoreShader.js","sourceRoot":"","sources":["../../../../src/core/renderers/CoreShader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,OAAgB,UAAU;IAC9B,yBAAyB;IACzB,MAAM,CAAC,YAAY,CAAC,KAA8B;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,eAAe,CACpB,KAA8B;QAE9B,OAAO,EAAE,CAAC;IACZ,CAAC;CASF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { BaseShaderController } from '../../../main-api/ShaderController.js';
|
|
2
|
-
import type { CoreNode } from '../../CoreNode.js';
|
|
3
|
-
import type { CoreShaderManager } from '../../CoreShaderManager.js';
|
|
4
|
-
import { type Texture } from '../../textures/Texture.js';
|
|
5
|
-
import type { CoreContextTexture } from '../CoreContextTexture.js';
|
|
6
|
-
import { CoreRenderer, type CoreRendererOptions, type QuadOptions } from '../CoreRenderer.js';
|
|
7
|
-
export declare class CanvasCoreRenderer extends CoreRenderer {
|
|
8
|
-
private context;
|
|
9
|
-
private canvas;
|
|
10
|
-
private pixelRatio;
|
|
11
|
-
private clearColor;
|
|
12
|
-
renderToTextureActive: boolean;
|
|
13
|
-
activeRttNode: CoreNode | null;
|
|
14
|
-
private defShaderCtr;
|
|
15
|
-
constructor(options: CoreRendererOptions);
|
|
16
|
-
reset(): void;
|
|
17
|
-
render(): void;
|
|
18
|
-
addQuad(quad: QuadOptions): void;
|
|
19
|
-
createCtxTexture(textureSource: Texture): CoreContextTexture;
|
|
20
|
-
getShaderManager(): CoreShaderManager;
|
|
21
|
-
getDefShaderCtr(): BaseShaderController;
|
|
22
|
-
renderRTTNodes(): void;
|
|
23
|
-
removeRTTNode(node: CoreNode): void;
|
|
24
|
-
renderToTexture(node: CoreNode): void;
|
|
25
|
-
getBufferInfo(): null;
|
|
26
|
-
getQuadCount(): null;
|
|
27
|
-
/**
|
|
28
|
-
* Updates the clear color of the canvas renderer.
|
|
29
|
-
*
|
|
30
|
-
* @param color - The color to set as the clear color.
|
|
31
|
-
*/
|
|
32
|
-
updateClearColor(color: number): void;
|
|
33
|
-
}
|