Skip to content

Commit 3660dd6

Browse files
committed
fix: only show objects from the image page
1 parent f10b810 commit 3660dd6

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/paves/image.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -472,18 +472,17 @@ def _make_boxes(
472472
return obj
473473

474474

475-
def _render(
475+
def _getpage(
476476
obj: Boxable,
477477
page: Union[Page, None] = None,
478-
dpi: int = 72,
479478
) -> Image.Image:
480479
if page is None:
481480
if not hasattr(obj, "page"):
482481
raise ValueError("Must explicitly specify page or image to show rectangles")
483482
page = cast(HasPage, obj).page
484483
if page is None:
485484
raise ValueError("No page found in object: %r" % (obj,))
486-
return show(page, dpi=dpi)
485+
return page
487486

488487

489488
Color = Union[str, Tuple[int, int, int], Tuple[float, float, float]]
@@ -581,11 +580,15 @@ def box(
581580
font = ImageFont.load_default(label_size * scale)
582581
label_margin *= scale
583582
make_color = color_maker(color)
583+
image_page: Union[Page, None] = None
584584
for obj in _make_boxes(objs):
585585
if obj is None:
586586
continue
587+
if image_page is not None and obj.page != image_page:
588+
break
587589
if image is None:
588-
image = _render(obj, page, dpi)
590+
image_page = _getpage(obj, page)
591+
image = show(image_page, dpi)
589592
try:
590593
left, top, right, bottom = (x * scale for x in boxfunc(obj))
591594
except ValueError: # it has no content and no box
@@ -645,11 +648,15 @@ def mark(
645648
alpha = min(255, int(transparency * 255))
646649
label_margin *= scale
647650
make_color = color_maker(color)
651+
image_page: Union[Page, None] = None
648652
for obj in _make_boxes(objs):
649653
if obj is None:
650654
continue
655+
if image_page is not None and obj.page != image_page:
656+
break
651657
if image is None:
652-
image = _render(obj, page, dpi)
658+
image_page = _getpage(obj, page)
659+
image = show(image_page, dpi)
653660
if overlay is None:
654661
overlay = Image.new("RGB", image.size)
655662
if mask is None:

0 commit comments

Comments
 (0)