From ca6c819ca8ee6dbce04c50a1d1e9f6ed63e07880 Mon Sep 17 00:00:00 2001 From: Hamilton Kibbe Date: Tue, 14 Nov 2017 09:11:49 -0500 Subject: Add test that reproduces #77 --- gerber/tests/test_primitives.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'gerber') diff --git a/gerber/tests/test_primitives.py b/gerber/tests/test_primitives.py index 2fe5a4b..b932297 100644 --- a/gerber/tests/test_primitives.py +++ b/gerber/tests/test_primitives.py @@ -1343,3 +1343,17 @@ def test_drill_equality(): assert_equal(d, d1) d1 = Drill((2.54, 25.4), 254.2) assert_not_equal(d, d1) + + +def test_slot_bounds(): + """ Test Slot primitive bounding box calculation + """ + cases = [((0, 0), (1, 1), ((-1, 2), (-1, 2))), + ((-1, -1), (1, 1), ((-2, 2), (-2, 2))), + ((1, 1), (-1, -1), ((-2, 2), (-2, 2))), + ((-1, 1), (1, -1), ((-2, 2), (-2, 2))), ] + + for start, end, expected in cases: + s = Slot(start, end, 2.0) + assert_equal(s.bounding_box, expected) + -- cgit From c2ed707b52e35d047daf5b6346e071d695861895 Mon Sep 17 00:00:00 2001 From: Hamilton Kibbe Date: Tue, 14 Nov 2017 09:15:06 -0500 Subject: Fix bounding box calculation for Slot primitives per #77 --- gerber/primitives.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'gerber') diff --git a/gerber/primitives.py b/gerber/primitives.py index a031199..b24b6c3 100644 --- a/gerber/primitives.py +++ b/gerber/primitives.py @@ -1669,9 +1669,12 @@ class Slot(Primitive): @property def bounding_box(self): if self._bounding_box is None: - ll = tuple([c - self.diameter / 2. for c in self.position]) - ur = tuple([c + self.diameter / 2. for c in self.position]) - self._bounding_box = ((ll[0], ur[0]), (ll[1], ur[1])) + radius = self.diameter / 2. + min_x = min(self.start[0], self.end[0]) - radius + max_x = max(self.start[0], self.end[0]) + radius + min_y = min(self.start[1], self.end[1]) - radius + max_y = max(self.start[1], self.end[1]) + radius + self._bounding_box = ((min_x, max_x), (min_y, max_y)) return self._bounding_box def offset(self, x_offset=0, y_offset=0): -- cgit