Refactoring

This commit is contained in:
Matthias Bisping 2023-01-24 10:49:38 +01:00
parent 3772ca021a
commit c5ba489931

View File

@ -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]: