@clipkit/runtime 1.0.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/LICENSE +54 -0
- package/README.md +98 -0
- package/dist/animation/easings.d.ts +9 -0
- package/dist/animation/easings.d.ts.map +1 -0
- package/dist/animation/easings.js +230 -0
- package/dist/animation/easings.js.map +1 -0
- package/dist/animation/expr.d.ts +44 -0
- package/dist/animation/expr.d.ts.map +1 -0
- package/dist/animation/expr.js +236 -0
- package/dist/animation/expr.js.map +1 -0
- package/dist/animation/keyframes.d.ts +23 -0
- package/dist/animation/keyframes.d.ts.map +1 -0
- package/dist/animation/keyframes.js +117 -0
- package/dist/animation/keyframes.js.map +1 -0
- package/dist/animation/motion-path.d.ts +18 -0
- package/dist/animation/motion-path.d.ts.map +1 -0
- package/dist/animation/motion-path.js +269 -0
- package/dist/animation/motion-path.js.map +1 -0
- package/dist/animation/noise1d.d.ts +5 -0
- package/dist/animation/noise1d.d.ts.map +1 -0
- package/dist/animation/noise1d.js +27 -0
- package/dist/animation/noise1d.js.map +1 -0
- package/dist/animation/presets.d.ts +60 -0
- package/dist/animation/presets.d.ts.map +1 -0
- package/dist/animation/presets.js +221 -0
- package/dist/animation/presets.js.map +1 -0
- package/dist/assets/cache.d.ts +18 -0
- package/dist/assets/cache.d.ts.map +1 -0
- package/dist/assets/cache.js +56 -0
- package/dist/assets/cache.js.map +1 -0
- package/dist/assets/fonts.d.ts +20 -0
- package/dist/assets/fonts.d.ts.map +1 -0
- package/dist/assets/fonts.js +127 -0
- package/dist/assets/fonts.js.map +1 -0
- package/dist/assets/loader.d.ts +18 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +87 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/lut.d.ts +5 -0
- package/dist/assets/lut.d.ts.map +1 -0
- package/dist/assets/lut.js +77 -0
- package/dist/assets/lut.js.map +1 -0
- package/dist/assets/media-time.d.ts +31 -0
- package/dist/assets/media-time.d.ts.map +1 -0
- package/dist/assets/media-time.js +65 -0
- package/dist/assets/media-time.js.map +1 -0
- package/dist/assets/mp4-frame-source.d.ts +44 -0
- package/dist/assets/mp4-frame-source.d.ts.map +1 -0
- package/dist/assets/mp4-frame-source.js +387 -0
- package/dist/assets/mp4-frame-source.js.map +1 -0
- package/dist/audio/encoder.d.ts +31 -0
- package/dist/audio/encoder.d.ts.map +1 -0
- package/dist/audio/encoder.js +96 -0
- package/dist/audio/encoder.js.map +1 -0
- package/dist/audio/fades.d.ts +16 -0
- package/dist/audio/fades.d.ts.map +1 -0
- package/dist/audio/fades.js +43 -0
- package/dist/audio/fades.js.map +1 -0
- package/dist/audio/limiter.d.ts +8 -0
- package/dist/audio/limiter.d.ts.map +1 -0
- package/dist/audio/limiter.js +39 -0
- package/dist/audio/limiter.js.map +1 -0
- package/dist/audio/loader.d.ts +6 -0
- package/dist/audio/loader.d.ts.map +1 -0
- package/dist/audio/loader.js +42 -0
- package/dist/audio/loader.js.map +1 -0
- package/dist/audio/mixer.d.ts +17 -0
- package/dist/audio/mixer.d.ts.map +1 -0
- package/dist/audio/mixer.js +204 -0
- package/dist/audio/mixer.js.map +1 -0
- package/dist/audio/varispeed.d.ts +24 -0
- package/dist/audio/varispeed.d.ts.map +1 -0
- package/dist/audio/varispeed.js +114 -0
- package/dist/audio/varispeed.js.map +1 -0
- package/dist/audio/wav.d.ts +6 -0
- package/dist/audio/wav.d.ts.map +1 -0
- package/dist/audio/wav.js +62 -0
- package/dist/audio/wav.js.map +1 -0
- package/dist/backend/backend.d.ts +579 -0
- package/dist/backend/backend.d.ts.map +1 -0
- package/dist/backend/backend.js +17 -0
- package/dist/backend/backend.js.map +1 -0
- package/dist/backend/webgl-backend.d.ts +97 -0
- package/dist/backend/webgl-backend.d.ts.map +1 -0
- package/dist/backend/webgl-backend.js +2142 -0
- package/dist/backend/webgl-backend.js.map +1 -0
- package/dist/backend/webgpu-backend.d.ts +121 -0
- package/dist/backend/webgpu-backend.d.ts.map +1 -0
- package/dist/backend/webgpu-backend.js +2481 -0
- package/dist/backend/webgpu-backend.js.map +1 -0
- package/dist/compositor/bitfont.d.ts +8 -0
- package/dist/compositor/bitfont.d.ts.map +1 -0
- package/dist/compositor/bitfont.js +52 -0
- package/dist/compositor/bitfont.js.map +1 -0
- package/dist/compositor/camera.d.ts +5 -0
- package/dist/compositor/camera.d.ts.map +1 -0
- package/dist/compositor/camera.js +114 -0
- package/dist/compositor/camera.js.map +1 -0
- package/dist/compositor/color.d.ts +26 -0
- package/dist/compositor/color.d.ts.map +1 -0
- package/dist/compositor/color.js +189 -0
- package/dist/compositor/color.js.map +1 -0
- package/dist/compositor/element-renderers/caption.d.ts +4 -0
- package/dist/compositor/element-renderers/caption.d.ts.map +1 -0
- package/dist/compositor/element-renderers/caption.js +376 -0
- package/dist/compositor/element-renderers/caption.js.map +1 -0
- package/dist/compositor/element-renderers/group.d.ts +12 -0
- package/dist/compositor/element-renderers/group.d.ts.map +1 -0
- package/dist/compositor/element-renderers/group.js +259 -0
- package/dist/compositor/element-renderers/group.js.map +1 -0
- package/dist/compositor/element-renderers/image.d.ts +4 -0
- package/dist/compositor/element-renderers/image.d.ts.map +1 -0
- package/dist/compositor/element-renderers/image.js +97 -0
- package/dist/compositor/element-renderers/image.js.map +1 -0
- package/dist/compositor/element-renderers/lit.d.ts +6 -0
- package/dist/compositor/element-renderers/lit.d.ts.map +1 -0
- package/dist/compositor/element-renderers/lit.js +82 -0
- package/dist/compositor/element-renderers/lit.js.map +1 -0
- package/dist/compositor/element-renderers/particles.d.ts +4 -0
- package/dist/compositor/element-renderers/particles.d.ts.map +1 -0
- package/dist/compositor/element-renderers/particles.js +212 -0
- package/dist/compositor/element-renderers/particles.js.map +1 -0
- package/dist/compositor/element-renderers/shape.d.ts +4 -0
- package/dist/compositor/element-renderers/shape.d.ts.map +1 -0
- package/dist/compositor/element-renderers/shape.js +171 -0
- package/dist/compositor/element-renderers/shape.js.map +1 -0
- package/dist/compositor/element-renderers/svg.d.ts +4 -0
- package/dist/compositor/element-renderers/svg.d.ts.map +1 -0
- package/dist/compositor/element-renderers/svg.js +210 -0
- package/dist/compositor/element-renderers/svg.js.map +1 -0
- package/dist/compositor/element-renderers/text.d.ts +25 -0
- package/dist/compositor/element-renderers/text.d.ts.map +1 -0
- package/dist/compositor/element-renderers/text.js +1358 -0
- package/dist/compositor/element-renderers/text.js.map +1 -0
- package/dist/compositor/element-renderers/video.d.ts +12 -0
- package/dist/compositor/element-renderers/video.d.ts.map +1 -0
- package/dist/compositor/element-renderers/video.js +109 -0
- package/dist/compositor/element-renderers/video.js.map +1 -0
- package/dist/compositor/fit.d.ts +18 -0
- package/dist/compositor/fit.d.ts.map +1 -0
- package/dist/compositor/fit.js +106 -0
- package/dist/compositor/fit.js.map +1 -0
- package/dist/compositor/lighting.d.ts +63 -0
- package/dist/compositor/lighting.d.ts.map +1 -0
- package/dist/compositor/lighting.js +141 -0
- package/dist/compositor/lighting.js.map +1 -0
- package/dist/compositor/mat4.d.ts +88 -0
- package/dist/compositor/mat4.d.ts.map +1 -0
- package/dist/compositor/mat4.js +245 -0
- package/dist/compositor/mat4.js.map +1 -0
- package/dist/compositor/project.d.ts +24 -0
- package/dist/compositor/project.d.ts.map +1 -0
- package/dist/compositor/project.js +105 -0
- package/dist/compositor/project.js.map +1 -0
- package/dist/compositor/render-context.d.ts +194 -0
- package/dist/compositor/render-context.d.ts.map +1 -0
- package/dist/compositor/render-context.js +10 -0
- package/dist/compositor/render-context.js.map +1 -0
- package/dist/compositor/resolve.d.ts +80 -0
- package/dist/compositor/resolve.d.ts.map +1 -0
- package/dist/compositor/resolve.js +276 -0
- package/dist/compositor/resolve.js.map +1 -0
- package/dist/compositor/scene.d.ts +10 -0
- package/dist/compositor/scene.d.ts.map +1 -0
- package/dist/compositor/scene.js +658 -0
- package/dist/compositor/scene.js.map +1 -0
- package/dist/compositor/transform.d.ts +73 -0
- package/dist/compositor/transform.d.ts.map +1 -0
- package/dist/compositor/transform.js +229 -0
- package/dist/compositor/transform.js.map +1 -0
- package/dist/compositor/unit.d.ts +27 -0
- package/dist/compositor/unit.d.ts.map +1 -0
- package/dist/compositor/unit.js +74 -0
- package/dist/compositor/unit.js.map +1 -0
- package/dist/encoder/exporter.d.ts +95 -0
- package/dist/encoder/exporter.d.ts.map +1 -0
- package/dist/encoder/exporter.js +341 -0
- package/dist/encoder/exporter.js.map +1 -0
- package/dist/encoder/index.d.ts +3 -0
- package/dist/encoder/index.d.ts.map +1 -0
- package/dist/encoder/index.js +2 -0
- package/dist/encoder/index.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +13 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +32 -0
- package/dist/logger.js.map +1 -0
- package/dist/runtime.d.ts +216 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1012 -0
- package/dist/runtime.js.map +1 -0
- package/dist/svg/morph.d.ts +6 -0
- package/dist/svg/morph.d.ts.map +1 -0
- package/dist/svg/morph.js +62 -0
- package/dist/svg/morph.js.map +1 -0
- package/dist/svg/svg-renderer.d.ts +18 -0
- package/dist/svg/svg-renderer.d.ts.map +1 -0
- package/dist/svg/svg-renderer.js +142 -0
- package/dist/svg/svg-renderer.js.map +1 -0
- package/dist/text/caption-chunk.d.ts +17 -0
- package/dist/text/caption-chunk.d.ts.map +1 -0
- package/dist/text/caption-chunk.js +76 -0
- package/dist/text/caption-chunk.js.map +1 -0
- package/dist/text/font-atlas.d.ts +63 -0
- package/dist/text/font-atlas.d.ts.map +1 -0
- package/dist/text/font-atlas.js +225 -0
- package/dist/text/font-atlas.js.map +1 -0
- package/dist/text/measure.d.ts +38 -0
- package/dist/text/measure.d.ts.map +1 -0
- package/dist/text/measure.js +164 -0
- package/dist/text/measure.js.map +1 -0
- package/dist/text/text-animation.d.ts +52 -0
- package/dist/text/text-animation.d.ts.map +1 -0
- package/dist/text/text-animation.js +133 -0
- package/dist/text/text-animation.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene.js","sourceRoot":"","sources":["../../src/compositor/scene.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export type Mat4 = Float32Array;
|
|
2
|
+
/** Identity 4×4 matrix. */
|
|
3
|
+
export declare function identity(): Mat4;
|
|
4
|
+
/**
|
|
5
|
+
* Build the transform that places a unit quad (-1..+1) at a pixel-space
|
|
6
|
+
* rectangle, expressed in NDC.
|
|
7
|
+
*
|
|
8
|
+
* @param cx Rectangle center X in canvas pixels.
|
|
9
|
+
* @param cy Rectangle center Y in canvas pixels.
|
|
10
|
+
* @param w Rectangle width in canvas pixels.
|
|
11
|
+
* @param h Rectangle height in canvas pixels.
|
|
12
|
+
* @param rotation Rotation in degrees, around the rectangle center.
|
|
13
|
+
* @param canvasW Canvas (composition) width in pixels.
|
|
14
|
+
* @param canvasH Canvas (composition) height in pixels.
|
|
15
|
+
*/
|
|
16
|
+
export declare function composeQuadTransform(cx: number, cy: number, w: number, h: number, rotation: number, canvasW: number, canvasH: number, skewXDeg?: number, skewYDeg?: number,
|
|
17
|
+
/**
|
|
18
|
+
* Negate the output Y axis. Used when rendering into a WebGL
|
|
19
|
+
* framebuffer texture: GL stores texel row 0 at the BOTTOM, so
|
|
20
|
+
* without the flip the rendered layer samples upside-down relative
|
|
21
|
+
* to uploaded images. WebGPU render targets don't need this.
|
|
22
|
+
*/
|
|
23
|
+
flipY?: boolean): Mat4;
|
|
24
|
+
/**
|
|
25
|
+
* Build the PIXEL-SPACE matrix that places the shared unit quad
|
|
26
|
+
* (a_pos ∈ [-1, +1]², Y-up) at a pixel rectangle with the full CKP/1.0
|
|
27
|
+
* 3D local transform (§4.4.1):
|
|
28
|
+
*
|
|
29
|
+
* L = T(cx, cy, z) · Rz(θ) · Ry(β) · Rx(α) · K(skewX, skewY) · S(w/2, h/2) · F
|
|
30
|
+
*
|
|
31
|
+
* F converts the quad's Y-up convention to Y-down pixel space; K is the
|
|
32
|
+
* CSS skew (x += tan(skewX)·y, y += tan(skewY)·x in Y-down pixels) —
|
|
33
|
+
* for α = β = z = 0 this reproduces composeQuadTransform's geometry
|
|
34
|
+
* exactly (verified by the 3D probes' z_rotation-alias hash check at
|
|
35
|
+
* the resolution level — the 2D fast path never routes through here).
|
|
36
|
+
*
|
|
37
|
+
* Output is f64 number[16] column-major, Y-down pixel coords, z in
|
|
38
|
+
* pixels (+z toward the viewer). Multiply with the model chain, then
|
|
39
|
+
* feed projectPixelMatrix to reach the shader.
|
|
40
|
+
*/
|
|
41
|
+
export declare function quadMatrix3D(cx: number, cy: number, w: number, h: number, rotationDeg: number, skewXDeg: number, skewYDeg: number, xRotDeg: number, yRotDeg: number, z: number): number[];
|
|
42
|
+
/**
|
|
43
|
+
* Project a pixel-space matrix (from quadMatrix3D · model chain ·
|
|
44
|
+
* optional camera) to the surface's clip space: x/y map to NDC, w is
|
|
45
|
+
* preserved for the rasterizer's perspective divide, and clip z is
|
|
46
|
+
* zeroed (paint-order compositing — depth never clips, §4.4.3).
|
|
47
|
+
*/
|
|
48
|
+
export declare function projectPixelMatrix(m: ArrayLike<number>, surfaceW: number, surfaceH: number, flipY?: boolean): Mat4;
|
|
49
|
+
/**
|
|
50
|
+
* Convert an anchor-based pixel position to the rectangle center.
|
|
51
|
+
*
|
|
52
|
+
* The schema places elements by their anchor (0..1) within the element.
|
|
53
|
+
* x_anchor: 0 means `x` is the left edge; 0.5 means `x` is the center;
|
|
54
|
+
* 1 means `x` is the right edge.
|
|
55
|
+
*/
|
|
56
|
+
export declare function anchorToCenter(x: number, y: number, w: number, h: number, xAnchor: number, yAnchor: number): {
|
|
57
|
+
cx: number;
|
|
58
|
+
cy: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Rescale a pane→surface homography (column-major 3×3, LOGICAL px on
|
|
62
|
+
* both sides) to physical px on both sides:
|
|
63
|
+
* H' = diag(pr, pr, 1) · H · diag(1/pr, 1/pr, 1).
|
|
64
|
+
* The glass shader works in physical px throughout (paneHalf, radii
|
|
65
|
+
* and shadow params are pre-scaled by the pixel ratio).
|
|
66
|
+
*/
|
|
67
|
+
export declare function homographyToPhysical(h: ArrayLike<number>, pr: number): Float32Array;
|
|
68
|
+
/**
|
|
69
|
+
* Invert a column-major 3×3. Returns null when singular (edge-on
|
|
70
|
+
* pane — the §4.7 degenerate case: draw nothing).
|
|
71
|
+
*/
|
|
72
|
+
export declare function invertHomography(m: ArrayLike<number>): Float32Array | null;
|
|
73
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/compositor/transform.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,IAAI,GAAG,YAAY,CAAC;AAEhC,2BAA2B;AAC3B,wBAAgB,QAAQ,IAAI,IAAI,CAQ/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAU,EACpB,QAAQ,GAAE,MAAU;AACpB;;;;;GAKG;AACH,KAAK,GAAE,OAAe,GACrB,IAAI,CAiEN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,CAAC,EAAE,MAAM,GACR,MAAM,EAAE,CA2CV;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,OAAe,GACrB,IAAI,CAeN;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAK5B;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAMnF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,YAAY,GAAG,IAAI,CAgB1E"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
// 4×4 transform matrix utilities for compositor → NDC.
|
|
2
|
+
//
|
|
3
|
+
// The matrix is column-major (matching WGSL `mat4x4<f32>` and GLSL ES 3.0
|
|
4
|
+
// `mat4`). All operations return new Float32Array(16) values — no mutation.
|
|
5
|
+
//
|
|
6
|
+
// The unit quad we draw spans NDC (-1, -1) to (+1, +1). composeQuadTransform
|
|
7
|
+
// takes a pixel-space rectangle (centerX, centerY, width, height) plus
|
|
8
|
+
// rotation and produces a matrix that maps the unit quad to that rectangle
|
|
9
|
+
// in NDC space. Y is flipped (canvas Y grows down, NDC Y grows up).
|
|
10
|
+
/** Identity 4×4 matrix. */
|
|
11
|
+
export function identity() {
|
|
12
|
+
// prettier-ignore
|
|
13
|
+
return new Float32Array([
|
|
14
|
+
1, 0, 0, 0,
|
|
15
|
+
0, 1, 0, 0,
|
|
16
|
+
0, 0, 1, 0,
|
|
17
|
+
0, 0, 0, 1,
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build the transform that places a unit quad (-1..+1) at a pixel-space
|
|
22
|
+
* rectangle, expressed in NDC.
|
|
23
|
+
*
|
|
24
|
+
* @param cx Rectangle center X in canvas pixels.
|
|
25
|
+
* @param cy Rectangle center Y in canvas pixels.
|
|
26
|
+
* @param w Rectangle width in canvas pixels.
|
|
27
|
+
* @param h Rectangle height in canvas pixels.
|
|
28
|
+
* @param rotation Rotation in degrees, around the rectangle center.
|
|
29
|
+
* @param canvasW Canvas (composition) width in pixels.
|
|
30
|
+
* @param canvasH Canvas (composition) height in pixels.
|
|
31
|
+
*/
|
|
32
|
+
export function composeQuadTransform(cx, cy, w, h, rotation, canvasW, canvasH, skewXDeg = 0, skewYDeg = 0,
|
|
33
|
+
/**
|
|
34
|
+
* Negate the output Y axis. Used when rendering into a WebGL
|
|
35
|
+
* framebuffer texture: GL stores texel row 0 at the BOTTOM, so
|
|
36
|
+
* without the flip the rendered layer samples upside-down relative
|
|
37
|
+
* to uploaded images. WebGPU render targets don't need this.
|
|
38
|
+
*/
|
|
39
|
+
flipY = false) {
|
|
40
|
+
// Pixel center → NDC. NDC X spans [-1, +1] over [0, canvasW] pixels.
|
|
41
|
+
// Y is flipped: pixel y=0 → NDC y=+1, pixel y=canvasH → NDC y=-1.
|
|
42
|
+
const ndcX = (cx / canvasW) * 2 - 1;
|
|
43
|
+
const ndcY = -((cy / canvasH) * 2 - 1);
|
|
44
|
+
// Composition (right-to-left, applied to the unit-quad input):
|
|
45
|
+
//
|
|
46
|
+
// D(2/canvasW, -2/canvasH) · R(θ) · D(w/2, h/2) · SkewX(φ)
|
|
47
|
+
// └─ pixel → NDC + Y flip ┘ └─ rotate┘ └─ pixel size ┘ └─ shear ─┘
|
|
48
|
+
//
|
|
49
|
+
// SkewX runs on the un-scaled unit quad: a vertex (px, py) becomes
|
|
50
|
+
// (px + py·tan(φ), py). Composing with scale + rotate + NDC produces
|
|
51
|
+
// a parallelogram in screen space whose top edge is sheared by w·tan(φ)
|
|
52
|
+
// pixels relative to the bottom.
|
|
53
|
+
//
|
|
54
|
+
// R is [[cos, -sin], [sin, cos]] in Y-down screen space — same CW
|
|
55
|
+
// convention CSS rotate() uses. The unit quad's Y-up convention is
|
|
56
|
+
// absorbed by the Y flip in the NDC step (the -2/canvasH below).
|
|
57
|
+
const rad = (rotation * Math.PI) / 180;
|
|
58
|
+
const cos = Math.cos(rad);
|
|
59
|
+
const sin = Math.sin(rad);
|
|
60
|
+
// CSS skewX uses Y-down (positive Y = bottom) while our unit quad is
|
|
61
|
+
// Y-up (a_pos.y = +1 = top). Negate so the protocol's `skew_x`
|
|
62
|
+
// follows CSS semantics: positive shears bottom right, negative
|
|
63
|
+
// shears bottom left — matching `transform: skewX(...)`.
|
|
64
|
+
const tanSkew = Math.tan((-skewXDeg * Math.PI) / 180);
|
|
65
|
+
const col0x = (w * cos) / canvasW;
|
|
66
|
+
const col0y = -(w * sin) / canvasH;
|
|
67
|
+
const col1xNoSkew = (h * sin) / canvasW;
|
|
68
|
+
const col1yNoSkew = (h * cos) / canvasH;
|
|
69
|
+
// CSS skewX shifts X by `tan(angle) · height`, not `tan(angle) ·
|
|
70
|
+
// width`. The skew offset vector points along the rotated X axis
|
|
71
|
+
// with magnitude proportional to h — using col0 (which is w-scaled)
|
|
72
|
+
// would make the slant grow with the band's WIDTH, so longer text
|
|
73
|
+
// looked dramatically more tilted than short text at the same
|
|
74
|
+
// nominal angle. Scale by h/w to get the height-scaled X direction.
|
|
75
|
+
const hOverW = w !== 0 ? h / w : 0;
|
|
76
|
+
const col1x = col1xNoSkew + tanSkew * col0x * hOverW;
|
|
77
|
+
const col1y = col1yNoSkew + tanSkew * col0y * hOverW;
|
|
78
|
+
// CSS skewY shifts Y by `tan(angle) · width` — the mirror of skewX.
|
|
79
|
+
// The local +Y(down) direction in output space is -col1NoSkew (the
|
|
80
|
+
// unit quad's uy=+1 maps to local -h/2 after the Y flip), so a
|
|
81
|
+
// CSS-positive skewY (right edge moves down) subtracts the
|
|
82
|
+
// width-scaled col1NoSkew direction from col0.
|
|
83
|
+
const tanSkewY = Math.tan((skewYDeg * Math.PI) / 180);
|
|
84
|
+
const wOverH = h !== 0 ? w / h : 0;
|
|
85
|
+
const col0xSkewed = col0x - tanSkewY * col1xNoSkew * wOverH;
|
|
86
|
+
const col0ySkewed = col0y - tanSkewY * col1yNoSkew * wOverH;
|
|
87
|
+
const ySign = flipY ? -1 : 1;
|
|
88
|
+
// prettier-ignore
|
|
89
|
+
return new Float32Array([
|
|
90
|
+
// column 0 — what unit-quad (1, 0) contributes (skewY-sheared)
|
|
91
|
+
col0xSkewed, col0ySkewed * ySign, 0, 0,
|
|
92
|
+
// column 1 — what unit-quad (0, 1) contributes (skewX-sheared)
|
|
93
|
+
col1x, col1y * ySign, 0, 0,
|
|
94
|
+
// column 2 — Z axis untouched
|
|
95
|
+
0, 0, 1, 0,
|
|
96
|
+
// column 3 — translation to NDC center
|
|
97
|
+
ndcX, ndcY * ySign, 0, 1,
|
|
98
|
+
]);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Build the PIXEL-SPACE matrix that places the shared unit quad
|
|
102
|
+
* (a_pos ∈ [-1, +1]², Y-up) at a pixel rectangle with the full CKP/1.0
|
|
103
|
+
* 3D local transform (§4.4.1):
|
|
104
|
+
*
|
|
105
|
+
* L = T(cx, cy, z) · Rz(θ) · Ry(β) · Rx(α) · K(skewX, skewY) · S(w/2, h/2) · F
|
|
106
|
+
*
|
|
107
|
+
* F converts the quad's Y-up convention to Y-down pixel space; K is the
|
|
108
|
+
* CSS skew (x += tan(skewX)·y, y += tan(skewY)·x in Y-down pixels) —
|
|
109
|
+
* for α = β = z = 0 this reproduces composeQuadTransform's geometry
|
|
110
|
+
* exactly (verified by the 3D probes' z_rotation-alias hash check at
|
|
111
|
+
* the resolution level — the 2D fast path never routes through here).
|
|
112
|
+
*
|
|
113
|
+
* Output is f64 number[16] column-major, Y-down pixel coords, z in
|
|
114
|
+
* pixels (+z toward the viewer). Multiply with the model chain, then
|
|
115
|
+
* feed projectPixelMatrix to reach the shader.
|
|
116
|
+
*/
|
|
117
|
+
export function quadMatrix3D(cx, cy, w, h, rotationDeg, skewXDeg, skewYDeg, xRotDeg, yRotDeg, z) {
|
|
118
|
+
const rz = (rotationDeg * Math.PI) / 180;
|
|
119
|
+
const rx = (xRotDeg * Math.PI) / 180;
|
|
120
|
+
const ry = (yRotDeg * Math.PI) / 180;
|
|
121
|
+
const cz = Math.cos(rz), sz = Math.sin(rz);
|
|
122
|
+
const cxr = Math.cos(rx), sxr = Math.sin(rx);
|
|
123
|
+
const cyr = Math.cos(ry), syr = Math.sin(ry);
|
|
124
|
+
const tanX = Math.tan((skewXDeg * Math.PI) / 180);
|
|
125
|
+
const tanY = Math.tan((skewYDeg * Math.PI) / 180);
|
|
126
|
+
// Basis vectors of K·S·F applied to a_pos (1,0) and (0,1), plus z.
|
|
127
|
+
// a_pos (1,0) → S·F → (w/2, 0) → K → (w/2, tanY·w/2)
|
|
128
|
+
// a_pos (0,1) → S·F → (0, -h/2) → K → (-tanX·h/2, -h/2)
|
|
129
|
+
const b0x = w / 2, b0y = (tanY * w) / 2;
|
|
130
|
+
const b1x = (-tanX * h) / 2, b1y = -h / 2;
|
|
131
|
+
// Rotate each basis vector (z = 0 in the element plane) through
|
|
132
|
+
// Rz·Ry·Rx. Rx: (x, y·c−z·s, y·s+z·c); Ry: (x·c+z·s, y, −x·s+z·c);
|
|
133
|
+
// Rz (CW in Y-down): (x·c − y·s, x·s + y·c, z).
|
|
134
|
+
const rot = (x, y) => {
|
|
135
|
+
// Rx
|
|
136
|
+
const y1 = y * cxr;
|
|
137
|
+
const z1 = y * sxr;
|
|
138
|
+
// Ry
|
|
139
|
+
const x2 = x * cyr + z1 * syr;
|
|
140
|
+
const z2 = -x * syr + z1 * cyr;
|
|
141
|
+
// Rz
|
|
142
|
+
return [x2 * cz - y1 * sz, x2 * sz + y1 * cz, z2];
|
|
143
|
+
};
|
|
144
|
+
const [c0x, c0y, c0z] = rot(b0x, b0y);
|
|
145
|
+
const [c1x, c1y, c1z] = rot(b1x, b1y);
|
|
146
|
+
// prettier-ignore
|
|
147
|
+
return [
|
|
148
|
+
c0x, c0y, c0z, 0,
|
|
149
|
+
c1x, c1y, c1z, 0,
|
|
150
|
+
// The element plane's normal (Rz·Ry·Rx applied to ẑ). The flat quad
|
|
151
|
+
// itself never reads it (a_pos has z = 0), but parent·child mat4
|
|
152
|
+
// multiplication does — nested 3D chains route the child's z
|
|
153
|
+
// components through this column, so it must be exact.
|
|
154
|
+
syr * cxr * cz + sxr * sz, syr * cxr * sz - sxr * cz, cyr * cxr, 0,
|
|
155
|
+
cx, cy, z, 1,
|
|
156
|
+
];
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Project a pixel-space matrix (from quadMatrix3D · model chain ·
|
|
160
|
+
* optional camera) to the surface's clip space: x/y map to NDC, w is
|
|
161
|
+
* preserved for the rasterizer's perspective divide, and clip z is
|
|
162
|
+
* zeroed (paint-order compositing — depth never clips, §4.4.3).
|
|
163
|
+
*/
|
|
164
|
+
export function projectPixelMatrix(m, surfaceW, surfaceH, flipY = false) {
|
|
165
|
+
const sy = flipY ? -1 : 1;
|
|
166
|
+
const kx = 2 / surfaceW;
|
|
167
|
+
const ky = (-2 / surfaceH) * sy;
|
|
168
|
+
const out = new Float32Array(16);
|
|
169
|
+
for (let c = 0; c < 4; c++) {
|
|
170
|
+
const mx = m[c * 4];
|
|
171
|
+
const my = m[c * 4 + 1];
|
|
172
|
+
const mw = m[c * 4 + 3];
|
|
173
|
+
out[c * 4] = kx * mx - mw;
|
|
174
|
+
out[c * 4 + 1] = ky * my + sy * mw;
|
|
175
|
+
out[c * 4 + 2] = 0;
|
|
176
|
+
out[c * 4 + 3] = mw;
|
|
177
|
+
}
|
|
178
|
+
return out;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Convert an anchor-based pixel position to the rectangle center.
|
|
182
|
+
*
|
|
183
|
+
* The schema places elements by their anchor (0..1) within the element.
|
|
184
|
+
* x_anchor: 0 means `x` is the left edge; 0.5 means `x` is the center;
|
|
185
|
+
* 1 means `x` is the right edge.
|
|
186
|
+
*/
|
|
187
|
+
export function anchorToCenter(x, y, w, h, xAnchor, yAnchor) {
|
|
188
|
+
return {
|
|
189
|
+
cx: x + w * (0.5 - xAnchor),
|
|
190
|
+
cy: y + h * (0.5 - yAnchor),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Rescale a pane→surface homography (column-major 3×3, LOGICAL px on
|
|
195
|
+
* both sides) to physical px on both sides:
|
|
196
|
+
* H' = diag(pr, pr, 1) · H · diag(1/pr, 1/pr, 1).
|
|
197
|
+
* The glass shader works in physical px throughout (paneHalf, radii
|
|
198
|
+
* and shadow params are pre-scaled by the pixel ratio).
|
|
199
|
+
*/
|
|
200
|
+
export function homographyToPhysical(h, pr) {
|
|
201
|
+
return new Float32Array([
|
|
202
|
+
h[0], h[1], h[2] / pr,
|
|
203
|
+
h[3], h[4], h[5] / pr,
|
|
204
|
+
h[6] * pr, h[7] * pr, h[8],
|
|
205
|
+
]);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Invert a column-major 3×3. Returns null when singular (edge-on
|
|
209
|
+
* pane — the §4.7 degenerate case: draw nothing).
|
|
210
|
+
*/
|
|
211
|
+
export function invertHomography(m) {
|
|
212
|
+
// Row-major view of the column-major array.
|
|
213
|
+
const m00 = m[0], m10 = m[1], m20 = m[2];
|
|
214
|
+
const m01 = m[3], m11 = m[4], m21 = m[5];
|
|
215
|
+
const m02 = m[6], m12 = m[7], m22 = m[8];
|
|
216
|
+
const c00 = m11 * m22 - m12 * m21;
|
|
217
|
+
const c01 = m12 * m20 - m10 * m22;
|
|
218
|
+
const c02 = m10 * m21 - m11 * m20;
|
|
219
|
+
const det = m00 * c00 + m01 * c01 + m02 * c02;
|
|
220
|
+
if (!Number.isFinite(det) || Math.abs(det) < 1e-12)
|
|
221
|
+
return null;
|
|
222
|
+
const id = 1 / det;
|
|
223
|
+
return new Float32Array([
|
|
224
|
+
c00 * id, c01 * id, c02 * id,
|
|
225
|
+
(m02 * m21 - m01 * m22) * id, (m00 * m22 - m02 * m20) * id, (m01 * m20 - m00 * m21) * id,
|
|
226
|
+
(m01 * m12 - m02 * m11) * id, (m02 * m10 - m00 * m12) * id, (m00 * m11 - m01 * m10) * id,
|
|
227
|
+
]);
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../src/compositor/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type LengthValue = number | string;
|
|
2
|
+
export interface CanvasDimensions {
|
|
3
|
+
/** Composition width in pixels. */
|
|
4
|
+
width: number;
|
|
5
|
+
/** Composition height in pixels. */
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve a schema length (number or string with unit) to pixels.
|
|
10
|
+
*
|
|
11
|
+
* @param value The schema value (e.g. `100`, `"50%"`, `"10vw"`).
|
|
12
|
+
* @param ref The reference value `%` is relative to (e.g. element width).
|
|
13
|
+
* @param canvas Composition dimensions (drive vw/vh/vmin/vmax).
|
|
14
|
+
* @param fallback Returned when the value cannot be parsed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveLength(value: LengthValue | undefined | null, ref: number, canvas: CanvasDimensions, fallback?: number): number;
|
|
17
|
+
/**
|
|
18
|
+
* Resolve an anchor value (0..1, unitless or percentage).
|
|
19
|
+
*
|
|
20
|
+
* Anchors default to 0 (TOP-LEFT) so that `x`/`y` mean the element's top-left
|
|
21
|
+
* corner, matching CSS (`left`/`top`), SVG (`<rect x y>`), and Canvas — the
|
|
22
|
+
* convention agents and humans reach for. See ANCHOR-CONVENTION-PLAN.md.
|
|
23
|
+
* Callers that want a center default (transform pivots, group rotation/scale)
|
|
24
|
+
* pass `fallback: 0.5` explicitly. A string like "50%" maps to 0.5.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveAnchor(value: LengthValue | undefined | null, fallback?: number): number;
|
|
27
|
+
//# sourceMappingURL=unit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit.d.ts","sourceRoot":"","sources":["../../src/compositor/unit.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,EACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,EACxB,QAAQ,GAAE,MAAU,GACnB,MAAM,CA4BR;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,EACrC,QAAQ,GAAE,MAAU,GACnB,MAAM,CAUR"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Schema length values can be numbers (pixels) or strings with units.
|
|
2
|
+
// resolveLength converts them to pixels relative to a reference axis.
|
|
3
|
+
//
|
|
4
|
+
// Units (matching the Clipkit Protocol spec):
|
|
5
|
+
// px absolute pixels
|
|
6
|
+
// % percentage of the reference axis (e.g. element width)
|
|
7
|
+
// vw percentage of the composition width
|
|
8
|
+
// vh percentage of the composition height
|
|
9
|
+
// vmin percentage of the smaller composition dimension
|
|
10
|
+
// vmax percentage of the larger composition dimension
|
|
11
|
+
//
|
|
12
|
+
// A bare number is interpreted as pixels.
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a schema length (number or string with unit) to pixels.
|
|
15
|
+
*
|
|
16
|
+
* @param value The schema value (e.g. `100`, `"50%"`, `"10vw"`).
|
|
17
|
+
* @param ref The reference value `%` is relative to (e.g. element width).
|
|
18
|
+
* @param canvas Composition dimensions (drive vw/vh/vmin/vmax).
|
|
19
|
+
* @param fallback Returned when the value cannot be parsed.
|
|
20
|
+
*/
|
|
21
|
+
export function resolveLength(value, ref, canvas, fallback = 0) {
|
|
22
|
+
if (value == null)
|
|
23
|
+
return fallback;
|
|
24
|
+
if (typeof value === 'number')
|
|
25
|
+
return Number.isFinite(value) ? value : fallback;
|
|
26
|
+
// A Tier-A expression value ({ expr }) reaches here as an object — it isn't a
|
|
27
|
+
// static length. Return the fallback; applyAnimation() reads the raw property
|
|
28
|
+
// and overrides this with the evaluated expression.
|
|
29
|
+
if (typeof value !== 'string')
|
|
30
|
+
return fallback;
|
|
31
|
+
const s = value.trim();
|
|
32
|
+
if (s === '')
|
|
33
|
+
return fallback;
|
|
34
|
+
// Strip a trailing unit suffix.
|
|
35
|
+
const match = s.match(/^(-?\d*\.?\d+)\s*(px|%|vw|vh|vmin|vmax)?$/i);
|
|
36
|
+
if (!match)
|
|
37
|
+
return fallback;
|
|
38
|
+
const num = parseFloat(match[1]);
|
|
39
|
+
if (!Number.isFinite(num))
|
|
40
|
+
return fallback;
|
|
41
|
+
const unit = (match[2] || 'px').toLowerCase();
|
|
42
|
+
switch (unit) {
|
|
43
|
+
case 'px': return num;
|
|
44
|
+
case '%': return (num / 100) * ref;
|
|
45
|
+
case 'vw': return (num / 100) * canvas.width;
|
|
46
|
+
case 'vh': return (num / 100) * canvas.height;
|
|
47
|
+
case 'vmin': return (num / 100) * Math.min(canvas.width, canvas.height);
|
|
48
|
+
case 'vmax': return (num / 100) * Math.max(canvas.width, canvas.height);
|
|
49
|
+
default: return fallback;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolve an anchor value (0..1, unitless or percentage).
|
|
54
|
+
*
|
|
55
|
+
* Anchors default to 0 (TOP-LEFT) so that `x`/`y` mean the element's top-left
|
|
56
|
+
* corner, matching CSS (`left`/`top`), SVG (`<rect x y>`), and Canvas — the
|
|
57
|
+
* convention agents and humans reach for. See ANCHOR-CONVENTION-PLAN.md.
|
|
58
|
+
* Callers that want a center default (transform pivots, group rotation/scale)
|
|
59
|
+
* pass `fallback: 0.5` explicitly. A string like "50%" maps to 0.5.
|
|
60
|
+
*/
|
|
61
|
+
export function resolveAnchor(value, fallback = 0) {
|
|
62
|
+
if (value == null)
|
|
63
|
+
return fallback;
|
|
64
|
+
if (typeof value === 'number')
|
|
65
|
+
return Number.isFinite(value) ? value : fallback;
|
|
66
|
+
const s = value.trim();
|
|
67
|
+
if (s.endsWith('%')) {
|
|
68
|
+
const n = parseFloat(s);
|
|
69
|
+
return Number.isFinite(n) ? n / 100 : fallback;
|
|
70
|
+
}
|
|
71
|
+
const n = parseFloat(s);
|
|
72
|
+
return Number.isFinite(n) ? n : fallback;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=unit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit.js","sourceRoot":"","sources":["../../src/compositor/unit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { Source } from "@clipkit/protocol";
|
|
2
|
+
export interface ExportAudioOptions {
|
|
3
|
+
/** Pre-mixed audio buffer ready to encode. Runtime produces this via mixSourceAudio. */
|
|
4
|
+
buffer: AudioBuffer;
|
|
5
|
+
/** AAC bitrate in bits/second. Default 128 kbps. */
|
|
6
|
+
bitrate?: number;
|
|
7
|
+
/** Codec string. Default 'mp4a.40.2' (AAC-LC). */
|
|
8
|
+
codec?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Named output resolutions. Render-time choice — the Source's
|
|
12
|
+
* width/height stay as the authoring coordinate space; this multiplies
|
|
13
|
+
* the canvas backing store so the encoder pulls higher-density frames.
|
|
14
|
+
*
|
|
15
|
+
* 'source' (default) renders at the Source's declared dimensions —
|
|
16
|
+
* unchanged from the pre-resolution behavior.
|
|
17
|
+
*
|
|
18
|
+
* The named tiers anchor on output height and derive width from the
|
|
19
|
+
* Source's aspect ratio:
|
|
20
|
+
* 480p → height 480
|
|
21
|
+
* 720p → height 720
|
|
22
|
+
* 1080p → height 1080
|
|
23
|
+
* 1440p → height 1440
|
|
24
|
+
* 4k → height 2160
|
|
25
|
+
*/
|
|
26
|
+
export type RenderResolution = 'source' | '480p' | '720p' | '1080p' | '1440p' | '4k';
|
|
27
|
+
export interface ExportOptions {
|
|
28
|
+
codec?: string;
|
|
29
|
+
bitrate?: number;
|
|
30
|
+
framerate?: number;
|
|
31
|
+
onProgress?: (progress: number) => void;
|
|
32
|
+
/** Optional audio track. When present, the muxer adds an audio stream. */
|
|
33
|
+
audio?: ExportAudioOptions;
|
|
34
|
+
/**
|
|
35
|
+
* Output resolution. Defaults to 'source' (no upscaling). When set
|
|
36
|
+
* to a named tier, the exporter resizes the backend canvas to a
|
|
37
|
+
* higher pixel density and the encoder produces an MP4 at that size.
|
|
38
|
+
* Bitrate auto-scales unless overridden.
|
|
39
|
+
*/
|
|
40
|
+
renderResolution?: RenderResolution;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolve a RenderResolution + Source dimensions into the concrete
|
|
44
|
+
* physical canvas size, pixel ratio, and a sensible default bitrate.
|
|
45
|
+
*/
|
|
46
|
+
export declare function resolveRenderResolution(resolution: RenderResolution, sourceWidth: number, sourceHeight: number): {
|
|
47
|
+
physicalWidth: number;
|
|
48
|
+
physicalHeight: number;
|
|
49
|
+
pixelRatio: number;
|
|
50
|
+
defaultBitrate: number;
|
|
51
|
+
defaultCodec: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Minimal interface the exporter needs from the runtime. Decouples the
|
|
55
|
+
* encoder from the specific renderer implementation. The new ClipkitRuntime
|
|
56
|
+
* will satisfy this interface.
|
|
57
|
+
*/
|
|
58
|
+
export interface FrameProducer {
|
|
59
|
+
readonly canvas: HTMLCanvasElement | OffscreenCanvas;
|
|
60
|
+
renderAsync(source: Source, time: number): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Block until the GPU has finished drawing the current frame. MUST be awaited
|
|
63
|
+
* between renderAsync() and any canvas read-back (drawImage/getImageData/
|
|
64
|
+
* toDataURL/new VideoFrame). On async hardware GL (ANGLE → NVIDIA L4)
|
|
65
|
+
* renderAsync() returns once commands are QUEUED, not executed, so a read-back
|
|
66
|
+
* without this barrier captures a half-drawn or stale frame → periodic dimming
|
|
67
|
+
* + ghosting (worst on thin text). It's a no-op on synchronous SwiftShader, so
|
|
68
|
+
* it's safe everywhere. (The still path already does this — see harness.ts.)
|
|
69
|
+
*/
|
|
70
|
+
gpuFinish(): Promise<void>;
|
|
71
|
+
}
|
|
72
|
+
export declare class ClipkitExporter {
|
|
73
|
+
private canvas;
|
|
74
|
+
private renderer;
|
|
75
|
+
private encoder;
|
|
76
|
+
private muxer;
|
|
77
|
+
private tempCanvas;
|
|
78
|
+
private tempCtx;
|
|
79
|
+
constructor(canvas: HTMLCanvasElement | OffscreenCanvas, renderer: FrameProducer);
|
|
80
|
+
export(source: Source, options?: ExportOptions): Promise<Blob>;
|
|
81
|
+
/**
|
|
82
|
+
* Render each frame and hand its PNG bytes (base64, with alpha) to `onFrame`.
|
|
83
|
+
* No encoder/muxer — this feeds the transparent export path (ProRes 4444 /
|
|
84
|
+
* VP9-alpha), which assembles the PNGs with a server-side ffmpeg. `alpha`
|
|
85
|
+
* relies on the renderer having been told to clear transparent (the runtime
|
|
86
|
+
* arranges that). Returns the frame count.
|
|
87
|
+
*/
|
|
88
|
+
exportFrames(source: Source, options: {
|
|
89
|
+
framerate?: number;
|
|
90
|
+
alpha?: boolean;
|
|
91
|
+
onFrame: (index: number, pngBase64: string) => void | Promise<void>;
|
|
92
|
+
onProgress?: (progress: number) => void;
|
|
93
|
+
}): Promise<number>;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=exporter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../src/encoder/exporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAI/C,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,MAAM,EAAE,WAAW,CAAA;IACnB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;AAErF,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAwDD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB;IACD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,CAsBA;AAeD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe,CAAA;IACpD,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD;;;;;;;;OAQG;IACH,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,OAAO,CAA0B;gBAE7B,MAAM,EAAE,iBAAiB,GAAG,eAAe,EAAE,QAAQ,EAAE,aAAa;IAQ1E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2PxE;;;;;;OAMG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QACnE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;KACxC,GACA,OAAO,CAAC,MAAM,CAAC;CAsBnB"}
|