@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.
Files changed (37) hide show
  1. package/animationConfiguration.d.ts +20 -0
  2. package/animationConfiguration.d.ts.map +1 -1
  3. package/animationConfiguration.js +1 -0
  4. package/animationConfiguration.js.map +1 -1
  5. package/blobWorkerWrapper.d.ts.map +1 -1
  6. package/blobWorkerWrapper.js +0 -1
  7. package/blobWorkerWrapper.js.map +1 -1
  8. package/maths/boundingBox.d.ts +3 -1
  9. package/maths/boundingBox.d.ts.map +1 -1
  10. package/maths/boundingBox.js +15 -4
  11. package/maths/boundingBox.js.map +1 -1
  12. package/nodes/node.d.ts.map +1 -1
  13. package/nodes/node.js +5 -1
  14. package/nodes/node.js.map +1 -1
  15. package/package.json +1 -1
  16. package/parsing/parser.d.ts +11 -0
  17. package/parsing/parser.d.ts.map +1 -1
  18. package/parsing/parser.js +190 -20
  19. package/parsing/parser.js.map +1 -1
  20. package/parsing/rawPropertyHelpers.d.ts +10 -1
  21. package/parsing/rawPropertyHelpers.d.ts.map +1 -1
  22. package/parsing/rawPropertyHelpers.js +14 -0
  23. package/parsing/rawPropertyHelpers.js.map +1 -1
  24. package/parsing/rawTypes.d.ts +23 -3
  25. package/parsing/rawTypes.d.ts.map +1 -1
  26. package/parsing/spritePacker.d.ts +38 -2
  27. package/parsing/spritePacker.d.ts.map +1 -1
  28. package/parsing/spritePacker.js +169 -24
  29. package/parsing/spritePacker.js.map +1 -1
  30. package/parsing/textLayout.d.ts +3 -1
  31. package/parsing/textLayout.d.ts.map +1 -1
  32. package/parsing/textLayout.js +34 -1
  33. package/parsing/textLayout.js.map +1 -1
  34. package/readme.md +31 -14
  35. package/rendering/animationController.d.ts.map +1 -1
  36. package/rendering/animationController.js +3 -0
  37. 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,EAKZ,KAAK,WAAW,EACnB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAOxE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AA0BF;;;GAGG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAU;IACxC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,SAAS,CAAmC;IAEpD,OAAO,CAAC,MAAM,CAAc;IAG5B,OAAO,CAAC,gBAAgB,CAAkB;IAE1C;;;OAGG;IACH,IAAW,QAAQ,IAAI,WAAW,EAAE,CAEnC;IAED;;;OAGG;IACH,IAAW,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,EAEjD;IAED;;;;;;;OAOG;gBACgB,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,sBAAsB;IAsBvJ;;;;;OAKG;IACI,cAAc,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,YAAY,GAAG,eAAe;IAsC9F;;;;;OAKG;IACI,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,GAAG,eAAe,GAAG,SAAS;IA8CrG;;OAEG;IACI,kBAAkB,IAAI,IAAI;IAUjC;;OAEG;IACI,aAAa,IAAI,IAAI;IAO5B,OAAO,CAAC,WAAW;IAiCnB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,mBAAmB;IAgE3B,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,SAAS;IAiDjB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,SAAS;IAsDjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IA+DnB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,sBAAsB;CAYjC"}
1
+ {"version":3,"file":"spritePacker.d.ts","sourceRoot":"","sources":["../../../../dev/lottiePlayer/src/parsing/spritePacker.ts"],"names":[],"mappings":"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"}
@@ -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
- scalingFactor.x = scalingFactor.x * this._atlasScale * this._configuration.devicePixelRatio;
61
- scalingFactor.y = scalingFactor.y * this._atlasScale * this._configuration.devicePixelRatio;
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
- scalingFactor.x = scalingFactor.x * this._atlasScale * this._configuration.devicePixelRatio;
101
- scalingFactor.y = scalingFactor.y * this._atlasScale * this._configuration.devicePixelRatio;
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
- // Clamp oversized cells to fit within a single atlas page
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
- const color = this._lottieColorToCSSColor(fill.c.k, fill.o.k / 100);
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
- const opacity = stroke.o?.k ?? 100;
397
- const color = this._lottieColorToCSSColor(stroke.c?.k ?? [0, 0, 0], opacity / 100);
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?.k ?? 1;
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
- lineDashes.push(dashes[i].v.k);
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
- const startPoint = fill.s.k;
467
- const endPoint = fill.e.k;
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
- const startPoint = fill.s.k;
479
- const endPoint = fill.e.k;
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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"}
@@ -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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"}
@@ -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) => {