@flighthq/shape 0.3.0-next.1593.a47f94a → 0.3.0-next.1595.4d49b41
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/dist/contract.d.ts +2 -0
- package/dist/contract.d.ts.map +1 -1
- package/dist/contract.js +2 -0
- package/dist/contract.js.map +1 -1
- package/dist/explainMorphShapeGradientEndpoints.d.ts +5 -0
- package/dist/explainMorphShapeGradientEndpoints.d.ts.map +1 -0
- package/dist/explainMorphShapeGradientEndpoints.js +43 -0
- package/dist/explainMorphShapeGradientEndpoints.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/morphShape.d.ts +2 -2
- package/dist/morphShape.d.ts.map +1 -1
- package/dist/morphShape.js +38 -12
- package/dist/morphShape.js.map +1 -1
- package/dist/morphShapePaint.d.ts +9 -0
- package/dist/morphShapePaint.d.ts.map +1 -0
- package/dist/morphShapePaint.js +183 -0
- package/dist/morphShapePaint.js.map +1 -0
- package/dist/shape.d.ts.map +1 -1
- package/dist/shape.js +5 -1
- package/dist/shape.js.map +1 -1
- package/package.json +8 -8
- package/src/explainMorphShapeGradientEndpoints.test.ts +47 -0
- package/src/morphShape.test.ts +52 -6
- package/src/morphShapeAnimation.test.ts +33 -6
- package/src/morphShapePaint.test.ts +236 -0
- package/src/shape.test.ts +16 -0
package/dist/contract.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { explainMorphShapeGradientEndpoints } from './explainMorphShapeGradientEndpoints';
|
|
1
2
|
export * from './morphShape';
|
|
2
3
|
export * from './morphShapeAnimation';
|
|
4
|
+
export { appendMorphShapeBeginFill, appendMorphShapeBeginGradientFill, appendMorphShapeBeginTextureFill, appendMorphShapeLineGradientStyle, appendMorphShapeLineStyle, appendMorphShapeLineTextureStyle, } from './morphShapePaint';
|
|
3
5
|
export * from './scale9Shape';
|
|
4
6
|
export * from './shape';
|
|
5
7
|
export * from './shapeCommands';
|
package/dist/contract.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
package/dist/contract.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export { explainMorphShapeGradientEndpoints } from './explainMorphShapeGradientEndpoints';
|
|
1
2
|
export * from './morphShape';
|
|
2
3
|
export * from './morphShapeAnimation';
|
|
4
|
+
export { appendMorphShapeBeginFill, appendMorphShapeBeginGradientFill, appendMorphShapeBeginTextureFill, appendMorphShapeLineGradientStyle, appendMorphShapeLineStyle, appendMorphShapeLineTextureStyle, } from './morphShapePaint';
|
|
3
5
|
export * from './scale9Shape';
|
|
4
6
|
export * from './shape';
|
|
5
7
|
export * from './shapeCommands';
|
package/dist/contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AAC1F,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MorphShapeGradientEndpoint, MorphShapeGradientEndpointExplanation } from '@flighthq/types/contract';
|
|
2
|
+
export type { MorphShapeGradientEndpointExplanation, MorphShapeGradientEndpointReason } from '@flighthq/types/contract';
|
|
3
|
+
export declare function explainMorphShapeGradientEndpoints(start: Readonly<MorphShapeGradientEndpoint>, end: Readonly<MorphShapeGradientEndpoint>): MorphShapeGradientEndpointExplanation;
|
|
4
|
+
export declare function getMorphShapeGradientEndpointIssue(start: Readonly<MorphShapeGradientEndpoint>, end: Readonly<MorphShapeGradientEndpoint>): number;
|
|
5
|
+
//# sourceMappingURL=explainMorphShapeGradientEndpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainMorphShapeGradientEndpoints.d.ts","sourceRoot":"","sources":["../src/explainMorphShapeGradientEndpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,qCAAqC,EAEtC,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,qCAAqC,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAIxH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAC3C,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GACxC,qCAAqC,CAQvC;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAC3C,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GACxC,MAAM,CAYR"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Pure diagnostic twin of the gradient paint appenders. Returns detached data and keeps diagnostic
|
|
2
|
+
// reason strings outside the paint sampling module so applications can tree-shake them independently.
|
|
3
|
+
export function explainMorphShapeGradientEndpoints(start, end) {
|
|
4
|
+
const issue = getMorphShapeGradientEndpointIssue(start, end);
|
|
5
|
+
return {
|
|
6
|
+
endStopCount: end.colors.length,
|
|
7
|
+
reason: getReason(issue),
|
|
8
|
+
startStopCount: start.colors.length,
|
|
9
|
+
supported: issue === GradientEndpointIssueNone,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function getMorphShapeGradientEndpointIssue(start, end) {
|
|
13
|
+
const startCount = start.colors.length;
|
|
14
|
+
const endCount = end.colors.length;
|
|
15
|
+
if (startCount === 0 || endCount === 0)
|
|
16
|
+
return GradientEndpointIssueEmpty;
|
|
17
|
+
if (start.alphas.length !== startCount || start.ratios.length !== startCount) {
|
|
18
|
+
return GradientEndpointIssueStartComponents;
|
|
19
|
+
}
|
|
20
|
+
if (end.alphas.length !== endCount || end.ratios.length !== endCount) {
|
|
21
|
+
return GradientEndpointIssueEndComponents;
|
|
22
|
+
}
|
|
23
|
+
if (startCount !== endCount)
|
|
24
|
+
return GradientEndpointIssueStopCount;
|
|
25
|
+
return GradientEndpointIssueNone;
|
|
26
|
+
}
|
|
27
|
+
function getReason(issue) {
|
|
28
|
+
if (issue === GradientEndpointIssueEmpty)
|
|
29
|
+
return 'empty-gradient';
|
|
30
|
+
if (issue === GradientEndpointIssueStartComponents)
|
|
31
|
+
return 'start-stop-component-count-mismatch';
|
|
32
|
+
if (issue === GradientEndpointIssueEndComponents)
|
|
33
|
+
return 'end-stop-component-count-mismatch';
|
|
34
|
+
if (issue === GradientEndpointIssueStopCount)
|
|
35
|
+
return 'stop-count-mismatch';
|
|
36
|
+
return 'ok';
|
|
37
|
+
}
|
|
38
|
+
const GradientEndpointIssueNone = 0;
|
|
39
|
+
const GradientEndpointIssueEmpty = 1;
|
|
40
|
+
const GradientEndpointIssueStartComponents = 2;
|
|
41
|
+
const GradientEndpointIssueEndComponents = 3;
|
|
42
|
+
const GradientEndpointIssueStopCount = 4;
|
|
43
|
+
//# sourceMappingURL=explainMorphShapeGradientEndpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explainMorphShapeGradientEndpoints.js","sourceRoot":"","sources":["../src/explainMorphShapeGradientEndpoints.ts"],"names":[],"mappings":"AAQA,mGAAmG;AACnG,sGAAsG;AACtG,MAAM,UAAU,kCAAkC,CAChD,KAA2C,EAC3C,GAAyC;IAEzC,MAAM,KAAK,GAAG,kCAAkC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM;QAC/B,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC;QACxB,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QACnC,SAAS,EAAE,KAAK,KAAK,yBAAyB;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAA2C,EAC3C,GAAyC;IAEzC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;IACnC,IAAI,UAAU,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,0BAA0B,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAC7E,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,kCAAkC,CAAC;IAC5C,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,8BAA8B,CAAC;IACnE,OAAO,yBAAyB,CAAC;AACnC,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,KAAK,KAAK,0BAA0B;QAAE,OAAO,gBAAgB,CAAC;IAClE,IAAI,KAAK,KAAK,oCAAoC;QAAE,OAAO,qCAAqC,CAAC;IACjG,IAAI,KAAK,KAAK,kCAAkC;QAAE,OAAO,mCAAmC,CAAC;IAC7F,IAAI,KAAK,KAAK,8BAA8B;QAAE,OAAO,qBAAqB,CAAC;IAC3E,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,oCAAoC,GAAG,CAAC,CAAC;AAC/C,MAAM,kCAAkC,GAAG,CAAC,CAAC;AAC7C,MAAM,8BAA8B,GAAG,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PathCommand, applyAnimationClipToMorphShape, applyMorphShapeAnimationSample, appendMorphShapePath, appendShapeArc, appendShapeArcTo, appendShapeBeginTextureFill, appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeCircle, appendShapeCubicCurveTo, appendShapeCurveTo, appendShapeDrawTriangles, appendShapeEllipse, appendShapeEndFill, appendShapeGeometryCommand, appendShapeLineTextureStyle, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTo, appendShapeMoveTo, appendShapePath, appendShapePolygon, appendShapePolyline, appendShapeRectangle, appendShapeRoundRectangle, appendShapeRoundRectangleVarying, clearShapeCommands, computeShapeLocalBoundsRectangle, copyShapeCommands, createMorphShape, createMorphShapeAnimationTarget, createScale9Shape, createShape, enableShapeHitTesting, getPathCommandOperandCount, getShapeBounds, getShapeCommandCount, getShapeFillRegions, getShapeStrokeRegions, getShapeStrokeOutlineRegions, hasNonSolidShapeFill, hasNonSolidShapeStroke, hasShapeFill, hitTestShapeCommandPoint, isShapeEmpty, registerShapeHitTestCommand, setMorphShapeProgress, } from './contract';
|
|
1
|
+
export { PathCommand, applyAnimationClipToMorphShape, applyMorphShapeAnimationSample, appendMorphShapeBeginFill, appendMorphShapeBeginGradientFill, appendMorphShapeBeginTextureFill, appendMorphShapeLineGradientStyle, appendMorphShapeLineStyle, appendMorphShapeLineTextureStyle, appendMorphShapePath, appendShapeArc, appendShapeArcTo, appendShapeBeginTextureFill, appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeCircle, appendShapeCubicCurveTo, appendShapeCurveTo, appendShapeDrawTriangles, appendShapeEllipse, appendShapeEndFill, appendShapeGeometryCommand, appendShapeLineTextureStyle, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTo, appendShapeMoveTo, appendShapePath, appendShapePolygon, appendShapePolyline, appendShapeRectangle, appendShapeRoundRectangle, appendShapeRoundRectangleVarying, clearShapeCommands, computeShapeLocalBoundsRectangle, copyShapeCommands, createMorphShape, createMorphShapeAnimationTarget, createScale9Shape, createShape, enableShapeHitTesting, explainMorphShapeGradientEndpoints, getPathCommandOperandCount, getShapeBounds, getShapeCommandCount, getShapeFillRegions, getShapeStrokeRegions, getShapeStrokeOutlineRegions, hasNonSolidShapeFill, hasNonSolidShapeStroke, hasShapeFill, hitTestShapeCommandPoint, isShapeEmpty, registerShapeHitTestCommand, setMorphShapeProgress, } from './contract';
|
|
2
2
|
export * from './scale9ShapeCommands';
|
|
3
3
|
export * from './explainShapeTessellation';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,8BAA8B,EAC9B,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EAChC,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EAChC,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,kCAAkC,EAClC,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { PathCommand, applyAnimationClipToMorphShape, applyMorphShapeAnimationSample, appendMorphShapePath, appendShapeArc, appendShapeArcTo, appendShapeBeginTextureFill, appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeCircle, appendShapeCubicCurveTo, appendShapeCurveTo, appendShapeDrawTriangles, appendShapeEllipse, appendShapeEndFill, appendShapeGeometryCommand, appendShapeLineTextureStyle, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTo, appendShapeMoveTo, appendShapePath, appendShapePolygon, appendShapePolyline, appendShapeRectangle, appendShapeRoundRectangle, appendShapeRoundRectangleVarying, clearShapeCommands, computeShapeLocalBoundsRectangle, copyShapeCommands, createMorphShape, createMorphShapeAnimationTarget, createScale9Shape, createShape, enableShapeHitTesting, getPathCommandOperandCount, getShapeBounds, getShapeCommandCount, getShapeFillRegions, getShapeStrokeRegions, getShapeStrokeOutlineRegions, hasNonSolidShapeFill, hasNonSolidShapeStroke, hasShapeFill, hitTestShapeCommandPoint, isShapeEmpty, registerShapeHitTestCommand, setMorphShapeProgress, } from './contract';
|
|
1
|
+
export { PathCommand, applyAnimationClipToMorphShape, applyMorphShapeAnimationSample, appendMorphShapeBeginFill, appendMorphShapeBeginGradientFill, appendMorphShapeBeginTextureFill, appendMorphShapeLineGradientStyle, appendMorphShapeLineStyle, appendMorphShapeLineTextureStyle, appendMorphShapePath, appendShapeArc, appendShapeArcTo, appendShapeBeginTextureFill, appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeCircle, appendShapeCubicCurveTo, appendShapeCurveTo, appendShapeDrawTriangles, appendShapeEllipse, appendShapeEndFill, appendShapeGeometryCommand, appendShapeLineTextureStyle, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTo, appendShapeMoveTo, appendShapePath, appendShapePolygon, appendShapePolyline, appendShapeRectangle, appendShapeRoundRectangle, appendShapeRoundRectangleVarying, clearShapeCommands, computeShapeLocalBoundsRectangle, copyShapeCommands, createMorphShape, createMorphShapeAnimationTarget, createScale9Shape, createShape, enableShapeHitTesting, explainMorphShapeGradientEndpoints, getPathCommandOperandCount, getShapeBounds, getShapeCommandCount, getShapeFillRegions, getShapeStrokeRegions, getShapeStrokeOutlineRegions, hasNonSolidShapeFill, hasNonSolidShapeStroke, hasShapeFill, hitTestShapeCommandPoint, isShapeEmpty, registerShapeHitTestCommand, setMorphShapeProgress, } from './contract';
|
|
2
2
|
export * from './scale9ShapeCommands';
|
|
3
3
|
export * from './explainShapeTessellation';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,8BAA8B,EAC9B,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EAChC,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,8BAA8B,EAC9B,8BAA8B,EAC9B,yBAAyB,EACzB,iCAAiC,EACjC,gCAAgC,EAChC,iCAAiC,EACjC,yBAAyB,EACzB,gCAAgC,EAChC,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,2BAA2B,EAC3B,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,yBAAyB,EACzB,gCAAgC,EAChC,kBAAkB,EAClB,gCAAgC,EAChC,iBAAiB,EACjB,gBAAgB,EAChB,+BAA+B,EAC/B,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,kCAAkC,EAClC,0BAA0B,EAC1B,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,2BAA2B,EAC3B,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
|
package/dist/morphShape.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { MorphShape, MorphShapeData, MorphShapeRuntime, PartialNode, PathMorph } from '@flighthq/types/contract';
|
|
2
|
-
export declare function appendMorphShapePath(shape: MorphShape):
|
|
1
|
+
import type { MorphShape, MorphShapeData, MorphShapeRuntime, PartialNode, Path, PathMorph } from '@flighthq/types/contract';
|
|
2
|
+
export declare function appendMorphShapePath(shape: MorphShape, morph?: Readonly<PathMorph>): Path;
|
|
3
3
|
export declare function createMorphShape(morph: Readonly<PathMorph>, obj?: Readonly<PartialNode<MorphShape>>): MorphShape;
|
|
4
4
|
export declare function createMorphShapeData(morph: Readonly<PathMorph>, data?: Readonly<Partial<MorphShapeData>>): MorphShapeData;
|
|
5
5
|
export declare function createMorphShapeRuntime(): MorphShapeRuntime;
|
package/dist/morphShape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morphShape.d.ts","sourceRoot":"","sources":["../src/morphShape.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"morphShape.d.ts","sourceRoot":"","sources":["../src/morphShape.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,IAAI,EACJ,SAAS,EACV,MAAM,0BAA0B,CAAC;AAUlC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,GAAE,QAAQ,CAAC,SAAS,CAAoB,GAAG,IAAI,CAW3G;AAMD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,GAAG,UAAU,CAOhH;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,GACvC,cAAc,CAsBhB;AAED,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAE9F;AAKD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS/E"}
|
package/dist/morphShape.js
CHANGED
|
@@ -2,14 +2,23 @@ import { invalidateContent } from '@flighthq/node/contract';
|
|
|
2
2
|
import { createPath, samplePathMorph } from '@flighthq/path/contract';
|
|
3
3
|
import { createNode2D, getNode2DRuntime } from '@flighthq/scene2d/contract';
|
|
4
4
|
import { MorphShapeKind } from '@flighthq/types/contract';
|
|
5
|
+
import { sampleMorphShapePaintBindings } from './morphShapePaint';
|
|
5
6
|
import { createShapeRuntime } from './shape';
|
|
6
7
|
import { appendShapePath } from './shapeCommands';
|
|
7
|
-
// Adds
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
export function appendMorphShapePath(shape) {
|
|
11
|
-
|
|
8
|
+
// Adds a stable sampled path at the current point in the retained command stream. Omitting `morph` uses
|
|
9
|
+
// the primary compatibility binding; passing another prepared morph creates or reuses an independent
|
|
10
|
+
// live path, allowing one MorphShape to retain multiple fill/stroke regions without child nodes.
|
|
11
|
+
export function appendMorphShapePath(shape, morph = shape.data.morph) {
|
|
12
|
+
let binding = shape.data.pathBindings.find((candidate) => candidate.morph === morph);
|
|
13
|
+
if (binding === undefined) {
|
|
14
|
+
const path = createPath(morph.winding);
|
|
15
|
+
samplePathMorph(path, morph, shape.data.progress);
|
|
16
|
+
binding = { morph, path };
|
|
17
|
+
shape.data.pathBindings.push(binding);
|
|
18
|
+
}
|
|
19
|
+
const path = binding.path;
|
|
12
20
|
appendShapePath(shape, path.commands, path.data, path.winding);
|
|
21
|
+
return path;
|
|
13
22
|
}
|
|
14
23
|
// Creates a retained MorphShape entity around a prepared path morph. The command stream starts empty,
|
|
15
24
|
// like createShape; use appendMorphShapePath after the desired fill/stroke commands. Playback is
|
|
@@ -20,14 +29,27 @@ export function createMorphShape(morph, obj) {
|
|
|
20
29
|
}
|
|
21
30
|
export function createMorphShapeData(morph, data) {
|
|
22
31
|
const progress = data?.progress ?? 0;
|
|
23
|
-
const path = createPath(morph.winding);
|
|
24
|
-
|
|
25
|
-
|
|
32
|
+
const path = data?.path ?? createPath(morph.winding);
|
|
33
|
+
const pathBindings = [{ morph, path }];
|
|
34
|
+
const inputPathBindings = data?.pathBindings ?? [];
|
|
35
|
+
for (let i = 0; i < inputPathBindings.length; i++) {
|
|
36
|
+
const binding = inputPathBindings[i];
|
|
37
|
+
if (binding.morph !== morph && binding.path !== path)
|
|
38
|
+
pathBindings.push(binding);
|
|
39
|
+
}
|
|
40
|
+
for (let i = 0; i < pathBindings.length; i++) {
|
|
41
|
+
samplePathMorph(pathBindings[i].path, pathBindings[i].morph, progress);
|
|
42
|
+
}
|
|
43
|
+
const out = {
|
|
26
44
|
commands: data?.commands ?? [],
|
|
27
45
|
morph,
|
|
46
|
+
paintBindings: [...(data?.paintBindings ?? [])],
|
|
28
47
|
path,
|
|
48
|
+
pathBindings,
|
|
29
49
|
progress,
|
|
30
50
|
};
|
|
51
|
+
sampleMorphShapePaintBindings(out, progress);
|
|
52
|
+
return out;
|
|
31
53
|
}
|
|
32
54
|
export function createMorphShapeRuntime() {
|
|
33
55
|
return createShapeRuntime();
|
|
@@ -35,14 +57,18 @@ export function createMorphShapeRuntime() {
|
|
|
35
57
|
export function getMorphShapeRuntime(source) {
|
|
36
58
|
return getNode2DRuntime(source);
|
|
37
59
|
}
|
|
38
|
-
// Samples changed progress into
|
|
39
|
-
// Shape content so bounds and every backend
|
|
40
|
-
// is a no-op; progress remains unclamped to preserve
|
|
60
|
+
// Samples changed progress into every stable path and paint value retained by the command stream, then
|
|
61
|
+
// invalidates Shape content once so bounds and every backend observe one atomic state change. Reapplying
|
|
62
|
+
// the same value is a no-op; progress remains unclamped to preserve deliberate easing overshoot.
|
|
41
63
|
export function setMorphShapeProgress(shape, progress) {
|
|
42
64
|
if (shape.data.progress === progress)
|
|
43
65
|
return;
|
|
44
66
|
shape.data.progress = progress;
|
|
45
|
-
|
|
67
|
+
for (let i = 0; i < shape.data.pathBindings.length; i++) {
|
|
68
|
+
const binding = shape.data.pathBindings[i];
|
|
69
|
+
samplePathMorph(binding.path, binding.morph, progress);
|
|
70
|
+
}
|
|
71
|
+
sampleMorphShapePaintBindings(shape.data, progress);
|
|
46
72
|
invalidateContent(shape);
|
|
47
73
|
}
|
|
48
74
|
//# sourceMappingURL=morphShape.js.map
|
package/dist/morphShape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"morphShape.js","sourceRoot":"","sources":["../src/morphShape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"morphShape.js","sourceRoot":"","sources":["../src/morphShape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CapsStyle, GradientType, InterpolationMethod, JointStyle, LineScaleMode, Matrix, MorphShape, MorphShapeColorEndpoint, MorphShapeData, MorphShapeGradientEndpoint, MorphShapeLineEndpoint, SpreadMethod, Texture } from '@flighthq/types/contract';
|
|
2
|
+
export declare function appendMorphShapeBeginFill(shape: MorphShape, start: Readonly<MorphShapeColorEndpoint>, end: Readonly<MorphShapeColorEndpoint>): void;
|
|
3
|
+
export declare function appendMorphShapeBeginGradientFill(shape: MorphShape, gradientType: GradientType, start: Readonly<MorphShapeGradientEndpoint>, end: Readonly<MorphShapeGradientEndpoint>, spreadMethod?: SpreadMethod, interpolationMethod?: InterpolationMethod): boolean;
|
|
4
|
+
export declare function appendMorphShapeBeginTextureFill(shape: MorphShape, texture: Texture, startMatrix?: Readonly<Matrix> | null, endMatrix?: Readonly<Matrix> | null): void;
|
|
5
|
+
export declare function appendMorphShapeLineGradientStyle(shape: MorphShape, gradientType: GradientType, start: Readonly<MorphShapeGradientEndpoint>, end: Readonly<MorphShapeGradientEndpoint>, spreadMethod?: SpreadMethod, interpolationMethod?: InterpolationMethod): boolean;
|
|
6
|
+
export declare function appendMorphShapeLineStyle(shape: MorphShape, start: Readonly<MorphShapeLineEndpoint>, end: Readonly<MorphShapeLineEndpoint>, pixelHinting?: boolean, scaleMode?: LineScaleMode, caps?: CapsStyle, joints?: JointStyle, miterLimit?: number): void;
|
|
7
|
+
export declare function appendMorphShapeLineTextureStyle(shape: MorphShape, texture: Texture, startMatrix?: Readonly<Matrix> | null, endMatrix?: Readonly<Matrix> | null): void;
|
|
8
|
+
export declare function sampleMorphShapePaintBindings(data: MorphShapeData, progress: number): void;
|
|
9
|
+
//# sourceMappingURL=morphShapePaint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morphShapePaint.d.ts","sourceRoot":"","sources":["../src/morphShapePaint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,MAAM,EACN,UAAU,EACV,uBAAuB,EACvB,cAAc,EACd,0BAA0B,EAE1B,sBAAsB,EAEtB,YAAY,EACZ,OAAO,EACR,MAAM,0BAA0B,CAAC;AAclC,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EACxC,GAAG,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GACrC,IAAI,CAgBN;AAID,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAC3C,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EACzC,YAAY,GAAE,YAAoB,EAClC,mBAAmB,GAAE,mBAA2B,GAC/C,OAAO,CAUT;AAID,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAW,EAC3C,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAkB,GAC/C,IAAI,CAEN;AAED,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EAC3C,GAAG,EAAE,QAAQ,CAAC,0BAA0B,CAAC,EACzC,YAAY,GAAE,YAAoB,EAClC,mBAAmB,GAAE,mBAA2B,GAC/C,OAAO,CAUT;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EACvC,GAAG,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EACrC,YAAY,UAAQ,EACpB,SAAS,GAAE,aAAwB,EACnC,IAAI,GAAE,SAAkB,EACxB,MAAM,GAAE,UAAoB,EAC5B,UAAU,SAAI,GACb,IAAI,CA4BN;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,OAAO,EAChB,WAAW,GAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAW,EAC3C,SAAS,GAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAkB,GAC/C,IAAI,CAEN;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI1F"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { cloneMatrix, createMatrix } from '@flighthq/geometry/contract';
|
|
2
|
+
import { getMorphShapeGradientEndpointIssue } from './explainMorphShapeGradientEndpoints';
|
|
3
|
+
import { appendShapeBeginFill, appendShapeBeginGradientFill, appendShapeBeginTextureFill, appendShapeLineGradientStyle, appendShapeLineStyle, appendShapeLineTextureStyle, } from './shapeCommands';
|
|
4
|
+
// Appends an ordinary beginFill command backed by a stable start/end paint binding. Geometry and paint
|
|
5
|
+
// share MorphShape.progress and are sampled atomically by setMorphShapeProgress.
|
|
6
|
+
export function appendMorphShapeBeginFill(shape, start, end) {
|
|
7
|
+
const commandIndex = shape.data.commands.length;
|
|
8
|
+
appendShapeBeginFill(shape, start.color, start.alpha ?? 1);
|
|
9
|
+
shape.data.paintBindings.push({
|
|
10
|
+
commandIndex,
|
|
11
|
+
endAlpha: end.alpha ?? 1,
|
|
12
|
+
endColor: end.color,
|
|
13
|
+
kind: 'color',
|
|
14
|
+
startAlpha: start.alpha ?? 1,
|
|
15
|
+
startColor: start.color,
|
|
16
|
+
});
|
|
17
|
+
sampleMorphShapePaintBinding(shape.data, shape.data.paintBindings[shape.data.paintBindings.length - 1], shape.data.progress);
|
|
18
|
+
}
|
|
19
|
+
// Returns false without appending when either gradient endpoint is malformed or their stop counts differ.
|
|
20
|
+
// Equal stop counts make sampling allocation-free and match the structural contract of authored morphs.
|
|
21
|
+
export function appendMorphShapeBeginGradientFill(shape, gradientType, start, end, spreadMethod = 'pad', interpolationMethod = 'rgb') {
|
|
22
|
+
return appendMorphShapeGradientPaint(shape, 'beginGradientFill', gradientType, start, end, spreadMethod, interpolationMethod);
|
|
23
|
+
}
|
|
24
|
+
// A texture itself is structurally shared by both endpoints; only its placement matrix morphs. Null is
|
|
25
|
+
// the identity matrix, so a null/non-null pair interpolates continuously without changing command shape.
|
|
26
|
+
export function appendMorphShapeBeginTextureFill(shape, texture, startMatrix = null, endMatrix = startMatrix) {
|
|
27
|
+
appendMorphShapeTexturePaint(shape, 'beginTextureFill', texture, startMatrix, endMatrix);
|
|
28
|
+
}
|
|
29
|
+
export function appendMorphShapeLineGradientStyle(shape, gradientType, start, end, spreadMethod = 'pad', interpolationMethod = 'rgb') {
|
|
30
|
+
return appendMorphShapeGradientPaint(shape, 'lineGradientStyle', gradientType, start, end, spreadMethod, interpolationMethod);
|
|
31
|
+
}
|
|
32
|
+
export function appendMorphShapeLineStyle(shape, start, end, pixelHinting = false, scaleMode = 'normal', caps = 'none', joints = 'round', miterLimit = 3) {
|
|
33
|
+
const commandIndex = shape.data.commands.length;
|
|
34
|
+
appendShapeLineStyle(shape, start.thickness, start.color, start.alpha ?? 1, pixelHinting, scaleMode, caps, joints, miterLimit);
|
|
35
|
+
shape.data.paintBindings.push({
|
|
36
|
+
commandIndex,
|
|
37
|
+
endAlpha: end.alpha ?? 1,
|
|
38
|
+
endColor: end.color,
|
|
39
|
+
endThickness: end.thickness,
|
|
40
|
+
kind: 'line',
|
|
41
|
+
startAlpha: start.alpha ?? 1,
|
|
42
|
+
startColor: start.color,
|
|
43
|
+
startThickness: start.thickness,
|
|
44
|
+
});
|
|
45
|
+
sampleMorphShapePaintBinding(shape.data, shape.data.paintBindings[shape.data.paintBindings.length - 1], shape.data.progress);
|
|
46
|
+
}
|
|
47
|
+
export function appendMorphShapeLineTextureStyle(shape, texture, startMatrix = null, endMatrix = startMatrix) {
|
|
48
|
+
appendMorphShapeTexturePaint(shape, 'lineTextureStyle', texture, startMatrix, endMatrix);
|
|
49
|
+
}
|
|
50
|
+
export function sampleMorphShapePaintBindings(data, progress) {
|
|
51
|
+
for (let i = 0; i < data.paintBindings.length; i++) {
|
|
52
|
+
sampleMorphShapePaintBinding(data, data.paintBindings[i], progress);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function appendMorphShapeGradientPaint(shape, commandKey, gradientType, start, end, spreadMethod, interpolationMethod) {
|
|
56
|
+
if (getMorphShapeGradientEndpointIssue(start, end) !== 0)
|
|
57
|
+
return false;
|
|
58
|
+
const commandIndex = shape.data.commands.length;
|
|
59
|
+
const startSource = start.matrix ?? null;
|
|
60
|
+
const endSource = end.matrix ?? null;
|
|
61
|
+
const hasMatrix = startSource !== null || endSource !== null;
|
|
62
|
+
const startMatrix = hasMatrix ? cloneMatrix(startSource ?? identityMatrix) : null;
|
|
63
|
+
const endMatrix = hasMatrix ? cloneMatrix(endSource ?? identityMatrix) : null;
|
|
64
|
+
const currentMatrix = createSampledMatrix(startMatrix, endMatrix);
|
|
65
|
+
const colors = [...start.colors];
|
|
66
|
+
const alphas = [...start.alphas];
|
|
67
|
+
const ratios = [...start.ratios];
|
|
68
|
+
if (commandKey === 'beginGradientFill') {
|
|
69
|
+
appendShapeBeginGradientFill(shape, gradientType, colors, alphas, ratios, currentMatrix, spreadMethod, interpolationMethod, start.focalPointRatio ?? 0);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
appendShapeLineGradientStyle(shape, gradientType, colors, alphas, ratios, currentMatrix, spreadMethod, interpolationMethod, start.focalPointRatio ?? 0);
|
|
73
|
+
}
|
|
74
|
+
const binding = {
|
|
75
|
+
commandIndex,
|
|
76
|
+
commandKey,
|
|
77
|
+
endAlphas: [...end.alphas],
|
|
78
|
+
endColors: [...end.colors],
|
|
79
|
+
endFocalPointRatio: end.focalPointRatio ?? 0,
|
|
80
|
+
endMatrix,
|
|
81
|
+
endRatios: [...end.ratios],
|
|
82
|
+
kind: 'gradient',
|
|
83
|
+
startAlphas: [...start.alphas],
|
|
84
|
+
startColors: [...start.colors],
|
|
85
|
+
startFocalPointRatio: start.focalPointRatio ?? 0,
|
|
86
|
+
startMatrix,
|
|
87
|
+
startRatios: [...start.ratios],
|
|
88
|
+
};
|
|
89
|
+
shape.data.paintBindings.push(binding);
|
|
90
|
+
sampleMorphShapePaintBinding(shape.data, binding, shape.data.progress);
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
function appendMorphShapeTexturePaint(shape, commandKey, texture, startSource, endSource) {
|
|
94
|
+
if (startSource === null && endSource === null) {
|
|
95
|
+
if (commandKey === 'beginTextureFill')
|
|
96
|
+
appendShapeBeginTextureFill(shape, texture);
|
|
97
|
+
else
|
|
98
|
+
appendShapeLineTextureStyle(shape, texture);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const commandIndex = shape.data.commands.length;
|
|
102
|
+
const startMatrix = cloneMatrix(startSource ?? identityMatrix);
|
|
103
|
+
const endMatrix = cloneMatrix(endSource ?? identityMatrix);
|
|
104
|
+
const currentMatrix = createSampledMatrix(startMatrix, endMatrix);
|
|
105
|
+
if (commandKey === 'beginTextureFill')
|
|
106
|
+
appendShapeBeginTextureFill(shape, texture, currentMatrix);
|
|
107
|
+
else
|
|
108
|
+
appendShapeLineTextureStyle(shape, texture, currentMatrix);
|
|
109
|
+
const binding = { commandIndex, commandKey, endMatrix, kind: 'texture', startMatrix };
|
|
110
|
+
shape.data.paintBindings.push(binding);
|
|
111
|
+
sampleMorphShapePaintBinding(shape.data, binding, shape.data.progress);
|
|
112
|
+
}
|
|
113
|
+
function sampleMorphShapePaintBinding(data, binding, progress) {
|
|
114
|
+
const commands = data.commands;
|
|
115
|
+
const i = binding.commandIndex;
|
|
116
|
+
if (binding.kind === 'color') {
|
|
117
|
+
if (commands[i] !== 'beginFill')
|
|
118
|
+
return;
|
|
119
|
+
commands[i + 2] = interpolateRgb(binding.startColor, binding.endColor, progress);
|
|
120
|
+
commands[i + 3] = interpolateNumber(binding.startAlpha, binding.endAlpha, progress);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (binding.kind === 'line') {
|
|
124
|
+
if (commands[i] !== 'lineStyle')
|
|
125
|
+
return;
|
|
126
|
+
commands[i + 2] = interpolateNumber(binding.startThickness, binding.endThickness, progress);
|
|
127
|
+
commands[i + 3] = interpolateRgb(binding.startColor, binding.endColor, progress);
|
|
128
|
+
commands[i + 4] = interpolateNumber(binding.startAlpha, binding.endAlpha, progress);
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (commands[i] !== binding.commandKey)
|
|
132
|
+
return;
|
|
133
|
+
if (binding.kind === 'texture') {
|
|
134
|
+
sampleMatrix(commands[i + 3], binding.startMatrix, binding.endMatrix, progress);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const colors = commands[i + 3];
|
|
138
|
+
const alphas = commands[i + 4];
|
|
139
|
+
const ratios = commands[i + 5];
|
|
140
|
+
for (let n = 0; n < binding.startColors.length; n++) {
|
|
141
|
+
colors[n] = interpolateRgb(binding.startColors[n], binding.endColors[n], progress);
|
|
142
|
+
alphas[n] = interpolateNumber(binding.startAlphas[n], binding.endAlphas[n], progress);
|
|
143
|
+
ratios[n] = interpolateNumber(binding.startRatios[n], binding.endRatios[n], progress);
|
|
144
|
+
}
|
|
145
|
+
const matrix = commands[i + 6];
|
|
146
|
+
if (matrix !== null && binding.startMatrix !== null && binding.endMatrix !== null) {
|
|
147
|
+
sampleMatrix(matrix, binding.startMatrix, binding.endMatrix, progress);
|
|
148
|
+
}
|
|
149
|
+
commands[i + 9] = interpolateNumber(binding.startFocalPointRatio, binding.endFocalPointRatio, progress);
|
|
150
|
+
}
|
|
151
|
+
function createSampledMatrix(start, end) {
|
|
152
|
+
if (start === null && end === null)
|
|
153
|
+
return null;
|
|
154
|
+
return cloneMatrix(start ?? identityMatrix);
|
|
155
|
+
}
|
|
156
|
+
function sampleMatrix(out, start, end, progress) {
|
|
157
|
+
out.a = interpolateNumber(start.a, end.a, progress);
|
|
158
|
+
out.b = interpolateNumber(start.b, end.b, progress);
|
|
159
|
+
out.c = interpolateNumber(start.c, end.c, progress);
|
|
160
|
+
out.d = interpolateNumber(start.d, end.d, progress);
|
|
161
|
+
out.tx = interpolateNumber(start.tx, end.tx, progress);
|
|
162
|
+
out.ty = interpolateNumber(start.ty, end.ty, progress);
|
|
163
|
+
}
|
|
164
|
+
function interpolateNumber(start, end, progress) {
|
|
165
|
+
if (progress === 0)
|
|
166
|
+
return start;
|
|
167
|
+
if (progress === 1)
|
|
168
|
+
return end;
|
|
169
|
+
return start + (end - start) * progress;
|
|
170
|
+
}
|
|
171
|
+
// Shape colors are packed 0xRRGGBB. Morph them component-wise like existing color tweens and legacy
|
|
172
|
+
// vector formats; clamping each packed channel keeps deliberate progress overshoot representable safely.
|
|
173
|
+
function interpolateRgb(start, end, progress) {
|
|
174
|
+
const r = interpolateByte((start >>> 16) & 0xff, (end >>> 16) & 0xff, progress);
|
|
175
|
+
const g = interpolateByte((start >>> 8) & 0xff, (end >>> 8) & 0xff, progress);
|
|
176
|
+
const b = interpolateByte(start & 0xff, end & 0xff, progress);
|
|
177
|
+
return r * 0x10000 + g * 0x100 + b;
|
|
178
|
+
}
|
|
179
|
+
function interpolateByte(start, end, progress) {
|
|
180
|
+
return Math.max(0, Math.min(0xff, Math.round(interpolateNumber(start, end, progress))));
|
|
181
|
+
}
|
|
182
|
+
const identityMatrix = createMatrix();
|
|
183
|
+
//# sourceMappingURL=morphShapePaint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"morphShapePaint.js","sourceRoot":"","sources":["../src/morphShapePaint.ts"],"names":[],"mappings":"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"}
|
package/dist/shape.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EAEb,WAAW,EACX,SAAS,EACT,KAAK,EACL,SAAS,EACT,YAAY,EACb,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAIrD;AAED,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAoQtG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAK3E;AAED,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAErE;AAED,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,SAAS,CAI9E;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAE5E;AAGD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAUpE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAE/E;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAE7D"}
|
package/dist/shape.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { invalidateContent } from '@flighthq/node/contract';
|
|
2
2
|
import { createNode2D, createNode2DRuntime, getNode2DRuntime } from '@flighthq/scene2d/contract';
|
|
3
|
-
import { ShapeKind } from '@flighthq/types/contract';
|
|
3
|
+
import { MorphShapeKind, ShapeKind } from '@flighthq/types/contract';
|
|
4
4
|
export function clearShapeCommands(shape) {
|
|
5
5
|
shape.data.commands.length = 0;
|
|
6
|
+
if (shape.kind === MorphShapeKind)
|
|
7
|
+
shape.data.paintBindings.length = 0;
|
|
6
8
|
invalidateContent(shape);
|
|
7
9
|
}
|
|
8
10
|
export function computeShapeLocalBoundsRectangle(out, source) {
|
|
@@ -252,6 +254,8 @@ export function computeShapeLocalBoundsRectangle(out, source) {
|
|
|
252
254
|
export function copyShapeCommands(out, source) {
|
|
253
255
|
out.data.commands.length = 0;
|
|
254
256
|
out.data.commands.push(...source.data.commands);
|
|
257
|
+
if (out.kind === MorphShapeKind)
|
|
258
|
+
out.data.paintBindings.length = 0;
|
|
255
259
|
invalidateContent(out);
|
|
256
260
|
}
|
|
257
261
|
export function createShape(obj) {
|
package/dist/shape.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flighthq/shape",
|
|
3
|
-
"version": "0.3.0-next.
|
|
3
|
+
"version": "0.3.0-next.1595.4d49b41",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/flighthq/flight.git",
|
|
@@ -36,16 +36,16 @@
|
|
|
36
36
|
"clean:dist": "tsx ../../scripts/clean-package-dist.ts"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@flighthq/animation": "0.3.0-next.
|
|
40
|
-
"@flighthq/scene2d": "0.3.0-next.
|
|
41
|
-
"@flighthq/geometry": "0.3.0-next.
|
|
42
|
-
"@flighthq/node": "0.3.0-next.
|
|
43
|
-
"@flighthq/path": "0.3.0-next.
|
|
44
|
-
"@flighthq/types": "0.3.0-next.
|
|
39
|
+
"@flighthq/animation": "0.3.0-next.1595.4d49b41",
|
|
40
|
+
"@flighthq/scene2d": "0.3.0-next.1595.4d49b41",
|
|
41
|
+
"@flighthq/geometry": "0.3.0-next.1595.4d49b41",
|
|
42
|
+
"@flighthq/node": "0.3.0-next.1595.4d49b41",
|
|
43
|
+
"@flighthq/path": "0.3.0-next.1595.4d49b41",
|
|
44
|
+
"@flighthq/types": "0.3.0-next.1595.4d49b41"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"typescript": "^5.3.0"
|
|
48
48
|
},
|
|
49
|
-
"description": "Vector Shape and MorphShape display nodes: retained
|
|
49
|
+
"description": "Vector Shape and MorphShape display nodes: retained commands, compound geometry and paint morphing, scale-9, and hit testing",
|
|
50
50
|
"sideEffects": false
|
|
51
51
|
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
explainMorphShapeGradientEndpoints,
|
|
3
|
+
getMorphShapeGradientEndpointIssue,
|
|
4
|
+
} from './explainMorphShapeGradientEndpoints';
|
|
5
|
+
|
|
6
|
+
describe('explainMorphShapeGradientEndpoints', () => {
|
|
7
|
+
it('reports compatible equal-length gradient stops', () => {
|
|
8
|
+
expect(
|
|
9
|
+
explainMorphShapeGradientEndpoints(
|
|
10
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
11
|
+
{ alphas: [1], colors: [0xffffff], ratios: [255] },
|
|
12
|
+
),
|
|
13
|
+
).toStrictEqual({ endStopCount: 1, reason: 'ok', startStopCount: 1, supported: true });
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it.each([
|
|
17
|
+
[{ alphas: [], colors: [], ratios: [] }, { alphas: [], colors: [], ratios: [] }, 'empty-gradient'],
|
|
18
|
+
[
|
|
19
|
+
{ alphas: [], colors: [0], ratios: [0] },
|
|
20
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
21
|
+
'start-stop-component-count-mismatch',
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
25
|
+
{ alphas: [], colors: [0], ratios: [0] },
|
|
26
|
+
'end-stop-component-count-mismatch',
|
|
27
|
+
],
|
|
28
|
+
[
|
|
29
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
30
|
+
{ alphas: [1, 1], colors: [0, 1], ratios: [0, 255] },
|
|
31
|
+
'stop-count-mismatch',
|
|
32
|
+
],
|
|
33
|
+
])('reports incompatible topology as %s', (start, end, reason) => {
|
|
34
|
+
expect(explainMorphShapeGradientEndpoints(start, end)).toMatchObject({ reason, supported: false });
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
describe('getMorphShapeGradientEndpointIssue', () => {
|
|
39
|
+
it('provides a string-free compatibility seam for paint construction', () => {
|
|
40
|
+
expect(
|
|
41
|
+
getMorphShapeGradientEndpointIssue(
|
|
42
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
43
|
+
{ alphas: [1], colors: [0xffffff], ratios: [255] },
|
|
44
|
+
),
|
|
45
|
+
).toBe(0);
|
|
46
|
+
});
|
|
47
|
+
});
|
package/src/morphShape.test.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { createRectangle } from '@flighthq/geometry/contract';
|
|
2
2
|
import { getNodeLocalContentRevision } from '@flighthq/node/contract';
|
|
3
3
|
import { appendPathLineTo, appendPathMoveTo, createPath, createPathMorph } from '@flighthq/path/contract';
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
MorphShapePaintBinding,
|
|
6
|
+
MorphShapePathBinding,
|
|
7
|
+
PathMorph,
|
|
8
|
+
ShapeCommandToken,
|
|
9
|
+
} from '@flighthq/types/contract';
|
|
5
10
|
import { MorphShapeKind } from '@flighthq/types/contract';
|
|
6
11
|
|
|
7
12
|
import {
|
|
@@ -39,6 +44,31 @@ describe('appendMorphShapePath', () => {
|
|
|
39
44
|
expect(shape.data.commands[6]).toBe(shape.data.path.commands);
|
|
40
45
|
expect(shape.data.commands[7]).toBe(shape.data.path.data);
|
|
41
46
|
});
|
|
47
|
+
|
|
48
|
+
it('retains and reuses independent path morphs in one command stream', () => {
|
|
49
|
+
const shape = createMorphShape(createTestMorph());
|
|
50
|
+
const secondMorph = createTestMorph(100);
|
|
51
|
+
const primaryPath = appendMorphShapePath(shape);
|
|
52
|
+
const secondPath = appendMorphShapePath(shape, secondMorph);
|
|
53
|
+
const repeatedSecondPath = appendMorphShapePath(shape, secondMorph);
|
|
54
|
+
const primaryCommands = primaryPath.commands;
|
|
55
|
+
const primaryData = primaryPath.data;
|
|
56
|
+
const secondCommands = secondPath.commands;
|
|
57
|
+
const secondData = secondPath.data;
|
|
58
|
+
const revision = getNodeLocalContentRevision(shape);
|
|
59
|
+
|
|
60
|
+
setMorphShapeProgress(shape, 0.5);
|
|
61
|
+
|
|
62
|
+
expect(shape.data.pathBindings).toHaveLength(2);
|
|
63
|
+
expect(repeatedSecondPath).toBe(secondPath);
|
|
64
|
+
expect(primaryPath.commands).toBe(primaryCommands);
|
|
65
|
+
expect(primaryPath.data).toBe(primaryData);
|
|
66
|
+
expect(secondPath.commands).toBe(secondCommands);
|
|
67
|
+
expect(secondPath.data).toBe(secondData);
|
|
68
|
+
expect(primaryPath.data.slice(0, 2)).toStrictEqual([5, 10]);
|
|
69
|
+
expect(secondPath.data.slice(0, 2)).toStrictEqual([105, 110]);
|
|
70
|
+
expect(getNodeLocalContentRevision(shape)).toBe(revision + 1);
|
|
71
|
+
});
|
|
42
72
|
});
|
|
43
73
|
|
|
44
74
|
describe('createMorphShape', () => {
|
|
@@ -50,6 +80,8 @@ describe('createMorphShape', () => {
|
|
|
50
80
|
expect(shape.kind).toBe(MorphShapeKind);
|
|
51
81
|
expect(shape.data.commands).toStrictEqual([]);
|
|
52
82
|
expect(shape.data.morph).toBe(morph);
|
|
83
|
+
expect(shape.data.pathBindings).toStrictEqual([{ morph, path: shape.data.path }]);
|
|
84
|
+
expect(shape.data.paintBindings).toStrictEqual([]);
|
|
53
85
|
expect(shape.data.path.commands).toStrictEqual(morph.commands);
|
|
54
86
|
expect(shape.data.path.data).toStrictEqual(morph.startData);
|
|
55
87
|
expect(shape.data.progress).toBe(0);
|
|
@@ -79,6 +111,20 @@ describe('createMorphShape', () => {
|
|
|
79
111
|
});
|
|
80
112
|
|
|
81
113
|
describe('createMorphShapeData', () => {
|
|
114
|
+
it('owns its mutable binding registries without replacing retained values', () => {
|
|
115
|
+
const morph = createTestMorph();
|
|
116
|
+
const paintBindings: MorphShapePaintBinding[] = [];
|
|
117
|
+
const pathBindings: MorphShapePathBinding[] = [];
|
|
118
|
+
|
|
119
|
+
const data = createMorphShapeData(morph, { paintBindings, pathBindings });
|
|
120
|
+
|
|
121
|
+
expect(data.paintBindings).not.toBe(paintBindings);
|
|
122
|
+
expect(data.pathBindings).not.toBe(pathBindings);
|
|
123
|
+
expect(paintBindings).toStrictEqual([]);
|
|
124
|
+
expect(pathBindings).toStrictEqual([]);
|
|
125
|
+
expect(data.pathBindings).toStrictEqual([{ morph, path: data.path }]);
|
|
126
|
+
});
|
|
127
|
+
|
|
82
128
|
it('samples the requested initial endpoint exactly', () => {
|
|
83
129
|
const morph = createTestMorph();
|
|
84
130
|
|
|
@@ -150,12 +196,12 @@ describe('setMorphShapeProgress', () => {
|
|
|
150
196
|
});
|
|
151
197
|
});
|
|
152
198
|
|
|
153
|
-
function createTestMorph(): PathMorph {
|
|
199
|
+
function createTestMorph(offset = 0): PathMorph {
|
|
154
200
|
const start = createPath();
|
|
155
|
-
appendPathMoveTo(start,
|
|
156
|
-
appendPathLineTo(start, 10,
|
|
201
|
+
appendPathMoveTo(start, offset, offset);
|
|
202
|
+
appendPathLineTo(start, offset + 10, offset);
|
|
157
203
|
const end = createPath();
|
|
158
|
-
appendPathMoveTo(end, 10, 20);
|
|
159
|
-
appendPathLineTo(end, 30, 20);
|
|
204
|
+
appendPathMoveTo(end, offset + 10, offset + 20);
|
|
205
|
+
appendPathLineTo(end, offset + 30, offset + 20);
|
|
160
206
|
return createPathMorph(start, end)!;
|
|
161
207
|
}
|
|
@@ -11,12 +11,13 @@ import { getNodeLocalContentRevision } from '@flighthq/node/contract';
|
|
|
11
11
|
import { appendPathLineTo, appendPathMoveTo, createPath, createPathMorph } from '@flighthq/path/contract';
|
|
12
12
|
import type { MorphShape, MorphShapeAnimationTarget } from '@flighthq/types/contract';
|
|
13
13
|
|
|
14
|
-
import { createMorphShape } from './morphShape';
|
|
14
|
+
import { appendMorphShapePath, createMorphShape } from './morphShape';
|
|
15
15
|
import {
|
|
16
16
|
applyAnimationClipToMorphShape,
|
|
17
17
|
applyMorphShapeAnimationSample,
|
|
18
18
|
createMorphShapeAnimationTarget,
|
|
19
19
|
} from './morphShapeAnimation';
|
|
20
|
+
import { appendMorphShapeBeginFill } from './morphShapePaint';
|
|
20
21
|
|
|
21
22
|
describe('applyAnimationClipToMorphShape', () => {
|
|
22
23
|
it('samples scalar progress while preserving easing overshoot', () => {
|
|
@@ -35,6 +36,28 @@ describe('applyAnimationClipToMorphShape', () => {
|
|
|
35
36
|
expect(shape.data.path.data.slice(0, 2)).toStrictEqual([30, 45]);
|
|
36
37
|
});
|
|
37
38
|
|
|
39
|
+
it('applies one clip sample atomically to compound geometry and paint', () => {
|
|
40
|
+
const shape = createTestMorphShape();
|
|
41
|
+
const secondMorph = createTestMorph(100);
|
|
42
|
+
appendMorphShapeBeginFill(shape, { color: 0xff0000 }, { color: 0x0000ff });
|
|
43
|
+
appendMorphShapePath(shape);
|
|
44
|
+
const secondPath = appendMorphShapePath(shape, secondMorph);
|
|
45
|
+
const revision = getNodeLocalContentRevision(shape);
|
|
46
|
+
const clip = createAnimationClip([
|
|
47
|
+
createAnimationChannel(
|
|
48
|
+
createAnimationTrack({ times: [0, 1], values: [0, 1] }),
|
|
49
|
+
createMorphShapeAnimationTarget(shape),
|
|
50
|
+
),
|
|
51
|
+
]);
|
|
52
|
+
|
|
53
|
+
applyAnimationClipToMorphShape(clip, 0.5);
|
|
54
|
+
|
|
55
|
+
expect(shape.data.path.data.slice(0, 2)).toStrictEqual([10, 15]);
|
|
56
|
+
expect(secondPath.data.slice(0, 2)).toStrictEqual([110, 115]);
|
|
57
|
+
expect(shape.data.commands[2]).toBe(0x800080);
|
|
58
|
+
expect(getNodeLocalContentRevision(shape)).toBe(revision + 1);
|
|
59
|
+
});
|
|
60
|
+
|
|
38
61
|
it('ignores foreign channels in a composed clip', () => {
|
|
39
62
|
const shape = createTestMorphShape();
|
|
40
63
|
const clip = createAnimationClip([
|
|
@@ -110,11 +133,15 @@ describe('createMorphShapeAnimationTarget', () => {
|
|
|
110
133
|
});
|
|
111
134
|
|
|
112
135
|
function createTestMorphShape(): MorphShape {
|
|
136
|
+
return createMorphShape(createTestMorph());
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function createTestMorph(offset = 0) {
|
|
113
140
|
const start = createPath();
|
|
114
|
-
appendPathMoveTo(start,
|
|
115
|
-
appendPathLineTo(start, 10,
|
|
141
|
+
appendPathMoveTo(start, offset, offset);
|
|
142
|
+
appendPathLineTo(start, offset + 10, offset);
|
|
116
143
|
const end = createPath();
|
|
117
|
-
appendPathMoveTo(end, 20, 30);
|
|
118
|
-
appendPathLineTo(end, 40, 30);
|
|
119
|
-
return
|
|
144
|
+
appendPathMoveTo(end, offset + 20, offset + 30);
|
|
145
|
+
appendPathLineTo(end, offset + 40, offset + 30);
|
|
146
|
+
return createPathMorph(start, end)!;
|
|
120
147
|
}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { createMatrix } from '@flighthq/geometry/contract';
|
|
2
|
+
import { getNodeLocalContentRevision } from '@flighthq/node/contract';
|
|
3
|
+
import { appendPathLineTo, appendPathMoveTo, createPath, createPathMorph } from '@flighthq/path/contract';
|
|
4
|
+
|
|
5
|
+
import { createMorphShape, setMorphShapeProgress } from './morphShape';
|
|
6
|
+
import {
|
|
7
|
+
appendMorphShapeBeginFill,
|
|
8
|
+
appendMorphShapeBeginGradientFill,
|
|
9
|
+
appendMorphShapeBeginTextureFill,
|
|
10
|
+
appendMorphShapeLineGradientStyle,
|
|
11
|
+
appendMorphShapeLineStyle,
|
|
12
|
+
appendMorphShapeLineTextureStyle,
|
|
13
|
+
sampleMorphShapePaintBindings,
|
|
14
|
+
} from './morphShapePaint';
|
|
15
|
+
import { clearShapeCommands } from './shape';
|
|
16
|
+
|
|
17
|
+
const fakeTexture = { id: 1 } as never;
|
|
18
|
+
|
|
19
|
+
describe('appendMorphShapeBeginFill', () => {
|
|
20
|
+
it('retains one command while sampling packed RGB and alpha at the current progress', () => {
|
|
21
|
+
const shape = createTestMorphShape(0.5);
|
|
22
|
+
|
|
23
|
+
appendMorphShapeBeginFill(shape, { alpha: 0.25, color: 0xff0000 }, { alpha: 0.75, color: 0x0000ff });
|
|
24
|
+
|
|
25
|
+
expect(shape.data.commands).toStrictEqual(['beginFill', 2, 0x800080, 0.5]);
|
|
26
|
+
expect(shape.data.paintBindings).toHaveLength(1);
|
|
27
|
+
const commands = shape.data.commands;
|
|
28
|
+
setMorphShapeProgress(shape, 1);
|
|
29
|
+
expect(shape.data.commands).toBe(commands);
|
|
30
|
+
expect(shape.data.commands).toStrictEqual(['beginFill', 2, 0x0000ff, 0.75]);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
describe('appendMorphShapeBeginGradientFill', () => {
|
|
35
|
+
it('samples stops, matrices, and focal ratio into stable retained values', () => {
|
|
36
|
+
const shape = createTestMorphShape();
|
|
37
|
+
const startMatrix = createMatrix(1, 2, 3, 4, 5, 6);
|
|
38
|
+
const endMatrix = createMatrix(3, 4, 5, 6, 7, 8);
|
|
39
|
+
|
|
40
|
+
expect(
|
|
41
|
+
appendMorphShapeBeginGradientFill(
|
|
42
|
+
shape,
|
|
43
|
+
'radial',
|
|
44
|
+
{
|
|
45
|
+
alphas: [0.25, 0.5],
|
|
46
|
+
colors: [0x000000, 0xff0000],
|
|
47
|
+
focalPointRatio: -0.5,
|
|
48
|
+
matrix: startMatrix,
|
|
49
|
+
ratios: [0, 100],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
alphas: [0.75, 1],
|
|
53
|
+
colors: [0xffffff, 0x0000ff],
|
|
54
|
+
focalPointRatio: 0.5,
|
|
55
|
+
matrix: endMatrix,
|
|
56
|
+
ratios: [100, 200],
|
|
57
|
+
},
|
|
58
|
+
),
|
|
59
|
+
).toBe(true);
|
|
60
|
+
const colors = shape.data.commands[3];
|
|
61
|
+
const alphas = shape.data.commands[4];
|
|
62
|
+
const ratios = shape.data.commands[5];
|
|
63
|
+
const matrix = shape.data.commands[6];
|
|
64
|
+
|
|
65
|
+
setMorphShapeProgress(shape, 0.5);
|
|
66
|
+
|
|
67
|
+
expect(shape.data.commands[3]).toBe(colors);
|
|
68
|
+
expect(shape.data.commands[4]).toBe(alphas);
|
|
69
|
+
expect(shape.data.commands[5]).toBe(ratios);
|
|
70
|
+
expect(shape.data.commands[6]).toBe(matrix);
|
|
71
|
+
expect(colors).toStrictEqual([0x808080, 0x800080]);
|
|
72
|
+
expect(alphas).toStrictEqual([0.5, 0.75]);
|
|
73
|
+
expect(ratios).toStrictEqual([50, 150]);
|
|
74
|
+
expect(matrix).toMatchObject({ a: 2, b: 3, c: 4, d: 5, tx: 6, ty: 7 });
|
|
75
|
+
expect(shape.data.commands[9]).toBe(0);
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('rejects incompatible gradient stop topology without mutating the shape', () => {
|
|
79
|
+
const shape = createTestMorphShape();
|
|
80
|
+
const revision = getNodeLocalContentRevision(shape);
|
|
81
|
+
|
|
82
|
+
expect(
|
|
83
|
+
appendMorphShapeBeginGradientFill(
|
|
84
|
+
shape,
|
|
85
|
+
'linear',
|
|
86
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
87
|
+
{ alphas: [1, 1], colors: [0, 1], ratios: [0, 255] },
|
|
88
|
+
),
|
|
89
|
+
).toBe(false);
|
|
90
|
+
expect(shape.data.commands).toStrictEqual([]);
|
|
91
|
+
expect(shape.data.paintBindings).toStrictEqual([]);
|
|
92
|
+
expect(getNodeLocalContentRevision(shape)).toBe(revision);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('treats a missing endpoint matrix as identity while retaining one live matrix', () => {
|
|
96
|
+
const shape = createTestMorphShape();
|
|
97
|
+
expect(
|
|
98
|
+
appendMorphShapeBeginGradientFill(
|
|
99
|
+
shape,
|
|
100
|
+
'linear',
|
|
101
|
+
{ alphas: [1], colors: [0], ratios: [0] },
|
|
102
|
+
{ alphas: [1], colors: [0xffffff], matrix: createMatrix(3, 0, 0, 5, 20, 40), ratios: [255] },
|
|
103
|
+
),
|
|
104
|
+
).toBe(true);
|
|
105
|
+
const matrix = shape.data.commands[6];
|
|
106
|
+
|
|
107
|
+
setMorphShapeProgress(shape, 0.5);
|
|
108
|
+
|
|
109
|
+
expect(shape.data.commands[6]).toBe(matrix);
|
|
110
|
+
expect(matrix).toMatchObject({ a: 2, b: 0, c: 0, d: 3, tx: 10, ty: 20 });
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
describe('appendMorphShapeBeginTextureFill', () => {
|
|
115
|
+
it('preserves an ordinary null matrix when neither endpoint needs placement morphing', () => {
|
|
116
|
+
const shape = createTestMorphShape();
|
|
117
|
+
|
|
118
|
+
appendMorphShapeBeginTextureFill(shape, fakeTexture);
|
|
119
|
+
|
|
120
|
+
expect(shape.data.commands).toStrictEqual(['beginTextureFill', 2, fakeTexture, null]);
|
|
121
|
+
expect(shape.data.paintBindings).toStrictEqual([]);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it('morphs the placement matrix while retaining the texture and matrix identities', () => {
|
|
125
|
+
const shape = createTestMorphShape();
|
|
126
|
+
appendMorphShapeBeginTextureFill(shape, fakeTexture, null, createMatrix(2, 0, 0, 4, 10, 20));
|
|
127
|
+
const matrix = shape.data.commands[3];
|
|
128
|
+
|
|
129
|
+
setMorphShapeProgress(shape, 0.5);
|
|
130
|
+
|
|
131
|
+
expect(shape.data.commands[2]).toBe(fakeTexture);
|
|
132
|
+
expect(shape.data.commands[3]).toBe(matrix);
|
|
133
|
+
expect(matrix).toMatchObject({ a: 1.5, b: 0, c: 0, d: 2.5, tx: 5, ty: 10 });
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
describe('appendMorphShapeLineGradientStyle', () => {
|
|
138
|
+
it('uses the same stable gradient sampler for a stroke paint', () => {
|
|
139
|
+
const shape = createTestMorphShape();
|
|
140
|
+
|
|
141
|
+
expect(
|
|
142
|
+
appendMorphShapeLineGradientStyle(
|
|
143
|
+
shape,
|
|
144
|
+
'linear',
|
|
145
|
+
{ alphas: [1], colors: [0xff0000], ratios: [0] },
|
|
146
|
+
{ alphas: [0.5], colors: [0x0000ff], ratios: [255] },
|
|
147
|
+
),
|
|
148
|
+
).toBe(true);
|
|
149
|
+
setMorphShapeProgress(shape, 1);
|
|
150
|
+
|
|
151
|
+
expect(shape.data.commands[0]).toBe('lineGradientStyle');
|
|
152
|
+
expect(shape.data.commands[3]).toStrictEqual([0x0000ff]);
|
|
153
|
+
expect(shape.data.commands[4]).toStrictEqual([0.5]);
|
|
154
|
+
expect(shape.data.commands[5]).toStrictEqual([255]);
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
describe('appendMorphShapeLineStyle', () => {
|
|
159
|
+
it('samples stroke width and color while retaining structural stroke options', () => {
|
|
160
|
+
const shape = createTestMorphShape(0.5);
|
|
161
|
+
|
|
162
|
+
appendMorphShapeLineStyle(
|
|
163
|
+
shape,
|
|
164
|
+
{ alpha: 0.25, color: 0xff0000, thickness: 2 },
|
|
165
|
+
{ alpha: 0.75, color: 0x0000ff, thickness: 10 },
|
|
166
|
+
true,
|
|
167
|
+
'horizontal',
|
|
168
|
+
'round',
|
|
169
|
+
'bevel',
|
|
170
|
+
5,
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
expect(shape.data.commands).toStrictEqual([
|
|
174
|
+
'lineStyle',
|
|
175
|
+
8,
|
|
176
|
+
6,
|
|
177
|
+
0x800080,
|
|
178
|
+
0.5,
|
|
179
|
+
true,
|
|
180
|
+
'horizontal',
|
|
181
|
+
'round',
|
|
182
|
+
'bevel',
|
|
183
|
+
5,
|
|
184
|
+
]);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
|
|
188
|
+
describe('appendMorphShapeLineTextureStyle', () => {
|
|
189
|
+
it('uses the same stable matrix sampler for a stroke texture', () => {
|
|
190
|
+
const shape = createTestMorphShape();
|
|
191
|
+
appendMorphShapeLineTextureStyle(shape, fakeTexture, createMatrix(), createMatrix(2, 0, 0, 2, 10, 20));
|
|
192
|
+
const matrix = shape.data.commands[3];
|
|
193
|
+
|
|
194
|
+
setMorphShapeProgress(shape, 1);
|
|
195
|
+
|
|
196
|
+
expect(shape.data.commands[0]).toBe('lineTextureStyle');
|
|
197
|
+
expect(shape.data.commands[3]).toBe(matrix);
|
|
198
|
+
expect(matrix).toMatchObject({ a: 2, d: 2, tx: 10, ty: 20 });
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
describe('clearShapeCommands with MorphShape paint', () => {
|
|
203
|
+
it('removes stale paint bindings with the ordinary Shape command stream', () => {
|
|
204
|
+
const shape = createTestMorphShape();
|
|
205
|
+
appendMorphShapeBeginFill(shape, { color: 0 }, { color: 0xffffff });
|
|
206
|
+
|
|
207
|
+
clearShapeCommands(shape);
|
|
208
|
+
setMorphShapeProgress(shape, 1);
|
|
209
|
+
|
|
210
|
+
expect(shape.data.commands).toStrictEqual([]);
|
|
211
|
+
expect(shape.data.paintBindings).toStrictEqual([]);
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
describe('sampleMorphShapePaintBindings', () => {
|
|
216
|
+
it('can resample prepared paint bindings without reallocating their command values', () => {
|
|
217
|
+
const shape = createTestMorphShape();
|
|
218
|
+
appendMorphShapeBeginFill(shape, { color: 0 }, { color: 0xffffff });
|
|
219
|
+
const commands = shape.data.commands;
|
|
220
|
+
|
|
221
|
+
sampleMorphShapePaintBindings(shape.data, 0.25);
|
|
222
|
+
|
|
223
|
+
expect(shape.data.commands).toBe(commands);
|
|
224
|
+
expect(shape.data.commands[2]).toBe(0x404040);
|
|
225
|
+
});
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
function createTestMorphShape(progress = 0) {
|
|
229
|
+
const start = createPath();
|
|
230
|
+
appendPathMoveTo(start, 0, 0);
|
|
231
|
+
appendPathLineTo(start, 10, 0);
|
|
232
|
+
const end = createPath();
|
|
233
|
+
appendPathMoveTo(end, 20, 30);
|
|
234
|
+
appendPathLineTo(end, 40, 30);
|
|
235
|
+
return createMorphShape(createPathMorph(start, end)!, { data: { progress } });
|
|
236
|
+
}
|
package/src/shape.test.ts
CHANGED
|
@@ -4,9 +4,12 @@ import {
|
|
|
4
4
|
getNodeLocalContentRevision,
|
|
5
5
|
getNodeLocalTransformRevision,
|
|
6
6
|
} from '@flighthq/node/contract';
|
|
7
|
+
import { createPath, createPathMorph } from '@flighthq/path/contract';
|
|
7
8
|
import type { ShapeCommandToken } from '@flighthq/types/contract';
|
|
8
9
|
import { ShapeKind } from '@flighthq/types/contract';
|
|
9
10
|
|
|
11
|
+
import { createMorphShape, setMorphShapeProgress } from './morphShape';
|
|
12
|
+
import { appendMorphShapeBeginFill } from './morphShapePaint';
|
|
10
13
|
import {
|
|
11
14
|
clearShapeCommands,
|
|
12
15
|
computeShapeLocalBoundsRectangle,
|
|
@@ -169,6 +172,19 @@ describe('computeShapeLocalBoundsRectangle', () => {
|
|
|
169
172
|
});
|
|
170
173
|
|
|
171
174
|
describe('copyShapeCommands', () => {
|
|
175
|
+
it('discards target paint bindings when replacing a MorphShape command stream', () => {
|
|
176
|
+
const path = createPath();
|
|
177
|
+
const target = createMorphShape(createPathMorph(path, path)!);
|
|
178
|
+
appendMorphShapeBeginFill(target, { color: 0 }, { color: 0xffffff });
|
|
179
|
+
const source = createShape({ data: { commands: ['beginFill', 2, 0x123456, 1] } });
|
|
180
|
+
|
|
181
|
+
copyShapeCommands(target, source);
|
|
182
|
+
setMorphShapeProgress(target, 1);
|
|
183
|
+
|
|
184
|
+
expect(target.data.commands).toStrictEqual(['beginFill', 2, 0x123456, 1]);
|
|
185
|
+
expect(target.data.paintBindings).toStrictEqual([]);
|
|
186
|
+
});
|
|
187
|
+
|
|
172
188
|
it('copies commands from source to target', () => {
|
|
173
189
|
const source = createShape();
|
|
174
190
|
source.data.commands.push('endFill', 0);
|