diff --git a/test/fixtures/page_generation/page.py b/test/fixtures/page_generation/page.py index 3a15d3d..56a229c 100644 --- a/test/fixtures/page_generation/page.py +++ b/test/fixtures/page_generation/page.py @@ -1199,6 +1199,10 @@ class PagePartitioner(abc.ABC): def generate_content_boxes(self, box: Rectangle, depth=0): raise NotImplementedError + @abc.abstractmethod + def generate_child_boxes(self, box: Rectangle) -> Tuple[Rectangle, Rectangle]: + pass + def recurse(self, depth): return random.random() <= self.recursion_probability(depth) @@ -1214,20 +1218,19 @@ class RandomPagePartitioner(PagePartitioner): if depth >= self.max_recursion_depth: yield box else: - child_boxes = generate_random_child_boxes(box, self.recursive_margin_percentage) + child_boxes = self.generate_child_boxes(box) if self.recurse(depth): yield from (self.generate_content_boxes(b, depth + 1) for b in child_boxes) else: yield child_boxes + def generate_child_boxes(self, box: Rectangle) -> Tuple[Rectangle, Rectangle]: + axis = random.choice(["x", "y"]) -def generate_random_child_boxes(box: Rectangle, margin_percentage) -> Tuple[Rectangle, Rectangle]: - axis = random.choice(["x", "y"]) - - edge_anchor_point, edge_length = (box.x1, box.width) if axis == "x" else (box.y1, box.height) - split_coordinate = random.uniform(0.3, 0.7) * edge_length + edge_anchor_point - child_boxes = get_child_boxes(box, split_coordinate, axis, margin_percentage) - return child_boxes + edge_anchor_point, edge_length = (box.x1, box.width) if axis == "x" else (box.y1, box.height) + split_coordinate = random.uniform(0.3, 0.7) * edge_length + edge_anchor_point + child_boxes = get_child_boxes(box, split_coordinate, axis, self.recursive_margin_percentage) + return child_boxes def get_child_boxes(box: Rectangle, split_coordinate, axis, margin_percentage) -> Tuple[Rectangle, Rectangle]: