Tweak content selecton logic

This commit is contained in:
Matthias Bisping 2023-01-18 16:17:20 +01:00
parent 9c7c5e315f
commit 5e51fd1d10

View File

@ -460,13 +460,13 @@ class RandomContentRectangle(ContentRectangle):
class Size(Enum):
SMALL = 100
MEDIUM = 500
LARGE = 2500
SMALL = 1000
MEDIUM = 5000
LARGE = 10000
def get_size_class(rectangle: Rectangle):
size = sqrt(area(rectangle))
size = get_size(area(rectangle))
if size < Size.SMALL.value:
return Size.SMALL
elif size < Size.LARGE.value:
@ -475,6 +475,11 @@ def get_size_class(rectangle: Rectangle):
return Size.LARGE
def get_size(rectangle: Rectangle):
size = sqrt(area(rectangle))
return size
class RecursiveRandomTable(RandomContentRectangle):
def __init__(self, x1, y1, x2, y2, seed=None, border_width=3):
super().__init__(x1, y1, x2, y2, seed=seed)
@ -495,21 +500,33 @@ class RecursiveRandomTable(RandomContentRectangle):
def generate_cells_with_content(self):
for cell in self.generate_table():
self.draw_single_cell_borders(cell)
inner_region = cell # shrink_rectangle(cell, 0.1)
choice = random.choice(["text", "plot", "recurse", "plain_table"])
size_class = get_size_class(inner_region)
def inner(cell):
if choice == "text" and size_class is Size.SMALL:
cell.content = generate_random_text_block(inner_region, n_sentences=1).content
elif choice == "plot" and size_class in (Size.MEDIUM, Size.LARGE):
cell.content = generate_random_plot(inner_region).content
elif choice == "plain_table" and size_class in (Size.MEDIUM, Size.LARGE):
cell.content = generate_random_table(inner_region).content
elif choice == "recurse" and size_class is Size.LARGE:
cell.content = generate_recursive_random_table(inner_region, border_width=0).content
else: # Leave blank
pass
inner_region = shrink_rectangle(cell, 0.1)
choice = random.choice(["text", "plot", "recurse", "plain_table"])
size = get_size(inner_region)
if size <= Size.LARGE.value:
if choice == "recurse":
return generate_recursive_random_table(cell, border_width=0)
elif choice == "plot" and is_square_like(cell):
return generate_random_plot(cell)
else:
return generate_random_table(cell)
elif size <= Size.MEDIUM.value:
if choice == "plain_table":
return generate_random_table(cell)
elif choice == "text":
return generate_random_text_block(inner_region)
else:
return generate_random_text_block(inner_region)
elif size <= Size.SMALL.value:
if choice == "text":
return generate_random_text_block(inner_region)
return cell
cell.content = inner(cell).content
assert cell.content.mode == "RGBA"