@babylonjs/lottie-player 9.4.1 → 9.5.1
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/animationConfiguration.d.ts +20 -0
- package/animationConfiguration.d.ts.map +1 -1
- package/animationConfiguration.js +1 -0
- package/animationConfiguration.js.map +1 -1
- package/blobWorkerWrapper.d.ts.map +1 -1
- package/blobWorkerWrapper.js +0 -1
- package/blobWorkerWrapper.js.map +1 -1
- package/maths/boundingBox.d.ts +3 -1
- package/maths/boundingBox.d.ts.map +1 -1
- package/maths/boundingBox.js +15 -4
- package/maths/boundingBox.js.map +1 -1
- package/nodes/node.d.ts.map +1 -1
- package/nodes/node.js +5 -1
- package/nodes/node.js.map +1 -1
- package/package.json +1 -1
- package/parsing/parser.d.ts +11 -0
- package/parsing/parser.d.ts.map +1 -1
- package/parsing/parser.js +190 -20
- package/parsing/parser.js.map +1 -1
- package/parsing/rawPropertyHelpers.d.ts +10 -1
- package/parsing/rawPropertyHelpers.d.ts.map +1 -1
- package/parsing/rawPropertyHelpers.js +14 -0
- package/parsing/rawPropertyHelpers.js.map +1 -1
- package/parsing/rawTypes.d.ts +23 -3
- package/parsing/rawTypes.d.ts.map +1 -1
- package/parsing/spritePacker.d.ts +38 -2
- package/parsing/spritePacker.d.ts.map +1 -1
- package/parsing/spritePacker.js +169 -24
- package/parsing/spritePacker.js.map +1 -1
- package/parsing/textLayout.d.ts +3 -1
- package/parsing/textLayout.d.ts.map +1 -1
- package/parsing/textLayout.js +34 -1
- package/parsing/textLayout.js.map +1 -1
- package/readme.md +31 -14
- package/rendering/animationController.d.ts.map +1 -1
- package/rendering/animationController.js +3 -0
- package/rendering/animationController.js.map +1 -1
|
@@ -65,11 +65,18 @@ export declare class SpritePacker {
|
|
|
65
65
|
private _rawFonts;
|
|
66
66
|
private _pages;
|
|
67
67
|
private _spriteAtlasInfo;
|
|
68
|
+
private readonly _unsupportedFeatures;
|
|
69
|
+
private readonly _seenUnsupportedShapeTypes;
|
|
68
70
|
/**
|
|
69
71
|
* Gets the textures for all atlas pages.
|
|
70
72
|
* @returns An array of textures, one per atlas page.
|
|
71
73
|
*/
|
|
72
74
|
get textures(): ThinTexture[];
|
|
75
|
+
/**
|
|
76
|
+
* Gets the list of unsupported features encountered while rasterizing shapes into the atlas.
|
|
77
|
+
* Each unknown shape type is reported only once.
|
|
78
|
+
*/
|
|
79
|
+
get unsupportedFeatures(): readonly string[];
|
|
73
80
|
/**
|
|
74
81
|
* Sets the fonts that will be used to render text in the sprite atlas.
|
|
75
82
|
* @param rawFonts A map of font names to RawFont objects.
|
|
@@ -88,16 +95,18 @@ export declare class SpritePacker {
|
|
|
88
95
|
* Adds a vector shape that comes from lottie data to the sprite atlas.
|
|
89
96
|
* @param rawElements The raw element that contains the paths and fills to add to the atlas.
|
|
90
97
|
* @param scalingFactor The scaling factor to apply to the shape.
|
|
98
|
+
* @param debugName Optional human-readable identifier (e.g. owning layer name) included in oversize warnings.
|
|
91
99
|
* @returns The information on how to find the sprite in the atlas.
|
|
92
100
|
*/
|
|
93
|
-
addLottieShape(rawElements: RawElement[], scalingFactor: IVector2Like): SpriteAtlasInfo;
|
|
101
|
+
addLottieShape(rawElements: RawElement[], scalingFactor: IVector2Like, debugName?: string): SpriteAtlasInfo;
|
|
94
102
|
/**
|
|
95
103
|
* Adds a text element that comes from lottie data to the sprite atlas.
|
|
96
104
|
* @param textData The raw text data to add to the atlas.
|
|
97
105
|
* @param scalingFactor The scaling factor to apply to the text.
|
|
106
|
+
* @param debugName Optional human-readable identifier (e.g. owning layer name) included in oversize warnings.
|
|
98
107
|
* @returns The information on how to find the sprite in the atlas.
|
|
99
108
|
*/
|
|
100
|
-
addLottieText(textData: RawTextData, scalingFactor: IVector2Like): SpriteAtlasInfo | undefined;
|
|
109
|
+
addLottieText(textData: RawTextData, scalingFactor: IVector2Like, debugName?: string): SpriteAtlasInfo | undefined;
|
|
101
110
|
/**
|
|
102
111
|
* Updates all dirty atlas page textures with the latest canvas content.
|
|
103
112
|
*/
|
|
@@ -116,6 +125,23 @@ export declare class SpritePacker {
|
|
|
116
125
|
*/
|
|
117
126
|
private _getPageWithRoom;
|
|
118
127
|
private _getAtlasCellDimension;
|
|
128
|
+
/**
|
|
129
|
+
* Combines the layer-side scale with the global atlas scale and devicePixelRatio, then
|
|
130
|
+
* automatically downscales the result if the rasterized cell would not fit on a single
|
|
131
|
+
* atlas page. The on-screen size of the sprite is unaffected (it is sourced from the raw
|
|
132
|
+
* lottie bounding box), only the atlas resolution of this particular sprite is reduced.
|
|
133
|
+
*
|
|
134
|
+
* Mutates `scalingFactor` in place with the final effective scale to use when drawing
|
|
135
|
+
* into the atlas canvas. When a downscale is applied, emits a warning that identifies the
|
|
136
|
+
* offending layer and the scale factors involved so the source can be diagnosed.
|
|
137
|
+
* @param kind Whether the sprite is a vector shape or a text element.
|
|
138
|
+
* @param debugName Optional human-readable identifier (typically the owning layer name).
|
|
139
|
+
* @param boundingBox Source bounding box in lottie coordinates, before any scaling.
|
|
140
|
+
* @param scalingFactor Layer-side scale on input; receives the final effective scale on output.
|
|
141
|
+
* @param layerScaleX Original layer-side X scale (preserved for the warning message).
|
|
142
|
+
* @param layerScaleY Original layer-side Y scale (preserved for the warning message).
|
|
143
|
+
*/
|
|
144
|
+
private _applyAtlasScaleAndFit;
|
|
119
145
|
private _extrudeSpriteEdges;
|
|
120
146
|
private _drawVectorShape;
|
|
121
147
|
private _drawText;
|
|
@@ -124,6 +150,16 @@ export declare class SpritePacker {
|
|
|
124
150
|
private _drawPath;
|
|
125
151
|
private _drawFill;
|
|
126
152
|
private _drawStroke;
|
|
153
|
+
/**
|
|
154
|
+
* Apply the geometric stroke styling (width, line cap, line join, miter limit, dash pattern) to the
|
|
155
|
+
* drawing context. Shared by `_drawStroke` (solid-color strokes, `ty:"st"`) and `_drawGradientStroke`
|
|
156
|
+
* (gradient strokes, `ty:"gs"`) — both have identical width/cap/join/miter/dash semantics; they only
|
|
157
|
+
* differ in how `strokeStyle` is built (CSS color vs CanvasGradient).
|
|
158
|
+
* @param stroke The raw solid or gradient stroke shape to read styling from.
|
|
159
|
+
* @param ctx The drawing context to mutate (`lineWidth`, `lineCap`, `lineJoin`, `miterLimit`, dash).
|
|
160
|
+
*/
|
|
161
|
+
private _applyStrokeStyle;
|
|
162
|
+
private _drawGradientStroke;
|
|
127
163
|
private _drawGradientFill;
|
|
128
164
|
private _drawLinearGradientFill;
|
|
129
165
|
private _drawRadialGradientFill;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritePacker.d.ts","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/spritePacker.ts"],"names":[],"mappings":"AAAA,OAAO,+CAA+C,CAAC;AAEvD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,OAAO,EACH,KAAK,UAAU,EAGf,KAAK,OAAO,
|
|
1
|
+
{"version":3,"file":"spritePacker.d.ts","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/spritePacker.ts"],"names":[],"mappings":"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"}
|
package/parsing/spritePacker.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "@babylonjs/core/Engines/Extensions/engine.dynamicTexture.js";
|
|
2
2
|
import { ThinTexture } from "@babylonjs/core/Materials/Textures/thinTexture.js";
|
|
3
|
-
import { GetInitialScalarValue, GetInitialVectorValues, GetInitialBezierData } from "./rawPropertyHelpers.js";
|
|
3
|
+
import { GetInitialColorValue, GetInitialScalarValue, GetInitialVectorValues, GetInitialBezierData } from "./rawPropertyHelpers.js";
|
|
4
4
|
import { ApplyLottieTextContext, DrawLottieText, MeasureLottieText, ResolveLottieText } from "./textLayout.js";
|
|
5
5
|
import { GetShapesBoundingBox, GetTextBoundingBox } from "../maths/boundingBox.js";
|
|
6
6
|
/**
|
|
@@ -15,6 +15,13 @@ export class SpritePacker {
|
|
|
15
15
|
get textures() {
|
|
16
16
|
return this._pages.map((p) => p.texture);
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Gets the list of unsupported features encountered while rasterizing shapes into the atlas.
|
|
20
|
+
* Each unknown shape type is reported only once.
|
|
21
|
+
*/
|
|
22
|
+
get unsupportedFeatures() {
|
|
23
|
+
return this._unsupportedFeatures;
|
|
24
|
+
}
|
|
18
25
|
/**
|
|
19
26
|
* Sets the fonts that will be used to render text in the sprite atlas.
|
|
20
27
|
* @param rawFonts A map of font names to RawFont objects.
|
|
@@ -31,6 +38,11 @@ export class SpritePacker {
|
|
|
31
38
|
* @param configuration Configuration options for the sprite packer.
|
|
32
39
|
*/
|
|
33
40
|
constructor(engine, isHtmlCanvas, atlasScale, variables, configuration) {
|
|
41
|
+
// Tracks unsupported shape types encountered while drawing into the atlas. Deduplicated by `ty`
|
|
42
|
+
// so a single unknown type doesn't spam the log once per sprite/element. Surfaced via the public
|
|
43
|
+
// getter so the parser can include these entries in its debug() output.
|
|
44
|
+
this._unsupportedFeatures = [];
|
|
45
|
+
this._seenUnsupportedShapeTypes = new Set();
|
|
34
46
|
this._engine = engine;
|
|
35
47
|
this._isHtmlCanvas = isHtmlCanvas;
|
|
36
48
|
this._atlasScale = atlasScale;
|
|
@@ -53,12 +65,14 @@ export class SpritePacker {
|
|
|
53
65
|
* Adds a vector shape that comes from lottie data to the sprite atlas.
|
|
54
66
|
* @param rawElements The raw element that contains the paths and fills to add to the atlas.
|
|
55
67
|
* @param scalingFactor The scaling factor to apply to the shape.
|
|
68
|
+
* @param debugName Optional human-readable identifier (e.g. owning layer name) included in oversize warnings.
|
|
56
69
|
* @returns The information on how to find the sprite in the atlas.
|
|
57
70
|
*/
|
|
58
|
-
addLottieShape(rawElements, scalingFactor) {
|
|
71
|
+
addLottieShape(rawElements, scalingFactor, debugName) {
|
|
59
72
|
const boundingBox = GetShapesBoundingBox(rawElements);
|
|
60
|
-
|
|
61
|
-
|
|
73
|
+
const layerScaleX = scalingFactor.x;
|
|
74
|
+
const layerScaleY = scalingFactor.y;
|
|
75
|
+
this._applyAtlasScaleAndFit("shape", debugName, boundingBox, scalingFactor, layerScaleX, layerScaleY);
|
|
62
76
|
// Calculate the size of the sprite in the atlas in pixels
|
|
63
77
|
// This takes into account the scaling factor so in the call to _drawVectorShape the canvas will be scaled when rendering
|
|
64
78
|
this._spriteAtlasInfo.cellWidth = this._getAtlasCellDimension(boundingBox.width * scalingFactor.x);
|
|
@@ -86,19 +100,21 @@ export class SpritePacker {
|
|
|
86
100
|
* Adds a text element that comes from lottie data to the sprite atlas.
|
|
87
101
|
* @param textData The raw text data to add to the atlas.
|
|
88
102
|
* @param scalingFactor The scaling factor to apply to the text.
|
|
103
|
+
* @param debugName Optional human-readable identifier (e.g. owning layer name) included in oversize warnings.
|
|
89
104
|
* @returns The information on how to find the sprite in the atlas.
|
|
90
105
|
*/
|
|
91
|
-
addLottieText(textData, scalingFactor) {
|
|
106
|
+
addLottieText(textData, scalingFactor, debugName) {
|
|
92
107
|
if (this._rawFonts === undefined) {
|
|
93
108
|
return undefined;
|
|
94
109
|
}
|
|
95
110
|
// If the text information is malformed and we can't get the bounding box, then just return
|
|
96
|
-
const boundingBox = GetTextBoundingBox(this._pages[this._pages.length - 1].context, textData, this._rawFonts, this._variables);
|
|
111
|
+
const boundingBox = GetTextBoundingBox(this._pages[this._pages.length - 1].context, textData, this._rawFonts, this._variables, this._configuration.textLayerCompatibilityMode);
|
|
97
112
|
if (boundingBox === undefined) {
|
|
98
113
|
return undefined;
|
|
99
114
|
}
|
|
100
|
-
|
|
101
|
-
|
|
115
|
+
const layerScaleX = scalingFactor.x;
|
|
116
|
+
const layerScaleY = scalingFactor.y;
|
|
117
|
+
this._applyAtlasScaleAndFit("text", debugName, boundingBox, scalingFactor, layerScaleX, layerScaleY);
|
|
102
118
|
// Calculate the size of the sprite in the atlas in pixels
|
|
103
119
|
// This takes into account the scaling factor so in the call to _drawText the canvas will be scaled when rendering
|
|
104
120
|
this._spriteAtlasInfo.cellWidth = this._getAtlasCellDimension(boundingBox.width * scalingFactor.x);
|
|
@@ -181,12 +197,12 @@ export class SpritePacker {
|
|
|
181
197
|
*/
|
|
182
198
|
_getPageWithRoom(cellWidth, cellHeight) {
|
|
183
199
|
let page = this._pages[this._pages.length - 1];
|
|
184
|
-
//
|
|
200
|
+
// Defensive clamp: _applyAtlasScaleAndFit should have already downscaled oversized cells
|
|
201
|
+
// to fit on a single page. This handles the rounding edge case where ceil() pushes a cell
|
|
202
|
+
// a single pixel past the limit.
|
|
185
203
|
const maxCellWidth = this._configuration.spriteAtlasWidth - 2 * this._configuration.gapSize;
|
|
186
204
|
const maxCellHeight = this._configuration.spriteAtlasHeight - 2 * this._configuration.gapSize;
|
|
187
205
|
if (cellWidth > maxCellWidth || cellHeight > maxCellHeight) {
|
|
188
|
-
// eslint-disable-next-line no-console
|
|
189
|
-
console.warn(`[SpritePacker] Sprite cell (${cellWidth}x${cellHeight}) exceeds atlas page (${this._configuration.spriteAtlasWidth}x${this._configuration.spriteAtlasHeight}). Clamping to fit.`);
|
|
190
206
|
this._spriteAtlasInfo.cellWidth = Math.min(cellWidth, maxCellWidth);
|
|
191
207
|
this._spriteAtlasInfo.cellHeight = Math.min(cellHeight, maxCellHeight);
|
|
192
208
|
cellWidth = this._spriteAtlasInfo.cellWidth;
|
|
@@ -210,6 +226,62 @@ export class SpritePacker {
|
|
|
210
226
|
_getAtlasCellDimension(size) {
|
|
211
227
|
return Math.max(1, Math.ceil(size));
|
|
212
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Combines the layer-side scale with the global atlas scale and devicePixelRatio, then
|
|
231
|
+
* automatically downscales the result if the rasterized cell would not fit on a single
|
|
232
|
+
* atlas page. The on-screen size of the sprite is unaffected (it is sourced from the raw
|
|
233
|
+
* lottie bounding box), only the atlas resolution of this particular sprite is reduced.
|
|
234
|
+
*
|
|
235
|
+
* Mutates `scalingFactor` in place with the final effective scale to use when drawing
|
|
236
|
+
* into the atlas canvas. When a downscale is applied, emits a warning that identifies the
|
|
237
|
+
* offending layer and the scale factors involved so the source can be diagnosed.
|
|
238
|
+
* @param kind Whether the sprite is a vector shape or a text element.
|
|
239
|
+
* @param debugName Optional human-readable identifier (typically the owning layer name).
|
|
240
|
+
* @param boundingBox Source bounding box in lottie coordinates, before any scaling.
|
|
241
|
+
* @param scalingFactor Layer-side scale on input; receives the final effective scale on output.
|
|
242
|
+
* @param layerScaleX Original layer-side X scale (preserved for the warning message).
|
|
243
|
+
* @param layerScaleY Original layer-side Y scale (preserved for the warning message).
|
|
244
|
+
*/
|
|
245
|
+
_applyAtlasScaleAndFit(kind, debugName, boundingBox, scalingFactor, layerScaleX, layerScaleY) {
|
|
246
|
+
const atlasW = this._configuration.spriteAtlasWidth;
|
|
247
|
+
const atlasH = this._configuration.spriteAtlasHeight;
|
|
248
|
+
const maxCellWidth = atlasW - 2 * this._configuration.gapSize;
|
|
249
|
+
const maxCellHeight = atlasH - 2 * this._configuration.gapSize;
|
|
250
|
+
let effectiveScaleX = scalingFactor.x * this._atlasScale * this._configuration.devicePixelRatio;
|
|
251
|
+
let effectiveScaleY = scalingFactor.y * this._atlasScale * this._configuration.devicePixelRatio;
|
|
252
|
+
const projectedWidth = boundingBox.width * effectiveScaleX;
|
|
253
|
+
const projectedHeight = boundingBox.height * effectiveScaleY;
|
|
254
|
+
// Auto-fit: if the projected cell exceeds an atlas page on either axis, scale uniformly
|
|
255
|
+
// down by the worst-axis ratio so the sprite still fits at the highest resolution we can
|
|
256
|
+
// afford. Uniform scaling preserves the sprite's aspect ratio in the atlas.
|
|
257
|
+
// Use the ceiled projected dimensions so that after the caller re-applies Math.ceil to
|
|
258
|
+
// size the cell, the result is provably <= maxCellWidth/maxCellHeight and the defensive
|
|
259
|
+
// clamp in _getPageWithRoom is not triggered by sub-pixel rounding.
|
|
260
|
+
const ceiledProjectedWidth = projectedWidth > 0 ? Math.ceil(projectedWidth) : 0;
|
|
261
|
+
const ceiledProjectedHeight = projectedHeight > 0 ? Math.ceil(projectedHeight) : 0;
|
|
262
|
+
const fitScale = Math.min(1, ceiledProjectedWidth > 0 ? maxCellWidth / ceiledProjectedWidth : 1, ceiledProjectedHeight > 0 ? maxCellHeight / ceiledProjectedHeight : 1);
|
|
263
|
+
if (fitScale < 1) {
|
|
264
|
+
effectiveScaleX *= fitScale;
|
|
265
|
+
effectiveScaleY *= fitScale;
|
|
266
|
+
const dpr = this._configuration.devicePixelRatio;
|
|
267
|
+
const atlasScale = this._atlasScale;
|
|
268
|
+
const rawW = boundingBox.width.toFixed(2);
|
|
269
|
+
const rawH = boundingBox.height.toFixed(2);
|
|
270
|
+
const lsx = layerScaleX.toFixed(3);
|
|
271
|
+
const lsy = layerScaleY.toFixed(3);
|
|
272
|
+
const name = debugName ?? "<unknown>";
|
|
273
|
+
const finalW = Math.max(1, Math.ceil(boundingBox.width * effectiveScaleX));
|
|
274
|
+
const finalH = Math.max(1, Math.ceil(boundingBox.height * effectiveScaleY));
|
|
275
|
+
const gap = this._configuration.gapSize;
|
|
276
|
+
// eslint-disable-next-line no-console
|
|
277
|
+
console.warn(`[SpritePacker] ${kind} sprite for layer "${name}" would produce a ${ceiledProjectedWidth}x${ceiledProjectedHeight}px cell that exceeds the usable ${maxCellWidth}x${maxCellHeight}px atlas area ` +
|
|
278
|
+
`(within a ${atlasW}x${atlasH}px page with ${gap}px reserved on each side). ` +
|
|
279
|
+
`Auto-downscaled by ${fitScale.toFixed(3)} to ${finalW}x${finalH}px (on-screen size unchanged; sprite will appear softer than the rest of the atlas). ` +
|
|
280
|
+
`Source bounding box: ${rawW}x${rawH}px at lottie scale ${lsx}x${lsy} \u00d7 atlasScale ${atlasScale} \u00d7 devicePixelRatio ${dpr}.`);
|
|
281
|
+
}
|
|
282
|
+
scalingFactor.x = effectiveScaleX;
|
|
283
|
+
scalingFactor.y = effectiveScaleY;
|
|
284
|
+
}
|
|
213
285
|
_extrudeSpriteEdges(page, x, y, width, height) {
|
|
214
286
|
const padding = Math.min(2, Math.floor(this._configuration.gapSize / 2));
|
|
215
287
|
const pixelX = Math.floor(x);
|
|
@@ -284,8 +356,20 @@ export class SpritePacker {
|
|
|
284
356
|
case "gf":
|
|
285
357
|
this._drawGradientFill(shape, boundingBox, page.context);
|
|
286
358
|
break;
|
|
359
|
+
case "gs":
|
|
360
|
+
this._drawGradientStroke(shape, boundingBox, page.context);
|
|
361
|
+
break;
|
|
287
362
|
case "tr":
|
|
288
363
|
break; // Nothing needed with transforms
|
|
364
|
+
default:
|
|
365
|
+
// Record once per unknown `ty` so we get observability into shape types that fall
|
|
366
|
+
// through the rasterizer (e.g. `gs`, modifiers like `tm`/`rp`, etc.) instead of
|
|
367
|
+
// silently producing an empty sprite.
|
|
368
|
+
if (!this._seenUnsupportedShapeTypes.has(shape.ty)) {
|
|
369
|
+
this._seenUnsupportedShapeTypes.add(shape.ty);
|
|
370
|
+
this._unsupportedFeatures.push(`Unsupported shape type in vector shape: ${shape.ty}`);
|
|
371
|
+
}
|
|
372
|
+
break;
|
|
289
373
|
}
|
|
290
374
|
}
|
|
291
375
|
page.context.restore();
|
|
@@ -322,7 +406,7 @@ export class SpritePacker {
|
|
|
322
406
|
page.context.strokeStyle = this._lottieColorToCSSColor(resolvedText.textInfo.sc, 1);
|
|
323
407
|
}
|
|
324
408
|
ApplyLottieTextContext(page.context, resolvedText);
|
|
325
|
-
const layout = MeasureLottieText(resolvedText, (text) => page.context.measureText(text));
|
|
409
|
+
const layout = MeasureLottieText(resolvedText, (text) => page.context.measureText(text), this._configuration.textLayerCompatibilityMode);
|
|
326
410
|
// Clip to cell bounds to prevent text overdraw into adjacent cells
|
|
327
411
|
page.context.beginPath();
|
|
328
412
|
page.context.rect(0, 0, layout.width, layout.height);
|
|
@@ -387,17 +471,35 @@ export class SpritePacker {
|
|
|
387
471
|
}
|
|
388
472
|
}
|
|
389
473
|
_drawFill(fill, ctx) {
|
|
390
|
-
|
|
474
|
+
// Read initial (first-frame) values so animated fills (a===1) render their starting state into the atlas
|
|
475
|
+
// instead of feeding a keyframe array through `as number[]` / `as number` casts.
|
|
476
|
+
const colorRgb = GetInitialColorValue(fill.c);
|
|
477
|
+
const opacity = GetInitialScalarValue(fill.o, 100);
|
|
478
|
+
const color = this._lottieColorToCSSColor(colorRgb, opacity / 100);
|
|
391
479
|
ctx.fillStyle = color;
|
|
392
480
|
ctx.fill();
|
|
393
481
|
}
|
|
394
482
|
_drawStroke(stroke, ctx) {
|
|
395
|
-
// Color and opacity
|
|
396
|
-
|
|
397
|
-
const
|
|
483
|
+
// Color and opacity. Use initial-value helpers so animated stroke color/opacity render their first-frame
|
|
484
|
+
// value into the atlas instead of producing NaN / malformed CSS via `as number[]` / `as number` casts.
|
|
485
|
+
const opacity = stroke.o ? GetInitialScalarValue(stroke.o, 100) : 100;
|
|
486
|
+
const colorRgb = stroke.c ? GetInitialColorValue(stroke.c) : [0, 0, 0];
|
|
487
|
+
const color = this._lottieColorToCSSColor(colorRgb, opacity / 100);
|
|
398
488
|
ctx.strokeStyle = color;
|
|
489
|
+
this._applyStrokeStyle(stroke, ctx);
|
|
490
|
+
ctx.stroke();
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Apply the geometric stroke styling (width, line cap, line join, miter limit, dash pattern) to the
|
|
494
|
+
* drawing context. Shared by `_drawStroke` (solid-color strokes, `ty:"st"`) and `_drawGradientStroke`
|
|
495
|
+
* (gradient strokes, `ty:"gs"`) — both have identical width/cap/join/miter/dash semantics; they only
|
|
496
|
+
* differ in how `strokeStyle` is built (CSS color vs CanvasGradient).
|
|
497
|
+
* @param stroke The raw solid or gradient stroke shape to read styling from.
|
|
498
|
+
* @param ctx The drawing context to mutate (`lineWidth`, `lineCap`, `lineJoin`, `miterLimit`, dash).
|
|
499
|
+
*/
|
|
500
|
+
_applyStrokeStyle(stroke, ctx) {
|
|
399
501
|
// Width
|
|
400
|
-
const width = stroke.w
|
|
502
|
+
const width = stroke.w ? GetInitialScalarValue(stroke.w, 1) : 1;
|
|
401
503
|
ctx.lineWidth = width;
|
|
402
504
|
// Line cap
|
|
403
505
|
switch (stroke.lc) {
|
|
@@ -439,11 +541,52 @@ export class SpritePacker {
|
|
|
439
541
|
const lineDashes = [];
|
|
440
542
|
for (let i = 0; i < dashes.length; i++) {
|
|
441
543
|
if (dashes[i].n === "d") {
|
|
442
|
-
|
|
544
|
+
// Dash length may be animated (a === 1), in which case `v.k` is a keyframe array.
|
|
545
|
+
// Use GetInitialScalarValue so the first-frame length is rasterized instead of NaN.
|
|
546
|
+
lineDashes.push(GetInitialScalarValue(dashes[i].v));
|
|
443
547
|
}
|
|
444
548
|
}
|
|
445
549
|
ctx.setLineDash(lineDashes);
|
|
446
550
|
}
|
|
551
|
+
else {
|
|
552
|
+
// Canvas line-dash state persists across strokes within the same `_drawVectorShape` save/restore
|
|
553
|
+
// pair. Without this reset, a dashed stroke drawn earlier in the shape would leak its dash
|
|
554
|
+
// pattern onto subsequent strokes that don't declare `d`.
|
|
555
|
+
ctx.setLineDash([]);
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
_drawGradientStroke(stroke, boundingBox, ctx) {
|
|
559
|
+
// Build the gradient that will be used as `strokeStyle`. Mirrors `_drawGradientFill` dispatch on `t`
|
|
560
|
+
// (1 = linear, 2 = radial) and reuses the same translation into the bounding box's local space.
|
|
561
|
+
const xTranslate = boundingBox.centerX;
|
|
562
|
+
const yTranslate = boundingBox.centerY;
|
|
563
|
+
// Read initial-frame endpoints so animated gradient endpoints (a===1) build a valid gradient instead
|
|
564
|
+
// of feeding a keyframe array through `as number[]` casts.
|
|
565
|
+
const startPoint = GetInitialVectorValues(stroke.s);
|
|
566
|
+
const endPoint = GetInitialVectorValues(stroke.e);
|
|
567
|
+
let gradient;
|
|
568
|
+
switch (stroke.t) {
|
|
569
|
+
case 1:
|
|
570
|
+
gradient = ctx.createLinearGradient(startPoint[0] + xTranslate, startPoint[1] + yTranslate, endPoint[0] + xTranslate, endPoint[1] + yTranslate);
|
|
571
|
+
break;
|
|
572
|
+
case 2: {
|
|
573
|
+
const centerX = startPoint[0] + xTranslate;
|
|
574
|
+
const centerY = startPoint[1] + yTranslate;
|
|
575
|
+
const outerRadius = Math.hypot(endPoint[0] - startPoint[0], endPoint[1] - startPoint[1]);
|
|
576
|
+
gradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, outerRadius);
|
|
577
|
+
break;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
if (gradient === undefined) {
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
// Reuse the existing color-stop builder. `_addColorStops` only reads `g`, which is shared between
|
|
584
|
+
// gradient fills and gradient strokes. Stroke `o` (overall opacity) is intentionally not applied
|
|
585
|
+
// here to match the existing `_drawGradientFill` behavior; if that ever gains opacity support, this
|
|
586
|
+
// method should follow.
|
|
587
|
+
this._addColorStops(gradient, stroke);
|
|
588
|
+
ctx.strokeStyle = gradient;
|
|
589
|
+
this._applyStrokeStyle(stroke, ctx);
|
|
447
590
|
ctx.stroke();
|
|
448
591
|
}
|
|
449
592
|
_drawGradientFill(fill, boundingBox, ctx) {
|
|
@@ -462,9 +605,10 @@ export class SpritePacker {
|
|
|
462
605
|
// We need to translate the gradient to the center of the bounding box
|
|
463
606
|
const xTranslate = boundingBox.centerX;
|
|
464
607
|
const yTranslate = boundingBox.centerY;
|
|
465
|
-
// Create the gradient
|
|
466
|
-
|
|
467
|
-
const
|
|
608
|
+
// Create the gradient. Use initial-value helpers so animated endpoints (a===1) render their
|
|
609
|
+
// first-frame value into the atlas instead of feeding a keyframe array through `as number[]`.
|
|
610
|
+
const startPoint = GetInitialVectorValues(fill.s);
|
|
611
|
+
const endPoint = GetInitialVectorValues(fill.e);
|
|
468
612
|
const gradient = ctx.createLinearGradient(startPoint[0] + xTranslate, startPoint[1] + yTranslate, endPoint[0] + xTranslate, endPoint[1] + yTranslate);
|
|
469
613
|
this._addColorStops(gradient, fill);
|
|
470
614
|
ctx.fillStyle = gradient;
|
|
@@ -474,9 +618,10 @@ export class SpritePacker {
|
|
|
474
618
|
// We need to translate the gradient to the center of the bounding box
|
|
475
619
|
const xTranslate = boundingBox.centerX;
|
|
476
620
|
const yTranslate = boundingBox.centerY;
|
|
477
|
-
// Create the gradient
|
|
478
|
-
|
|
479
|
-
const
|
|
621
|
+
// Create the gradient. Use initial-value helpers so animated endpoints (a===1) render their
|
|
622
|
+
// first-frame value into the atlas instead of feeding a keyframe array through `as number[]`.
|
|
623
|
+
const startPoint = GetInitialVectorValues(fill.s);
|
|
624
|
+
const endPoint = GetInitialVectorValues(fill.e);
|
|
480
625
|
const centerX = startPoint[0] + xTranslate;
|
|
481
626
|
const centerY = startPoint[1] + yTranslate;
|
|
482
627
|
const outerRadius = Math.hypot(endPoint[0] - startPoint[0], endPoint[1] - startPoint[1]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spritePacker.js","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/spritePacker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spritePacker.js","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/spritePacker.ts"],"names":[],"mappings":"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"}
|
package/parsing/textLayout.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type IVector2Like } from "@babylonjs/core/Maths/math.like.js";
|
|
2
|
+
import { type LottieTextCompatibilityMode } from "../animationConfiguration.js";
|
|
2
3
|
import { type RawFont, type RawTextData, type RawTextDocument, type RawTextJustify } from "./rawTypes.js";
|
|
3
4
|
/**
|
|
4
5
|
* Minimal text metrics shape used by the Lottie text layout helpers.
|
|
@@ -181,9 +182,10 @@ export declare function ResolveLottieText(textData: RawTextData, rawFonts: Map<s
|
|
|
181
182
|
* Measures the final texture layout for resolved Lottie text.
|
|
182
183
|
* @param resolvedText Resolved text data.
|
|
183
184
|
* @param measureText Callback used to measure text with the active font.
|
|
185
|
+
* @param compatibilityMode Text layout compatibility mode.
|
|
184
186
|
* @returns The measured text layout.
|
|
185
187
|
*/
|
|
186
|
-
export declare function MeasureLottieText(resolvedText: ResolvedLottieText, measureText: (text: string) => TextMetricsLike): LottieTextLayout;
|
|
188
|
+
export declare function MeasureLottieText(resolvedText: ResolvedLottieText, measureText: (text: string) => TextMetricsLike, compatibilityMode?: LottieTextCompatibilityMode): LottieTextLayout;
|
|
187
189
|
/**
|
|
188
190
|
* Renders resolved text using the measured layout.
|
|
189
191
|
* @param context Rendering context used to draw text.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textLayout.d.ts","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/textLayout.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"textLayout.d.ts","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/textLayout.ts"],"names":[],"mappings":"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"}
|
package/parsing/textLayout.js
CHANGED
|
@@ -46,9 +46,13 @@ export function ResolveLottieText(textData, rawFonts, variables) {
|
|
|
46
46
|
* Measures the final texture layout for resolved Lottie text.
|
|
47
47
|
* @param resolvedText Resolved text data.
|
|
48
48
|
* @param measureText Callback used to measure text with the active font.
|
|
49
|
+
* @param compatibilityMode Text layout compatibility mode.
|
|
49
50
|
* @returns The measured text layout.
|
|
50
51
|
*/
|
|
51
|
-
export function MeasureLottieText(resolvedText, measureText) {
|
|
52
|
+
export function MeasureLottieText(resolvedText, measureText, compatibilityMode = "spec") {
|
|
53
|
+
return compatibilityMode === "babylon8" ? MeasureBabylon8LottieText(resolvedText, measureText) : MeasureSpecLottieText(resolvedText, measureText);
|
|
54
|
+
}
|
|
55
|
+
function MeasureSpecLottieText(resolvedText, measureText) {
|
|
52
56
|
const hasParagraphBox = resolvedText.boxPosition !== undefined && resolvedText.boxSize !== undefined;
|
|
53
57
|
const lineMeasurements = CreateLineMeasurements(resolvedText, measureText, hasParagraphBox);
|
|
54
58
|
const bottomPaddingPx = resolvedText.hasStroke ? Math.max(MinimumTextBottomPaddingPx, resolvedText.textInfo.sw / 2) : MinimumTextBottomPaddingPx;
|
|
@@ -108,6 +112,35 @@ export function MeasureLottieText(resolvedText, measureText) {
|
|
|
108
112
|
})),
|
|
109
113
|
};
|
|
110
114
|
}
|
|
115
|
+
function MeasureBabylon8LottieText(resolvedText, measureText) {
|
|
116
|
+
// Babylon.js 8.x rasterized text via a single fillText call that received the raw Lottie text string,
|
|
117
|
+
// including any embedded line break characters. Canvas's fillText/measureText treat \n and \r as
|
|
118
|
+
// ignorable whitespace, so multi-line Lottie text rendered as a single line in Babylon.js 8.
|
|
119
|
+
// Joining the lines back together here intentionally reproduces that behavior; do not split across
|
|
120
|
+
// multiple LottieTextLineLayout entries or this mode will diverge from Babylon.js 8 placement.
|
|
121
|
+
const text = resolvedText.lines.join("\n");
|
|
122
|
+
const metrics = measureText(text);
|
|
123
|
+
const width = Math.ceil(metrics.width);
|
|
124
|
+
const ascent = Math.ceil(metrics.actualBoundingBoxAscent ?? resolvedText.baselineOffsetPx);
|
|
125
|
+
const descent = Math.ceil(metrics.actualBoundingBoxDescent ?? 0);
|
|
126
|
+
const height = ascent + descent;
|
|
127
|
+
return {
|
|
128
|
+
width,
|
|
129
|
+
height,
|
|
130
|
+
offsetX: 0,
|
|
131
|
+
offsetY: 0,
|
|
132
|
+
baselineOffsetY: ascent,
|
|
133
|
+
descent,
|
|
134
|
+
lines: [
|
|
135
|
+
{
|
|
136
|
+
text,
|
|
137
|
+
width,
|
|
138
|
+
x: 0,
|
|
139
|
+
baselineY: ascent,
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
};
|
|
143
|
+
}
|
|
111
144
|
function CreateLineMeasurements(resolvedText, measureText, hasParagraphBox) {
|
|
112
145
|
const lines = hasParagraphBox ? resolvedText.lines.flatMap((line) => WrapParagraphTextLine(line, resolvedText, measureText)) : resolvedText.lines;
|
|
113
146
|
return lines.map((line, index) => {
|