@lightningjs/renderer 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/common/CommonTypes.d.ts +8 -0
- package/dist/src/core/CoreNode.js +45 -16
- package/dist/src/core/CoreNode.js.map +1 -1
- package/dist/src/core/CoreTextNode.d.ts +10 -0
- package/dist/src/core/CoreTextNode.js +45 -0
- package/dist/src/core/CoreTextNode.js.map +1 -1
- package/dist/src/core/CoreTextureManager.d.ts +3 -1
- package/dist/src/core/CoreTextureManager.js +4 -1
- package/dist/src/core/CoreTextureManager.js.map +1 -1
- package/dist/src/core/Stage.d.ts +6 -0
- package/dist/src/core/Stage.js +12 -3
- package/dist/src/core/Stage.js.map +1 -1
- package/dist/src/core/lib/ImageWorker.d.ts +16 -0
- package/dist/src/core/lib/ImageWorker.js +111 -0
- package/dist/src/core/lib/ImageWorker.js.map +1 -0
- package/dist/src/core/lib/WebGlContextWrapper.d.ts +4 -0
- package/dist/src/core/lib/WebGlContextWrapper.js +7 -2
- package/dist/src/core/lib/WebGlContextWrapper.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js +2 -2
- package/dist/src/core/renderers/webgl/WebGlCoreCtxSubTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.d.ts +3 -2
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js +23 -21
- package/dist/src/core/renderers/webgl/WebGlCoreCtxTexture.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.d.ts +3 -2
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js +9 -13
- package/dist/src/core/renderers/webgl/WebGlCoreRenderOp.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.d.ts +4 -1
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js +25 -24
- package/dist/src/core/renderers/webgl/WebGlCoreRenderer.js.map +1 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.d.ts +2 -1
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js +24 -24
- package/dist/src/core/renderers/webgl/WebGlCoreShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/RendererUtils.d.ts +8 -5
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js +11 -13
- package/dist/src/core/renderers/webgl/internal/RendererUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.d.ts +3 -2
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js +15 -15
- package/dist/src/core/renderers/webgl/internal/ShaderUtils.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js +3 -6
- package/dist/src/core/renderers/webgl/shaders/DefaultShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/DefaultShaderBatched.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.d.ts +1 -0
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js +32 -12
- package/dist/src/core/renderers/webgl/shaders/DynamicShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/RoundedRectangle.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js +3 -3
- package/dist/src/core/renderers/webgl/shaders/SdfShader.js.map +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/BorderEffect.js +1 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.d.ts +14 -1
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js +15 -5
- package/dist/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js +3 -3
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.js.map +1 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.d.ts +2 -1
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js +4 -2
- package/dist/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js +25 -0
- package/dist/src/core/text-rendering/renderers/CanvasTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.d.ts +1 -1
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js +6 -6
- package/dist/src/core/text-rendering/renderers/LightningTextTextureRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js +82 -50
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.d.ts +8 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js +29 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/findNearestMultiple.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.d.ts +4 -3
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js +15 -11
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.d.ts +3 -2
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js +30 -26
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.js.map +1 -1
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.d.ts +19 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js +84 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.d.ts +8 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js +40 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.d.ts +2 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js +41 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.d.ts +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js +4 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.d.ts +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js +2 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.d.ts +9 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js +32 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.d.ts +26 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js +70 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.d.ts +16 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js +39 -0
- package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.js.map +1 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.d.ts +50 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js +19 -0
- package/dist/src/core/text-rendering/renderers/TextRenderer.js.map +1 -1
- package/dist/src/core/textures/ImageTexture.js +14 -9
- package/dist/src/core/textures/ImageTexture.js.map +1 -1
- package/dist/src/core/utils.d.ts +1 -6
- package/dist/src/core/utils.js +3 -2
- package/dist/src/core/utils.js.map +1 -1
- package/dist/src/main-api/ICoreDriver.d.ts +2 -1
- package/dist/src/main-api/RendererMain.d.ts +25 -0
- package/dist/src/main-api/RendererMain.js +14 -5
- package/dist/src/main-api/RendererMain.js.map +1 -1
- package/dist/src/render-drivers/main/MainCoreDriver.d.ts +2 -1
- package/dist/src/render-drivers/main/MainCoreDriver.js +6 -4
- package/dist/src/render-drivers/main/MainCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/main/MainOnlyTextNode.d.ts +10 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js +45 -0
- package/dist/src/render-drivers/main/MainOnlyTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/TextNodeStruct.d.ts +10 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js +45 -0
- package/dist/src/render-drivers/threadx/TextNodeStruct.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.d.ts +2 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js +8 -1
- package/dist/src/render-drivers/threadx/ThreadXCoreDriver.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.d.ts +5 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js +5 -0
- package/dist/src/render-drivers/threadx/ThreadXMainTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.d.ts +4 -1
- package/dist/src/render-drivers/threadx/ThreadXRendererMessage.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.d.ts +5 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js +10 -0
- package/dist/src/render-drivers/threadx/worker/ThreadXRendererTextNode.js.map +1 -1
- package/dist/src/render-drivers/threadx/worker/renderer.js +5 -3
- package/dist/src/render-drivers/threadx/worker/renderer.js.map +1 -1
- package/dist/src/utils.d.ts +2 -1
- package/dist/src/utils.js +22 -3
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.dist.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/src/common/CommonTypes.ts +9 -0
- package/src/core/CoreNode.ts +67 -34
- package/src/core/CoreTextNode.ts +56 -0
- package/src/core/CoreTextureManager.ts +4 -2
- package/src/core/Stage.ts +32 -3
- package/src/core/lib/ContextSpy.ts +41 -0
- package/src/core/lib/ImageWorker.ts +124 -0
- package/src/core/lib/WebGlContextWrapper.ts +965 -0
- package/src/core/renderers/webgl/WebGlCoreCtxSubTexture.ts +3 -2
- package/src/core/renderers/webgl/WebGlCoreCtxTexture.ts +29 -28
- package/src/core/renderers/webgl/WebGlCoreRenderOp.ts +10 -14
- package/src/core/renderers/webgl/WebGlCoreRenderer.ts +26 -24
- package/src/core/renderers/webgl/WebGlCoreShader.ts +34 -25
- package/src/core/renderers/webgl/internal/RendererUtils.ts +13 -16
- package/src/core/renderers/webgl/internal/ShaderUtils.ts +16 -15
- package/src/core/renderers/webgl/shaders/DefaultShader.ts +3 -7
- package/src/core/renderers/webgl/shaders/DefaultShaderBatched.ts +3 -3
- package/src/core/renderers/webgl/shaders/DynamicShader.ts +42 -14
- package/src/core/renderers/webgl/shaders/RoundedRectangle.ts +3 -3
- package/src/core/renderers/webgl/shaders/SdfShader.ts +3 -3
- package/src/core/renderers/webgl/shaders/effects/BorderEffect.ts +1 -1
- package/src/core/renderers/webgl/shaders/effects/GrayscaleEffect.ts +35 -5
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/SdfTrFontFace.ts +3 -3
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.test.ts +9 -3
- package/src/core/text-rendering/font-face-types/SdfTrFontFace/internal/SdfFontShaper.ts +4 -2
- package/src/core/text-rendering/renderers/CanvasTextRenderer.ts +25 -0
- package/src/core/text-rendering/renderers/LightningTextTextureRenderer.ts +7 -7
- package/src/core/text-rendering/renderers/SdfTextRenderer/SdfTextRenderer.ts +115 -63
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/getStartConditions.ts +26 -18
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText.ts +40 -28
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/measureText.test.ts +6 -1
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.test.ts +205 -0
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/{makeRenderWindow.ts → setRenderWindow.ts} +50 -21
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts +40 -0
- package/src/core/text-rendering/renderers/TextRenderer.ts +73 -0
- package/src/core/textures/ImageTexture.ts +17 -9
- package/src/core/utils.ts +87 -85
- package/src/env.d.ts +7 -0
- package/src/main-api/ICoreDriver.ts +2 -1
- package/src/main-api/RendererMain.ts +43 -5
- package/src/render-drivers/main/MainCoreDriver.ts +8 -5
- package/src/render-drivers/main/MainOnlyTextNode.ts +55 -1
- package/src/render-drivers/threadx/TextNodeStruct.ts +45 -0
- package/src/render-drivers/threadx/ThreadXCoreDriver.ts +10 -2
- package/src/render-drivers/threadx/ThreadXMainTextNode.ts +10 -0
- package/src/render-drivers/threadx/ThreadXRendererMessage.ts +5 -1
- package/src/render-drivers/threadx/worker/ThreadXRendererTextNode.ts +15 -0
- package/src/render-drivers/threadx/worker/renderer.ts +6 -4
- package/src/utils.ts +25 -4
- package/src/core/text-rendering/renderers/SdfTextRenderer/internal/makeRenderWindow.test.ts +0 -136
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SdfTrFontFace } from '../../../../font-face-types/SdfTrFontFace/SdfTrFontFace.js';
|
|
2
|
+
import type { MappedGlyphInfo } from '../../../../font-face-types/SdfTrFontFace/internal/FontShaper.js';
|
|
3
|
+
export declare class SdfBufferHelper {
|
|
4
|
+
bufferOffset: number;
|
|
5
|
+
vertexBuffer: Float32Array;
|
|
6
|
+
trFontFace: SdfTrFontFace;
|
|
7
|
+
scaleW: number;
|
|
8
|
+
scaleH: number;
|
|
9
|
+
standByGlyphs: MappedGlyphInfo[];
|
|
10
|
+
standByCurX: number;
|
|
11
|
+
standByStartXAfterLeadSpaces: number;
|
|
12
|
+
curX: number;
|
|
13
|
+
curY: number;
|
|
14
|
+
constructor(vertexBuffer: Float32Array, trFontFace: SdfTrFontFace);
|
|
15
|
+
glyphsStandingBy(): boolean;
|
|
16
|
+
getStandByGlyphsWidth(): number;
|
|
17
|
+
pushStandByGlyph(glyph: MappedGlyphInfo): void;
|
|
18
|
+
flushStandByGlyphs(skipLeadingSpaces?: boolean): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { assertTruthy } from '../../../../../../utils.js';
|
|
2
|
+
import { isWhiteSpace } from './utils.js';
|
|
3
|
+
export class SdfBufferHelper {
|
|
4
|
+
bufferOffset = 0;
|
|
5
|
+
vertexBuffer;
|
|
6
|
+
trFontFace;
|
|
7
|
+
scaleW;
|
|
8
|
+
scaleH;
|
|
9
|
+
standByGlyphs = [];
|
|
10
|
+
standByCurX = -1;
|
|
11
|
+
standByStartXAfterLeadSpaces = -1;
|
|
12
|
+
curX = 0;
|
|
13
|
+
curY = 0;
|
|
14
|
+
constructor(vertexBuffer, trFontFace) {
|
|
15
|
+
assertTruthy(trFontFace.data);
|
|
16
|
+
this.vertexBuffer = vertexBuffer;
|
|
17
|
+
this.trFontFace = trFontFace;
|
|
18
|
+
this.scaleW = trFontFace.data.common.scaleW;
|
|
19
|
+
this.scaleH = trFontFace.data.common.scaleH;
|
|
20
|
+
}
|
|
21
|
+
glyphsStandingBy() {
|
|
22
|
+
return this.standByGlyphs.length > 0;
|
|
23
|
+
}
|
|
24
|
+
getStandByGlyphsWidth() {
|
|
25
|
+
if (this.standByStartXAfterLeadSpaces === -1 || this.standByCurX === -1) {
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
return this.standByCurX - this.standByStartXAfterLeadSpaces;
|
|
29
|
+
}
|
|
30
|
+
pushStandByGlyph(glyph) {
|
|
31
|
+
this.standByGlyphs.push(glyph);
|
|
32
|
+
if (!isWhiteSpace(glyph.codepoint) &&
|
|
33
|
+
this.standByStartXAfterLeadSpaces === -1) {
|
|
34
|
+
this.standByStartXAfterLeadSpaces = this.standByCurX;
|
|
35
|
+
}
|
|
36
|
+
if (this.standByCurX === -1) {
|
|
37
|
+
this.standByCurX = this.curX;
|
|
38
|
+
}
|
|
39
|
+
this.standByCurX += glyph.xAdvance;
|
|
40
|
+
}
|
|
41
|
+
flushStandByGlyphs(skipLeadingSpaces = false) {
|
|
42
|
+
const { vertexBuffer, trFontFace, scaleW, scaleH, curX, curY, standByCurX, } = this;
|
|
43
|
+
let { bufferOffset } = this;
|
|
44
|
+
for (const glyph of this.standByGlyphs) {
|
|
45
|
+
if (skipLeadingSpaces && isWhiteSpace(glyph.codepoint)) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const atlasEntry = trFontFace.getAtlasEntry(glyph.glyphId);
|
|
49
|
+
// This glyph fits, so we can add it to the buffer
|
|
50
|
+
const quadX = curX + glyph.xOffset;
|
|
51
|
+
const quadY = curY + glyph.yOffset;
|
|
52
|
+
const u = atlasEntry.x / scaleW;
|
|
53
|
+
const v = atlasEntry.y / scaleH;
|
|
54
|
+
const uvWidth = atlasEntry.width / scaleW;
|
|
55
|
+
const uvHeight = atlasEntry.height / scaleH;
|
|
56
|
+
// Top-left
|
|
57
|
+
vertexBuffer[bufferOffset++] = quadX;
|
|
58
|
+
vertexBuffer[bufferOffset++] = quadY;
|
|
59
|
+
vertexBuffer[bufferOffset++] = u;
|
|
60
|
+
vertexBuffer[bufferOffset++] = v;
|
|
61
|
+
// Top-right
|
|
62
|
+
vertexBuffer[bufferOffset++] = quadX + glyph.width;
|
|
63
|
+
vertexBuffer[bufferOffset++] = quadY;
|
|
64
|
+
vertexBuffer[bufferOffset++] = u + uvWidth;
|
|
65
|
+
vertexBuffer[bufferOffset++] = v;
|
|
66
|
+
// Bottom-left
|
|
67
|
+
vertexBuffer[bufferOffset++] = quadX;
|
|
68
|
+
vertexBuffer[bufferOffset++] = quadY + glyph.height;
|
|
69
|
+
vertexBuffer[bufferOffset++] = u;
|
|
70
|
+
vertexBuffer[bufferOffset++] = v + uvHeight;
|
|
71
|
+
// Bottom-right
|
|
72
|
+
vertexBuffer[bufferOffset++] = quadX + glyph.width;
|
|
73
|
+
vertexBuffer[bufferOffset++] = quadY + glyph.height;
|
|
74
|
+
vertexBuffer[bufferOffset++] = u + uvWidth;
|
|
75
|
+
vertexBuffer[bufferOffset++] = v + uvHeight;
|
|
76
|
+
this.bufferOffset = bufferOffset;
|
|
77
|
+
}
|
|
78
|
+
this.curX = standByCurX;
|
|
79
|
+
this.standByGlyphs.length = 0;
|
|
80
|
+
this.standByCurX = -1;
|
|
81
|
+
this.standByStartXAfterLeadSpaces = -1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=SdfBufferHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SdfBufferHelper.js","sourceRoot":"","sources":["../../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/SdfBufferHelper.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MappedGlyphInfo, UnmappedCharacterInfo } from '../../../../font-face-types/SdfTrFontFace/internal/FontShaper.js';
|
|
2
|
+
import { PeekableIterator } from '../PeekableGenerator.js';
|
|
3
|
+
import type { SdfBufferHelper } from './SdfBufferHelper.js';
|
|
4
|
+
export declare function layoutLine(glyphs: PeekableIterator<MappedGlyphInfo | UnmappedCharacterInfo>,
|
|
5
|
+
/**
|
|
6
|
+
* Can be Infinity
|
|
7
|
+
*/
|
|
8
|
+
maxLineWidth: number, bufferHelper: SdfBufferHelper): boolean;
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { PeekableIterator } from '../PeekableGenerator.js';
|
|
2
|
+
import { getUnicodeCodepoints } from '../getUnicodeCodepoints.js';
|
|
3
|
+
import { isWhiteSpace } from './utils.js';
|
|
4
|
+
export function layoutLine(glyphs,
|
|
5
|
+
/**
|
|
6
|
+
* Can be Infinity
|
|
7
|
+
*/
|
|
8
|
+
maxLineWidth, bufferHelper) {
|
|
9
|
+
let moreLeft = true;
|
|
10
|
+
let glyphResult;
|
|
11
|
+
// If there's any standByGlyphs at the beginning of the line, we need to
|
|
12
|
+
// we to flush them if they fit
|
|
13
|
+
if (bufferHelper.getStandByGlyphsWidth() < maxLineWidth) {
|
|
14
|
+
bufferHelper.flushStandByGlyphs(true);
|
|
15
|
+
}
|
|
16
|
+
while ((glyphResult = glyphs.next())) {
|
|
17
|
+
if (glyphResult.done || isWhiteSpace(glyphResult.value.codepoint)) {
|
|
18
|
+
// We're out of glyphs, or we hit a whitespace character.
|
|
19
|
+
// Flush the standByGlyphs if they fit or if this is the last line
|
|
20
|
+
// add the overflow suffix.
|
|
21
|
+
if (bufferHelper.glyphsStandingBy() &&
|
|
22
|
+
bufferHelper.standByCurX <= maxLineWidth) {
|
|
23
|
+
bufferHelper.flushStandByGlyphs();
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (glyphResult.done) {
|
|
30
|
+
moreLeft = false;
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
const glyph = glyphResult.value;
|
|
34
|
+
if (glyph.mapped) {
|
|
35
|
+
bufferHelper.pushStandByGlyph(glyph);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return moreLeft;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=layoutLine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutLine.js","sourceRoot":"","sources":["../../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutLine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,UAAU,UAAU,CACxB,MAAiE;AACjE;;GAEG;AACH,YAAoB,EACpB,YAA6B;IAE7B,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,WAAoE,CAAC;IAEzE,wEAAwE;IACxE,+BAA+B;IAC/B,IAAI,YAAY,CAAC,qBAAqB,EAAE,GAAG,YAAY,EAAE;QACvD,YAAY,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KACvC;IAED,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE;QACpC,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACjE,yDAAyD;YACzD,kEAAkE;YAClE,2BAA2B;YAC3B,IACE,YAAY,CAAC,gBAAgB,EAAE;gBAC/B,YAAY,CAAC,WAAW,IAAI,YAAY,EACxC;gBACA,YAAY,CAAC,kBAAkB,EAAE,CAAC;aACnC;iBAAM;gBACL,MAAM;aACP;SACF;QAED,IAAI,WAAW,CAAC,IAAI,EAAE;YACpB,QAAQ,GAAG,KAAK,CAAC;YACjB,MAAM;SACP;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAEhC,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,YAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACtC;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { assertTruthy } from '../../../../../../utils.js';
|
|
2
|
+
import { PeekableIterator } from '../PeekableGenerator.js';
|
|
3
|
+
import { getUnicodeCodepoints } from '../getUnicodeCodepoints.js';
|
|
4
|
+
import { measureText } from '../measureText.js';
|
|
5
|
+
import { SdfBufferHelper } from './SdfBufferHelper.js';
|
|
6
|
+
import { layoutLine } from './layoutLine.js';
|
|
7
|
+
export function layoutText2(text, sdfLetterSpacing, trFontFace) {
|
|
8
|
+
const startingCodepointIndex = 0;
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
10
|
+
const shaper = trFontFace.shaper;
|
|
11
|
+
assertTruthy(shaper);
|
|
12
|
+
const shaperProps = {
|
|
13
|
+
letterSpacing: sdfLetterSpacing,
|
|
14
|
+
};
|
|
15
|
+
// Get glyphs
|
|
16
|
+
const glyphs = new PeekableIterator(shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(text, startingCodepointIndex), startingCodepointIndex)));
|
|
17
|
+
const maxLineWidth = 100;
|
|
18
|
+
const maxLines = 1;
|
|
19
|
+
const overflowSuffix = '...';
|
|
20
|
+
const sdfOverflowSuffWidth = measureText(overflowSuffix, shaperProps, shaper);
|
|
21
|
+
const bufferHelper = new SdfBufferHelper(new Float32Array(100), trFontFace);
|
|
22
|
+
let moreLines = true;
|
|
23
|
+
let lastLine = false;
|
|
24
|
+
let curLineIndex = 0;
|
|
25
|
+
while (moreLines) {
|
|
26
|
+
lastLine = !(maxLines === 0 || curLineIndex + 1 < maxLines);
|
|
27
|
+
layoutLine(glyphs,
|
|
28
|
+
// If this is the last line, we need to account for the overflow suffix
|
|
29
|
+
// in the maxLineWidth it will definitely fit.
|
|
30
|
+
lastLine ? maxLineWidth - sdfOverflowSuffWidth : maxLineWidth, bufferHelper);
|
|
31
|
+
const moreGlyphs = !glyphs.peek().done;
|
|
32
|
+
// If lastLine and there are more glyphs, we need to add the overflow suffix
|
|
33
|
+
// to the end of the line
|
|
34
|
+
if (lastLine && moreGlyphs) {
|
|
35
|
+
layoutLine(new PeekableIterator(shaper.shapeText(shaperProps, new PeekableIterator(getUnicodeCodepoints(overflowSuffix, 0), 0))), Infinity, bufferHelper);
|
|
36
|
+
}
|
|
37
|
+
moreLines = !lastLine && moreGlyphs;
|
|
38
|
+
curLineIndex++;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=layoutText2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutText2.js","sourceRoot":"","sources":["../../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/layoutText2.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,gBAAwB,EACxB,UAAyB;IAEzB,MAAM,sBAAsB,GAAG,CAAC,CAAC;IACjC,oEAAoE;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAEjC,YAAY,CAAC,MAAM,CAAC,CAAC;IAErB,MAAM,WAAW,GAAoB;QACnC,aAAa,EAAE,gBAAgB;KAChC,CAAC;IAEF,aAAa;IACb,MAAM,MAAM,GAAG,IAAI,gBAAgB,CACjC,MAAM,CAAC,SAAS,CACd,WAAW,EACX,IAAI,gBAAgB,CAClB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,CAAC,EAClD,sBAAsB,CACvB,CACF,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,GAAG,CAAC;IACzB,MAAM,QAAQ,GAAG,CAAW,CAAC;IAC7B,MAAM,cAAc,GAAG,KAAK,CAAC;IAC7B,MAAM,oBAAoB,GAAG,WAAW,CAAC,cAAc,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IAE5E,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,OAAO,SAAS,EAAE;QAChB,QAAQ,GAAG,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE5D,UAAU,CACR,MAAM;QACN,uEAAuE;QACvE,8CAA8C;QAC9C,QAAQ,CAAC,CAAC,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAC,CAAC,YAAY,EAC7D,YAAY,CACb,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;QACvC,4EAA4E;QAC5E,yBAAyB;QACzB,IAAI,QAAQ,IAAI,UAAU,EAAE;YAC1B,UAAU,CACR,IAAI,gBAAgB,CAClB,MAAM,CAAC,SAAS,CACd,WAAW,EACX,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACjE,CACF,EACD,QAAQ,EACR,YAAY,CACb,CAAC;SACH;QACD,SAAS,GAAG,CAAC,QAAQ,IAAI,UAAU,CAAC;QACpC,YAAY,EAAE,CAAC;KAChB;AACH,CAAC"}
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isWhiteSpace(codepoint: number): boolean;
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2/utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO,SAAS,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layoutText2.js","sourceRoot":"","sources":["../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/layoutText2.ts"],"names":[],"mappings":""}
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round up to the nearest multiple of the given number.
|
|
3
|
+
*
|
|
4
|
+
* @param value
|
|
5
|
+
* @param multiple
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare function roundUpToMultiple(value: number, multiple: number): number;
|
|
9
|
+
export declare function roundDownToMultiple(value: number, multiple: number): number;
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
* Round up to the nearest multiple of the given number.
|
|
21
|
+
*
|
|
22
|
+
* @param value
|
|
23
|
+
* @param multiple
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export function roundUpToMultiple(value, multiple) {
|
|
27
|
+
return Math.ceil(value / multiple) * multiple;
|
|
28
|
+
}
|
|
29
|
+
export function roundDownToMultiple(value, multiple) {
|
|
30
|
+
return Math.floor(value / multiple) * multiple;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=roundUpToMultiple.js.map
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundUpToMultiple.js","sourceRoot":"","sources":["../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/roundUpToMultiple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,QAAgB;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Bound } from '../../../../lib/utils.js';
|
|
2
|
+
import type { TrProps } from '../../TextRenderer.js';
|
|
3
|
+
export interface SdfRenderWindow {
|
|
4
|
+
screen: Bound;
|
|
5
|
+
sdf: Bound;
|
|
6
|
+
firstLineIdx: number;
|
|
7
|
+
numLines: number;
|
|
8
|
+
valid: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Create a render window from the given parameters.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* The render window is a rectangle that defines the area of the text that
|
|
15
|
+
* should be rendered. It is used to skip rendering parts of the text that
|
|
16
|
+
* are outside of the render window. The render window is relative to the
|
|
17
|
+
* text's top left corner of the overrall text.
|
|
18
|
+
*
|
|
19
|
+
* @param x The x coordinate of the text element's top left corner relative to the screen.
|
|
20
|
+
* @param y The y coordinate of the text element's top left corner relative to the screen.
|
|
21
|
+
* @param scrollY The amount of pixels to scroll the text vertically.
|
|
22
|
+
* @param lineHeight The number of extra lines to render above and below the visible window.
|
|
23
|
+
* @param visibleWindow The visible window of the text element relative to the screen
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export declare function setRenderWindow(outRenderWindow: SdfRenderWindow, x: TrProps['x'], y: TrProps['y'], scrollY: TrProps['scrollY'], lineHeight: number, bufferMargin: number, visibleWindow: Bound, fontSizeRatio: number): void;
|
|
@@ -0,0 +1,70 @@
|
|
|
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 { isBoundPositive } from '../../../../lib/utils.js';
|
|
20
|
+
import { roundDownToMultiple, roundUpToMultiple } from './util.js';
|
|
21
|
+
/**
|
|
22
|
+
* Create a render window from the given parameters.
|
|
23
|
+
*
|
|
24
|
+
* @remarks
|
|
25
|
+
* The render window is a rectangle that defines the area of the text that
|
|
26
|
+
* should be rendered. It is used to skip rendering parts of the text that
|
|
27
|
+
* are outside of the render window. The render window is relative to the
|
|
28
|
+
* text's top left corner of the overrall text.
|
|
29
|
+
*
|
|
30
|
+
* @param x The x coordinate of the text element's top left corner relative to the screen.
|
|
31
|
+
* @param y The y coordinate of the text element's top left corner relative to the screen.
|
|
32
|
+
* @param scrollY The amount of pixels to scroll the text vertically.
|
|
33
|
+
* @param lineHeight The number of extra lines to render above and below the visible window.
|
|
34
|
+
* @param visibleWindow The visible window of the text element relative to the screen
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
export function setRenderWindow(outRenderWindow, x, y, scrollY, lineHeight, bufferMargin, visibleWindow, fontSizeRatio) {
|
|
38
|
+
const { screen, sdf } = outRenderWindow;
|
|
39
|
+
if (!isBoundPositive(visibleWindow)) {
|
|
40
|
+
screen.x1 = 0;
|
|
41
|
+
screen.y1 = 0;
|
|
42
|
+
screen.x2 = 0;
|
|
43
|
+
screen.y2 = 0;
|
|
44
|
+
sdf.x1 = 0;
|
|
45
|
+
sdf.y1 = 0;
|
|
46
|
+
sdf.x2 = 0;
|
|
47
|
+
sdf.y2 = 0;
|
|
48
|
+
outRenderWindow.numLines = 0;
|
|
49
|
+
outRenderWindow.firstLineIdx = 0;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const x1 = visibleWindow.x1 - x;
|
|
53
|
+
const x2 = x1 + (visibleWindow.x2 - visibleWindow.x1);
|
|
54
|
+
const y1Base = visibleWindow.y1 - y + scrollY;
|
|
55
|
+
const y1 = roundDownToMultiple(y1Base - bufferMargin, lineHeight || 1);
|
|
56
|
+
const y2 = roundUpToMultiple(y1Base + (visibleWindow.y2 - visibleWindow.y1) + bufferMargin, lineHeight || 1);
|
|
57
|
+
screen.x1 = x1;
|
|
58
|
+
screen.y1 = y1;
|
|
59
|
+
screen.x2 = x2;
|
|
60
|
+
screen.y2 = y2;
|
|
61
|
+
sdf.x1 = x1 / fontSizeRatio;
|
|
62
|
+
sdf.y1 = y1 / fontSizeRatio;
|
|
63
|
+
sdf.x2 = x2 / fontSizeRatio;
|
|
64
|
+
sdf.y2 = y2 / fontSizeRatio;
|
|
65
|
+
outRenderWindow.numLines = Math.ceil((y2 - y1) / lineHeight);
|
|
66
|
+
outRenderWindow.firstLineIdx = Math.floor(y1 / lineHeight);
|
|
67
|
+
}
|
|
68
|
+
outRenderWindow.valid = true;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=setRenderWindow.js.map
|
package/dist/src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setRenderWindow.js","sourceRoot":"","sources":["../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/setRenderWindow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,eAAe,EAAc,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAUnE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,eAAgC,EAChC,CAAe,EACf,CAAe,EACf,OAA2B,EAC3B,UAAkB,EAClB,YAAoB,EACpB,aAAoB,EACpB,aAAqB;IAErB,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,eAAe,CAAC;IACxC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;QACnC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACX,eAAe,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC7B,eAAe,CAAC,YAAY,GAAG,CAAC,CAAC;KAClC;SAAM;QACL,MAAM,EAAE,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC;QAC9C,MAAM,EAAE,GAAG,mBAAmB,CAAC,MAAM,GAAG,YAAY,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;QACvE,MAAM,EAAE,GAAG,iBAAiB,CAC1B,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,YAAY,EAC7D,UAAU,IAAI,CAAC,CAChB,CAAC;QAEF,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;QAC5B,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC;QAE5B,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;QAC7D,eAAe,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC;KAC5D;IACD,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Round up to the nearest multiple of the given number.
|
|
3
|
+
*
|
|
4
|
+
* @param value
|
|
5
|
+
* @param multiple
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare function roundUpToMultiple(value: number, multiple: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* Round down to the nearest multiple of the given number.
|
|
11
|
+
*
|
|
12
|
+
* @param value
|
|
13
|
+
* @param multiple
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare function roundDownToMultiple(value: number, multiple: number): number;
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
* Round up to the nearest multiple of the given number.
|
|
21
|
+
*
|
|
22
|
+
* @param value
|
|
23
|
+
* @param multiple
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export function roundUpToMultiple(value, multiple) {
|
|
27
|
+
return Math.ceil(value / multiple) * multiple;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Round down to the nearest multiple of the given number.
|
|
31
|
+
*
|
|
32
|
+
* @param value
|
|
33
|
+
* @param multiple
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
export function roundDownToMultiple(value, multiple) {
|
|
37
|
+
return Math.floor(value / multiple) * multiple;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../../../src/core/text-rendering/renderers/SdfTextRenderer/internal/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa,EAAE,QAAgB;IAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AAChD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;AACjD,CAAC"}
|
|
@@ -3,6 +3,7 @@ import type { Stage } from '../../Stage.js';
|
|
|
3
3
|
import type { Matrix3d } from '../../lib/Matrix3d.js';
|
|
4
4
|
import type { Rect } from '../../lib/utils.js';
|
|
5
5
|
import type { TrFontFace, TrFontFaceDescriptors } from '../font-face-types/TrFontFace.js';
|
|
6
|
+
import type { TextBaseline, TextVerticalAlign } from './LightningTextTextureRenderer.js';
|
|
6
7
|
/**
|
|
7
8
|
* Augmentable map of text renderer type IDs to text renderer types.
|
|
8
9
|
*
|
|
@@ -215,6 +216,55 @@ export interface TrProps extends TrFontProps {
|
|
|
215
216
|
* @default 0
|
|
216
217
|
*/
|
|
217
218
|
letterSpacing: number;
|
|
219
|
+
/**
|
|
220
|
+
* Line height for text (in pixels)
|
|
221
|
+
*
|
|
222
|
+
* @remarks
|
|
223
|
+
* This property sets the height of each line.
|
|
224
|
+
*
|
|
225
|
+
* @default 0
|
|
226
|
+
*/
|
|
227
|
+
lineHeight: number;
|
|
228
|
+
/**
|
|
229
|
+
* Max lines for text
|
|
230
|
+
*
|
|
231
|
+
* @remarks
|
|
232
|
+
* This property sets max number of lines of a text paragraph.
|
|
233
|
+
* Not yet implemented in the SDF renderer.
|
|
234
|
+
*
|
|
235
|
+
* @default 0
|
|
236
|
+
*/
|
|
237
|
+
maxLines: number;
|
|
238
|
+
/**
|
|
239
|
+
* Baseline for text
|
|
240
|
+
*
|
|
241
|
+
* @remarks
|
|
242
|
+
* This property sets the text baseline used when drawing text.
|
|
243
|
+
* Not yet implemented in the SDF renderer.
|
|
244
|
+
*
|
|
245
|
+
* @default alphabetic
|
|
246
|
+
*/
|
|
247
|
+
textBaseline: TextBaseline;
|
|
248
|
+
/**
|
|
249
|
+
* Vertical Align for text when lineHeight > fontSize
|
|
250
|
+
*
|
|
251
|
+
* @remarks
|
|
252
|
+
* This property sets the vertical align of the text.
|
|
253
|
+
* Not yet implemented in the SDF renderer.
|
|
254
|
+
*
|
|
255
|
+
* @default middle
|
|
256
|
+
*/
|
|
257
|
+
verticalAlign: TextVerticalAlign;
|
|
258
|
+
/**
|
|
259
|
+
* Overflow Suffix for text
|
|
260
|
+
*
|
|
261
|
+
* @remarks
|
|
262
|
+
* The suffix to be added when text is cropped due to overflow.
|
|
263
|
+
* Not yet implemented in the SDF renderer.
|
|
264
|
+
*
|
|
265
|
+
* @default "..."
|
|
266
|
+
*/
|
|
267
|
+
overflowSuffix: string;
|
|
218
268
|
zIndex: number;
|
|
219
269
|
debug: Partial<TextRendererDebugProps>;
|
|
220
270
|
}
|
|
@@ -71,6 +71,21 @@ const trPropSetterDefaults = {
|
|
|
71
71
|
letterSpacing: (state, value) => {
|
|
72
72
|
state.props.letterSpacing = value;
|
|
73
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
|
+
},
|
|
74
89
|
debug: (state, value) => {
|
|
75
90
|
state.props.debug = value;
|
|
76
91
|
},
|
|
@@ -92,6 +107,10 @@ export class TextRenderer {
|
|
|
92
107
|
(state, value) => {
|
|
93
108
|
if (state.props[key] !== value) {
|
|
94
109
|
setter(state, value);
|
|
110
|
+
// Assume any prop change will require a render
|
|
111
|
+
// This is required because otherwise a paused RAF will result
|
|
112
|
+
// in renders when text props are changed.
|
|
113
|
+
this.stage.requestRender();
|
|
95
114
|
}
|
|
96
115
|
},
|
|
97
116
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextRenderer.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/renderers/TextRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"TextRenderer.js","sourceRoot":"","sources":["../../../../../src/core/text-rendering/renderers/TextRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,15 +50,20 @@ export class ImageTexture extends Texture {
|
|
|
50
50
|
premultiplyAlpha,
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
if (this.txManager.imageWorkerManager.imageWorkersEnabled) {
|
|
54
|
+
return await this.txManager.imageWorkerManager.getImage(src, premultiplyAlpha);
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
const response = await fetch(src);
|
|
58
|
+
const blob = await response.blob();
|
|
59
|
+
return {
|
|
60
|
+
data: await createImageBitmap(blob, {
|
|
61
|
+
premultiplyAlpha: premultiplyAlpha ? 'premultiply' : 'none',
|
|
62
|
+
colorSpaceConversion: 'none',
|
|
63
|
+
imageOrientation: 'none',
|
|
64
|
+
}),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
62
67
|
}
|
|
63
68
|
static makeCacheKey(props) {
|
|
64
69
|
const resolvedProps = ImageTexture.resolveDefaults(props);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/ImageTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AA8BzD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,KAAK,CAA8B;IAEnC,YAAY,SAA6B,EAAE,KAAwB;QACjE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;gBACL,IAAI,EAAE,IAAI;aACX,CAAC;SACH;QACD,IAAI,GAAG,YAAY,SAAS,EAAE;YAC5B,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,gBAAgB;aACjB,CAAC;SACH;
|
|
1
|
+
{"version":3,"file":"ImageTexture.js","sourceRoot":"","sources":["../../../../src/core/textures/ImageTexture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,EAAE,OAAO,EAAoB,MAAM,cAAc,CAAC;AA8BzD;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACvC,KAAK,CAA8B;IAEnC,YAAY,SAA6B,EAAE,KAAwB;QACjE,KAAK,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;IAEQ,KAAK,CAAC,cAAc;QAC3B,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC7C,IAAI,CAAC,GAAG,EAAE;YACR,OAAO;gBACL,IAAI,EAAE,IAAI;aACX,CAAC;SACH;QACD,IAAI,GAAG,YAAY,SAAS,EAAE;YAC5B,OAAO;gBACL,IAAI,EAAE,GAAG;gBACT,gBAAgB;aACjB,CAAC;SACH;QAED,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,mBAAmB,EAAE;YACzD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CACrD,GAAG,EACH,gBAAgB,CACjB,CAAC;SACH;aAAM;YACL,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO;gBACL,IAAI,EAAE,MAAM,iBAAiB,CAAC,IAAI,EAAE;oBAClC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM;oBAC3D,oBAAoB,EAAE,MAAM;oBAC5B,gBAAgB,EAAE,MAAM;iBACzB,CAAC;aACH,CAAC;SACH;IACH,CAAC;IAED,MAAM,CAAU,YAAY,CAAC,KAAwB;QACnD,MAAM,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC1D,uDAAuD;QACvD,IAAI,aAAa,CAAC,GAAG,YAAY,SAAS,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,OAAO,gBAAgB,aAAa,CAAC,GAAG,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;IAC/E,CAAC;IAED,MAAM,CAAU,eAAe,CAC7B,KAAwB;QAExB,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE;YACpB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;SACjD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe,CAAoB;CAC3C"}
|
package/dist/src/core/utils.d.ts
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core Utility Functions
|
|
3
|
-
*
|
|
4
|
-
* @module
|
|
5
|
-
*/
|
|
6
1
|
export declare const EPSILON = 0.000001;
|
|
7
2
|
export declare let ARRAY_TYPE: Float32ArrayConstructor | ArrayConstructor;
|
|
8
3
|
export declare const RANDOM: () => number;
|
|
@@ -12,4 +7,4 @@ export declare const toRadian: (a: number) => number;
|
|
|
12
7
|
export declare const equals: (a: number, b: number) => boolean;
|
|
13
8
|
export declare const rand: (min: number, max: number) => number;
|
|
14
9
|
export declare const isPowerOfTwo: (value: number) => boolean | 0;
|
|
15
|
-
export declare const getTimingFunction: (str: string) => (time: number) => number | undefined;
|
|
10
|
+
export declare const getTimingFunction: ((str: string) => (time: number) => number | undefined) & import("memize").MemizeMemoizedFunction;
|