@dnyantra/dtly 0.2.1 → 0.3.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/README.md +21 -8
- package/dist/agents.d.ts +1 -0
- package/dist/agents.js +9 -4
- package/dist/agents.js.map +1 -1
- package/dist/cli.js +35 -5
- package/dist/cli.js.map +1 -1
- package/dist/core/anim.js +20 -0
- package/dist/core/anim.js.map +1 -1
- package/dist/core/captions.d.ts +13 -0
- package/dist/core/captions.js +57 -0
- package/dist/core/captions.js.map +1 -0
- package/dist/core/geo.d.ts +13 -0
- package/dist/core/geo.js +41 -0
- package/dist/core/geo.js.map +1 -0
- package/dist/core/model.d.ts +112 -9
- package/dist/core/model.js.map +1 -1
- package/dist/core/path.d.ts +35 -0
- package/dist/core/path.js +324 -0
- package/dist/core/path.js.map +1 -0
- package/dist/core/svg.d.ts +22 -0
- package/dist/core/svg.js +217 -0
- package/dist/core/svg.js.map +1 -0
- package/dist/core/text.d.ts +3 -1
- package/dist/core/text.js +49 -3
- package/dist/core/text.js.map +1 -1
- package/dist/mcp/server.js +28 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/ops/ops.d.ts +7 -0
- package/dist/ops/ops.js +11 -1
- package/dist/ops/ops.js.map +1 -1
- package/dist/presets/app.d.ts +2 -0
- package/dist/presets/app.js +82 -0
- package/dist/presets/app.js.map +1 -0
- package/dist/presets/captions.d.ts +2 -0
- package/dist/presets/captions.js +48 -0
- package/dist/presets/captions.js.map +1 -0
- package/dist/presets/charts.d.ts +2 -0
- package/dist/presets/charts.js +162 -0
- package/dist/presets/charts.js.map +1 -0
- package/dist/presets/index.d.ts +1 -1
- package/dist/presets/index.js +62 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/maps.d.ts +2 -0
- package/dist/presets/maps.js +79 -0
- package/dist/presets/maps.js.map +1 -0
- package/dist/render/fx.d.ts +11 -0
- package/dist/render/fx.js +87 -0
- package/dist/render/fx.js.map +1 -0
- package/dist/render/grade.d.ts +20 -0
- package/dist/render/grade.js +178 -0
- package/dist/render/grade.js.map +1 -0
- package/dist/render/lottie.d.ts +36 -0
- package/dist/render/lottie.js +523 -0
- package/dist/render/lottie.js.map +1 -0
- package/dist/render/node-host.d.ts +1 -0
- package/dist/render/node-host.js +15 -4
- package/dist/render/node-host.js.map +1 -1
- package/dist/render/perspective.d.ts +5 -0
- package/dist/render/perspective.js +71 -0
- package/dist/render/perspective.js.map +1 -0
- package/dist/render/renderer.d.ts +6 -0
- package/dist/render/renderer.js +156 -95
- package/dist/render/renderer.js.map +1 -1
- package/dist/render/shapes.d.ts +6 -0
- package/dist/render/shapes.js +129 -0
- package/dist/render/shapes.js.map +1 -0
- package/dist/render/tiles.d.ts +11 -0
- package/dist/render/tiles.js +42 -0
- package/dist/render/tiles.js.map +1 -0
- package/dist/render/transcribe.d.ts +14 -0
- package/dist/render/transcribe.js +55 -0
- package/dist/render/transcribe.js.map +1 -0
- package/dist/studio/server.js +14 -1
- package/dist/studio/server.js.map +1 -1
- package/dist/studio-app/app.js +5 -4
- package/dist/studio-app/app.js.map +4 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/plugin/skills/{dtly → moti}/SKILL.md +26 -6
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
// A Lottie (Bodymovin) player on Canvas2D, so Lottie files render inside DT.ly in Node and in the browser.
|
|
2
|
+
// Supports shape, solid, image, null, precomp and simple text layers; groups, paths, rects, ellipses,
|
|
3
|
+
// polystars, fills, strokes (dashes), gradient fills/strokes, trim paths, repeaters; parenting,
|
|
4
|
+
// masks (add/subtract/intersect), track mattes (alpha and luma), time stretch and time remap.
|
|
5
|
+
// Not supported: expressions, layer effects, merge paths, round corners, 3D layers.
|
|
6
|
+
import { applyEase } from '../core/ease.js';
|
|
7
|
+
const I = [1, 0, 0, 1, 0, 0];
|
|
8
|
+
const mul = (m, n) => [m[0] * n[0] + m[2] * n[1], m[1] * n[0] + m[3] * n[1], m[0] * n[2] + m[2] * n[3], m[1] * n[2] + m[3] * n[3], m[0] * n[4] + m[2] * n[5] + m[4], m[1] * n[4] + m[3] * n[5] + m[5]];
|
|
9
|
+
const apply = (m, x, y) => [m[0] * x + m[2] * y + m[4], m[1] * x + m[3] * y + m[5]];
|
|
10
|
+
// ---- property evaluation ---------------------------------------------------------------------
|
|
11
|
+
const first = (v, d = 0) => (Array.isArray(v) ? v[0] ?? d : v ?? d);
|
|
12
|
+
const lerpAny = (a, b, p) => {
|
|
13
|
+
if (typeof a === 'number')
|
|
14
|
+
return a + (b - a) * p;
|
|
15
|
+
if (Array.isArray(a))
|
|
16
|
+
return a.map((x, i) => lerpAny(x, b?.[i] ?? x, p));
|
|
17
|
+
if (a && typeof a === 'object' && a.v)
|
|
18
|
+
return { c: a.c, i: lerpAny(a.i, b.i, p), o: lerpAny(a.o, b.o, p), v: lerpAny(a.v, b.v, p) }; // shape
|
|
19
|
+
return p < 1 ? a : b;
|
|
20
|
+
};
|
|
21
|
+
const evalProp = (prop, f) => {
|
|
22
|
+
if (!prop)
|
|
23
|
+
return undefined;
|
|
24
|
+
const k = prop.k;
|
|
25
|
+
const animated = prop.a === 1 || (Array.isArray(k) && k.length && typeof k[0] === 'object' && k[0] !== null && 't' in k[0]);
|
|
26
|
+
if (!animated)
|
|
27
|
+
return k;
|
|
28
|
+
const kfs = k;
|
|
29
|
+
if (f <= kfs[0].t)
|
|
30
|
+
return kfs[0].s ?? kfs[0].e;
|
|
31
|
+
let i = 0;
|
|
32
|
+
while (i < kfs.length - 1 && f >= kfs[i + 1].t)
|
|
33
|
+
i++;
|
|
34
|
+
const a = kfs[i], b = kfs[i + 1];
|
|
35
|
+
if (!b || a.s === undefined)
|
|
36
|
+
return a.s ?? kfs[i - 1]?.e ?? kfs[i - 1]?.s;
|
|
37
|
+
const start = a.s, end = a.e ?? b.s;
|
|
38
|
+
if (a.h === 1 || end === undefined)
|
|
39
|
+
return start;
|
|
40
|
+
const x = (f - a.t) / (b.t - a.t);
|
|
41
|
+
const ox = first(a.o?.x, 0), oy = first(a.o?.y, 0), ix = first(a.i?.x, 1), iy = first(a.i?.y, 1);
|
|
42
|
+
const p = applyEase([ox, oy, ix, iy], Math.max(0, Math.min(1, x)));
|
|
43
|
+
// Spatial bezier for positions (motion paths).
|
|
44
|
+
if (a.to && a.ti && Array.isArray(start) && start.length >= 2 && (a.to.some((v) => v) || a.ti.some((v) => v))) {
|
|
45
|
+
const c1 = start.map((v, d) => v + (a.to[d] ?? 0)), c2 = end.map((v, d) => v + (a.ti[d] ?? 0)), u = 1 - p;
|
|
46
|
+
return start.map((v, d) => u * u * u * v + 3 * u * u * p * c1[d] + 3 * u * p * p * c2[d] + p * p * p * end[d]);
|
|
47
|
+
}
|
|
48
|
+
return lerpAny(start, end, p);
|
|
49
|
+
};
|
|
50
|
+
const num = (prop, f, d = 0) => { const v = evalProp(prop, f); return v === undefined ? d : first(v, d); };
|
|
51
|
+
const vec = (prop, f, d) => { const v = evalProp(prop, f); return v === undefined ? d : Array.isArray(v) ? v : [v, v]; };
|
|
52
|
+
// Colours are 0..1 in current Lottie files, 0..255 in files from Bodymovin 4.x and older.
|
|
53
|
+
const rgba = (c, alpha) => {
|
|
54
|
+
const k = (c[0] ?? 0) > 1 || (c[1] ?? 0) > 1 || (c[2] ?? 0) > 1 || (c[3] ?? 0) > 1 ? 1 / 255 : 1;
|
|
55
|
+
return `rgba(${Math.round((c[0] ?? 0) * k * 255)},${Math.round((c[1] ?? 0) * k * 255)},${Math.round((c[2] ?? 0) * k * 255)},${Math.max(0, Math.min(1, (c[3] ?? 1 / k) * k * alpha)).toFixed(4)})`;
|
|
56
|
+
};
|
|
57
|
+
// ---- transforms ------------------------------------------------------------------------------
|
|
58
|
+
const transformMatrix = (tr, f) => {
|
|
59
|
+
if (!tr)
|
|
60
|
+
return I;
|
|
61
|
+
const a = vec(tr.a, f, [0, 0]);
|
|
62
|
+
let p;
|
|
63
|
+
if (tr.p?.s)
|
|
64
|
+
p = [num(tr.p.x, f), num(tr.p.y, f)];
|
|
65
|
+
else
|
|
66
|
+
p = vec(tr.p, f, [0, 0]);
|
|
67
|
+
const s = vec(tr.s, f, [100, 100]);
|
|
68
|
+
const r = ((tr.r ? num(tr.r, f) : num(tr.rz, f)) * Math.PI) / 180;
|
|
69
|
+
const sk = (num(tr.sk, f) * Math.PI) / 180, sa = (num(tr.sa, f) * Math.PI) / 180;
|
|
70
|
+
let m = [1, 0, 0, 1, p[0] ?? 0, p[1] ?? 0];
|
|
71
|
+
m = mul(m, [Math.cos(r), Math.sin(r), -Math.sin(r), Math.cos(r), 0, 0]);
|
|
72
|
+
if (sk) {
|
|
73
|
+
const c = Math.cos(sa), si = Math.sin(sa);
|
|
74
|
+
m = mul(m, mul(mul([c, si, -si, c, 0, 0], [1, 0, Math.tan(-sk), 1, 0, 0]), [c, -si, si, c, 0, 0]));
|
|
75
|
+
}
|
|
76
|
+
m = mul(m, [(s[0] ?? 100) / 100, 0, 0, (s[1] ?? 100) / 100, 0, 0]);
|
|
77
|
+
return mul(m, [1, 0, 0, 1, -(a[0] ?? 0), -(a[1] ?? 0)]);
|
|
78
|
+
};
|
|
79
|
+
const opacityOf = (tr, f) => (tr?.o ? num(tr.o, f, 100) / 100 : 1);
|
|
80
|
+
const shapeToGeo = (sh, m, reverse = false) => {
|
|
81
|
+
if (Array.isArray(sh))
|
|
82
|
+
sh = sh[0]; // animated shapes keep their value wrapped in an array
|
|
83
|
+
if (!sh?.v?.length)
|
|
84
|
+
return { subs: [] };
|
|
85
|
+
let v = sh.v, ii = sh.i ?? [], oo = sh.o ?? [];
|
|
86
|
+
if (reverse) {
|
|
87
|
+
v = [...v].reverse();
|
|
88
|
+
const ni = [...oo].reverse(), no = [...ii].reverse();
|
|
89
|
+
ii = ni;
|
|
90
|
+
oo = no;
|
|
91
|
+
}
|
|
92
|
+
const n = v.length, cubics = [];
|
|
93
|
+
const P = (j) => apply(m, v[j][0], v[j][1]);
|
|
94
|
+
const segCount = sh.c ? n : n - 1;
|
|
95
|
+
for (let j = 0; j < segCount; j++) {
|
|
96
|
+
const k = (j + 1) % n;
|
|
97
|
+
const c1 = apply(m, v[j][0] + (oo[j]?.[0] ?? 0), v[j][1] + (oo[j]?.[1] ?? 0));
|
|
98
|
+
const c2 = apply(m, v[k][0] + (ii[k]?.[0] ?? 0), v[k][1] + (ii[k]?.[1] ?? 0));
|
|
99
|
+
const e = P(k);
|
|
100
|
+
cubics.push([c1[0], c1[1], c2[0], c2[1], e[0], e[1]]);
|
|
101
|
+
}
|
|
102
|
+
return { subs: [{ start: P(0), cubics, closed: !!sh.c }] };
|
|
103
|
+
};
|
|
104
|
+
const K = 0.5522847498;
|
|
105
|
+
const ellipseGeo = (it, f, m) => {
|
|
106
|
+
const [cx, cy] = vec(it.p, f, [0, 0]), [w, h] = vec(it.s, f, [0, 0]);
|
|
107
|
+
const a = w / 2, b = h / 2;
|
|
108
|
+
const sh = { c: true, v: [[cx, cy - b], [cx + a, cy], [cx, cy + b], [cx - a, cy]], o: [[a * K, 0], [0, b * K], [-a * K, 0], [0, -b * K]], i: [[-a * K, 0], [0, -b * K], [a * K, 0], [0, b * K]] };
|
|
109
|
+
return shapeToGeo(sh, m, it.d === 3);
|
|
110
|
+
};
|
|
111
|
+
const rectGeo = (it, f, m) => {
|
|
112
|
+
const [cx, cy] = vec(it.p, f, [0, 0]), [w, h] = vec(it.s, f, [0, 0]);
|
|
113
|
+
const r = Math.min(num(it.r, f), w / 2, h / 2), x = cx - w / 2, y = cy - h / 2, k = r * K;
|
|
114
|
+
const sh = r > 0
|
|
115
|
+
? { c: true, v: [[x + w, y + r], [x + w, y + h - r], [x + w - r, y + h], [x + r, y + h], [x, y + h - r], [x, y + r], [x + r, y], [x + w - r, y]], i: [[0, -k], [0, 0], [k, 0], [0, 0], [0, k], [0, 0], [-k, 0], [0, 0]], o: [[0, 0], [0, k], [0, 0], [-k, 0], [0, 0], [0, -k], [0, 0], [k, 0]] }
|
|
116
|
+
: { c: true, v: [[x + w, y], [x + w, y + h], [x, y + h], [x, y]], i: [[0, 0], [0, 0], [0, 0], [0, 0]], o: [[0, 0], [0, 0], [0, 0], [0, 0]] };
|
|
117
|
+
return shapeToGeo(sh, m, it.d === 3);
|
|
118
|
+
};
|
|
119
|
+
const starGeo = (it, f, m) => {
|
|
120
|
+
const pts = Math.max(3, Math.round(num(it.pt, f, 5))), [cx, cy] = vec(it.p, f, [0, 0]);
|
|
121
|
+
const rot = ((num(it.r, f) - 90) * Math.PI) / 180, or = num(it.or, f, 100), ir = num(it.ir, f, 50);
|
|
122
|
+
const count = it.sy === 1 ? pts * 2 : pts, v = [];
|
|
123
|
+
for (let i = 0; i < count; i++) {
|
|
124
|
+
const rr = it.sy === 1 && i % 2 ? ir : or;
|
|
125
|
+
const a = rot + (i / count) * Math.PI * 2;
|
|
126
|
+
v.push([cx + Math.cos(a) * rr, cy + Math.sin(a) * rr]);
|
|
127
|
+
}
|
|
128
|
+
return shapeToGeo({ c: true, v, i: v.map(() => [0, 0]), o: v.map(() => [0, 0]) }, m, it.d === 3);
|
|
129
|
+
};
|
|
130
|
+
const traceGeo = (ctx, g) => {
|
|
131
|
+
for (const s of g.subs) {
|
|
132
|
+
ctx.moveTo(...s.start);
|
|
133
|
+
for (const c of s.cubics)
|
|
134
|
+
ctx.bezierCurveTo(c[0], c[1], c[2], c[3], c[4], c[5]);
|
|
135
|
+
if (s.closed)
|
|
136
|
+
ctx.closePath();
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
// Trim paths on cubic geometry: flatten, then cut by length.
|
|
140
|
+
const trimGeo = (g, start, end, offset) => {
|
|
141
|
+
const subs = g.subs.map((s) => {
|
|
142
|
+
const pts = [s.start];
|
|
143
|
+
let last = s.start;
|
|
144
|
+
for (const c of s.cubics) {
|
|
145
|
+
const n = 24;
|
|
146
|
+
for (let k = 1; k <= n; k++) {
|
|
147
|
+
const t = k / n, u = 1 - t;
|
|
148
|
+
pts.push([u * u * u * last[0] + 3 * u * u * t * c[0] + 3 * u * t * t * c[2] + t * t * t * c[4], u * u * u * last[1] + 3 * u * u * t * c[1] + 3 * u * t * t * c[3] + t * t * t * c[5]]);
|
|
149
|
+
}
|
|
150
|
+
last = [c[4], c[5]];
|
|
151
|
+
}
|
|
152
|
+
return pts;
|
|
153
|
+
});
|
|
154
|
+
const lens = subs.map((pts) => pts.slice(1).reduce((a, p, i) => a + Math.hypot(p[0] - pts[i][0], p[1] - pts[i][1]), 0));
|
|
155
|
+
const total = lens.reduce((a, b) => a + b, 0);
|
|
156
|
+
if (!total)
|
|
157
|
+
return { subs: [] };
|
|
158
|
+
let s0 = Math.min(start, end) + offset, s1 = Math.max(start, end) + offset;
|
|
159
|
+
const shift = Math.floor(s0);
|
|
160
|
+
s0 -= shift;
|
|
161
|
+
s1 -= shift;
|
|
162
|
+
const ranges = s1 <= 1 ? [[s0, s1]] : [[s0, 1], [0, s1 - 1]];
|
|
163
|
+
const out = { subs: [] };
|
|
164
|
+
for (const [ra, rb] of ranges) {
|
|
165
|
+
const from = ra * total, to = rb * total;
|
|
166
|
+
let acc = 0;
|
|
167
|
+
subs.forEach((pts) => {
|
|
168
|
+
let line = null;
|
|
169
|
+
for (let i = 0; i < pts.length - 1; i++) {
|
|
170
|
+
const p = pts[i], q = pts[i + 1], l = Math.hypot(q[0] - p[0], q[1] - p[1]), a0 = acc, a1 = acc + l;
|
|
171
|
+
acc = a1;
|
|
172
|
+
if (a1 < from || a0 > to || !l)
|
|
173
|
+
continue;
|
|
174
|
+
const at = (d) => { const k = (d - a0) / l; return [p[0] + (q[0] - p[0]) * k, p[1] + (q[1] - p[1]) * k]; };
|
|
175
|
+
if (!line)
|
|
176
|
+
line = [at(Math.max(from, a0))];
|
|
177
|
+
line.push(at(Math.min(to, a1)));
|
|
178
|
+
}
|
|
179
|
+
if (line && line.length > 1)
|
|
180
|
+
out.subs.push({ start: line[0], cubics: line.slice(1).map((p, i) => { const a = line[i]; return [a[0], a[1], p[0], p[1], p[0], p[1]]; }), closed: false });
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
};
|
|
185
|
+
const gradientStyle = (ctx, it, f, m, alpha) => {
|
|
186
|
+
const s = vec(it.s, f, [0, 0]), e = vec(it.e, f, [0, 0]);
|
|
187
|
+
const [x0, y0] = apply(m, s[0], s[1]), [x1, y1] = apply(m, e[0], e[1]);
|
|
188
|
+
const grad = it.t === 2 ? ctx.createRadialGradient(x0, y0, 0, x0, y0, Math.hypot(x1 - x0, y1 - y0)) : ctx.createLinearGradient(x0, y0, x1, y1);
|
|
189
|
+
const n = it.g?.p ?? 0, raw = evalProp(it.g?.k, f) ?? [];
|
|
190
|
+
const alphaAt = (pos) => {
|
|
191
|
+
const op = raw.slice(n * 4);
|
|
192
|
+
if (op.length < 2)
|
|
193
|
+
return 1;
|
|
194
|
+
for (let j = 0; j < op.length - 2; j += 2)
|
|
195
|
+
if (pos >= op[j] && pos <= op[j + 2]) {
|
|
196
|
+
const k = (pos - op[j]) / ((op[j + 2] - op[j]) || 1);
|
|
197
|
+
return op[j + 1] + (op[j + 3] - op[j + 1]) * k;
|
|
198
|
+
}
|
|
199
|
+
return pos < op[0] ? op[1] : op[op.length - 1];
|
|
200
|
+
};
|
|
201
|
+
for (let j = 0; j < n; j++) {
|
|
202
|
+
const pos = raw[j * 4];
|
|
203
|
+
grad.addColorStop(Math.max(0, Math.min(1, pos)), rgba([raw[j * 4 + 1], raw[j * 4 + 2], raw[j * 4 + 3], alphaAt(pos)], alpha));
|
|
204
|
+
}
|
|
205
|
+
return grad;
|
|
206
|
+
};
|
|
207
|
+
const paintAll = (ctx, paints, f) => {
|
|
208
|
+
// Lower items render first (AE stacking): paints were collected top-down.
|
|
209
|
+
for (let i = paints.length - 1; i >= 0; i--) {
|
|
210
|
+
const { kind, it, geos, alpha, m } = paints[i];
|
|
211
|
+
if (!geos.length || it.hd)
|
|
212
|
+
continue;
|
|
213
|
+
ctx.beginPath();
|
|
214
|
+
for (const g of geos)
|
|
215
|
+
traceGeo(ctx, g);
|
|
216
|
+
const o = num(it.o, f, 100) / 100 * alpha;
|
|
217
|
+
if (kind === 'fill') {
|
|
218
|
+
ctx.fillStyle = it.ty === 'gf' ? gradientStyle(ctx, it, f, m, o) : rgba(vec(it.c, f, [0, 0, 0, 1]), o);
|
|
219
|
+
ctx.fill(it.r === 2 ? 'evenodd' : 'nonzero');
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
ctx.strokeStyle = it.ty === 'gs' ? gradientStyle(ctx, it, f, m, o) : rgba(vec(it.c, f, [0, 0, 0, 1]), o);
|
|
223
|
+
ctx.lineWidth = num(it.w, f, 1) * (paintScale.get(it) ?? 1);
|
|
224
|
+
ctx.lineCap = ['butt', 'butt', 'round', 'square'][it.lc ?? 2] ?? 'round';
|
|
225
|
+
ctx.lineJoin = ['miter', 'miter', 'round', 'bevel'][it.lj ?? 2] ?? 'round';
|
|
226
|
+
ctx.miterLimit = it.ml ?? 4;
|
|
227
|
+
if (it.d?.length) {
|
|
228
|
+
const d = it.d.filter((x) => x.n !== 'o').map((x) => num(x.v, f) * (paintScale.get(it) ?? 1));
|
|
229
|
+
ctx.setLineDash(d);
|
|
230
|
+
const off = it.d.find((x) => x.n === 'o');
|
|
231
|
+
ctx.lineDashOffset = off ? num(off.v, f) : 0;
|
|
232
|
+
}
|
|
233
|
+
ctx.stroke();
|
|
234
|
+
ctx.setLineDash([]);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
// Stroke widths and gradients are in shape space; geometry is already in layer pixels, so remember the scale.
|
|
239
|
+
const paintScale = new WeakMap();
|
|
240
|
+
const collect = (items, f, m, alpha, paints, geos) => {
|
|
241
|
+
const tr = items.find((it) => it.ty === 'tr');
|
|
242
|
+
const gm = tr ? mul(m, transformMatrix(tr, f)) : m;
|
|
243
|
+
const ga = alpha * (tr ? opacityOf(tr, f) : 1);
|
|
244
|
+
const scale = Math.sqrt(Math.abs(gm[0] * gm[3] - gm[1] * gm[2]));
|
|
245
|
+
const local = [];
|
|
246
|
+
const localPaints = [];
|
|
247
|
+
for (const it of items) {
|
|
248
|
+
if (it.hd)
|
|
249
|
+
continue;
|
|
250
|
+
switch (it.ty) {
|
|
251
|
+
case 'sh':
|
|
252
|
+
local.push(shapeToGeo(evalProp(it.ks, f), gm, it.d === 3));
|
|
253
|
+
break;
|
|
254
|
+
case 'el':
|
|
255
|
+
local.push(ellipseGeo(it, f, gm));
|
|
256
|
+
break;
|
|
257
|
+
case 'rc':
|
|
258
|
+
local.push(rectGeo(it, f, gm));
|
|
259
|
+
break;
|
|
260
|
+
case 'sr':
|
|
261
|
+
local.push(starGeo(it, f, gm));
|
|
262
|
+
break;
|
|
263
|
+
case 'gr':
|
|
264
|
+
collect(it.it ?? [], f, gm, ga, localPaints, local);
|
|
265
|
+
break;
|
|
266
|
+
case 'fl':
|
|
267
|
+
case 'gf':
|
|
268
|
+
localPaints.push({ kind: 'fill', it, geos: [...local], alpha: ga, m: gm });
|
|
269
|
+
break;
|
|
270
|
+
case 'st':
|
|
271
|
+
case 'gs':
|
|
272
|
+
paintScale.set(it, scale);
|
|
273
|
+
localPaints.push({ kind: 'stroke', it, geos: [...local], alpha: ga, m: gm });
|
|
274
|
+
break;
|
|
275
|
+
case 'tm': {
|
|
276
|
+
const s = num(it.s, f) / 100, e = num(it.e, f, 100) / 100, o = num(it.o, f) / 360;
|
|
277
|
+
const trimmed = local.map((g) => trimGeo(g, s, e, o));
|
|
278
|
+
local.splice(0, local.length, ...trimmed);
|
|
279
|
+
break;
|
|
280
|
+
}
|
|
281
|
+
case 'rp': {
|
|
282
|
+
const copies = Math.round(num(it.c, f, 1)), off = num(it.o, f), rtr = it.tr;
|
|
283
|
+
const base = [...local];
|
|
284
|
+
const so = rtr?.so ? num(rtr.so, f, 100) / 100 : 1, eo = rtr?.eo ? num(rtr.eo, f, 100) / 100 : 1;
|
|
285
|
+
local.length = 0;
|
|
286
|
+
const step = transformMatrix(rtr, f);
|
|
287
|
+
for (let c = 0; c < copies; c++) {
|
|
288
|
+
let rm = I;
|
|
289
|
+
for (let k = 0; k < c + off; k++)
|
|
290
|
+
rm = mul(rm, step);
|
|
291
|
+
const inv = invert(gm);
|
|
292
|
+
const toGroup = inv ? mul(gm, mul(rm, inv)) : I;
|
|
293
|
+
for (const g of base)
|
|
294
|
+
local.push({ subs: g.subs.map((s) => ({ start: apply(toGroup, ...s.start), cubics: s.cubics.map((c3) => { const a = apply(toGroup, c3[0], c3[1]), b = apply(toGroup, c3[2], c3[3]), e = apply(toGroup, c3[4], c3[5]); return [a[0], a[1], b[0], b[1], e[0], e[1]]; }), closed: s.closed })) });
|
|
295
|
+
void so;
|
|
296
|
+
void eo;
|
|
297
|
+
}
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
default: break; // tr handled above; mm/rd/op ignored
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// Paints apply to geometry above them in their group (and nested groups' geometry).
|
|
304
|
+
paints.push(...localPaints);
|
|
305
|
+
geos.push(...local);
|
|
306
|
+
};
|
|
307
|
+
const invert = (m) => {
|
|
308
|
+
const det = m[0] * m[3] - m[1] * m[2];
|
|
309
|
+
if (Math.abs(det) < 1e-12)
|
|
310
|
+
return null;
|
|
311
|
+
return [m[3] / det, -m[1] / det, -m[2] / det, m[0] / det, (m[2] * m[5] - m[3] * m[4]) / det, (m[1] * m[4] - m[0] * m[5]) / det];
|
|
312
|
+
};
|
|
313
|
+
// ---- player ----------------------------------------------------------------------------------
|
|
314
|
+
export class LottiePlayer {
|
|
315
|
+
data;
|
|
316
|
+
host;
|
|
317
|
+
w;
|
|
318
|
+
h;
|
|
319
|
+
fr;
|
|
320
|
+
ip;
|
|
321
|
+
op;
|
|
322
|
+
assets = new Map();
|
|
323
|
+
images = new Map();
|
|
324
|
+
pool = [];
|
|
325
|
+
constructor(data, host) {
|
|
326
|
+
this.data = data;
|
|
327
|
+
this.host = host;
|
|
328
|
+
this.w = data.w;
|
|
329
|
+
this.h = data.h;
|
|
330
|
+
this.fr = data.fr || 30;
|
|
331
|
+
this.ip = data.ip ?? 0;
|
|
332
|
+
this.op = data.op ?? 60;
|
|
333
|
+
for (const a of data.assets ?? [])
|
|
334
|
+
this.assets.set(a.id, a);
|
|
335
|
+
}
|
|
336
|
+
get duration() { return (this.op - this.ip) / this.fr; }
|
|
337
|
+
async preload() {
|
|
338
|
+
for (const a of this.data.assets ?? []) {
|
|
339
|
+
if (!a.p || a.layers)
|
|
340
|
+
continue;
|
|
341
|
+
const src = a.e === 1 || String(a.p).startsWith('data:') ? a.p : `${a.u ?? ''}${a.p}`;
|
|
342
|
+
try {
|
|
343
|
+
this.images.set(a.id, await this.host.image(src));
|
|
344
|
+
}
|
|
345
|
+
catch { /* missing image: skip */ }
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
buf(w, h) {
|
|
349
|
+
const c = this.pool.find((x) => x.width === w && x.height === h);
|
|
350
|
+
if (c) {
|
|
351
|
+
this.pool.splice(this.pool.indexOf(c), 1);
|
|
352
|
+
const ctx = c.getContext('2d');
|
|
353
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
354
|
+
ctx.clearRect(0, 0, w, h);
|
|
355
|
+
return c;
|
|
356
|
+
}
|
|
357
|
+
return this.host.createCanvas(w, h);
|
|
358
|
+
}
|
|
359
|
+
release(c) { if (this.pool.length < 8)
|
|
360
|
+
this.pool.push(c); }
|
|
361
|
+
// Draws frame `f` (Lottie frame number) into ctx, in the animation's own w×h space under the ctx transform.
|
|
362
|
+
draw(ctx, f) {
|
|
363
|
+
this.drawLayers(ctx, this.data.layers ?? [], f, this.w, this.h);
|
|
364
|
+
}
|
|
365
|
+
layerMatrix(layer, byInd, f, depth = 0) {
|
|
366
|
+
let m = transformMatrix(layer.ks, f);
|
|
367
|
+
if (layer.parent !== undefined && depth < 30) {
|
|
368
|
+
const p = byInd.get(layer.parent);
|
|
369
|
+
if (p)
|
|
370
|
+
m = mul(this.layerMatrix(p, byInd, f, depth + 1), m);
|
|
371
|
+
}
|
|
372
|
+
return m;
|
|
373
|
+
}
|
|
374
|
+
drawLayers(ctx, layers, f, w, h) {
|
|
375
|
+
const byInd = new Map();
|
|
376
|
+
for (const l of layers)
|
|
377
|
+
if (l.ind !== undefined)
|
|
378
|
+
byInd.set(l.ind, l);
|
|
379
|
+
const base = ctx.getTransform();
|
|
380
|
+
for (let i = layers.length - 1; i >= 0; i--) {
|
|
381
|
+
const layer = layers[i];
|
|
382
|
+
if (layer.td || layer.hd)
|
|
383
|
+
continue; // matte sources draw only through the layer below them
|
|
384
|
+
if (f < (layer.ip ?? -Infinity) || f >= (layer.op ?? Infinity))
|
|
385
|
+
continue;
|
|
386
|
+
const matte = layer.tt ? layers[i - 1] : null;
|
|
387
|
+
if (!layer.masksProperties?.length && !matte) {
|
|
388
|
+
ctx.save();
|
|
389
|
+
this.drawLayer(ctx, layer, byInd, f, base);
|
|
390
|
+
ctx.restore();
|
|
391
|
+
continue;
|
|
392
|
+
}
|
|
393
|
+
// Masks and mattes: render into full-size buffers in the current device space.
|
|
394
|
+
const W = ctx.canvas.width, H = ctx.canvas.height;
|
|
395
|
+
const b = this.buf(W, H), bc = b.getContext('2d');
|
|
396
|
+
bc.setTransform(base);
|
|
397
|
+
this.drawLayer(bc, layer, byInd, f, base);
|
|
398
|
+
if (layer.masksProperties?.length)
|
|
399
|
+
this.applyMasks(bc, layer, byInd, f, base, W, H);
|
|
400
|
+
if (matte) {
|
|
401
|
+
const mb = this.buf(W, H), mc = mb.getContext('2d');
|
|
402
|
+
mc.setTransform(base);
|
|
403
|
+
this.drawLayer(mc, matte, byInd, f, base);
|
|
404
|
+
if (layer.tt === 3 || layer.tt === 4)
|
|
405
|
+
lumaToAlpha(mc, W, H, layer.tt === 4);
|
|
406
|
+
bc.setTransform(1, 0, 0, 1, 0, 0);
|
|
407
|
+
bc.globalCompositeOperation = layer.tt === 2 ? 'destination-out' : 'destination-in';
|
|
408
|
+
bc.drawImage(mb, 0, 0);
|
|
409
|
+
this.release(mb);
|
|
410
|
+
}
|
|
411
|
+
ctx.save();
|
|
412
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
413
|
+
ctx.drawImage(b, 0, 0);
|
|
414
|
+
ctx.restore();
|
|
415
|
+
this.release(b);
|
|
416
|
+
}
|
|
417
|
+
void w;
|
|
418
|
+
void h;
|
|
419
|
+
}
|
|
420
|
+
applyMasks(bc, layer, byInd, f, base, W, H) {
|
|
421
|
+
const m = this.layerMatrix(layer, byInd, f);
|
|
422
|
+
const mk = this.buf(W, H), mc = mk.getContext('2d');
|
|
423
|
+
const masks = layer.masksProperties.filter((x) => x.mode !== 'n');
|
|
424
|
+
if (!masks.length) {
|
|
425
|
+
this.release(mk);
|
|
426
|
+
return;
|
|
427
|
+
}
|
|
428
|
+
if (masks[0].mode === 's') {
|
|
429
|
+
mc.fillStyle = '#000';
|
|
430
|
+
mc.fillRect(0, 0, W, H);
|
|
431
|
+
}
|
|
432
|
+
for (const mask of masks) {
|
|
433
|
+
mc.setTransform(base);
|
|
434
|
+
mc.transform(...m);
|
|
435
|
+
mc.beginPath();
|
|
436
|
+
traceGeo(mc, shapeToGeo(evalProp(mask.pt, f), I));
|
|
437
|
+
const o = num(mask.o, f, 100) / 100;
|
|
438
|
+
mc.fillStyle = `rgba(0,0,0,${o})`;
|
|
439
|
+
if (mask.inv) {
|
|
440
|
+
mc.rect(-1e5, -1e5, 2e5, 2e5);
|
|
441
|
+
}
|
|
442
|
+
mc.globalCompositeOperation = mask.mode === 's' ? 'destination-out' : mask.mode === 'i' ? 'destination-in' : 'source-over';
|
|
443
|
+
mc.fill(mask.inv ? 'evenodd' : 'nonzero');
|
|
444
|
+
}
|
|
445
|
+
bc.save();
|
|
446
|
+
bc.setTransform(1, 0, 0, 1, 0, 0);
|
|
447
|
+
bc.globalCompositeOperation = 'destination-in';
|
|
448
|
+
bc.drawImage(mk, 0, 0);
|
|
449
|
+
bc.restore();
|
|
450
|
+
this.release(mk);
|
|
451
|
+
}
|
|
452
|
+
drawLayer(ctx, layer, byInd, f, base) {
|
|
453
|
+
const m = this.layerMatrix(layer, byInd, f);
|
|
454
|
+
const alpha = opacityOf(layer.ks, f);
|
|
455
|
+
if (alpha <= 0)
|
|
456
|
+
return;
|
|
457
|
+
ctx.setTransform(base);
|
|
458
|
+
ctx.globalAlpha *= alpha;
|
|
459
|
+
const lf = (f - (layer.st ?? 0)) / (layer.sr ?? 1);
|
|
460
|
+
switch (layer.ty) {
|
|
461
|
+
case 4: {
|
|
462
|
+
const paints = [];
|
|
463
|
+
collect(layer.shapes ?? [], lf, m, 1, paints, []);
|
|
464
|
+
ctx.setTransform(base);
|
|
465
|
+
paintAll(ctx, paints, lf);
|
|
466
|
+
break;
|
|
467
|
+
}
|
|
468
|
+
case 1: {
|
|
469
|
+
ctx.transform(...m);
|
|
470
|
+
ctx.fillStyle = layer.sc ?? '#000';
|
|
471
|
+
ctx.fillRect(0, 0, layer.sw ?? 0, layer.sh ?? 0);
|
|
472
|
+
break;
|
|
473
|
+
}
|
|
474
|
+
case 2: {
|
|
475
|
+
const img = this.images.get(layer.refId);
|
|
476
|
+
if (img) {
|
|
477
|
+
ctx.transform(...m);
|
|
478
|
+
ctx.drawImage(img, 0, 0);
|
|
479
|
+
}
|
|
480
|
+
break;
|
|
481
|
+
}
|
|
482
|
+
case 0: {
|
|
483
|
+
const asset = this.assets.get(layer.refId);
|
|
484
|
+
if (!asset?.layers)
|
|
485
|
+
break;
|
|
486
|
+
ctx.transform(...m);
|
|
487
|
+
ctx.beginPath();
|
|
488
|
+
ctx.rect(0, 0, layer.w ?? this.w, layer.h ?? this.h);
|
|
489
|
+
ctx.clip();
|
|
490
|
+
const tf = layer.tm ? num(layer.tm, lf) * this.fr : lf;
|
|
491
|
+
this.drawLayers(ctx, asset.layers, tf, layer.w, layer.h);
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
case 5: {
|
|
495
|
+
const v = evalProp(layer.t?.d, lf);
|
|
496
|
+
const doc = v?.t !== undefined && typeof v.t === 'string' ? v : v?.s ?? layer.t?.d?.k?.[0]?.s;
|
|
497
|
+
if (!doc?.t)
|
|
498
|
+
break;
|
|
499
|
+
ctx.transform(...m);
|
|
500
|
+
const font = (this.data.fonts?.list ?? []).find((x) => x.fName === doc.f);
|
|
501
|
+
ctx.font = `${font?.fWeight ?? (/bold/i.test(doc.f ?? '') ? 700 : 400)} ${doc.s ?? 24}px "${font?.fFamily ?? 'Mukta'}", "Baloo 2", sans-serif`;
|
|
502
|
+
ctx.fillStyle = rgba(doc.fc ?? [0, 0, 0], 1);
|
|
503
|
+
ctx.textAlign = ['left', 'right', 'center'][doc.j ?? 0] ?? 'left';
|
|
504
|
+
// Tracking is in thousandths of an em.
|
|
505
|
+
if ('letterSpacing' in ctx)
|
|
506
|
+
ctx.letterSpacing = `${((doc.tr ?? 0) / 1000) * (doc.s ?? 24)}px`;
|
|
507
|
+
const lh = doc.lh ?? (doc.s ?? 24) * 1.2;
|
|
508
|
+
String(doc.t).split(/\r|\n/).forEach((line, i) => ctx.fillText(line, 0, i * lh));
|
|
509
|
+
break;
|
|
510
|
+
}
|
|
511
|
+
default: break;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
const lumaToAlpha = (ctx, w, h, invert) => {
|
|
516
|
+
const img = ctx.getImageData(0, 0, w, h), d = img.data;
|
|
517
|
+
for (let i = 0; i < d.length; i += 4) {
|
|
518
|
+
const l = ((0.299 * d[i] + 0.587 * d[i + 1] + 0.114 * d[i + 2]) / 255) * (d[i + 3] / 255);
|
|
519
|
+
d[i + 3] = Math.round((invert ? 1 - l : l) * 255);
|
|
520
|
+
}
|
|
521
|
+
ctx.putImageData(img, 0, 0);
|
|
522
|
+
};
|
|
523
|
+
//# sourceMappingURL=lottie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lottie.js","sourceRoot":"","sources":["../../src/render/lottie.ts"],"names":[],"mappings":"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,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;QACd,CAAC,CAAC,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC;QAC9R,CAAC,CAAC,EAAC,CAAC,EAAE,IAAI,EAAE,CA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"}
|
|
@@ -10,6 +10,7 @@ export declare class NodeHost implements Host {
|
|
|
10
10
|
private readers;
|
|
11
11
|
constructor(baseDir: string);
|
|
12
12
|
resolve(src: string): string;
|
|
13
|
+
data(src: string): Promise<string>;
|
|
13
14
|
createCanvas(w: number, h: number): CanvasLike;
|
|
14
15
|
image(src: string): Promise<Drawable>;
|
|
15
16
|
videoFrame(layer: VideoLayer, sourceTime: number, w: number, h: number, fps: number): Promise<Drawable>;
|