Skip to content

Commit 9602b7c

Browse files
committed
Update __init__.py
Speed up rectangle intersection check (issue #4527): avoid calculating an intersection rectangle. Address #4462: Support single int as argument.
1 parent 5e66dd1 commit 9602b7c

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

src/__init__.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3930,9 +3930,10 @@ def delete_pages(self, *args, **kw):
39303930
numbers = tuple(range(f, t + 1))
39313931
else:
39323932
r = args[0]
3933-
if type(r) not in (int, range, list, tuple):
3934-
raise ValueError("need int or sequence if one argument")
3935-
numbers = tuple(r)
3933+
if type(r) is int:
3934+
numbers = (r,)
3935+
else:
3936+
numbers = tuple(r)
39363937

39373938
numbers = list(map(int, set(numbers))) # ensure unique integers
39383939
if numbers == []:
@@ -11401,13 +11402,17 @@ def intersect(self, r):
1140111402

1140211403
def intersects(self, x):
1140311404
"""Check if intersection with rectangle x is not empty."""
11404-
r1 = Rect(x)
11405-
if self.is_empty or self.is_infinite or r1.is_empty or r1.is_infinite:
11406-
return False
11407-
r = Rect(self)
11408-
if r.intersect(r1).is_empty:
11409-
return False
11410-
return True
11405+
rect2 = Rect(x)
11406+
return (1
11407+
and not self.is_empty
11408+
and not self.is_infinite
11409+
and not rect2.is_empty
11410+
and not rect2.is_infinite
11411+
and self.x0 < rect2.x1
11412+
and rect2.x0 < self.x1
11413+
and self.y0 < rect2.y1
11414+
and rect2.y0 < self.y1
11415+
)
1141111416

1141211417
@property
1141311418
def is_empty(self):

0 commit comments

Comments
 (0)