diff --git a/src/helpers/boolean-difference.ts b/src/helpers/boolean-difference.ts
index 2ada0345..75ad4f65 100644
--- a/src/helpers/boolean-difference.ts
+++ b/src/helpers/boolean-difference.ts
@@ -30,6 +30,79 @@ interface FootprintElement {
route?: Array<{ x: number; y: number }>
points?: Array<{ x: number; y: number }>
shape?: string
+ corner_radius?: number | null
+ radius?: number
+}
+
+function createRoundedRectPolygon(
+ x: number,
+ y: number,
+ width: number,
+ height: number,
+ cornerRadius: number,
+): Flatten.Polygon {
+ const halfWidth = width / 2
+ const halfHeight = height / 2
+ const radius = Math.min(Math.max(cornerRadius, 0), halfWidth, halfHeight)
+
+ if (radius === 0) {
+ return new Flatten.Polygon([
+ [x - halfWidth, y - halfHeight],
+ [x + halfWidth, y - halfHeight],
+ [x + halfWidth, y + halfHeight],
+ [x - halfWidth, y + halfHeight],
+ ])
+ }
+
+ const left = x - halfWidth
+ const right = x + halfWidth
+ const bottom = y - halfHeight
+ const top = y + halfHeight
+ const point = (px: number, py: number) => new Flatten.Point(px, py)
+
+ return new Flatten.Polygon([
+ new Flatten.Segment(
+ point(left + radius, bottom),
+ point(right - radius, bottom),
+ ),
+ new Flatten.Arc(
+ point(right - radius, bottom + radius),
+ radius,
+ -Math.PI / 2,
+ 0,
+ true,
+ ),
+ new Flatten.Segment(
+ point(right, bottom + radius),
+ point(right, top - radius),
+ ),
+ new Flatten.Arc(
+ point(right - radius, top - radius),
+ radius,
+ 0,
+ Math.PI / 2,
+ true,
+ ),
+ new Flatten.Segment(point(right - radius, top), point(left + radius, top)),
+ new Flatten.Arc(
+ point(left + radius, top - radius),
+ radius,
+ Math.PI / 2,
+ Math.PI,
+ true,
+ ),
+ new Flatten.Segment(
+ point(left, top - radius),
+ point(left, bottom + radius),
+ ),
+ new Flatten.Arc(
+ point(left + radius, bottom + radius),
+ radius,
+ Math.PI,
+ (3 * Math.PI) / 2,
+ true,
+ ),
+ ])
}
/**
@@ -39,33 +112,47 @@ function elementToPolygon(element: FootprintElement): Flatten.Polygon | null {
try {
if (
element.type === "pcb_smtpad" &&
- element.width &&
- element.height &&
+ element.shape === "circle" &&
element.x !== undefined &&
element.y !== undefined
) {
- // Create rectangular pad polygon
- const halfWidth = element.width / 2
- const halfHeight = element.height / 2
- const points = [
- new Flatten.Point(element.x - halfWidth, element.y - halfHeight),
- new Flatten.Point(element.x + halfWidth, element.y - halfHeight),
- new Flatten.Point(element.x + halfWidth, element.y + halfHeight),
- new Flatten.Point(element.x - halfWidth, element.y + halfHeight),
- ]
- return new Flatten.Polygon(points)
+ const radius =
+ element.radius ?? Math.min(element.width ?? 0, element.height ?? 0) / 2
+
+ return radius > 0
+ ? new Flatten.Polygon(
+ new Flatten.Circle(new Flatten.Point(element.x, element.y), radius),
+ )
+ : null
}
if (
element.type === "pcb_smtpad" &&
+ element.shape === "polygon" &&
element.points &&
element.points.length > 0
) {
- // Handle polygon-shaped SMT pads
const points = element.points.map((p) => new Flatten.Point(p.x, p.y))
return new Flatten.Polygon(points)
}
+ if (
+ element.type === "pcb_smtpad" &&
+ (element.shape === "rect" || element.shape === undefined) &&
+ element.width &&
+ element.height &&
+ element.x !== undefined &&
+ element.y !== undefined
+ ) {
+ return createRoundedRectPolygon(
+ element.x,
+ element.y,
+ element.width,
+ element.height,
+ element.corner_radius ?? 0,
+ )
+ }
+
if (
element.type === "pcb_plated_hole" &&
element.outer_diameter &&
diff --git a/tests/kicad-parity/__snapshots__/0402_metric_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/0402_metric_parity._boolean_difference.snap.svg
index c9b2eec3..0bfe390e 100644
--- a/tests/kicad-parity/__snapshots__/0402_metric_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/0402_metric_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/0402_nonpolarized_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/0402_nonpolarized_parity._boolean_difference.snap.svg
index 29d89e32..7decf0ab 100644
--- a/tests/kicad-parity/__snapshots__/0402_nonpolarized_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/0402_nonpolarized_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/0402_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/0402_parity._boolean_difference.snap.svg
index a4b5fe14..45cdc53b 100644
--- a/tests/kicad-parity/__snapshots__/0402_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/0402_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/0603_metric_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/0603_metric_parity._boolean_difference.snap.svg
index a604e166..21056171 100644
--- a/tests/kicad-parity/__snapshots__/0603_metric_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/0603_metric_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/0603_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/0603_parity._boolean_difference.snap.svg
index d0092cf1..c81b2fa6 100644
--- a/tests/kicad-parity/__snapshots__/0603_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/0603_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/0805_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/0805_parity._boolean_difference.snap.svg
index 45d08df7..22adafa1 100644
--- a/tests/kicad-parity/__snapshots__/0805_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/0805_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/1206_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/1206_parity._boolean_difference.snap.svg
index 80aa2d0e..604d153f 100644
--- a/tests/kicad-parity/__snapshots__/1206_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/1206_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/1210_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/1210_parity._boolean_difference.snap.svg
index 21b48402..6ec701ab 100644
--- a/tests/kicad-parity/__snapshots__/1210_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/1210_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/1812_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/1812_parity._boolean_difference.snap.svg
index 83b64736..4862cb50 100644
--- a/tests/kicad-parity/__snapshots__/1812_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/1812_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/2010_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/2010_parity._boolean_difference.snap.svg
index 1cab5497..6834c61d 100644
--- a/tests/kicad-parity/__snapshots__/2010_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/2010_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/2512_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/2512_parity._boolean_difference.snap.svg
index ed33a252..8e1eeb0a 100644
--- a/tests/kicad-parity/__snapshots__/2512_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/2512_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm_boolean_difference.snap.svg
index f91c57f3..366bc21e 100644
--- a/tests/kicad-parity/__snapshots__/VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/VSON-10-1EP_3x3mm_P0.5mm_EP1.2x2mm_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/VSON-8-1EP_3x3mm_P0.65mm_EP1.65x2.4mm_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/VSON-8-1EP_3x3mm_P0.65mm_EP1.65x2.4mm_boolean_difference.snap.svg
index b873927b..890a44be 100644
--- a/tests/kicad-parity/__snapshots__/VSON-8-1EP_3x3mm_P0.65mm_EP1.65x2.4mm_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/VSON-8-1EP_3x3mm_P0.65mm_EP1.65x2.4mm_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/VSONP-8-1EP_5x6_P1.27mm_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/VSONP-8-1EP_5x6_P1.27mm_boolean_difference.snap.svg
index 477785d4..6799e8af 100644
--- a/tests/kicad-parity/__snapshots__/VSONP-8-1EP_5x6_P1.27mm_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/VSONP-8-1EP_5x6_P1.27mm_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/bga165_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/bga165_boolean_difference.snap.svg
index d2ae2b02..78b77378 100644
--- a/tests/kicad-parity/__snapshots__/bga165_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/bga165_boolean_difference.snap.svg
@@ -1 +1,166 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/lqfp100_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/lqfp100_boolean_difference.snap.svg
index 7f596f57..7e16472d 100644
--- a/tests/kicad-parity/__snapshots__/lqfp100_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/lqfp100_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/lqfp64_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/lqfp64_boolean_difference.snap.svg
index 5401fb93..fba55fc1 100644
--- a/tests/kicad-parity/__snapshots__/lqfp64_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/lqfp64_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/lqfp64_pw0.3_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/lqfp64_pw0.3_boolean_difference.snap.svg
index 949933ef..cc19cc18 100644
--- a/tests/kicad-parity/__snapshots__/lqfp64_pw0.3_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/lqfp64_pw0.3_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/melf_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/melf_boolean_difference.snap.svg
index 851151a3..1a1cbff2 100644
--- a/tests/kicad-parity/__snapshots__/melf_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/melf_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/micromelf_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/micromelf_boolean_difference.snap.svg
index 170a495d..89fc6c5c 100644
--- a/tests/kicad-parity/__snapshots__/micromelf_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/micromelf_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/minimelf_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/minimelf_boolean_difference.snap.svg
index e45220d6..d673bed9 100644
--- a/tests/kicad-parity/__snapshots__/minimelf_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/minimelf_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/msop8_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/msop8_boolean_difference.snap.svg
index 1de4f10e..ded27895 100644
--- a/tests/kicad-parity/__snapshots__/msop8_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/msop8_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/qfn32_thermalpad3.1x3.1mm_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/qfn32_thermalpad3.1x3.1mm_boolean_difference.snap.svg
index 6c5d0470..197707d2 100644
--- a/tests/kicad-parity/__snapshots__/qfn32_thermalpad3.1x3.1mm_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/qfn32_thermalpad3.1x3.1mm_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/res0402_parity._boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/res0402_parity._boolean_difference.snap.svg
index 6cbb8d75..c0afcde5 100644
--- a/tests/kicad-parity/__snapshots__/res0402_parity._boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/res0402_parity._boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sma_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sma_boolean_difference.snap.svg
index 4c9b03b6..47095591 100644
--- a/tests/kicad-parity/__snapshots__/sma_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sma_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/smb_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/smb_boolean_difference.snap.svg
index 3faea8fc..22cc5829 100644
--- a/tests/kicad-parity/__snapshots__/smb_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/smb_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/smc_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/smc_boolean_difference.snap.svg
index 4b68c78b..3add14ba 100644
--- a/tests/kicad-parity/__snapshots__/smc_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/smc_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod110_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod110_boolean_difference.snap.svg
index 36fa902a..38693bae 100644
--- a/tests/kicad-parity/__snapshots__/sod110_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod110_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod123_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod123_boolean_difference.snap.svg
index 750d12bd..fd6224fa 100644
--- a/tests/kicad-parity/__snapshots__/sod123_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod123_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod123f_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod123f_boolean_difference.snap.svg
index 95aaa404..9de103b1 100644
--- a/tests/kicad-parity/__snapshots__/sod123f_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod123f_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod128_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod128_boolean_difference.snap.svg
index 57f2b158..6eb8a313 100644
--- a/tests/kicad-parity/__snapshots__/sod128_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod128_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod323_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod323_boolean_difference.snap.svg
index 7ffb2388..822e44ef 100644
--- a/tests/kicad-parity/__snapshots__/sod323_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod323_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod323f_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod323f_boolean_difference.snap.svg
index b899bcb2..f7fae5b7 100644
--- a/tests/kicad-parity/__snapshots__/sod323f_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod323f_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod523_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod523_boolean_difference.snap.svg
index fb32d509..d7476583 100644
--- a/tests/kicad-parity/__snapshots__/sod523_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod523_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod882_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod882_boolean_difference.snap.svg
index 5319319f..cc8b0a65 100644
--- a/tests/kicad-parity/__snapshots__/sod882_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod882_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod882d_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod882d_boolean_difference.snap.svg
index 37dc7e96..069db6fa 100644
--- a/tests/kicad-parity/__snapshots__/sod882d_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod882d_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sod923_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sod923_boolean_difference.snap.svg
index ccb07534..4cf20459 100644
--- a/tests/kicad-parity/__snapshots__/sod923_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sod923_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/soic20_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/soic20_boolean_difference.snap.svg
index 22ba7c0a..358509b4 100644
--- a/tests/kicad-parity/__snapshots__/soic20_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/soic20_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/soic24_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/soic24_boolean_difference.snap.svg
index 9efb378a..c76ef09d 100644
--- a/tests/kicad-parity/__snapshots__/soic24_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/soic24_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/soic8_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/soic8_boolean_difference.snap.svg
index 8b688988..f5cf2944 100644
--- a/tests/kicad-parity/__snapshots__/soic8_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/soic8_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/son8_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/son8_boolean_difference.snap.svg
index 42c92f88..39836703 100644
--- a/tests/kicad-parity/__snapshots__/son8_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/son8_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sop-8_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sop-8_boolean_difference.snap.svg
index eea12f8f..77c5ed48 100644
--- a/tests/kicad-parity/__snapshots__/sop-8_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sop-8_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot-723_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot-723_boolean_difference.snap.svg
index e3b8c2ec..e45af8b5 100644
--- a/tests/kicad-parity/__snapshots__/sot-723_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot-723_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot-963_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot-963_boolean_difference.snap.svg
index b01e157e..6659cd28 100644
--- a/tests/kicad-parity/__snapshots__/sot-963_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot-963_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot223_5_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot223_5_boolean_difference.snap.svg
index bde21ac3..4c6fe84f 100644
--- a/tests/kicad-parity/__snapshots__/sot223_5_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot223_5_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot23_5_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot23_5_boolean_difference.snap.svg
index 8fd183fb..83b793d0 100644
--- a/tests/kicad-parity/__snapshots__/sot23_5_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot23_5_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot23_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot23_boolean_difference.snap.svg
index 95c3ba4b..e8c6dfa7 100644
--- a/tests/kicad-parity/__snapshots__/sot23_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot23_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot23w_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot23w_boolean_difference.snap.svg
index 5223ab19..6038904c 100644
--- a/tests/kicad-parity/__snapshots__/sot23w_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot23w_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot323_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot323_boolean_difference.snap.svg
index 2935ca2a..41d21fa5 100644
--- a/tests/kicad-parity/__snapshots__/sot323_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot323_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot343_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot343_boolean_difference.snap.svg
index 9216e462..0360662b 100644
--- a/tests/kicad-parity/__snapshots__/sot343_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot343_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot363_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot363_boolean_difference.snap.svg
index 173f41da..d9bcc705 100644
--- a/tests/kicad-parity/__snapshots__/sot363_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot363_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot457_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot457_boolean_difference.snap.svg
index 0c4a1ed6..f553c531 100644
--- a/tests/kicad-parity/__snapshots__/sot457_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot457_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot563_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot563_boolean_difference.snap.svg
index cfd9e409..82ff48d3 100644
--- a/tests/kicad-parity/__snapshots__/sot563_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot563_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot6_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot6_boolean_difference.snap.svg
index aecbd857..7db453af 100644
--- a/tests/kicad-parity/__snapshots__/sot6_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot6_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot886_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot886_boolean_difference.snap.svg
index 4c985d30..7d5910eb 100644
--- a/tests/kicad-parity/__snapshots__/sot886_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot886_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot89_5_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot89_5_boolean_difference.snap.svg
index e517420e..2101dd3b 100644
--- a/tests/kicad-parity/__snapshots__/sot89_5_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot89_5_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/sot89_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/sot89_boolean_difference.snap.svg
index 801bbdd0..0a191d1e 100644
--- a/tests/kicad-parity/__snapshots__/sot89_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/sot89_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/tqfp100_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/tqfp100_boolean_difference.snap.svg
index a7b3136e..23743012 100644
--- a/tests/kicad-parity/__snapshots__/tqfp100_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/tqfp100_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/tqfp32_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/tqfp32_boolean_difference.snap.svg
index b0cd0ce6..f548eb99 100644
--- a/tests/kicad-parity/__snapshots__/tqfp32_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/tqfp32_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/tqfp48_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/tqfp48_boolean_difference.snap.svg
index d6dd83bd..c32b76bc 100644
--- a/tests/kicad-parity/__snapshots__/tqfp48_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/tqfp48_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/tqfp64_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/tqfp64_boolean_difference.snap.svg
index 87ae5927..5475d40c 100644
--- a/tests/kicad-parity/__snapshots__/tqfp64_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/tqfp64_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/tssop10_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/tssop10_boolean_difference.snap.svg
index 4ff394dc..891704e8 100644
--- a/tests/kicad-parity/__snapshots__/tssop10_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/tssop10_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/__snapshots__/vssop8_boolean_difference.snap.svg b/tests/kicad-parity/__snapshots__/vssop8_boolean_difference.snap.svg
index 5f7d1eaf..350de527 100644
--- a/tests/kicad-parity/__snapshots__/vssop8_boolean_difference.snap.svg
+++ b/tests/kicad-parity/__snapshots__/vssop8_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/melf_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/melf_boolean_difference.snap.svg
index 851151a3..1a1cbff2 100644
--- a/tests/kicad-parity/diodes/__snapshots__/melf_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/melf_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/micromelf_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/micromelf_boolean_difference.snap.svg
index 170a495d..89fc6c5c 100644
--- a/tests/kicad-parity/diodes/__snapshots__/micromelf_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/micromelf_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/minimelf_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/minimelf_boolean_difference.snap.svg
index e45220d6..d673bed9 100644
--- a/tests/kicad-parity/diodes/__snapshots__/minimelf_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/minimelf_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sma_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sma_boolean_difference.snap.svg
index 4c9b03b6..47095591 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sma_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sma_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/smb_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/smb_boolean_difference.snap.svg
index 3faea8fc..22cc5829 100644
--- a/tests/kicad-parity/diodes/__snapshots__/smb_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/smb_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/smc_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/smc_boolean_difference.snap.svg
index 4b68c78b..3add14ba 100644
--- a/tests/kicad-parity/diodes/__snapshots__/smc_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/smc_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod110_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod110_boolean_difference.snap.svg
index 36fa902a..38693bae 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod110_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod110_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod123_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod123_boolean_difference.snap.svg
index 750d12bd..fd6224fa 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod123_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod123_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod123f_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod123f_boolean_difference.snap.svg
index 95aaa404..9de103b1 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod123f_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod123f_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod128_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod128_boolean_difference.snap.svg
index 57f2b158..6eb8a313 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod128_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod128_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod323_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod323_boolean_difference.snap.svg
index 7ffb2388..822e44ef 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod323_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod323_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod323f_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod323f_boolean_difference.snap.svg
index b899bcb2..f7fae5b7 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod323f_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod323f_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod523_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod523_boolean_difference.snap.svg
index fb32d509..d7476583 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod523_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod523_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod882_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod882_boolean_difference.snap.svg
index 5319319f..cc8b0a65 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod882_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod882_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod882d_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod882d_boolean_difference.snap.svg
index 37dc7e96..069db6fa 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod882d_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod882d_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/tests/kicad-parity/diodes/__snapshots__/sod923_boolean_difference.snap.svg b/tests/kicad-parity/diodes/__snapshots__/sod923_boolean_difference.snap.svg
index ccb07534..4cf20459 100644
--- a/tests/kicad-parity/diodes/__snapshots__/sod923_boolean_difference.snap.svg
+++ b/tests/kicad-parity/diodes/__snapshots__/sod923_boolean_difference.snap.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file