@ifc-lite/drawing-2d 1.21.2 → 2.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.
Files changed (73) hide show
  1. package/dist/color-raster.d.ts +95 -0
  2. package/dist/color-raster.d.ts.map +1 -0
  3. package/dist/color-raster.js +225 -0
  4. package/dist/color-raster.js.map +1 -0
  5. package/dist/drawing-generator.d.ts +17 -0
  6. package/dist/drawing-generator.d.ts.map +1 -1
  7. package/dist/drawing-generator.js +33 -7
  8. package/dist/drawing-generator.js.map +1 -1
  9. package/dist/edge-extractor.d.ts +17 -0
  10. package/dist/edge-extractor.d.ts.map +1 -1
  11. package/dist/edge-extractor.js +104 -1
  12. package/dist/edge-extractor.js.map +1 -1
  13. package/dist/half-space-clip.d.ts +77 -0
  14. package/dist/half-space-clip.d.ts.map +1 -0
  15. package/dist/half-space-clip.js +257 -0
  16. package/dist/half-space-clip.js.map +1 -0
  17. package/dist/hidden-line-raster.d.ts +50 -0
  18. package/dist/hidden-line-raster.d.ts.map +1 -0
  19. package/dist/hidden-line-raster.js +103 -0
  20. package/dist/hidden-line-raster.js.map +1 -0
  21. package/dist/hidden-line.d.ts +34 -21
  22. package/dist/hidden-line.d.ts.map +1 -1
  23. package/dist/hidden-line.js +107 -214
  24. package/dist/hidden-line.js.map +1 -1
  25. package/dist/index.d.ts +11 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +25 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/line-merger.d.ts.map +1 -1
  30. package/dist/line-merger.js +88 -44
  31. package/dist/line-merger.js.map +1 -1
  32. package/dist/pdf-scale.d.ts +17 -0
  33. package/dist/pdf-scale.d.ts.map +1 -1
  34. package/dist/pdf-scale.js +38 -0
  35. package/dist/pdf-scale.js.map +1 -1
  36. package/dist/polygon-builder.d.ts +31 -0
  37. package/dist/polygon-builder.d.ts.map +1 -1
  38. package/dist/polygon-builder.js +60 -3
  39. package/dist/polygon-builder.js.map +1 -1
  40. package/dist/profile-projector.js +17 -9
  41. package/dist/profile-projector.js.map +1 -1
  42. package/dist/projection-bands.d.ts +13 -6
  43. package/dist/projection-bands.d.ts.map +1 -1
  44. package/dist/projection-bands.js +15 -3
  45. package/dist/projection-bands.js.map +1 -1
  46. package/dist/raster-core.d.ts +71 -0
  47. package/dist/raster-core.d.ts.map +1 -0
  48. package/dist/raster-core.js +89 -0
  49. package/dist/raster-core.js.map +1 -0
  50. package/dist/section-cutter.d.ts +8 -0
  51. package/dist/section-cutter.d.ts.map +1 -1
  52. package/dist/section-cutter.js +59 -11
  53. package/dist/section-cutter.js.map +1 -1
  54. package/dist/sheet/index.d.ts +2 -0
  55. package/dist/sheet/index.d.ts.map +1 -1
  56. package/dist/sheet/index.js +1 -0
  57. package/dist/sheet/index.js.map +1 -1
  58. package/dist/sheet/scale-stamp.d.ts +130 -0
  59. package/dist/sheet/scale-stamp.d.ts.map +1 -0
  60. package/dist/sheet/scale-stamp.js +277 -0
  61. package/dist/sheet/scale-stamp.js.map +1 -0
  62. package/dist/types.d.ts +26 -1
  63. package/dist/types.d.ts.map +1 -1
  64. package/dist/types.js.map +1 -1
  65. package/dist/view-plane.d.ts +99 -0
  66. package/dist/view-plane.d.ts.map +1 -0
  67. package/dist/view-plane.js +183 -0
  68. package/dist/view-plane.js.map +1 -0
  69. package/dist/world-line-seeds.d.ts +41 -0
  70. package/dist/world-line-seeds.d.ts.map +1 -0
  71. package/dist/world-line-seeds.js +43 -0
  72. package/dist/world-line-seeds.js.map +1 -0
  73. package/package.json +2 -2
