|
|
""" |
|
|
Generate 12 meaningful panels in 2x2 grid format (3 pages Γ 4 panels each) |
|
|
""" |
|
|
|
|
|
from backend.class_def import panel, Page |
|
|
|
|
|
def generate_12_panels_2x2_grid(frame_files, bubbles): |
|
|
"""Generate 12 panels across 3 pages, each with 2x2 grid""" |
|
|
|
|
|
pages = [] |
|
|
num_frames = min(12, len(frame_files)) |
|
|
panels_per_page = 4 |
|
|
|
|
|
print(f"π Generating {num_frames} panels in 2x2 grid format") |
|
|
print(f"π Creating {(num_frames + 3) // 4} pages") |
|
|
|
|
|
frame_idx = 0 |
|
|
bubble_idx = 0 |
|
|
|
|
|
|
|
|
while frame_idx < num_frames: |
|
|
page_panels = [] |
|
|
page_bubbles = [] |
|
|
|
|
|
|
|
|
for i in range(panels_per_page): |
|
|
if frame_idx < num_frames: |
|
|
|
|
|
panel_obj = panel( |
|
|
image=frame_files[frame_idx], |
|
|
row_span=6, |
|
|
col_span=6 |
|
|
) |
|
|
page_panels.append(panel_obj) |
|
|
|
|
|
|
|
|
if bubble_idx < len(bubbles): |
|
|
page_bubbles.append(bubbles[bubble_idx]) |
|
|
bubble_idx += 1 |
|
|
|
|
|
frame_idx += 1 |
|
|
|
|
|
|
|
|
arrangement = ['0101', '0101', '2323', '2323'] |
|
|
|
|
|
|
|
|
page = Page( |
|
|
panels=page_panels, |
|
|
bubbles=page_bubbles, |
|
|
panel_arrangement=arrangement |
|
|
) |
|
|
pages.append(page) |
|
|
|
|
|
print(f" β Page {len(pages)}: {len(page_panels)} panels") |
|
|
|
|
|
return pages |
|
|
|
|
|
def extract_12_meaningful_frames(all_frames, all_bubbles): |
|
|
"""Extract only the 12 most meaningful frames from all available""" |
|
|
|
|
|
if len(all_frames) <= 12: |
|
|
return all_frames, all_bubbles |
|
|
|
|
|
print(f"π― Selecting 12 most meaningful frames from {len(all_frames)} total") |
|
|
|
|
|
|
|
|
|
|
|
step = len(all_frames) / 12 |
|
|
selected_frames = [] |
|
|
selected_bubbles = [] |
|
|
|
|
|
for i in range(12): |
|
|
idx = int(i * step) |
|
|
selected_frames.append(all_frames[idx]) |
|
|
if idx < len(all_bubbles): |
|
|
selected_bubbles.append(all_bubbles[idx]) |
|
|
|
|
|
return selected_frames, selected_bubbles |