@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 @@
|
|
|
1
|
+
{"version":3,"file":"maps.js","sourceRoot":"","sources":["../../src/presets/maps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Effect } from '../core/model.js';
|
|
2
|
+
type Ctx = CanvasRenderingContext2D;
|
|
3
|
+
type Canvasish = {
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
getContext(t: '2d'): Ctx;
|
|
7
|
+
};
|
|
8
|
+
type Acquire = (w: number, h: number) => Canvasish;
|
|
9
|
+
export declare const FX_TYPES: Set<"blur" | "brightness" | "colorBalance" | "contrast" | "cornerPin" | "curves" | "dropShadow" | "exposure" | "fill" | "glitch" | "glow" | "lut" | "rgbSplit" | "saturate" | "temperature" | "tilt" | "vignette" | "wave">;
|
|
10
|
+
export declare const drawWithFx: (target: Ctx, src: Canvasish, effects: Effect[], t: number, fps: number, acquire: Acquire, release: (c: Canvasish) => void) => boolean;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Stylised compositing effects drawn from a layer's buffer: RGB split, glitch and wave.
|
|
2
|
+
// All are strip/offset based (no per-pixel loops), so they stay cheap at 1080p.
|
|
3
|
+
import { val } from '../core/anim.js';
|
|
4
|
+
export const FX_TYPES = new Set(['rgbSplit', 'glitch', 'wave']);
|
|
5
|
+
// Deterministic noise so renders are repeatable.
|
|
6
|
+
const rand = (n) => { const x = Math.sin(n * 12.9898 + 78.233) * 43758.5453; return x - Math.floor(x); };
|
|
7
|
+
const channel = (src, acquire, color) => {
|
|
8
|
+
const c = acquire(src.width, src.height), g = c.getContext('2d');
|
|
9
|
+
g.drawImage(src, 0, 0);
|
|
10
|
+
g.globalCompositeOperation = 'multiply';
|
|
11
|
+
g.fillStyle = color;
|
|
12
|
+
g.fillRect(0, 0, c.width, c.height);
|
|
13
|
+
g.globalCompositeOperation = 'destination-in';
|
|
14
|
+
g.drawImage(src, 0, 0);
|
|
15
|
+
return c;
|
|
16
|
+
};
|
|
17
|
+
const rgbSplit = (target, src, acquire, release, dx, dy) => {
|
|
18
|
+
if (Math.abs(dx) + Math.abs(dy) < 0.5) {
|
|
19
|
+
target.drawImage(src, 0, 0);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const r = channel(src, acquire, '#ff0000'), g = channel(src, acquire, '#00ff00'), b = channel(src, acquire, '#0000ff');
|
|
23
|
+
target.save();
|
|
24
|
+
target.globalCompositeOperation = 'lighter';
|
|
25
|
+
target.drawImage(r, dx, dy);
|
|
26
|
+
target.drawImage(g, 0, 0);
|
|
27
|
+
target.drawImage(b, -dx, -dy);
|
|
28
|
+
target.restore();
|
|
29
|
+
[r, g, b].forEach(release);
|
|
30
|
+
};
|
|
31
|
+
// Draws `src` onto `target` through any stylised effects; returns false if none apply.
|
|
32
|
+
export const drawWithFx = (target, src, effects, t, fps, acquire, release) => {
|
|
33
|
+
const fx = effects.filter((e) => FX_TYPES.has(e.type));
|
|
34
|
+
if (!fx.length)
|
|
35
|
+
return false;
|
|
36
|
+
let cur = src;
|
|
37
|
+
const temps = [];
|
|
38
|
+
const stage = () => { const c = acquire(src.width, src.height); temps.push(c); return c; };
|
|
39
|
+
for (const e of fx) {
|
|
40
|
+
const out = stage(), o = out.getContext('2d');
|
|
41
|
+
const W = src.width, H = src.height;
|
|
42
|
+
if (e.type === 'wave') {
|
|
43
|
+
const amp = val(e.amplitude, t, 20), wl = e.wavelength ?? 240, ph = t * (e.speed ?? 1) * Math.PI * 2, strip = 4;
|
|
44
|
+
if (Math.abs(amp) < 0.1)
|
|
45
|
+
o.drawImage(cur, 0, 0);
|
|
46
|
+
else if ((e.direction ?? 'horizontal') === 'horizontal')
|
|
47
|
+
for (let y = 0; y < H; y += strip)
|
|
48
|
+
o.drawImage(cur, 0, y, W, strip, Math.sin((y / wl) * Math.PI * 2 + ph) * amp, y, W, strip);
|
|
49
|
+
else
|
|
50
|
+
for (let x = 0; x < W; x += strip)
|
|
51
|
+
o.drawImage(cur, x, 0, strip, H, x, Math.sin((x / wl) * Math.PI * 2 + ph) * amp, strip, H);
|
|
52
|
+
}
|
|
53
|
+
else if (e.type === 'glitch') {
|
|
54
|
+
const amount = val(e.amount, t, 50) / 100;
|
|
55
|
+
const frame = Math.floor(t * fps / (e.hold ?? 2)), seed = (e.seed ?? 1) * 1000 + frame;
|
|
56
|
+
if (amount <= 0.001)
|
|
57
|
+
o.drawImage(cur, 0, 0);
|
|
58
|
+
else {
|
|
59
|
+
// Horizontal slices pushed sideways by random amounts; some frames stay clean.
|
|
60
|
+
let y = 0, k = 0;
|
|
61
|
+
while (y < H) {
|
|
62
|
+
const hgt = Math.max(4, Math.round((0.01 + rand(seed + k * 7.1) * 0.08) * H));
|
|
63
|
+
const active = rand(seed + k * 3.3) < 0.35 + amount * 0.4;
|
|
64
|
+
const dx = active ? (rand(seed + k * 5.7) - 0.5) * 2 * amount * W * 0.08 : 0;
|
|
65
|
+
o.drawImage(cur, 0, y, W, hgt, dx, y, W, hgt);
|
|
66
|
+
y += hgt;
|
|
67
|
+
k++;
|
|
68
|
+
}
|
|
69
|
+
if (e.rgb !== false) {
|
|
70
|
+
const split = stage(), sg = split.getContext('2d');
|
|
71
|
+
rgbSplit(sg, out, acquire, release, amount * 14 * (rand(seed) > 0.5 ? 1 : -1), 0);
|
|
72
|
+
cur = split;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (e.type === 'rgbSplit') {
|
|
78
|
+
const amt = val(e.amount, t, 10), ang = ((e.angle ?? 0) * Math.PI) / 180;
|
|
79
|
+
rgbSplit(o, cur, acquire, release, Math.cos(ang) * amt, Math.sin(ang) * amt);
|
|
80
|
+
}
|
|
81
|
+
cur = out;
|
|
82
|
+
}
|
|
83
|
+
target.drawImage(cur, 0, 0);
|
|
84
|
+
temps.forEach(release);
|
|
85
|
+
return true;
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=fx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fx.js","sourceRoot":"","sources":["../../src/render/fx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Effect } from '../core/model.js';
|
|
2
|
+
type Ctx = CanvasRenderingContext2D;
|
|
3
|
+
type Grade = Extract<Effect, {
|
|
4
|
+
type: 'curves' | 'colorBalance' | 'exposure' | 'temperature' | 'lut';
|
|
5
|
+
}>;
|
|
6
|
+
export declare const GRADE_TYPES: Set<"blur" | "brightness" | "colorBalance" | "contrast" | "cornerPin" | "curves" | "dropShadow" | "exposure" | "fill" | "glitch" | "glow" | "lut" | "rgbSplit" | "saturate" | "temperature" | "tilt" | "vignette" | "wave">;
|
|
7
|
+
export interface Lut {
|
|
8
|
+
size: number;
|
|
9
|
+
data: Float32Array;
|
|
10
|
+
min: number[];
|
|
11
|
+
max: number[];
|
|
12
|
+
}
|
|
13
|
+
export declare const parseCube: (text: string) => Lut;
|
|
14
|
+
export interface GradeContext {
|
|
15
|
+
loadText(src: string): Promise<string>;
|
|
16
|
+
}
|
|
17
|
+
export declare const preloadLuts: (effects: Effect[], host: GradeContext) => Promise<void>;
|
|
18
|
+
export declare const applyGrade: (ctx: Ctx, w: number, h: number, effects: Grade[], t: number) => void;
|
|
19
|
+
export declare const drawVignette: (ctx: Ctx, w: number, h: number, amount: number, softness?: number, color?: string) => void;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
// Colour grading: curves, colour wheels, exposure, temperature and 3D LUTs in one per-pixel pass,
|
|
2
|
+
// plus a cheap vignette. Per-channel steps fold into three 256-entry tables; LUTs use a prebuilt
|
|
3
|
+
// 33³ table with inline trilinear interpolation. Measured cost at 1080×1920: ~25 ms (tables) and
|
|
4
|
+
// ~60–90 ms (3D LUT) per frame on one CPU core.
|
|
5
|
+
import { val } from '../core/anim.js';
|
|
6
|
+
export const GRADE_TYPES = new Set(['curves', 'colorBalance', 'exposure', 'temperature', 'lut']);
|
|
7
|
+
// Monotone cubic interpolation through curve points (0..1), like the curves tool in most editors.
|
|
8
|
+
const curveTable = (pts) => {
|
|
9
|
+
if (!pts || pts.length < 2)
|
|
10
|
+
return null;
|
|
11
|
+
const p = [...pts].sort((a, b) => a[0] - b[0]);
|
|
12
|
+
const n = p.length, dx = [], m = [], sl = [];
|
|
13
|
+
for (let i = 0; i < n - 1; i++) {
|
|
14
|
+
dx.push(p[i + 1][0] - p[i][0] || 1e-6);
|
|
15
|
+
sl.push((p[i + 1][1] - p[i][1]) / dx[i]);
|
|
16
|
+
}
|
|
17
|
+
m.push(sl[0]);
|
|
18
|
+
for (let i = 1; i < n - 1; i++)
|
|
19
|
+
m.push(sl[i - 1] * sl[i] <= 0 ? 0 : (sl[i - 1] + sl[i]) / 2);
|
|
20
|
+
m.push(sl[n - 2]);
|
|
21
|
+
const out = new Float32Array(256);
|
|
22
|
+
for (let v = 0; v < 256; v++) {
|
|
23
|
+
const x = v / 255;
|
|
24
|
+
let i = 0;
|
|
25
|
+
while (i < n - 2 && x > p[i + 1][0])
|
|
26
|
+
i++;
|
|
27
|
+
if (x <= p[0][0]) {
|
|
28
|
+
out[v] = p[0][1];
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (x >= p[n - 1][0]) {
|
|
32
|
+
out[v] = p[n - 1][1];
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const h = dx[i], t = (x - p[i][0]) / h, t2 = t * t, t3 = t2 * t;
|
|
36
|
+
out[v] = (2 * t3 - 3 * t2 + 1) * p[i][1] + (t3 - 2 * t2 + t) * h * m[i] + (-2 * t3 + 3 * t2) * p[i + 1][1] + (t3 - t2) * h * m[i + 1];
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
};
|
|
40
|
+
const lutCache = new Map();
|
|
41
|
+
export const parseCube = (text) => {
|
|
42
|
+
let size = 0, min = [0, 0, 0], max = [1, 1, 1];
|
|
43
|
+
const values = [];
|
|
44
|
+
for (const raw of text.split(/\r?\n/)) {
|
|
45
|
+
const line = raw.trim();
|
|
46
|
+
if (!line || line.startsWith('#'))
|
|
47
|
+
continue;
|
|
48
|
+
if (/^LUT_3D_SIZE/i.test(line))
|
|
49
|
+
size = parseInt(line.split(/\s+/)[1]);
|
|
50
|
+
else if (/^DOMAIN_MIN/i.test(line))
|
|
51
|
+
min = line.split(/\s+/).slice(1).map(Number);
|
|
52
|
+
else if (/^DOMAIN_MAX/i.test(line))
|
|
53
|
+
max = line.split(/\s+/).slice(1).map(Number);
|
|
54
|
+
else if (/^[-\d.]/.test(line)) {
|
|
55
|
+
const v = line.split(/\s+/).map(Number);
|
|
56
|
+
if (v.length >= 3)
|
|
57
|
+
values.push(v[0], v[1], v[2]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!size || values.length < size ** 3 * 3)
|
|
61
|
+
throw new Error('Not a 3D .cube LUT');
|
|
62
|
+
return { size, data: Float32Array.from(values), min, max };
|
|
63
|
+
};
|
|
64
|
+
export const preloadLuts = async (effects, host) => {
|
|
65
|
+
for (const e of effects)
|
|
66
|
+
if (e.type === 'lut' && !lutCache.has(e.src))
|
|
67
|
+
lutCache.set(e.src, parseCube(await host.loadText(e.src)));
|
|
68
|
+
};
|
|
69
|
+
const clamp255 = (v) => (v < 0 ? 0 : v > 255 ? 255 : v);
|
|
70
|
+
// Applies all grade effects to the whole canvas in one pass.
|
|
71
|
+
export const applyGrade = (ctx, w, h, effects, t) => {
|
|
72
|
+
if (!effects.length)
|
|
73
|
+
return;
|
|
74
|
+
// Per-channel tables: exposure → temperature → colour wheels → curves.
|
|
75
|
+
const tables = [new Float32Array(256), new Float32Array(256), new Float32Array(256)];
|
|
76
|
+
for (let c = 0; c < 3; c++)
|
|
77
|
+
for (let v = 0; v < 256; v++)
|
|
78
|
+
tables[c][v] = v / 255;
|
|
79
|
+
let lut, lutMix = 1;
|
|
80
|
+
for (const e of effects) {
|
|
81
|
+
if (e.type === 'exposure') {
|
|
82
|
+
const k = Math.pow(2, val(e.stops, t, 0));
|
|
83
|
+
for (const tb of tables)
|
|
84
|
+
for (let v = 0; v < 256; v++)
|
|
85
|
+
tb[v] *= k;
|
|
86
|
+
}
|
|
87
|
+
else if (e.type === 'temperature') {
|
|
88
|
+
// -100 (cool) … +100 (warm): red up / blue down, gently.
|
|
89
|
+
const a = val(e.amount, t, 0) / 100;
|
|
90
|
+
for (let v = 0; v < 256; v++) {
|
|
91
|
+
tables[0][v] *= 1 + 0.18 * a;
|
|
92
|
+
tables[1][v] *= 1 + 0.03 * a;
|
|
93
|
+
tables[2][v] *= 1 - 0.2 * a;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (e.type === 'colorBalance') {
|
|
97
|
+
// Lift/gamma/gain style: shift shadows, midtones and highlights per channel (-1..1).
|
|
98
|
+
const sh = e.shadows ?? [0, 0, 0], mid = e.midtones ?? [0, 0, 0], hi = e.highlights ?? [0, 0, 0];
|
|
99
|
+
for (let c = 0; c < 3; c++)
|
|
100
|
+
for (let v = 0; v < 256; v++) {
|
|
101
|
+
const x = tables[c][v];
|
|
102
|
+
const ws = Math.max(0, 1 - x * 3), wh = Math.max(0, x * 3 - 2), wm = 1 - Math.abs(x - 0.5) * 2;
|
|
103
|
+
tables[c][v] = x + sh[c] * 0.25 * ws + mid[c] * 0.25 * wm + hi[c] * 0.25 * wh;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (e.type === 'curves') {
|
|
107
|
+
const master = curveTable(e.master), per = [curveTable(e.r), curveTable(e.g), curveTable(e.b)];
|
|
108
|
+
for (let c = 0; c < 3; c++)
|
|
109
|
+
for (let v = 0; v < 256; v++) {
|
|
110
|
+
let x = Math.min(1, Math.max(0, tables[c][v]));
|
|
111
|
+
if (master)
|
|
112
|
+
x = master[Math.round(x * 255)];
|
|
113
|
+
if (per[c])
|
|
114
|
+
x = per[c][Math.round(Math.min(1, Math.max(0, x)) * 255)];
|
|
115
|
+
tables[c][v] = x;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (e.type === 'lut') {
|
|
119
|
+
lut = lutCache.get(e.src);
|
|
120
|
+
lutMix = val(e.intensity, t, 100) / 100;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const R = new Uint8ClampedArray(256), G = new Uint8ClampedArray(256), B = new Uint8ClampedArray(256);
|
|
124
|
+
for (let v = 0; v < 256; v++) {
|
|
125
|
+
R[v] = tables[0][v] * 255;
|
|
126
|
+
G[v] = tables[1][v] * 255;
|
|
127
|
+
B[v] = tables[2][v] * 255;
|
|
128
|
+
}
|
|
129
|
+
const img = ctx.getImageData(0, 0, w, h), d = img.data;
|
|
130
|
+
if (!lut) {
|
|
131
|
+
for (let i = 0; i < d.length; i += 4) {
|
|
132
|
+
if (d[i + 3]) {
|
|
133
|
+
d[i] = R[d[i]];
|
|
134
|
+
d[i + 1] = G[d[i + 1]];
|
|
135
|
+
d[i + 2] = B[d[i + 2]];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const S = lut.size, S2 = S * S, L = lut.data, k = (S - 1) / 255, mix = lutMix, inv = 1 - lutMix;
|
|
141
|
+
for (let i = 0; i < d.length; i += 4) {
|
|
142
|
+
if (!d[i + 3])
|
|
143
|
+
continue;
|
|
144
|
+
const r0v = R[d[i]], g0v = G[d[i + 1]], b0v = B[d[i + 2]];
|
|
145
|
+
const r = r0v * k, g = g0v * k, b = b0v * k;
|
|
146
|
+
const ri = r | 0, gi = g | 0, bi = b | 0;
|
|
147
|
+
const r1 = ri < S - 1 ? ri + 1 : ri, g1 = gi < S - 1 ? gi + 1 : gi, b1 = bi < S - 1 ? bi + 1 : bi;
|
|
148
|
+
const fr = r - ri, fg = g - gi, fb = b - bi;
|
|
149
|
+
// .cube order: red changes fastest.
|
|
150
|
+
const i000 = (ri + gi * S + bi * S2) * 3, i100 = (r1 + gi * S + bi * S2) * 3, i010 = (ri + g1 * S + bi * S2) * 3, i110 = (r1 + g1 * S + bi * S2) * 3;
|
|
151
|
+
const i001 = (ri + gi * S + b1 * S2) * 3, i101 = (r1 + gi * S + b1 * S2) * 3, i011 = (ri + g1 * S + b1 * S2) * 3, i111 = (r1 + g1 * S + b1 * S2) * 3;
|
|
152
|
+
for (let c = 0; c < 3; c++) {
|
|
153
|
+
const c00 = L[i000 + c] + (L[i100 + c] - L[i000 + c]) * fr, c10 = L[i010 + c] + (L[i110 + c] - L[i010 + c]) * fr;
|
|
154
|
+
const c01 = L[i001 + c] + (L[i101 + c] - L[i001 + c]) * fr, c11 = L[i011 + c] + (L[i111 + c] - L[i011 + c]) * fr;
|
|
155
|
+
const out = ((c00 + (c10 - c00) * fg) * (1 - fb) + (c01 + (c11 - c01) * fg) * fb) * 255;
|
|
156
|
+
const before = c === 0 ? r0v : c === 1 ? g0v : b0v;
|
|
157
|
+
d[i + c] = clamp255(out * mix + before * inv);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
ctx.putImageData(img, 0, 0);
|
|
162
|
+
};
|
|
163
|
+
// Vignette as a radial-gradient overlay (no per-pixel work).
|
|
164
|
+
export const drawVignette = (ctx, w, h, amount, softness = 0.5, color = '#000') => {
|
|
165
|
+
if (amount <= 0)
|
|
166
|
+
return;
|
|
167
|
+
const r = Math.hypot(w, h) / 2;
|
|
168
|
+
const g = ctx.createRadialGradient(w / 2, h / 2, r * (1 - softness) * 0.75, w / 2, h / 2, r);
|
|
169
|
+
g.addColorStop(0, 'rgba(0,0,0,0)');
|
|
170
|
+
g.addColorStop(1, color.startsWith('#') && color.length === 7 ? `${color}${Math.round(Math.min(1, amount / 100) * 255).toString(16).padStart(2, '0')}` : color);
|
|
171
|
+
ctx.save();
|
|
172
|
+
ctx.setTransform(1, 0, 0, 1, 0, 0);
|
|
173
|
+
ctx.globalCompositeOperation = 'source-atop';
|
|
174
|
+
ctx.fillStyle = g;
|
|
175
|
+
ctx.fillRect(0, 0, w, h);
|
|
176
|
+
ctx.restore();
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=grade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grade.js","sourceRoot":"","sources":["../../src/render/grade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
type Ctx = CanvasRenderingContext2D;
|
|
2
|
+
type J = any;
|
|
3
|
+
export interface LottieHost {
|
|
4
|
+
createCanvas(w: number, h: number): {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
getContext(t: '2d'): Ctx;
|
|
8
|
+
};
|
|
9
|
+
image(src: string): Promise<{
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export declare class LottiePlayer {
|
|
15
|
+
data: J;
|
|
16
|
+
private host;
|
|
17
|
+
readonly w: number;
|
|
18
|
+
readonly h: number;
|
|
19
|
+
readonly fr: number;
|
|
20
|
+
readonly ip: number;
|
|
21
|
+
readonly op: number;
|
|
22
|
+
private assets;
|
|
23
|
+
private images;
|
|
24
|
+
private pool;
|
|
25
|
+
constructor(data: J, host: LottieHost);
|
|
26
|
+
get duration(): number;
|
|
27
|
+
preload(): Promise<void>;
|
|
28
|
+
private buf;
|
|
29
|
+
private release;
|
|
30
|
+
draw(ctx: Ctx, f: number): void;
|
|
31
|
+
private layerMatrix;
|
|
32
|
+
private drawLayers;
|
|
33
|
+
private applyMasks;
|
|
34
|
+
private drawLayer;
|
|
35
|
+
}
|
|
36
|
+
export {};
|