@flighthq/shape 0.3.1-next.975.01aea94 → 0.4.0-edge.1908.751021c

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.
Files changed (50) hide show
  1. package/dist/contract.d.ts +4 -0
  2. package/dist/contract.d.ts.map +1 -1
  3. package/dist/contract.js +4 -0
  4. package/dist/contract.js.map +1 -1
  5. package/dist/enableShapeBoundsGuards.d.ts +4 -0
  6. package/dist/enableShapeBoundsGuards.d.ts.map +1 -0
  7. package/dist/enableShapeBoundsGuards.js +25 -0
  8. package/dist/enableShapeBoundsGuards.js.map +1 -0
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/morphShapePaint.js +9 -10
  14. package/dist/morphShapePaint.js.map +1 -1
  15. package/dist/registerDefaultShapeBoundsCommands.d.ts +2 -0
  16. package/dist/registerDefaultShapeBoundsCommands.d.ts.map +1 -0
  17. package/dist/registerDefaultShapeBoundsCommands.js +80 -0
  18. package/dist/registerDefaultShapeBoundsCommands.js.map +1 -0
  19. package/dist/shape.d.ts +2 -2
  20. package/dist/shape.d.ts.map +1 -1
  21. package/dist/shape.js +27 -269
  22. package/dist/shape.js.map +1 -1
  23. package/dist/shapeBounds.d.ts +18 -0
  24. package/dist/shapeBounds.d.ts.map +1 -0
  25. package/dist/shapeBounds.js +527 -0
  26. package/dist/shapeBounds.js.map +1 -0
  27. package/dist/shapeBoundsRegistry.d.ts +6 -0
  28. package/dist/shapeBoundsRegistry.d.ts.map +1 -0
  29. package/dist/shapeBoundsRegistry.js +24 -0
  30. package/dist/shapeBoundsRegistry.js.map +1 -0
  31. package/dist/shapeCommands.d.ts +2 -2
  32. package/dist/shapeCommands.d.ts.map +1 -1
  33. package/dist/shapeCommands.js +2 -2
  34. package/dist/shapeCommands.js.map +1 -1
  35. package/package.json +9 -8
  36. package/src/enableShapeBoundsGuards.test.ts +64 -0
  37. package/src/explainMorphShapeGradientEndpoints.test.ts +10 -10
  38. package/src/explainShapeTessellation.test.ts +5 -5
  39. package/src/morphShape.test.ts +13 -3
  40. package/src/morphShapeAnimation.test.ts +2 -2
  41. package/src/morphShapePaint.test.ts +19 -19
  42. package/src/registerDefaultShapeBoundsCommands.test.ts +64 -0
  43. package/src/scale9ShapeCommands.test.ts +3 -3
  44. package/src/shape.test.ts +25 -15
  45. package/src/shapeBounds.test.ts +270 -0
  46. package/src/shapeBoundsRegistry.test.ts +76 -0
  47. package/src/shapeCommands.test.ts +18 -18
  48. package/src/shapeFill.test.ts +17 -17
  49. package/src/shapeStroke.test.ts +14 -14
  50. package/src/shapeStrokeOutline.test.ts +3 -3
package/dist/shape.js CHANGED
@@ -1,9 +1,8 @@
1
- import { createRectangle } from '@flighthq/geometry/contract';
2
1
  import { invalidateContent } from '@flighthq/node/contract';
3
- import { getPathBounds } from '@flighthq/path/contract';
4
2
  import { createNode2D, createNode2DRuntime, getNode2DRuntime } from '@flighthq/scene2d/contract';
5
3
  import { MorphShapeKind, ShapeKind } from '@flighthq/types/contract';
