From b037ce59aace754b007cb21b3a75b8947e1ca266 Mon Sep 17 00:00:00 2001 From: HeyMoon <101842728+UnironicHeyMoon@users.noreply.github.com> Date: Thu, 11 Aug 2022 19:49:23 -0500 Subject: [PATCH] add_text_box --- pillow_fight.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/pillow_fight.py b/pillow_fight.py index 76425ef..e9dac16 100644 --- a/pillow_fight.py +++ b/pillow_fight.py @@ -115,14 +115,14 @@ class TwoCharacterWebcomicPanel(WebcomicPanel): left_text_region_y_size = int(panel_size_y/4) left_text_region_x_position = 0 left_text_region_y_position = 0 - add_text(base, self.left_caption, (left_text_region_x_size, left_text_region_y_size), (left_text_region_x_position,left_text_region_y_position), font=super().FONT) + add_text_box(base, self.left_caption, (left_text_region_x_size, left_text_region_y_size), (left_text_region_x_position,left_text_region_y_position), font=super().FONT) # We put the text in the top half of the panel. right_text_region_x_size = int(CAPTION_UNITS*(panel_size_x/CAPTION_DIVISOR)) right_text_region_y_size = int(panel_size_y/4) right_text_region_x_position = int((CAPTION_DIVISOR-CAPTION_UNITS)*(panel_size_x/8)) right_text_region_y_position = int(panel_size_y/4) - add_text(base, self.right_caption, (right_text_region_x_size, right_text_region_y_size), (right_text_region_x_position,right_text_region_y_position), font=super().FONT) + add_text_box(base, self.right_caption, (right_text_region_x_size, right_text_region_y_size), (right_text_region_x_position,right_text_region_y_position), font=super().FONT) return add_border_to_image(base) @@ -150,6 +150,21 @@ def create_webcomic(layout : 'list[WebcomicPanel]'): image.paste(panel.create_image(), (x*assumed_panel_x_size, y*assumed_panel_y_size)) return add_watermark(image) +def add_text_box(base : Image, caption : str, region_size : tuple[int, int], coordinates : tuple[int, int], font : str= "arial.ttf", init_font_size = 45): + if caption == "": + return + if init_font_size == 0: + print("Retard moment") + return + region_x_size, region_y_size = region_size + line_image = ImageText((region_x_size, region_y_size)) + actual_text_box_size = line_image.write_text_box((0,0), caption, region_x_size, font_size=init_font_size, font_filename=font) + actual_text_box_x_size, actual_text_box_y_size, input_text_block_x_size = actual_text_box_size + if actual_text_box_y_size <= region_y_size: + base.paste(line_image.image, coordinates, line_image.image) + else: + add_text_box(base, caption, region_size, coordinates, font=font, init_font_size=init_font_size-1) + def add_text(base : Image, caption : str, region_size : tuple[int, int], coordinates : tuple[int, int], font : str= "arial.ttf"): if caption == "": return