@@ -12,6 +12,64 @@ export class PolygonBuilder {
12
12
  constructor(tolerance = 0.0001) {
13
13
  this.tolerance = tolerance;
14
14
  }
15
+ /**
16
+ * Run `fn` with `this.tolerance` floored to the float32 noise floor of
17
+ * `segments`' own LOCAL (pre-origin) coordinate magnitude
18
+ * (`localMaxCoord · 2⁻²²`), restoring the constructor tolerance
19
+ * afterward.
20
+ *
21
+ * `seg.p0_2d`/`p1_2d` are WORLD-frame (the section cutter lifts vertices
22
+ * by the per-mesh RTC `origin` before projecting to 2D, and never
23
+ * subtracts it back out) — so their magnitude is the element's distance
24
+ * from the model origin, NOT its own extent. Sizing the tolerance off
25
+ * that world magnitude would give a small element sitting at a large RTC
26
+ * origin a tolerance scaled to that distance, wide enough to weld
27
+ * genuinely distinct nearby vertices (#2622). `SectionCutter` attaches
28
+ * `localMaxCoord` — measured on the source triangle's `Float32Array`
29
+ * values BEFORE `origin` was added — for exactly this reason; that's
30
+ * what float32 rounding noise actually scales with. This is scoped per
31
+ * entity, computed from that entity's own segments, not the whole
32
+ * drawing's. A short element a few metres across leaves the floor at the
33
+ * constructor's default untouched (bit-identical); only an element whose
34
+ * own extent is large enough that float32 rounding of its cut
35
+ * coordinates approaches the default 0.1mm weld tolerance gets a wider
36
+ * one — exactly the "same physical vertex, two independently-rounded
37
+ * float32 copies" case that a fixed tolerance can't absorb past that
38
+ * scale.
39
+ *
40
+ * Segments not produced by `SectionCutter` (e.g. hand-built test
41
+ * fixtures) carry no `localMaxCoord`; those fall back to the segment's
42
+ * own 2D coordinate magnitude, preserving prior behaviour for callers
43
+ * that never had an origin to begin with.
44
+ */
45
+ withScaleAwareTolerance(segments, fn) {
46
+ let maxAbs = 0;
47
+ for (const seg of segments) {
48
+ if (seg.localMaxCoord !== undefined) {
49
+ if (seg.localMaxCoord > maxAbs)
50
+ maxAbs = seg.localMaxCoord;
51
+ continue;
52
+ }
53
+ const a = seg.p0_2d;
54
+ const b = seg.p1_2d;
55
+ if (Math.abs(a.x) > maxAbs)
56
+ maxAbs = Math.abs(a.x);
57
+ if (Math.abs(a.y) > maxAbs)
58
+ maxAbs = Math.abs(a.y);
59
+ if (Math.abs(b.x) > maxAbs)
60
+ maxAbs = Math.abs(b.x);
61
+ if (Math.abs(b.y) > maxAbs)
62
+ maxAbs = Math.abs(b.y);
63
+ }
64
+ const original = this.tolerance;
65
+ this.tolerance = Math.max(original, maxAbs * 2 ** -22);
66
+ try {
67
+ return fn();
68
+ }
69
+ finally {
70
+ this.tolerance = original;
71
+ }
72
+ }
15
73
  /**
16
74
  * Build polygons from cut segments
17
75
  * Groups segments by entity and reconstructs closed loops
@@ -29,7 +87,7 @@ export class PolygonBuilder {
29
87
  // Build polygons for each entity - collect arrays for efficient flattening
30
88
  const polygonArrays = [];
31
89
  for (const [key, entitySegments] of byEntity) {
32
- const entityPolygons = this.buildEntityPolygons(entitySegments);
90
+ const entityPolygons = this.withScaleAwareTolerance(entitySegments, () => this.buildEntityPolygons(entitySegments));
33
91
  polygonArrays.push(entityPolygons);
34
92
  }
35
93
  return polygonArrays.flat();
@@ -65,8 +123,7 @@ export class PolygonBuilder {
65
123
  if (colors.size < 2)
66
124
  continue;
67
125
  // Colourless build ⇒ closed-loop path (the combined section is closed).
68
- const base = this.buildColorGroupPolygons(entitySegments, undefined)
69
- .map((p) => ({ ...p, isLayerBase: true }));
126
+ const base = this.withScaleAwareTolerance(entitySegments, () => this.buildColorGroupPolygons(entitySegments, undefined)).map((p) => ({ ...p, isLayerBase: true }));
70
127
  if (base.length > 0)
71
128
  out.push(base);
72
129
  }
@@ -1 +1 @@
1
- {"version":3,"file":"polygon-builder.js","sourceRoot":"","sources":["../src/polygon-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"polygon-builder.js","sourceRoot":"","sources":["../src/polygon-builder.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,21 @@ function pushContourLines(out, profile, points2d, category, plane, visibility) {
61
61
  if (n < 2)
62
62
  return;
63
63
  const m = profile.transform;
64
+ const extrusion = {
65
+ x: profile.extrusionDir[0] * profile.extrusionDepth,
66
+ y: profile.extrusionDir[1] * profile.extrusionDepth,
67
+ z: profile.extrusionDir[2] * profile.extrusionDepth,
68
+ };
69
+ // VIEW depth (issue #2639, see projection-bands.ts) of the NEAREST
70
+ // extrusion extent at a contour point, clamped at the cut plane. Nearest
71
+ // extent rather than the base contour's own depth: a vertical extrusion's
72
+ // footprint outline coincides with its whole prism, and base-face depth
73
+ // would let a slab's own raster hide its own outline.
74
+ const nearestViewDepth = (w) => {
75
+ const base = -signedDepth(w, plane);
76
+ const top = -signedDepth({ x: w.x + extrusion.x, y: w.y + extrusion.y, z: w.z + extrusion.z }, plane);
77
+ return Math.max(0, Math.min(base, top));
78
+ };
64
79
  for (let i = 0; i < n; i++) {
65
80
  const j = (i + 1) % n;
66
81
  const x0 = points2d[i * 2];
@@ -82,7 +97,8 @@ function pushContourLines(out, profile, points2d, category, plane, visibility) {
82
97
  entityId: profile.expressId,
83
98
  ifcType: profile.ifcType,
84
99
  modelIndex: profile.modelIndex,
85
- depth: depthAlong(w0, w1, plane),
100
+ depth: nearestViewDepth(w0),
101
+ depthEnd: nearestViewDepth(w1),
86
102
  });
87
103
  }
88
104
  }
@@ -155,12 +171,4 @@ function getProfileDepthRange(profile, plane) {
155
171
  function axisIndex(axis) {
156
172
  return axis === 'x' ? 0 : axis === 'y' ? 1 : 2;
157
173
  }
158
- /**
159
- * Average flip-adjusted depth of a projected edge along the viewing direction.
160
- * Smaller depth means nearer the viewer, matching the depth-buffer convention
161
- * in HiddenLineClassifier.
162
- */
163
- function depthAlong(w0, w1, plane) {
164
- return (signedDepth(w0, plane) + signedDepth(w1, plane)) / 2;
165
- }
166
174
  //# sourceMappingURL=profile-projector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"profile-projector.js","sourceRoot":"","sources":["../src/profile-projector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profile-projector.js","sourceRoot":"","sources":["../src/profile-projector.ts"],"names":[],"mappings":"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"}
@@ -14,13 +14,20 @@
14
14
  *
15
15
  * `d = flipped ? -(coord - position) : (coord - position)`
16
16
  *
17
- * which is exactly `depthAlong` (profile-projector) / the
18
- * `HiddenLineClassifier` depth-buffer convention, and the mirror of the
19
- * annotation-cull half-space test in `useDrawingGeneration`.
20
- * With `d`:
17
+ * which is the mirror of the annotation-cull half-space test in
18
+ * `useDrawingGeneration`. With `d`:
21
19
  *
22
- * - `d < 0` BELOW the cut (toward the floor, nearer the viewer) VISIBLE
23
- * - `d > 0` ABOVE the cut (overhead, farther from the viewer) OVERHEAD
20
+ * - `d < 0` => BELOW the cut (toward the floor, nearer the viewer) => VISIBLE
21
+ * - `d > 0` => ABOVE the cut (overhead, farther from the viewer) => OVERHEAD
22
+ *
23
+ * # View depth (hidden-line removal, issue #2639)
24
+ * The hidden-line classifier and `DrawingLine.depth` / `depthEnd` carry the
25
+ * VIEW DEPTH `-d`: 0 at the cut plane, increasing into the kept half,
26
+ * smaller means nearer the viewer. The occluder depth raster stores the
27
+ * per-pixel minimum view depth of the kept half (`d` in
28
+ * `[-occluderDepth, 0]`), and a line sample is visible where
29
+ * `lineDepth <= bufferDepth + bias`. Every depth a line producer emits MUST
30
+ * be in this convention or hidden-line removal silently degrades.
24
31
  *
25
32
  * `flipped` only mirrors which half-space is "below"; it never re-derives a
26
33
  * flipped plane normal (the cutter keeps the unflipped normal — see
@@ -1 +1 @@
1
- {"version":3,"file":"projection-bands.d.ts","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,uEAAuE;AACvE,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGzF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAcxE;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAMpF;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,IAAI,EACP,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAIhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAUhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/D,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,WAAW,EAAE,CAgCf"}
1
+ {"version":3,"file":"projection-bands.d.ts","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAM1C,uEAAuE;AACvE,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,UAAU,GACV,UAAU,GACV,MAAM,CAAC;AAEX,uEAAuE;AACvE,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AA+BD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAGzF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAcxE;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAMpF;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAYhB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,IAAI,EACP,CAAC,EAAE,IAAI,EACP,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,cAAc,CAIhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAUhF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC/D,KAAK,EAAE,kBAAkB,EACzB,MAAM,EAAE,oBAAoB,GAC3B,WAAW,EAAE,CA6Cf"}
@@ -148,14 +148,26 @@ export function bandVisibility(band) {
148
148
  * inconsistently (common for ifc-lite roofs/stairs/site).
149
149
  */
150
150
  export function outlineToProjectionLines(outline, meta, plane, depths) {
151
- // The outline path is cardinal-only (the toggle is gated off for custom
152
- // planes), so classify against the cardinal plane position.
151
+ // The outline provider itself is cardinal-only: `axisMin`/`axisMax` are
152
+ // coordinates along the cardinal cut axis, and the contours are in cardinal
153
+ // projection space (the Rust `meshOutline2d` binding knows nothing of
154
+ // custom planes). The generator therefore never calls this with a custom
155
+ // plane active - it bypasses the provider for the plane-aware silhouette
156
+ // path (PR #2644 review). Classify against the cardinal plane position; the
157
+ // custom-plane `distance` is only the best-available offset if a direct
158
+ // caller ever passes one despite that.
153
159
  const pos = plane.customPlane ? plane.customPlane.distance : plane.position;
154
160
  const dMin = signedAxisDepth(outline.axisMin, pos, plane.flipped);
155
161
  const dMax = signedAxisDepth(outline.axisMax, pos, plane.flipped);
156
162
  const visibility = bandVisibility(classifyDepthRange(dMin, dMax, depths));
157
163
  if (visibility === null)
158
164
  return [];
165
+ // Contours are 2D-only, so a scalar depth is all the geometry supports:
166
+ // use the element's nearest in-band extent as VIEW depth (issue #2639).
167
+ // Nearest is the conservative choice, biased toward visible - it prevents
168
+ // an element's own raster from hiding its own footprint outline. Accepted
169
+ // trade-off: base edges of tall elements are slightly under-hidden.
170
+ const depth = Math.max(0, -Math.max(dMin, dMax));
159
171
  const lines = [];
160
172
  for (const ring of outline.contours) {
161
173
  const n = Math.floor(ring.length / 2);
@@ -176,7 +188,7 @@ export function outlineToProjectionLines(outline, meta, plane, depths) {
176
188
  entityId: meta.entityId,
177
189
  ifcType: meta.ifcType,
178
190
  modelIndex: meta.modelIndex,
179
- depth: 0,
191
+ depth,
180
192
  });
181
193
  }
182
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"projection-bands.js","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-bands.js","sourceRoot":"","sources":["../src/projection-bands.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA0C/D,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAsB1D,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,+EAA+E;AAC/E,SAAS,cAAc,CAAC,IAAqB;IAC3C,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,GAAG;YACN,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG;YACN,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG;YACN,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,KAAyB;IACpD,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAgB;IAC/E,MAAM,GAAG,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC7B,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAW,EAAE,KAAyB;IAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;IAClF,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAyB;IAChE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC;QACnC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,GAAG;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACjC,KAAK,GAAG;YACN,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACjC,KAAK,GAAG;YACN,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAW,EAAE,KAAyB;IACzE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC;QAC5B,OAAO,gBAAgB,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,IAAY,EACZ,MAA4B;IAE5B,6CAA6C;IAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEhC,MAAM,cAAc,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACrD,MAAM,eAAe,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC;IAErD,IAAI,cAAc,IAAI,eAAe;QAAE,OAAO,UAAU,CAAC;IACzD,IAAI,cAAc;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,eAAe;QAAE,OAAO,UAAU,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,CAAO,EACP,CAAO,EACP,KAAyB,EACzB,MAA4B;IAE5B,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,OAAO,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAsB,EACtB,IAA+D,EAC/D,KAAyB,EACzB,MAA4B;IAE5B,wEAAwE;IACxE,4EAA4E;IAC5E,sEAAsE;IACtE,yEAAyE;IACzE,yEAAyE;IACzE,4EAA4E;IAC5E,wEAAwE;IACxE,uCAAuC;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC5E,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,cAAc,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1E,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEnC,wEAAwE;IACxE,wEAAwE;IACxE,0EAA0E;IAC1E,0EAA0E;IAC1E,oEAAoE;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjD,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS,CAAC,4DAA4D;QACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC;YACvD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI;gBAAE,SAAS;YACnE,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;gBACxD,QAAQ,EAAE,YAAY;gBACtB,UAAU;gBACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Shared software-rasterizer primitives.
3
+ *
4
+ * Two rasterizers run over the same meshes in the same 2D drawing frame:
5
+ * `hidden-line-raster.ts` (a per-pixel minimum VIEW DEPTH buffer used to
6
+ * classify lines hidden) and `color-raster.ts` (the shaded RGBA underlay for
7
+ * the to-scale PDF export). They write different buffers, so they keep their
8
+ * own inner scan loops, but they MUST agree on how a mesh vertex becomes a
9
+ * world point, how a pixel becomes barycentric weights, and how the projected
10
+ * extent of a mesh set is measured. Those three live here so a fix to one
11
+ * cannot leave the other behind.
12
+ *
13
+ * Projection and depth themselves are NOT re-derived here: callers use
14
+ * `projectPointForPlane` / `signedDepth` from `projection-bands.ts`, the same
15
+ * helpers every line producer uses, which is what makes the raster and the
16
+ * strokes share a frame by construction.
17
+ *
18
+ * Internal module: not exported from the package index.
19
+ */
20
+ import type { MeshData } from '@ifc-lite/geometry';
21
+ import type { Vec3, Bounds2D, SectionPlaneConfig } from './types.js';
22
+ /** A projected vertex in drawing 2D space, carrying its view depth. */
23
+ export interface RasterVertex {
24
+ x: number;
25
+ y: number;
26
+ depth: number;
27
+ }
28
+ /**
29
+ * World-space position of vertex `index`. Positions are stored in the
30
+ * element's local frame (`world = origin + local`) - see section-cutter.ts /
31
+ * edge-extractor.ts - so `origin` must be folded in for depth and projection.
32
+ */
33
+ export declare function getVertex(positions: Float32Array, index: number, origin?: [number, number, number]): Vec3;
34
+ /**
35
+ * 2D bounds of every vertex whose view depth lies in `[0, depthWindow]` (the
36
+ * kept half of the section), optionally grown by `marginFraction` of the
37
+ * larger side on all four sides. Empty (non-finite) when no vertex is in the
38
+ * window - callers must check before dividing by the extent.
39
+ *
40
+ * `marginFraction` exists because the two consumers want different things:
41
+ * the hidden-line raster grows the box slightly so geometry exactly on the
42
+ * edge still rasterizes cleanly, while the colour raster needs bounds that
43
+ * are EXACTLY the projected extent, because that rectangle is what gets
44
+ * placed on the PDF page at an exact millimetre size.
45
+ */
46
+ export declare function computeProjectedBounds(meshes: readonly MeshData[], plane: SectionPlaneConfig, depthWindow: number, marginFraction: number): Bounds2D;
47
+ /**
48
+ * Barycentric weights of `(px, py)` against a 2D triangle. All three weights
49
+ * are >= 0 exactly when the point is inside (or on) the triangle. Returns
50
+ * `{ u: -1, v: -1, w: -1 }` for a degenerate (zero-area) triangle, which no
51
+ * inside test accepts.
52
+ *
53
+ * Orientation-independent (the denominator is a Gram determinant, always
54
+ * positive for a non-degenerate triangle), so a caller may flip an axis when
55
+ * mapping to pixel space without inverting the inside test.
56
+ */
57
+ export declare function barycentricCoords(px: number, py: number, p0: {
58
+ x: number;
59
+ y: number;
60
+ }, p1: {
61
+ x: number;
62
+ y: number;
63
+ }, p2: {
64
+ x: number;
65
+ y: number;
66
+ }): {
67
+ u: number;
68
+ v: number;
69
+ w: number;
70
+ };
71
+ //# sourceMappingURL=raster-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raster-core.d.ts","sourceRoot":"","sources":["../src/raster-core.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrE,uEAAuE;AACvE,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAChC,IAAI,CASN;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,QAAQ,CA8BV;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5B,EAAE,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBrC"}
@@ -0,0 +1,89 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ import { vec3, boundsEmpty, boundsExtendPoint } from './math.js';
5
+ import { signedDepth, projectPointForPlane } from './projection-bands.js';
6
+ /**
7
+ * World-space position of vertex `index`. Positions are stored in the
8
+ * element's local frame (`world = origin + local`) - see section-cutter.ts /
9
+ * edge-extractor.ts - so `origin` must be folded in for depth and projection.
10
+ */
11
+ export function getVertex(positions, index, origin) {
12
+ const base = index * 3;
13
+ return origin
14
+ ? vec3(positions[base] + origin[0], positions[base + 1] + origin[1], positions[base + 2] + origin[2])
15
+ : vec3(positions[base], positions[base + 1], positions[base + 2]);
16
+ }
17
+ /**
18
+ * 2D bounds of every vertex whose view depth lies in `[0, depthWindow]` (the
19
+ * kept half of the section), optionally grown by `marginFraction` of the
20
+ * larger side on all four sides. Empty (non-finite) when no vertex is in the
21
+ * window - callers must check before dividing by the extent.
22
+ *
23
+ * `marginFraction` exists because the two consumers want different things:
24
+ * the hidden-line raster grows the box slightly so geometry exactly on the
25
+ * edge still rasterizes cleanly, while the colour raster needs bounds that
26
+ * are EXACTLY the projected extent, because that rectangle is what gets
27
+ * placed on the PDF page at an exact millimetre size.
28
+ */
29
+ export function computeProjectedBounds(meshes, plane, depthWindow, marginFraction) {
30
+ let bounds = boundsEmpty();
31
+ for (const mesh of meshes) {
32
+ const { positions, origin } = mesh;
33
+ const vertexCount = positions.length / 3;
34
+ for (let i = 0; i < vertexCount; i++) {
35
+ const v = getVertex(positions, i, origin);
36
+ const viewDepth = -signedDepth(v, plane);
37
+ if (viewDepth >= 0 && viewDepth <= depthWindow) {
38
+ bounds = boundsExtendPoint(bounds, projectPointForPlane(v, plane));
39
+ }
40
+ }
41
+ }
42
+ const width = bounds.max.x - bounds.min.x;
43
+ const height = bounds.max.y - bounds.min.y;
44
+ if (!Number.isFinite(width) || !Number.isFinite(height)) {
45
+ return bounds; // empty: caller decides how to degrade
46
+ }
47
+ if (marginFraction > 0) {
48
+ const margin = Math.max(width, height) * marginFraction;
49
+ bounds.min.x -= margin;
50
+ bounds.min.y -= margin;
51
+ bounds.max.x += margin;
52
+ bounds.max.y += margin;
53
+ }
54
+ return bounds;
55
+ }
56
+ /**
57
+ * Barycentric weights of `(px, py)` against a 2D triangle. All three weights
58
+ * are >= 0 exactly when the point is inside (or on) the triangle. Returns
59
+ * `{ u: -1, v: -1, w: -1 }` for a degenerate (zero-area) triangle, which no
60
+ * inside test accepts.
61
+ *
62
+ * Orientation-independent (the denominator is a Gram determinant, always
63
+ * positive for a non-degenerate triangle), so a caller may flip an axis when
64
+ * mapping to pixel space without inverting the inside test.
65
+ */
66
+ export function barycentricCoords(px, py, p0, p1, p2) {
67
+ const v0x = p1.x - p0.x;
68
+ const v0y = p1.y - p0.y;
69
+ const v1x = p2.x - p0.x;
70
+ const v1y = p2.y - p0.y;
71
+ const v2x = px - p0.x;
72
+ const v2y = py - p0.y;
73
+ const dot00 = v0x * v0x + v0y * v0y;
74
+ const dot01 = v0x * v1x + v0y * v1y;
75
+ const dot02 = v0x * v2x + v0y * v2y;
76
+ const dot11 = v1x * v1x + v1y * v1y;
77
+ const dot12 = v1x * v2x + v1y * v2y;
78
+ const denom = dot00 * dot11 - dot01 * dot01;
79
+ // Handle degenerate triangles (zero area) by returning invalid coordinates
80
+ if (Math.abs(denom) < 1e-10) {
81
+ return { u: -1, v: -1, w: -1 };
82
+ }
83
+ const invDenom = 1 / denom;
84
+ const v = (dot11 * dot02 - dot01 * dot12) * invDenom;
85
+ const w = (dot00 * dot12 - dot01 * dot02) * invDenom;
86
+ const u = 1 - v - w;
87
+ return { u, v, w };
88
+ }
89
+ //# sourceMappingURL=raster-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raster-core.js","sourceRoot":"","sources":["../src/raster-core.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,14 @@ export declare class SectionCutter {
25
25
  * Get vertex from positions array
26
26
  */
27
27
  private getVertex;
28
+ /**
29
+ * Max |coordinate| of a triangle's LOCAL (pre-origin) vertex positions —
30
+ * the `Float32Array` values exactly as stored, before the per-mesh RTC
31
+ * `origin` translation. This is the quantity float32 rounding noise
32
+ * actually scales with; deliberately does NOT take `origin` as a
33
+ * parameter so a future edit can't accidentally fold it back in.
34
+ */
35
+ private localMaxCoord;
28
36
  /**
29
37
  * Intersect a triangle with the section plane
30
38
  * Returns the two intersection points, or null if no intersection
@@ -1 +1 @@
1
- {"version":3,"file":"section-cutter.d.ts","sourceRoot":"","sources":["../src/section-cutter.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAGV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAiBpB,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAAoC;gBAE3C,MAAM,EAAE,kBAAkB;IA2BtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB;IAqC/C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa;IAqE5C;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA6C9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAwB9B;AAMD,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}
1
+ {"version":3,"file":"section-cutter.d.ts","sourceRoot":"","sources":["../src/section-cutter.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAGV,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAiBpB,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAO;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAAoC;gBAE3C,MAAM,EAAE,kBAAkB;IA2BtC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB;IAqC/C;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa;IA+F5C;;OAEG;IACH,OAAO,CAAC,SAAS;IAejB;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAcrB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA8C9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;CAyB9B;AAMD,MAAM,WAAW,6BAA6B;IAC5C,iDAAiD;IACjD,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,gBAAgB,CAAC,CA0D3B"}