6
- import { getShapeStrokeOutlineRegions } from './shapeStrokeOutline';
4
+ import { computeShapeBoundsRectangle } from './shapeBounds';
5
+ import { getShapeBoundsCommandRegistryRevision } from './shapeBoundsRegistry';
7
6
  export function clearShapeCommands(shape) {
8
7
  shape.data.commands.length = 0;
9
8
  if (shape.kind === MorphShapeKind)
@@ -11,269 +10,7 @@ export function clearShapeCommands(shape) {
11
10
  invalidateContent(shape);
12
11
  }
13
12
  export function computeShapeLocalBoundsRectangle(out, source) {
14
- const shape = source;
15
- const commands = shape.data.commands;
16
- const strokeOutlines = getShapeStrokeOutlineRegions(commands);
17
- let minX = Infinity;
18
- let minY = Infinity;
19
- let maxX = -Infinity;
20
- let maxY = -Infinity;
21
- let strokeHalf = 0;
22
- let penX = 0;
23
- let penY = 0;
24
- function expand(x, y) {
25
- const lo_x = x - strokeHalf;
26
- const hi_x = x + strokeHalf;
27
- const lo_y = y - strokeHalf;
28
- const hi_y = y + strokeHalf;
29
- if (lo_x < minX)
30
- minX = lo_x;
31
- if (lo_y < minY)
32
- minY = lo_y;
33
- if (hi_x > maxX)
34
- maxX = hi_x;
35
- if (hi_y > maxY)
36
- maxY = hi_y;
37
- }
38
- function quadPoint(t, p0, p1, p2) {
39
- const u = 1 - t;
40
- return u * u * p0 + 2 * u * t * p1 + t * t * p2;
41
- }
42
- function cubicPoint(t, p0, p1, p2, p3) {
43
- const u = 1 - t;
44
- return u * u * u * p0 + 3 * u * u * t * p1 + 3 * u * t * t * p2 + t * t * t * p3;
45
- }
46
- // Solve the quadratic at² + bt + c = 0 for roots in (0, 1) and expand the cubic at those t values.
47
- function expandCubicExtrema(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) {
48
- expandCubicAxis(p0x, p1x, p2x, p3x, p0y, p1y, p2y, p3y);
49
- expandCubicAxis(p0y, p1y, p2y, p3y, p0x, p1x, p2x, p3x);
50
- }
51
- function expandCubicAxis(p0, p1, p2, p3, q0, q1, q2, q3) {
52
- // Derivative: 3[(-p0+3p1-3p2+p3)t² + 2(p0-2p1+p2)t + (-p0+p1)]
53
- const a = -p0 + 3 * p1 - 3 * p2 + p3;
54
- const b = 2 * (p0 - 2 * p1 + p2);
55
- const c = -p0 + p1;
56
- if (Math.abs(a) < 1e-12) {
57
- if (Math.abs(b) > 1e-12) {
58
- const t = -c / b;
59
- if (t > 0 && t < 1)
60
- expand(cubicPoint(t, p0, p1, p2, p3), cubicPoint(t, q0, q1, q2, q3));
61
- }
62
- return;
63
- }
64
- const disc = b * b - 4 * a * c;
65
- if (disc < 0)
66
- return;
67
- const sqrtDisc = Math.sqrt(disc);
68
- const t1 = (-b + sqrtDisc) / (2 * a);
69
- const t2 = (-b - sqrtDisc) / (2 * a);
70
- if (t1 > 0 && t1 < 1)
71
- expand(cubicPoint(t1, p0, p1, p2, p3), cubicPoint(t1, q0, q1, q2, q3));
72
- if (t2 > 0 && t2 < 1)
73
- expand(cubicPoint(t2, p0, p1, p2, p3), cubicPoint(t2, q0, q1, q2, q3));
74
- }
75
- let i = 0;
76
- while (i < commands.length) {
77
- const key = commands[i];
78
- const argCount = commands[i + 1];
79
- const b = i + 2;
80
- switch (key) {
81
- case 'drawRectangle':
82
- case 'drawRoundRectangle': {
83
- const x = commands[b];
84
- const y = commands[b + 1];
85
- const w = commands[b + 2];
86
- const h = commands[b + 3];
87
- expand(x, y);
88
- expand(x + w, y + h);
89
- break;
90
- }
91
- case 'drawCircle': {
92
- const x = commands[b];
93
- const y = commands[b + 1];
94
- const r = commands[b + 2];
95
- expand(x - r, y - r);
96
- expand(x + r, y + r);
97
- break;
98
- }
99
- case 'drawEllipse': {
100
- const x = commands[b];
101
- const y = commands[b + 1];
102
- const w = commands[b + 2];
103
- const h = commands[b + 3];
104
- expand(x, y);
105
- expand(x + w, y + h);
106
- break;
107
- }
108
- case 'moveTo': {
109
- penX = commands[b];
110
- penY = commands[b + 1];
111
- break;
112
- }
113
- case 'lineTo': {
114
- const x = commands[b];
115
- const y = commands[b + 1];
116
- expand(penX, penY);
117
- expand(x, y);
118
- penX = x;
119
- penY = y;
120
- break;
121
- }
122
- case 'curveTo': {
123
- const controlX = commands[b];
124
- const controlY = commands[b + 1];
125
- const anchorX = commands[b + 2];
126
- const anchorY = commands[b + 3];
127
- expand(penX, penY);
128
- // Expand by quadratic bezier extrema (t where derivative = 0)
129
- const denomX = penX - 2 * controlX + anchorX;
130
- if (denomX !== 0) {
131
- const tx = (penX - controlX) / denomX;
132
- if (tx > 0 && tx < 1)
133
- expand(quadPoint(tx, penX, controlX, anchorX), quadPoint(tx, penY, controlY, anchorY));
134
- }
135
- const denomY = penY - 2 * controlY + anchorY;
136
- if (denomY !== 0) {
137
- const ty = (penY - controlY) / denomY;
138
- if (ty > 0 && ty < 1)
139
- expand(quadPoint(ty, penX, controlX, anchorX), quadPoint(ty, penY, controlY, anchorY));
140
- }
141
- expand(anchorX, anchorY);
142
- penX = anchorX;
143
- penY = anchorY;
144
- break;
145
- }
146
- case 'cubicCurveTo': {
147
- const control1X = commands[b];
148
- const control1Y = commands[b + 1];
149
- const control2X = commands[b + 2];
150
- const control2Y = commands[b + 3];
151
- const anchorX = commands[b + 4];
152
- const anchorY = commands[b + 5];
153
- expand(penX, penY);
154
- expand(anchorX, anchorY);
155
- expandCubicExtrema(penX, penY, control1X, control1Y, control2X, control2Y, anchorX, anchorY);
156
- penX = anchorX;
157
- penY = anchorY;
158
- break;
159
- }
160
- case 'lineStyle': {
161
- strokeHalf = commands[b] / 2;
162
- // Exact outlines below cover solid open strokes. Closed and non-solid strokes fall back to the
163
- // maximum authored miter envelope instead of cropping valid geometry at half-width.
164
- if (strokeOutlines === null && commands[b + 6] === 'miter') {
165
- strokeHalf *= commands[b + 7];
166
- }
167
- break;
168
- }
169
- case 'drawPath': {
170
- const pathCmds = commands[b];
171
- const data = commands[b + 1];
172
- let di = 0;
173
- for (const pc of pathCmds) {
174
- switch (pc) {
175
- case 1: // MOVE_TO
176
- penX = data[di];
177
- penY = data[di + 1];
178
- di += 2;
179
- break;
180
- case 2: // LINE_TO
181
- expand(penX, penY);
182
- expand(data[di], data[di + 1]);
183
- penX = data[di];
184
- penY = data[di + 1];
185
- di += 2;
186
- break;
187
- case 3: {
188
- // CURVE_TO
189
- const qcx = data[di];
190
- const qcy = data[di + 1];
191
- const qax = data[di + 2];
192
- const qay = data[di + 3];
193
- expand(penX, penY);
194
- const qdx = penX - 2 * qcx + qax;
195
- if (qdx !== 0) {
196
- const qt = (penX - qcx) / qdx;
197
- if (qt > 0 && qt < 1)
198
- expand(quadPoint(qt, penX, qcx, qax), quadPoint(qt, penY, qcy, qay));
199
- }
200
- const qdy = penY - 2 * qcy + qay;
201
- if (qdy !== 0) {
202
- const qt = (penY - qcy) / qdy;
203
- if (qt > 0 && qt < 1)
204
- expand(quadPoint(qt, penX, qcx, qax), quadPoint(qt, penY, qcy, qay));
205
- }
206
- expand(qax, qay);
207
- penX = qax;
208
- penY = qay;
209
- di += 4;
210
- break;
211
- }
212
- case 4: // WIDE_MOVE_TO
213
- penX = data[di + 2];
214
- penY = data[di + 3];
215
- di += 4;
216
- break;
217
- case 5: // WIDE_LINE_TO
218
- expand(penX, penY);
219
- expand(data[di + 2], data[di + 3]);
220
- penX = data[di + 2];
221
- penY = data[di + 3];
222
- di += 4;
223
- break;
224
- case 6: {
225
- // CUBIC_CURVE_TO
226
- expand(penX, penY);
227
- const ax = data[di + 4];
228
- const ay = data[di + 5];
229
- expand(ax, ay);
230
- expandCubicExtrema(penX, penY, data[di], data[di + 1], data[di + 2], data[di + 3], ax, ay);
231
- penX = ax;
232
- penY = ay;
233
- di += 6;
234
- break;
235
- }
236
- }
237
- }
238
- break;
239
- }
240
- case 'drawTriangles': {
241
- const vertices = commands[b];
242
- for (let vi = 0; vi < vertices.length; vi += 2) {
243
- expand(vertices[vi], vertices[vi + 1]);
244
- }
245
- break;
246
- }
247
- }
248
- i += argCount + 2;
249
- }
250
- // Endpoint +/- half-width is sufficient for caps, bevels, and round joins, but a miter can extend
251
- // farther than that envelope. Include the exact solid open-stroke outline so bounds consumers such as
252
- // the DOM renderer do not crop a valid miter point at their per-shape canvas edge. Closed or non-solid
253
- // strokes return null and retain the conservative legacy envelope above.
254
- if (strokeOutlines !== null) {
255
- const strokeBounds = createRectangle();
256
- for (const outline of strokeOutlines) {
257
- if (!getPathBounds(outline.path, strokeBounds))
258
- continue;
259
- minX = Math.min(minX, strokeBounds.x);
260
- minY = Math.min(minY, strokeBounds.y);
261
- maxX = Math.max(maxX, strokeBounds.x + strokeBounds.width);
262
- maxY = Math.max(maxY, strokeBounds.y + strokeBounds.height);
263
- }
264
- }
265
- if (minX === Infinity) {
266
- out.x = 0;
267
- out.y = 0;
268
- out.width = 0;
269
- out.height = 0;
270
- }
271
- else {
272
- out.x = minX;
273
- out.y = minY;
274
- out.width = maxX - minX;
275
- out.height = maxY - minY;
276
- }
13
+ getShapeBounds(out, source, 'ink');
277
14
  }
278
15
  export function copyShapeCommands(out, source) {
279
16
  const commands = out.data.commands;
@@ -300,10 +37,23 @@ export function createShapeData(data) {
300
37
  };
301
38
  }
302
39
  export function createShapeRuntime() {
303
- return createNode2DRuntime({ computeLocalBoundsRectangle: computeShapeLocalBoundsRectangle });
40
+ const runtime = createNode2DRuntime(defaultMethods);
41
+ runtime.shapeBoundsCommandRegistryRevision = -1;
42
+ return runtime;
304
43
  }
305
- export function getShapeBounds(out, source) {
306
- computeShapeLocalBoundsRectangle(out, source);
44
+ export function getShapeBounds(out, source, mode = 'ink') {
45
+ const complete = computeShapeBoundsRectangle(out, source, mode);
46
+ const runtime = getNode2DRuntime(source);
47
+ runtime.shapeBoundsCommandRegistryRevision = getShapeBoundsCommandRegistryRevision();
48
+ // The lower-level traversal deliberately preserves known contributions for diagnostics. Public and
49
+ // scene-graph callers ask for a complete box, so never let them mistake that partial output for truth.
50
+ if (!complete) {
51
+ out.x = 0;
52
+ out.y = 0;
53
+ out.width = 0;
54
+ out.height = 0;
55
+ }
56
+ return complete;
307
57
  }
308
58
  // Returns the number of drawing commands in the shape's command stream.
309
59
  export function getShapeCommandCount(source) {
@@ -324,4 +74,12 @@ export function getShapeRuntime(source) {
324
74
  export function isShapeEmpty(source) {
325
75
  return source.data.commands.length === 0;
326
76
  }
77
+ function isShapeLocalBoundsRectangleValid(source) {
78
+ const runtime = getNode2DRuntime(source);
79
+ return runtime.shapeBoundsCommandRegistryRevision === getShapeBoundsCommandRegistryRevision();
80
+ }
81
+ const defaultMethods = {
82
+ computeLocalBoundsRectangle: computeShapeLocalBoundsRectangle,
83
+ isLocalBoundsRectangleValid: isShapeLocalBoundsRectangleValid,
84
+ };
327
85
  //# sourceMappingURL=shape.js.map
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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"}
@@ -0,0 +1,18 @@
1
+ import type { Rectangle, Shape, ShapeBoundsCommandHandler, ShapeBoundsExplanation, ShapeBoundsGuard, ShapeBoundsMode } from '@flighthq/types/contract';
2
+ export declare function computeShapeBoundsRectangle(out: Rectangle, source: Readonly<Shape>, mode?: ShapeBoundsMode): boolean;
3
+ export declare const defaultShapeBoundsCubicCurveTo: ShapeBoundsCommandHandler;
4
+ export declare const defaultShapeBoundsCurveTo: ShapeBoundsCommandHandler;
5
+ export declare const defaultShapeBoundsDrawCircle: ShapeBoundsCommandHandler;
6
+ export declare const defaultShapeBoundsDrawEllipse: ShapeBoundsCommandHandler;
7
+ export declare const defaultShapeBoundsDrawPath: ShapeBoundsCommandHandler;
8
+ export declare const defaultShapeBoundsDrawRectangle: ShapeBoundsCommandHandler;
9
+ export declare const defaultShapeBoundsExpandPointPairs: ShapeBoundsCommandHandler;
10
+ export declare const defaultShapeBoundsFlush: ShapeBoundsCommandHandler;
11
+ export declare const defaultShapeBoundsLineStyle: ShapeBoundsCommandHandler;
12
+ export declare const defaultShapeBoundsLineTo: ShapeBoundsCommandHandler;
13
+ export declare const defaultShapeBoundsMoveTo: ShapeBoundsCommandHandler;
14
+ export declare function explainShapeBounds(source: Readonly<Shape>, mode?: ShapeBoundsMode): ShapeBoundsExplanation;
15
+ export declare function normalizeShapeStrokeMiterLimit(miterLimit: number): number;
16
+ export declare function normalizeShapeStrokeWidth(width: number): number;
17
+ export declare function setShapeBoundsGuard(guard: ShapeBoundsGuard | null): void;
18
+ //# sourceMappingURL=shapeBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeBounds.d.ts","sourceRoot":"","sources":["../src/shapeBounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,SAAS,EACT,KAAK,EACL,yBAAyB,EAEzB,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EAGhB,MAAM,0BAA0B,CAAC;AAIlC,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EACvB,IAAI,GAAE,eAAuB,GAC5B,OAAO,CA2BT;AAED,eAAO,MAAM,8BAA8B,EAAE,yBAS5C,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,yBAOvC,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,yBAM1C,CAAC;AAorBF,eAAO,MAAM,6BAA6B,EAAE,yBAO3C,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,yBA4CxC,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,yBAO7C,CAAC;AAEF,eAAO,MAAM,kCAAkC,EAAE,yBAGhD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,yBAErC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,yBAOzC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,yBAEtC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,yBAEtC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,GAAE,eAAuB,GAAG,sBAAsB,CAajH;AAED,wBAAgB,8BAA8B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAExE"}