@motion-script/web 0.1.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 +47 -0
- package/dist/audio/player.d.ts +43 -0
- package/dist/audio/player.d.ts.map +1 -0
- package/dist/audio/player.js +165 -0
- package/dist/audio/player.js.map +1 -0
- package/dist/effects/bloom.d.ts +19 -0
- package/dist/effects/bloom.d.ts.map +1 -0
- package/dist/effects/bloom.js +64 -0
- package/dist/effects/bloom.js.map +1 -0
- package/dist/effects/blur.d.ts +8 -0
- package/dist/effects/blur.d.ts.map +1 -0
- package/dist/effects/blur.js +12 -0
- package/dist/effects/blur.js.map +1 -0
- package/dist/effects/bulge-pinch.d.ts +20 -0
- package/dist/effects/bulge-pinch.d.ts.map +1 -0
- package/dist/effects/bulge-pinch.js +86 -0
- package/dist/effects/bulge-pinch.js.map +1 -0
- package/dist/effects/chromatic-aberration.d.ts +19 -0
- package/dist/effects/chromatic-aberration.d.ts.map +1 -0
- package/dist/effects/chromatic-aberration.js +59 -0
- package/dist/effects/chromatic-aberration.js.map +1 -0
- package/dist/effects/effect.d.ts +32 -0
- package/dist/effects/effect.d.ts.map +1 -0
- package/dist/effects/effect.js +22 -0
- package/dist/effects/effect.js.map +1 -0
- package/dist/effects/grayscale.d.ts +12 -0
- package/dist/effects/grayscale.d.ts.map +1 -0
- package/dist/effects/grayscale.js +31 -0
- package/dist/effects/grayscale.js.map +1 -0
- package/dist/effects/index.d.ts +13 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/index.js +13 -0
- package/dist/effects/index.js.map +1 -0
- package/dist/effects/pixelate.d.ts +23 -0
- package/dist/effects/pixelate.d.ts.map +1 -0
- package/dist/effects/pixelate.js +37 -0
- package/dist/effects/pixelate.js.map +1 -0
- package/dist/effects/registry.d.ts +17 -0
- package/dist/effects/registry.d.ts.map +1 -0
- package/dist/effects/registry.js +56 -0
- package/dist/effects/registry.js.map +1 -0
- package/dist/effects/sksl-cache.d.ts +6 -0
- package/dist/effects/sksl-cache.d.ts.map +1 -0
- package/dist/effects/sksl-cache.js +21 -0
- package/dist/effects/sksl-cache.js.map +1 -0
- package/dist/effects/sksl-layer.d.ts +30 -0
- package/dist/effects/sksl-layer.d.ts.map +1 -0
- package/dist/effects/sksl-layer.js +82 -0
- package/dist/effects/sksl-layer.js.map +1 -0
- package/dist/effects/texture.d.ts +31 -0
- package/dist/effects/texture.d.ts.map +1 -0
- package/dist/effects/texture.js +66 -0
- package/dist/effects/texture.js.map +1 -0
- package/dist/effects/vintage.d.ts +20 -0
- package/dist/effects/vintage.d.ts.map +1 -0
- package/dist/effects/vintage.js +47 -0
- package/dist/effects/vintage.js.map +1 -0
- package/dist/effects/zoom.d.ts +20 -0
- package/dist/effects/zoom.d.ts.map +1 -0
- package/dist/effects/zoom.js +65 -0
- package/dist/effects/zoom.js.map +1 -0
- package/dist/exporter.d.ts +24 -0
- package/dist/exporter.d.ts.map +1 -0
- package/dist/exporter.js +177 -0
- package/dist/exporter.js.map +1 -0
- package/dist/fills/conic-gradient.d.ts +12 -0
- package/dist/fills/conic-gradient.d.ts.map +1 -0
- package/dist/fills/conic-gradient.js +44 -0
- package/dist/fills/conic-gradient.js.map +1 -0
- package/dist/fills/filters/alpha.d.ts +9 -0
- package/dist/fills/filters/alpha.d.ts.map +1 -0
- package/dist/fills/filters/alpha.js +21 -0
- package/dist/fills/filters/alpha.js.map +1 -0
- package/dist/fills/filters/blur.d.ts +9 -0
- package/dist/fills/filters/blur.d.ts.map +1 -0
- package/dist/fills/filters/blur.js +12 -0
- package/dist/fills/filters/blur.js.map +1 -0
- package/dist/fills/filters/color-adjustment.d.ts +14 -0
- package/dist/fills/filters/color-adjustment.d.ts.map +1 -0
- package/dist/fills/filters/color-adjustment.js +147 -0
- package/dist/fills/filters/color-adjustment.js.map +1 -0
- package/dist/fills/filters/color-matrix.d.ts +9 -0
- package/dist/fills/filters/color-matrix.d.ts.map +1 -0
- package/dist/fills/filters/color-matrix.js +14 -0
- package/dist/fills/filters/color-matrix.js.map +1 -0
- package/dist/fills/filters/curves.d.ts +9 -0
- package/dist/fills/filters/curves.d.ts.map +1 -0
- package/dist/fills/filters/curves.js +89 -0
- package/dist/fills/filters/curves.js.map +1 -0
- package/dist/fills/filters/exposure.d.ts +9 -0
- package/dist/fills/filters/exposure.d.ts.map +1 -0
- package/dist/fills/filters/exposure.js +22 -0
- package/dist/fills/filters/exposure.js.map +1 -0
- package/dist/fills/filters/filter.d.ts +17 -0
- package/dist/fills/filters/filter.d.ts.map +1 -0
- package/dist/fills/filters/filter.js +16 -0
- package/dist/fills/filters/filter.js.map +1 -0
- package/dist/fills/filters/grayscale.d.ts +9 -0
- package/dist/fills/filters/grayscale.d.ts.map +1 -0
- package/dist/fills/filters/grayscale.js +25 -0
- package/dist/fills/filters/grayscale.js.map +1 -0
- package/dist/fills/filters/registry.d.ts +16 -0
- package/dist/fills/filters/registry.d.ts.map +1 -0
- package/dist/fills/filters/registry.js +50 -0
- package/dist/fills/filters/registry.js.map +1 -0
- package/dist/fills/gradient-cache.d.ts +29 -0
- package/dist/fills/gradient-cache.d.ts.map +1 -0
- package/dist/fills/gradient-cache.js +57 -0
- package/dist/fills/gradient-cache.js.map +1 -0
- package/dist/fills/handler.d.ts +49 -0
- package/dist/fills/handler.d.ts.map +1 -0
- package/dist/fills/handler.js +172 -0
- package/dist/fills/handler.js.map +1 -0
- package/dist/fills/image.d.ts +34 -0
- package/dist/fills/image.d.ts.map +1 -0
- package/dist/fills/image.js +91 -0
- package/dist/fills/image.js.map +1 -0
- package/dist/fills/linear-gradient.d.ts +12 -0
- package/dist/fills/linear-gradient.d.ts.map +1 -0
- package/dist/fills/linear-gradient.js +48 -0
- package/dist/fills/linear-gradient.js.map +1 -0
- package/dist/fills/noise.d.ts +11 -0
- package/dist/fills/noise.d.ts.map +1 -0
- package/dist/fills/noise.js +82 -0
- package/dist/fills/noise.js.map +1 -0
- package/dist/fills/radial-gradient.d.ts +9 -0
- package/dist/fills/radial-gradient.d.ts.map +1 -0
- package/dist/fills/radial-gradient.js +43 -0
- package/dist/fills/radial-gradient.js.map +1 -0
- package/dist/fills/registry.d.ts +10 -0
- package/dist/fills/registry.d.ts.map +1 -0
- package/dist/fills/registry.js +34 -0
- package/dist/fills/registry.js.map +1 -0
- package/dist/fills/renderer.d.ts +24 -0
- package/dist/fills/renderer.d.ts.map +1 -0
- package/dist/fills/renderer.js +5 -0
- package/dist/fills/renderer.js.map +1 -0
- package/dist/fills/solid.d.ts +7 -0
- package/dist/fills/solid.d.ts.map +1 -0
- package/dist/fills/solid.js +13 -0
- package/dist/fills/solid.js.map +1 -0
- package/dist/fills/stripe.d.ts +7 -0
- package/dist/fills/stripe.d.ts.map +1 -0
- package/dist/fills/stripe.js +85 -0
- package/dist/fills/stripe.js.map +1 -0
- package/dist/fills/video.d.ts +6 -0
- package/dist/fills/video.d.ts.map +1 -0
- package/dist/fills/video.js +14 -0
- package/dist/fills/video.js.map +1 -0
- package/dist/font-style.d.ts +23 -0
- package/dist/font-style.d.ts.map +1 -0
- package/dist/font-style.js +34 -0
- package/dist/font-style.js.map +1 -0
- package/dist/getter.d.ts +9 -0
- package/dist/getter.d.ts.map +1 -0
- package/dist/getter.js +26 -0
- package/dist/getter.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/master-clock.d.ts +42 -0
- package/dist/master-clock.d.ts.map +1 -0
- package/dist/master-clock.js +134 -0
- package/dist/master-clock.js.map +1 -0
- package/dist/measure-scope.d.ts +14 -0
- package/dist/measure-scope.d.ts.map +1 -0
- package/dist/measure-scope.js +29 -0
- package/dist/measure-scope.js.map +1 -0
- package/dist/render-context.d.ts +107 -0
- package/dist/render-context.d.ts.map +1 -0
- package/dist/render-context.js +940 -0
- package/dist/render-context.js.map +1 -0
- package/dist/shapes/alpha-contour.d.ts +27 -0
- package/dist/shapes/alpha-contour.d.ts.map +1 -0
- package/dist/shapes/alpha-contour.js +330 -0
- package/dist/shapes/alpha-contour.js.map +1 -0
- package/dist/shapes/base.d.ts +46 -0
- package/dist/shapes/base.d.ts.map +1 -0
- package/dist/shapes/base.js +95 -0
- package/dist/shapes/base.js.map +1 -0
- package/dist/shapes/boolean.d.ts +28 -0
- package/dist/shapes/boolean.d.ts.map +1 -0
- package/dist/shapes/boolean.js +90 -0
- package/dist/shapes/boolean.js.map +1 -0
- package/dist/shapes/ellipse.d.ts +32 -0
- package/dist/shapes/ellipse.d.ts.map +1 -0
- package/dist/shapes/ellipse.js +50 -0
- package/dist/shapes/ellipse.js.map +1 -0
- package/dist/shapes/image.d.ts +66 -0
- package/dist/shapes/image.d.ts.map +1 -0
- package/dist/shapes/image.js +214 -0
- package/dist/shapes/image.js.map +1 -0
- package/dist/shapes/index.d.ts +67 -0
- package/dist/shapes/index.d.ts.map +1 -0
- package/dist/shapes/index.js +297 -0
- package/dist/shapes/index.js.map +1 -0
- package/dist/shapes/line.d.ts +25 -0
- package/dist/shapes/line.d.ts.map +1 -0
- package/dist/shapes/line.js +87 -0
- package/dist/shapes/line.js.map +1 -0
- package/dist/shapes/mask.d.ts +28 -0
- package/dist/shapes/mask.d.ts.map +1 -0
- package/dist/shapes/mask.js +106 -0
- package/dist/shapes/mask.js.map +1 -0
- package/dist/shapes/paragraph-layout.d.ts +64 -0
- package/dist/shapes/paragraph-layout.d.ts.map +1 -0
- package/dist/shapes/paragraph-layout.js +156 -0
- package/dist/shapes/paragraph-layout.js.map +1 -0
- package/dist/shapes/path.d.ts +29 -0
- package/dist/shapes/path.d.ts.map +1 -0
- package/dist/shapes/path.js +71 -0
- package/dist/shapes/path.js.map +1 -0
- package/dist/shapes/polygon.d.ts +33 -0
- package/dist/shapes/polygon.d.ts.map +1 -0
- package/dist/shapes/polygon.js +86 -0
- package/dist/shapes/polygon.js.map +1 -0
- package/dist/shapes/polygram.d.ts +34 -0
- package/dist/shapes/polygram.d.ts.map +1 -0
- package/dist/shapes/polygram.js +90 -0
- package/dist/shapes/polygram.js.map +1 -0
- package/dist/shapes/rect.d.ts +41 -0
- package/dist/shapes/rect.d.ts.map +1 -0
- package/dist/shapes/rect.js +111 -0
- package/dist/shapes/rect.js.map +1 -0
- package/dist/shapes/richtext.d.ts +28 -0
- package/dist/shapes/richtext.d.ts.map +1 -0
- package/dist/shapes/richtext.js +32 -0
- package/dist/shapes/richtext.js.map +1 -0
- package/dist/shapes/shape-handler.d.ts +79 -0
- package/dist/shapes/shape-handler.d.ts.map +1 -0
- package/dist/shapes/shape-handler.js +304 -0
- package/dist/shapes/shape-handler.js.map +1 -0
- package/dist/shapes/text.d.ts +13 -0
- package/dist/shapes/text.d.ts.map +1 -0
- package/dist/shapes/text.js +67 -0
- package/dist/shapes/text.js.map +1 -0
- package/dist/shapes/trim.d.ts +10 -0
- package/dist/shapes/trim.d.ts.map +1 -0
- package/dist/shapes/trim.js +49 -0
- package/dist/shapes/trim.js.map +1 -0
- package/dist/storage-adapter.d.ts +56 -0
- package/dist/storage-adapter.d.ts.map +1 -0
- package/dist/storage-adapter.js +188 -0
- package/dist/storage-adapter.js.map +1 -0
- package/dist/stroke/index.d.ts +34 -0
- package/dist/stroke/index.d.ts.map +1 -0
- package/dist/stroke/index.js +360 -0
- package/dist/stroke/index.js.map +1 -0
- package/dist/stroke/stroke-handler.d.ts +45 -0
- package/dist/stroke/stroke-handler.d.ts.map +1 -0
- package/dist/stroke/stroke-handler.js +371 -0
- package/dist/stroke/stroke-handler.js.map +1 -0
- package/dist/video/extract.d.ts +54 -0
- package/dist/video/extract.d.ts.map +1 -0
- package/dist/video/extract.js +192 -0
- package/dist/video/extract.js.map +1 -0
- package/dist/video/extract.worker.d.ts +50 -0
- package/dist/video/extract.worker.d.ts.map +1 -0
- package/dist/video/extract.worker.js +224 -0
- package/dist/video/extract.worker.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-context.js","sourceRoot":"","sources":["../src/render-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CanvasKit, Image as CKImage } from "@motion-script/canvaskit";
|
|
2
|
+
/** A single closed contour as a flat array of (x, y, x, y, ...) values. */
|
|
3
|
+
export type AlphaContour = Float32Array;
|
|
4
|
+
/**
|
|
5
|
+
* Extract the vector contour(s) of an image's non-transparent silhouette.
|
|
6
|
+
* Returns one Float32Array per closed contour, each holding (x, y, x, y, …)
|
|
7
|
+
* vertices in image-pixel coordinates (0,0 = top-left). Contours are open-
|
|
8
|
+
* ended polylines; callers close them with a final L→first / Close verb.
|
|
9
|
+
*
|
|
10
|
+
* Multiple contours indicate holes / disjoint islands. Renderers should fill
|
|
11
|
+
* with even-odd so holes appear transparent.
|
|
12
|
+
*
|
|
13
|
+
* Pipeline:
|
|
14
|
+
* 1. readPixels — get RGBA bytes from the CKImage.
|
|
15
|
+
* 2. Threshold alpha at 0.5 → binary mask (drops compression specks).
|
|
16
|
+
* 3. Marching squares — trace every outline where the mask goes 0↔1.
|
|
17
|
+
* Contours are walked clockwise for outer boundaries and
|
|
18
|
+
* counter-clockwise for holes (even-odd handles both).
|
|
19
|
+
* 4. Douglas–Peucker simplification with ~1px tolerance.
|
|
20
|
+
* 5. Discard contours whose perimeter is below a small threshold
|
|
21
|
+
* (kills 1–2px specks that survive the alpha threshold).
|
|
22
|
+
* 6. Emit an SVG path: "M x y L x y ... Z" per contour.
|
|
23
|
+
*
|
|
24
|
+
* Returns null if the image has no opaque pixels.
|
|
25
|
+
*/
|
|
26
|
+
export declare function extractAlphaContour(canvasKit: CanvasKit, img: CKImage): AlphaContour[] | null;
|
|
27
|
+
//# sourceMappingURL=alpha-contour.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alpha-contour.d.ts","sourceRoot":"","sources":["../../src/shapes/alpha-contour.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAE5E,2EAA2E;AAC3E,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,YAAY,EAAE,GAAG,IAAI,CAsD7F"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract the vector contour(s) of an image's non-transparent silhouette.
|
|
3
|
+
* Returns one Float32Array per closed contour, each holding (x, y, x, y, …)
|
|
4
|
+
* vertices in image-pixel coordinates (0,0 = top-left). Contours are open-
|
|
5
|
+
* ended polylines; callers close them with a final L→first / Close verb.
|
|
6
|
+
*
|
|
7
|
+
* Multiple contours indicate holes / disjoint islands. Renderers should fill
|
|
8
|
+
* with even-odd so holes appear transparent.
|
|
9
|
+
*
|
|
10
|
+
* Pipeline:
|
|
11
|
+
* 1. readPixels — get RGBA bytes from the CKImage.
|
|
12
|
+
* 2. Threshold alpha at 0.5 → binary mask (drops compression specks).
|
|
13
|
+
* 3. Marching squares — trace every outline where the mask goes 0↔1.
|
|
14
|
+
* Contours are walked clockwise for outer boundaries and
|
|
15
|
+
* counter-clockwise for holes (even-odd handles both).
|
|
16
|
+
* 4. Douglas–Peucker simplification with ~1px tolerance.
|
|
17
|
+
* 5. Discard contours whose perimeter is below a small threshold
|
|
18
|
+
* (kills 1–2px specks that survive the alpha threshold).
|
|
19
|
+
* 6. Emit an SVG path: "M x y L x y ... Z" per contour.
|
|
20
|
+
*
|
|
21
|
+
* Returns null if the image has no opaque pixels.
|
|
22
|
+
*/
|
|
23
|
+
export function extractAlphaContour(canvasKit, img) {
|
|
24
|
+
const width = img.width();
|
|
25
|
+
const height = img.height();
|
|
26
|
+
const imageInfo = {
|
|
27
|
+
width,
|
|
28
|
+
height,
|
|
29
|
+
alphaType: canvasKit.AlphaType.Unpremul,
|
|
30
|
+
colorType: canvasKit.ColorType.RGBA_8888,
|
|
31
|
+
colorSpace: canvasKit.ColorSpace.SRGB,
|
|
32
|
+
};
|
|
33
|
+
const pixels = img.readPixels(0, 0, imageInfo);
|
|
34
|
+
if (!pixels)
|
|
35
|
+
return null;
|
|
36
|
+
// Binary mask: 1 where alpha > 127, 0 otherwise. Padded by 1 pixel on all
|
|
37
|
+
// sides so the marching squares window never falls off the image edge.
|
|
38
|
+
const mw = width + 2;
|
|
39
|
+
const mh = height + 2;
|
|
40
|
+
const mask = new Uint8Array(mw * mh);
|
|
41
|
+
let anyOpaque = false;
|
|
42
|
+
for (let y = 0; y < height; y++) {
|
|
43
|
+
for (let x = 0; x < width; x++) {
|
|
44
|
+
const a = pixels[(y * width + x) * 4 + 3];
|
|
45
|
+
if (a > 127) {
|
|
46
|
+
mask[(y + 1) * mw + (x + 1)] = 1;
|
|
47
|
+
anyOpaque = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (!anyOpaque)
|
|
52
|
+
return null;
|
|
53
|
+
const contours = traceContours(mask, mw, mh);
|
|
54
|
+
const tolerance = 1.0;
|
|
55
|
+
const minPerimeter = 12; // drops specks ≤ ~3×3 px
|
|
56
|
+
const simplified = [];
|
|
57
|
+
for (const contour of contours) {
|
|
58
|
+
if (perimeter(contour) < minPerimeter)
|
|
59
|
+
continue;
|
|
60
|
+
const dp = douglasPeucker(contour, tolerance);
|
|
61
|
+
if (dp.length >= 3)
|
|
62
|
+
simplified.push(dp);
|
|
63
|
+
}
|
|
64
|
+
if (simplified.length === 0)
|
|
65
|
+
return null;
|
|
66
|
+
// Shift back by (-1, -1) to undo the marching-squares padding, and pack
|
|
67
|
+
// each contour into a Float32Array so renderers can apply a matrix
|
|
68
|
+
// without paying for box-and-tuple overhead.
|
|
69
|
+
return simplified.map((c) => {
|
|
70
|
+
const out = new Float32Array(c.length * 2);
|
|
71
|
+
for (let i = 0; i < c.length; i++) {
|
|
72
|
+
out[i * 2] = c[i][0] - 1;
|
|
73
|
+
out[i * 2 + 1] = c[i][1] - 1;
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Marching squares contour tracer. Walks every closed boundary where the
|
|
80
|
+
* binary mask transitions between 0 and 1. Returns one polyline per contour.
|
|
81
|
+
*
|
|
82
|
+
* Vertices live on the grid corners (so coordinates are integers from 0
|
|
83
|
+
* to mw / mh). Each contour is closed: first and last vertex coincide.
|
|
84
|
+
*/
|
|
85
|
+
function traceContours(mask, mw, mh) {
|
|
86
|
+
// Edge-visited bitmap. There are 2 oriented edges per cell (right + down)
|
|
87
|
+
// shared with neighbours, but to keep things simple we use a per-corner
|
|
88
|
+
// "have we started a contour here?" set and the contour walk handles the
|
|
89
|
+
// rest.
|
|
90
|
+
const visited = new Uint8Array(mw * mh);
|
|
91
|
+
const out = [];
|
|
92
|
+
// For each cell, check the 4 corners (mask values at (x,y), (x+1,y), (x,y+1), (x+1,y+1)).
|
|
93
|
+
// If we find a 0→1 transition that hasn't been started yet, walk the contour.
|
|
94
|
+
for (let y = 0; y < mh - 1; y++) {
|
|
95
|
+
for (let x = 0; x < mw - 1; x++) {
|
|
96
|
+
// Find the marching-squares case at this cell.
|
|
97
|
+
const c = cellCase(mask, mw, x, y);
|
|
98
|
+
// Cases 0 and 15 are fully outside / fully inside — no edge.
|
|
99
|
+
if (c === 0 || c === 15)
|
|
100
|
+
continue;
|
|
101
|
+
if (visited[y * mw + x])
|
|
102
|
+
continue;
|
|
103
|
+
const contour = walkContour(mask, mw, mh, x, y, visited);
|
|
104
|
+
if (contour.length >= 3)
|
|
105
|
+
out.push(contour);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return out;
|
|
109
|
+
}
|
|
110
|
+
function cellCase(mask, mw, x, y) {
|
|
111
|
+
const tl = mask[y * mw + x];
|
|
112
|
+
const tr = mask[y * mw + x + 1];
|
|
113
|
+
const bl = mask[(y + 1) * mw + x];
|
|
114
|
+
const br = mask[(y + 1) * mw + x + 1];
|
|
115
|
+
return (tl << 3) | (tr << 2) | (br << 1) | bl;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Walk a single closed contour starting at cell (sx, sy). Marks the visited
|
|
119
|
+
* bitmap as it goes so the outer loop doesn't re-trace the same contour.
|
|
120
|
+
*
|
|
121
|
+
* Contour vertices are the cell-grid points (cell corners). For each
|
|
122
|
+
* marching-squares case we know which entry edge produced this cell and
|
|
123
|
+
* which exit edge leads to the next cell. Edges are numbered 0=top, 1=right,
|
|
124
|
+
* 2=bottom, 3=left.
|
|
125
|
+
*/
|
|
126
|
+
function walkContour(mask, mw, mh, sx, sy, visited) {
|
|
127
|
+
const out = [];
|
|
128
|
+
// Entry-edge → exit-edge map per case. For ambiguous cases (5, 10) we
|
|
129
|
+
// pick a consistent disambiguation (treat as connected — corner touch).
|
|
130
|
+
// Edges: 0=top, 1=right, 2=bottom, 3=left.
|
|
131
|
+
const exits = {
|
|
132
|
+
1: { 0: 3, 1: 3, 2: 3 }, // bottom-left only
|
|
133
|
+
2: { 0: 1, 2: 1, 3: 1 }, // bottom-right only — exits to right then bottom; entered from left/top/bottom
|
|
134
|
+
3: { 1: 3, 3: 1 }, // bottom row
|
|
135
|
+
4: { 0: 1, 1: 0, 3: 0 }, // top-right only
|
|
136
|
+
5: { 0: 3, 2: 1, 1: 0, 3: 2 }, // saddle — ambiguous, treat as 2 separate lobes
|
|
137
|
+
6: { 0: 2, 2: 0 }, // right column
|
|
138
|
+
7: { 0: 3, 3: 0 }, // all except top-left
|
|
139
|
+
8: { 1: 2, 2: 3, 3: 2 }, // top-left only — wait, need to redo
|
|
140
|
+
9: { 1: 2, 2: 1 }, // left column
|
|
141
|
+
10: { 0: 1, 2: 3, 1: 2, 3: 0 }, // saddle
|
|
142
|
+
11: { 0: 1, 1: 0 }, // all except top-right
|
|
143
|
+
12: { 1: 3, 3: 1 }, // top row
|
|
144
|
+
13: { 1: 2, 2: 1 }, // all except bottom-right
|
|
145
|
+
14: { 2: 3, 3: 2 }, // all except bottom-left
|
|
146
|
+
};
|
|
147
|
+
// The map above is fragile to write by hand. Instead, use a single
|
|
148
|
+
// function that returns (exitEdge, dxNext, dyNext) given (case, entryEdge).
|
|
149
|
+
// Reimplement properly below.
|
|
150
|
+
void exits;
|
|
151
|
+
let x = sx;
|
|
152
|
+
let y = sy;
|
|
153
|
+
// Pick an initial entry edge by scanning: any edge whose endpoint has a
|
|
154
|
+
// 0→1 transition is valid. Start with edge "left" (so we entered from x-1).
|
|
155
|
+
let entryEdge = pickInitialEntry(mask, mw, x, y);
|
|
156
|
+
const maxSteps = mw * mh * 4;
|
|
157
|
+
let steps = 0;
|
|
158
|
+
while (steps++ < maxSteps) {
|
|
159
|
+
visited[y * mw + x] = 1;
|
|
160
|
+
const c = cellCase(mask, mw, x, y);
|
|
161
|
+
const next = stepContour(c, entryEdge);
|
|
162
|
+
if (!next)
|
|
163
|
+
break;
|
|
164
|
+
const { exitEdge, vx, vy } = next;
|
|
165
|
+
// Push the vertex on the exit edge (midpoint of the edge in cell coords).
|
|
166
|
+
out.push([x + vx, y + vy]);
|
|
167
|
+
// Move to the neighbour cell across the exit edge.
|
|
168
|
+
switch (exitEdge) {
|
|
169
|
+
case 0:
|
|
170
|
+
y -= 1;
|
|
171
|
+
entryEdge = 2;
|
|
172
|
+
break; // exit top → enter neighbour from bottom
|
|
173
|
+
case 1:
|
|
174
|
+
x += 1;
|
|
175
|
+
entryEdge = 3;
|
|
176
|
+
break; // exit right → enter from left
|
|
177
|
+
case 2:
|
|
178
|
+
y += 1;
|
|
179
|
+
entryEdge = 0;
|
|
180
|
+
break; // exit bottom → enter from top
|
|
181
|
+
case 3:
|
|
182
|
+
x -= 1;
|
|
183
|
+
entryEdge = 1;
|
|
184
|
+
break; // exit left → enter from right
|
|
185
|
+
}
|
|
186
|
+
if (x < 0 || y < 0 || x >= mw - 1 || y >= mh - 1)
|
|
187
|
+
break;
|
|
188
|
+
if (x === sx && y === sy)
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
// Close the contour
|
|
192
|
+
if (out.length > 0)
|
|
193
|
+
out.push(out[0]);
|
|
194
|
+
return out;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Find an initial entry edge for the starting cell. We pick the edge with a
|
|
198
|
+
* 0→1 transition going clockwise around the cell. Defaults to left edge.
|
|
199
|
+
*/
|
|
200
|
+
function pickInitialEntry(mask, mw, x, y) {
|
|
201
|
+
const tl = mask[y * mw + x];
|
|
202
|
+
const tr = mask[y * mw + x + 1];
|
|
203
|
+
const bl = mask[(y + 1) * mw + x];
|
|
204
|
+
const br = mask[(y + 1) * mw + x + 1];
|
|
205
|
+
// Edge 0 (top): between tl and tr. Transition if tl !== tr.
|
|
206
|
+
if (tl !== tr)
|
|
207
|
+
return 0;
|
|
208
|
+
if (tr !== br)
|
|
209
|
+
return 1;
|
|
210
|
+
if (bl !== br)
|
|
211
|
+
return 2;
|
|
212
|
+
if (tl !== bl)
|
|
213
|
+
return 3;
|
|
214
|
+
return 0;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Given a marching-squares case and the edge we entered through, return the
|
|
218
|
+
* exit edge and the position of the contour vertex on that exit edge (as
|
|
219
|
+
* fractions of a cell: vx/vy ∈ [0, 1]).
|
|
220
|
+
*/
|
|
221
|
+
function stepContour(c, entryEdge) {
|
|
222
|
+
// Edge midpoints in cell-local coords:
|
|
223
|
+
// edge 0 (top) → (0.5, 0)
|
|
224
|
+
// edge 1 (right) → (1, 0.5)
|
|
225
|
+
// edge 2 (bottom) → (0.5, 1)
|
|
226
|
+
// edge 3 (left) → (0, 0.5)
|
|
227
|
+
const mid = (edge) => {
|
|
228
|
+
switch (edge) {
|
|
229
|
+
case 0: return [0.5, 0];
|
|
230
|
+
case 1: return [1, 0.5];
|
|
231
|
+
case 2: return [0.5, 1];
|
|
232
|
+
case 3: return [0, 0.5];
|
|
233
|
+
}
|
|
234
|
+
return [0, 0];
|
|
235
|
+
};
|
|
236
|
+
// Cell case → ordered list of (entry, exit) edge pairs. For non-ambiguous
|
|
237
|
+
// cases there's exactly one pair; saddle cases (5, 10) have two pairs.
|
|
238
|
+
// Edges chosen so that following them traces the contour with the
|
|
239
|
+
// solid (mask=1) region on the right (clockwise around outer contours,
|
|
240
|
+
// counter-clockwise around holes — works with even-odd fill).
|
|
241
|
+
const transitions = {
|
|
242
|
+
1: [[2, 3]], // 0001 — bl
|
|
243
|
+
2: [[1, 2]], // 0010 — br
|
|
244
|
+
3: [[1, 3]], // 0011
|
|
245
|
+
4: [[0, 1]], // 0100 — tr
|
|
246
|
+
5: [[0, 3], [2, 1]], // 0101 — saddle (tl + br opposite of tr+bl)
|
|
247
|
+
6: [[0, 2]], // 0110
|
|
248
|
+
7: [[0, 3]], // 0111
|
|
249
|
+
8: [[3, 0]], // 1000 — tl
|
|
250
|
+
9: [[2, 0]], // 1001
|
|
251
|
+
10: [[3, 2], [1, 0]], // 1010 — saddle
|
|
252
|
+
11: [[1, 0]], // 1011
|
|
253
|
+
12: [[3, 1]], // 1100
|
|
254
|
+
13: [[2, 1]], // 1101
|
|
255
|
+
14: [[3, 2]], // 1110
|
|
256
|
+
};
|
|
257
|
+
const pairs = transitions[c];
|
|
258
|
+
if (!pairs)
|
|
259
|
+
return null;
|
|
260
|
+
for (const [inE, outE] of pairs) {
|
|
261
|
+
if (inE === entryEdge) {
|
|
262
|
+
const [vx, vy] = mid(outE);
|
|
263
|
+
return { exitEdge: outE, vx, vy };
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
// Fallback: take the first pair regardless of entry (shouldn't happen for
|
|
267
|
+
// well-formed traversals; protects against accidental wrong-direction).
|
|
268
|
+
const [, outE] = pairs[0];
|
|
269
|
+
const [vx, vy] = mid(outE);
|
|
270
|
+
return { exitEdge: outE, vx, vy };
|
|
271
|
+
}
|
|
272
|
+
function perimeter(points) {
|
|
273
|
+
let sum = 0;
|
|
274
|
+
for (let i = 1; i < points.length; i++) {
|
|
275
|
+
const dx = points[i][0] - points[i - 1][0];
|
|
276
|
+
const dy = points[i][1] - points[i - 1][1];
|
|
277
|
+
sum += Math.hypot(dx, dy);
|
|
278
|
+
}
|
|
279
|
+
return sum;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Douglas–Peucker polyline simplification. tolerance is in pixels. The first
|
|
283
|
+
* and last points are kept; intermediate points whose perpendicular distance
|
|
284
|
+
* to the simplified line is below tolerance are dropped.
|
|
285
|
+
*/
|
|
286
|
+
function douglasPeucker(points, tolerance) {
|
|
287
|
+
if (points.length < 3)
|
|
288
|
+
return points.slice();
|
|
289
|
+
const keep = new Uint8Array(points.length);
|
|
290
|
+
keep[0] = 1;
|
|
291
|
+
keep[points.length - 1] = 1;
|
|
292
|
+
simplifyRange(points, 0, points.length - 1, tolerance, keep);
|
|
293
|
+
const out = [];
|
|
294
|
+
for (let i = 0; i < points.length; i++) {
|
|
295
|
+
if (keep[i])
|
|
296
|
+
out.push(points[i]);
|
|
297
|
+
}
|
|
298
|
+
return out;
|
|
299
|
+
}
|
|
300
|
+
function simplifyRange(points, a, b, tolerance, keep) {
|
|
301
|
+
let maxDist = 0;
|
|
302
|
+
let maxIdx = -1;
|
|
303
|
+
const [ax, ay] = points[a];
|
|
304
|
+
const [bx, by] = points[b];
|
|
305
|
+
for (let i = a + 1; i < b; i++) {
|
|
306
|
+
const d = pointLineDistance(points[i], ax, ay, bx, by);
|
|
307
|
+
if (d > maxDist) {
|
|
308
|
+
maxDist = d;
|
|
309
|
+
maxIdx = i;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
if (maxDist > tolerance && maxIdx > 0) {
|
|
313
|
+
keep[maxIdx] = 1;
|
|
314
|
+
simplifyRange(points, a, maxIdx, tolerance, keep);
|
|
315
|
+
simplifyRange(points, maxIdx, b, tolerance, keep);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
function pointLineDistance(p, ax, ay, bx, by) {
|
|
319
|
+
const dx = bx - ax;
|
|
320
|
+
const dy = by - ay;
|
|
321
|
+
const lenSq = dx * dx + dy * dy;
|
|
322
|
+
if (lenSq === 0)
|
|
323
|
+
return Math.hypot(p[0] - ax, p[1] - ay);
|
|
324
|
+
let t = ((p[0] - ax) * dx + (p[1] - ay) * dy) / lenSq;
|
|
325
|
+
t = Math.max(0, Math.min(1, t));
|
|
326
|
+
const cx = ax + t * dx;
|
|
327
|
+
const cy = ay + t * dy;
|
|
328
|
+
return Math.hypot(p[0] - cx, p[1] - cy);
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=alpha-contour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alpha-contour.js","sourceRoot":"","sources":["../../src/shapes/alpha-contour.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { CanvasKit, Canvas, Paint, Path as CKPath } from "@motion-script/canvaskit";
|
|
2
|
+
import type { CurrentShape } from "./shape-handler";
|
|
3
|
+
/**
|
|
4
|
+
* Common lifecycle for path-backed shapes: resolve state once, lazily compute
|
|
5
|
+
* geometry, build a CanvasKit path from an SVG string (with optional trim),
|
|
6
|
+
* and cache it across frames. Subclasses fill in the geometry/SVG/trim hooks;
|
|
7
|
+
* `ShapeHandler` drives caching and reuse via `inputState`/`hasTrim`/`retrim`.
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class BaseShape<S, G = unknown> {
|
|
10
|
+
protected readonly canvasKit: CanvasKit;
|
|
11
|
+
protected readonly canvas: Canvas;
|
|
12
|
+
protected readonly fullState: S;
|
|
13
|
+
inputState: Partial<S>;
|
|
14
|
+
ckPath: CKPath | undefined;
|
|
15
|
+
private _basePath;
|
|
16
|
+
private _geo;
|
|
17
|
+
constructor(canvasKit: CanvasKit, canvas: Canvas, state: Partial<S>);
|
|
18
|
+
protected abstract resolveState(state: Partial<S>): S;
|
|
19
|
+
protected abstract computeGeometry(): G;
|
|
20
|
+
protected abstract buildSVGPath(geo: G): string;
|
|
21
|
+
protected abstract needsTrim(): boolean;
|
|
22
|
+
protected abstract getTrimRange(): {
|
|
23
|
+
start: number;
|
|
24
|
+
end: number;
|
|
25
|
+
};
|
|
26
|
+
hasTrim(): boolean;
|
|
27
|
+
trimRange(): {
|
|
28
|
+
start: number;
|
|
29
|
+
end: number;
|
|
30
|
+
};
|
|
31
|
+
protected get geometry(): G;
|
|
32
|
+
ensurePath(): void;
|
|
33
|
+
protected _setBasePath(path: CKPath): void;
|
|
34
|
+
retrim(start: number, end: number): void;
|
|
35
|
+
deletePaths(): void;
|
|
36
|
+
draw(paint: Paint, _isolated: boolean): void;
|
|
37
|
+
clip(_isolated: boolean): void;
|
|
38
|
+
toCurrentShape(isolated: boolean): CurrentShape;
|
|
39
|
+
protected computeBounds(_geo: G): {
|
|
40
|
+
left: number;
|
|
41
|
+
top: number;
|
|
42
|
+
right: number;
|
|
43
|
+
bottom: number;
|
|
44
|
+
} | undefined;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/shapes/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;;;GAKG;AACH,8BAAsB,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO;IAUtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS;IACvC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAVrC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;IAEhC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,IAAI,CAAgB;gBAGL,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACjC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAMrB,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC;IACvC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM;IAC/C,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO;IACvC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAGjE,OAAO,IAAI,OAAO;IAClB,SAAS,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAE3C,SAAS,KAAK,QAAQ,IAAI,CAAC,CAE1B;IAGD,UAAU,IAAI,IAAI;IAiBlB,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM1C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQxC,WAAW,IAAI,IAAI;IAOnB,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI;IAK5C,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAS9B,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY;IAW/C,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;CAG7G"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { trimPath } from "./trim";
|
|
2
|
+
/**
|
|
3
|
+
* Common lifecycle for path-backed shapes: resolve state once, lazily compute
|
|
4
|
+
* geometry, build a CanvasKit path from an SVG string (with optional trim),
|
|
5
|
+
* and cache it across frames. Subclasses fill in the geometry/SVG/trim hooks;
|
|
6
|
+
* `ShapeHandler` drives caching and reuse via `inputState`/`hasTrim`/`retrim`.
|
|
7
|
+
*/
|
|
8
|
+
export class BaseShape {
|
|
9
|
+
canvasKit;
|
|
10
|
+
canvas;
|
|
11
|
+
fullState;
|
|
12
|
+
// The original partial state this shape was built from, used for cache equality checks.
|
|
13
|
+
inputState;
|
|
14
|
+
ckPath;
|
|
15
|
+
// The untrimmed base path, kept alive so re-trim doesn't require re-parsing SVG.
|
|
16
|
+
_basePath;
|
|
17
|
+
_geo;
|
|
18
|
+
constructor(canvasKit, canvas, state) {
|
|
19
|
+
this.canvasKit = canvasKit;
|
|
20
|
+
this.canvas = canvas;
|
|
21
|
+
this.inputState = state;
|
|
22
|
+
this.fullState = this.resolveState(state);
|
|
23
|
+
}
|
|
24
|
+
// Public accessors used by ShapeHandler for cache invalidation.
|
|
25
|
+
hasTrim() { return this.needsTrim(); }
|
|
26
|
+
trimRange() { return this.getTrimRange(); }
|
|
27
|
+
get geometry() {
|
|
28
|
+
return (this._geo ??= this.computeGeometry());
|
|
29
|
+
}
|
|
30
|
+
// Idempotent: builds ckPath once and caches it.
|
|
31
|
+
ensurePath() {
|
|
32
|
+
if (this.ckPath)
|
|
33
|
+
return;
|
|
34
|
+
const svgPath = this.buildSVGPath(this.geometry);
|
|
35
|
+
const path = this.canvasKit.Path.MakeFromSVGString(svgPath);
|
|
36
|
+
if (!path) {
|
|
37
|
+
console.warn(`${this.constructor.name}: failed to create path`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (this.needsTrim()) {
|
|
41
|
+
this._basePath = path;
|
|
42
|
+
const { start, end } = this.getTrimRange();
|
|
43
|
+
this.ckPath = trimPath(this.canvasKit, path, start, end);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this.ckPath = path;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
_setBasePath(path) {
|
|
50
|
+
this._basePath = path;
|
|
51
|
+
}
|
|
52
|
+
// Re-trim from the cached base path when only start/end changed.
|
|
53
|
+
// Only valid if ensurePath() was already called with trim active.
|
|
54
|
+
retrim(start, end) {
|
|
55
|
+
const base = this._basePath;
|
|
56
|
+
if (!base)
|
|
57
|
+
return;
|
|
58
|
+
this.ckPath?.delete();
|
|
59
|
+
this.ckPath = trimPath(this.canvasKit, base, start, end);
|
|
60
|
+
}
|
|
61
|
+
// Release CanvasKit resources. Called by shape cache on eviction.
|
|
62
|
+
deletePaths() {
|
|
63
|
+
this.ckPath?.delete();
|
|
64
|
+
this.ckPath = undefined;
|
|
65
|
+
this._basePath?.delete();
|
|
66
|
+
this._basePath = undefined;
|
|
67
|
+
}
|
|
68
|
+
draw(paint, _isolated) {
|
|
69
|
+
this.ensurePath();
|
|
70
|
+
if (this.ckPath)
|
|
71
|
+
this.canvas.drawPath(this.ckPath, paint);
|
|
72
|
+
}
|
|
73
|
+
clip(_isolated) {
|
|
74
|
+
this.ensurePath();
|
|
75
|
+
if (this.ckPath) {
|
|
76
|
+
this.canvas.clipPath(this.ckPath, this.canvasKit.ClipOp.Intersect, true);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// Returns a CurrentShape whose ckPath is a live getter on this instance,
|
|
80
|
+
// so ensurePath() called after toCurrentShape() is reflected immediately.
|
|
81
|
+
toCurrentShape(isolated) {
|
|
82
|
+
const shape = this;
|
|
83
|
+
return {
|
|
84
|
+
draw: (paint) => shape.draw(paint, isolated),
|
|
85
|
+
get ckPath() { return shape.ckPath; },
|
|
86
|
+
bounds: this.computeBounds(this.geometry),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Subclasses that can compute LTRB bounds purely from geometry should override
|
|
90
|
+
// this so getShapeBounds() works for isolated shapes that never build a ckPath.
|
|
91
|
+
computeBounds(_geo) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/shapes/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CanvasKit, Canvas, Path as CKPath } from "@motion-script/canvaskit";
|
|
2
|
+
import { BooleanOperation } from "@motion-script/core";
|
|
3
|
+
import type { CurrentShape } from "./shape-handler";
|
|
4
|
+
/**
|
|
5
|
+
* Combines paths via CanvasKit `PathOp`s and tracks nested "path collection"
|
|
6
|
+
* frames. A frame records each contributed path transformed into the
|
|
7
|
+
* coordinate space active when the frame began (via the inverse of that base
|
|
8
|
+
* matrix), so paths drawn under different transforms still combine correctly
|
|
9
|
+
* in one space — used for both explicit boolean ops and vector masks.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BooleanHandler {
|
|
12
|
+
private canvasKit;
|
|
13
|
+
private getCanvas;
|
|
14
|
+
private pathCollectionStack;
|
|
15
|
+
private booleanOpStack;
|
|
16
|
+
constructor(canvasKit: CanvasKit, getCanvas: () => Canvas);
|
|
17
|
+
dispose(): void;
|
|
18
|
+
isCollecting(): boolean;
|
|
19
|
+
contributeToPathCollection(path: CKPath): void;
|
|
20
|
+
pushFrame(): void;
|
|
21
|
+
popFrame(): CKPath[];
|
|
22
|
+
private toCanvasKitPathOp;
|
|
23
|
+
/** Folds `paths` left-to-right with `op`, deleting inputs as it consumes them. Caller owns the result. */
|
|
24
|
+
combinePaths(paths: CKPath[], op: BooleanOperation): CKPath | null;
|
|
25
|
+
beginBoolean(op: BooleanOperation): void;
|
|
26
|
+
endBoolean(getCanvas: () => Canvas): CurrentShape | null;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=boolean.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boolean.d.ts","sourceRoot":"","sources":["../../src/shapes/boolean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAS,IAAI,IAAI,MAAM,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAOpD;;;;;;GAMG;AACH,qBAAa,cAAc;IAKnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IALrB,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,cAAc,CAA0B;gBAGpC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,MAAM;IAGnC,OAAO,IAAI,IAAI;IAKf,YAAY,IAAI,OAAO;IAIvB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAU9C,SAAS,IAAI,IAAI;IAMjB,QAAQ,IAAI,MAAM,EAAE;IAKpB,OAAO,CAAC,iBAAiB;IAUzB,0GAA0G;IAC1G,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI;IAiBlE,YAAY,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAKxC,UAAU,CACN,SAAS,EAAE,MAAM,MAAM,GACxB,YAAY,GAAG,IAAI;CAezB"}
|