@flighthq/shape 0.3.1-next.887.9f59a84 → 0.3.1-next.970.9691e7b

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.
@@ -1 +1 @@
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,CAa3E;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"}
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAEb,WAAW,EACX,SAAS,EACT,KAAK,EACL,SAAS,EACT,YAAY,EACb,MAAM,0BAA0B,CAAC;AAKlC,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,CAyRtG;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAI,CAa3E;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,6 +1,9 @@
1
+ import { createRectangle } from '@flighthq/geometry/contract';
1
2
  import { invalidateContent } from '@flighthq/node/contract';
3
+ import { getPathBounds } from '@flighthq/path/contract';
2
4
  import { createNode2D, createNode2DRuntime, getNode2DRuntime } from '@flighthq/scene2d/contract';
3
5
  import { MorphShapeKind, ShapeKind } from '@flighthq/types/contract';
6
+ import { getShapeStrokeOutlineRegions } from './shapeStrokeOutline';
4
7
  export function clearShapeCommands(shape) {
5
8
  shape.data.commands.length = 0;
6
9
  if (shape.kind === MorphShapeKind)
@@ -10,6 +13,7 @@ export function clearShapeCommands(shape) {
10
13
  export function computeShapeLocalBoundsRectangle(out, source) {
11
14
  const shape = source;
12
15
  const commands = shape.data.commands;
16
+ const strokeOutlines = getShapeStrokeOutlineRegions(commands);
13
17
  let minX = Infinity;
14
18
  let minY = Infinity;
15
19
  let maxX = -Infinity;
@@ -155,6 +159,11 @@ export function computeShapeLocalBoundsRectangle(out, source) {
155
159
  }
156
160
  case 'lineStyle': {
157
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
+ }
158
167
  break;
159
168
  }
160
169
  case 'drawPath': {
@@ -238,6 +247,21 @@ export function computeShapeLocalBoundsRectangle(out, source) {
238
247
  }
239
248
  i += argCount + 2;
240
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
+ }
241
265
  if (minX === Infinity) {
242
266
  out.x = 0;
243
267
  out.y = 0;
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.1-next.887.9f59a84",
3
+ "version": "0.3.1-next.970.9691e7b",
4
4
  "author": "Joshua Granick and other contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,13 +38,13 @@
38
38
  "clean:dist": "tsx ../../scripts/clean-package-dist.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@flighthq/animation": "0.3.1-next.887.9f59a84",
42
- "@flighthq/geometry": "0.3.1-next.887.9f59a84",
43
- "@flighthq/math": "0.3.1-next.887.9f59a84",
44
- "@flighthq/node": "0.3.1-next.887.9f59a84",
45
- "@flighthq/path": "0.3.1-next.887.9f59a84",
46
- "@flighthq/scene2d": "0.3.1-next.887.9f59a84",
47
- "@flighthq/types": "0.3.1-next.887.9f59a84"
41
+ "@flighthq/animation": "0.3.1-next.970.9691e7b",
42
+ "@flighthq/geometry": "0.3.1-next.970.9691e7b",
43
+ "@flighthq/math": "0.3.1-next.970.9691e7b",
44
+ "@flighthq/node": "0.3.1-next.970.9691e7b",
45
+ "@flighthq/path": "0.3.1-next.970.9691e7b",
46
+ "@flighthq/scene2d": "0.3.1-next.970.9691e7b",
47
+ "@flighthq/types": "0.3.1-next.970.9691e7b"
48
48
  },
49
49
  "devDependencies": {
50
50
  "typescript": "^5.3.0"
package/src/shape.test.ts CHANGED
@@ -27,7 +27,10 @@ import {
27
27
  appendShapeCubicCurveTo,
28
28
  appendShapeCurveTo,
29
29
  appendShapeEllipse,
30
+ appendShapeLineStyle,
31
+ appendShapeLineTo,
30
32
  appendShapeMoveTo,
33
+ appendShapeRectangle,
31
34
  } from './shapeCommands';
32
35
 
33
36
  describe('clearShapeCommands', () => {
@@ -139,6 +142,30 @@ describe('computeShapeLocalBoundsRectangle', () => {
139
142
  expect(out.height).toBe(60);
140
143
  });
141
144
 
145
+ it('includes a miter point beyond the half-width endpoint envelope', () => {
146
+ const shape = createShape();
147
+ appendShapeLineStyle(shape, 30, 0xffffff, 1, false, 'normal', 'none', 'miter', 6);
148
+ appendShapeMoveTo(shape, -110, -110);
149
+ appendShapeLineTo(shape, 0, 0);
150
+ appendShapeLineTo(shape, 110, -110);
151
+ const out = createRectangle();
152
+
153
+ computeShapeLocalBoundsRectangle(out, shape as any);
154
+
155
+ expect(out.y + out.height).toBeGreaterThan(18);
156
+ });
157
+
158
+ it('uses the authored miter-limit envelope when an exact stroke outline is unavailable', () => {
159
+ const shape = createShape();
160
+ appendShapeLineStyle(shape, 30, 0xffffff, 1, false, 'normal', 'none', 'miter', 6);
161
+ appendShapeRectangle(shape, 0, 0, 100, 100);
162
+ const out = createRectangle();
163
+
164
+ computeShapeLocalBoundsRectangle(out, shape as any);
165
+
166
+ expect(out).toMatchObject({ height: 280, width: 280, x: -90, y: -90 });
167
+ });
168
+
142
169
  it('computes bounds from a quadratic bezier with an interior extremum', () => {
143
170
  // Quadratic from (0,0) to (100,0) with control point at (50,100).
144
171
  // The extremum in Y is at t = (p0 - p1) / (p0 - 2*p1 + p2) = (0 - 100) / (0 - 200 + 0) = 0.5.