From aefa323babf1307de6b39c150d36d18200803780 Mon Sep 17 00:00:00 2001 From: lightsockie Date: Fri, 4 Aug 2023 15:04:52 -0700 Subject: [PATCH 1/6] Allow Single-Axis Annotations --- src/nodes/grid_annotation.py | 2 +- src/utils/images_grid.py | 54 ++++++++++++++++++++---------------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/nodes/grid_annotation.py b/src/nodes/grid_annotation.py index 347aeef..7f04752 100644 --- a/src/nodes/grid_annotation.py +++ b/src/nodes/grid_annotation.py @@ -45,5 +45,5 @@ class GridAnnotationNode(BaseNode): def _set_value_to_texts_list(self, texts_list: list[str]) -> list[str]: if not texts_list: - return ["None"] + return None return texts_list diff --git a/src/utils/images_grid.py b/src/utils/images_grid.py index f0ec2e7..df4d977 100644 --- a/src/utils/images_grid.py +++ b/src/utils/images_grid.py @@ -92,19 +92,23 @@ def _create_grid_annotation( row_texts: list[str], font: ImageFont.FreeTypeFont, ) -> Image.Image: - if not column_texts or not row_texts: - raise ValueError("Column text or row text is empty") + if not column_texts and not row_texts: + raise ValueError("Column text and row text is empty") grid = grid_info.image - left_padding = int( - max( - font.getlength(splitted_text) - for raw_text in row_texts - for splitted_text in raw_text.split("\n") + left_padding = 0 + if row_texts: + left_padding = int( + max( + font.getlength(splitted_text) + for raw_text in row_texts + for splitted_text in raw_text.split("\n") + ) + + font.getlength(WIDEST_LETTER)*2 ) - + font.getlength(WIDEST_LETTER)*2 - ) - top_padding = int(font.size * 2) + top_padding = 0 + if column_texts: + top_padding = int(font.size * 2) image = Image.new( "RGB", @@ -116,20 +120,22 @@ def _create_grid_annotation( draw.font = font # type: ignore _paste_image_to_lower_left_corner(image, grid) - _draw_column_text( - draw=draw, - texts=column_texts, - grid_info=grid_info, - left_padding=left_padding, - top_padding=top_padding, - ) - _draw_row_text( - draw=draw, - texts=row_texts, - grid_info=grid_info, - left_padding=left_padding, - top_padding=top_padding, - ) + if column_texts: + _draw_column_text( + draw=draw, + texts=column_texts, + grid_info=grid_info, + left_padding=left_padding, + top_padding=top_padding, + ) + if row_texts: + _draw_row_text( + draw=draw, + texts=row_texts, + grid_info=grid_info, + left_padding=left_padding, + top_padding=top_padding, + ) return image From 63ddd51d0b76cf5e1da76184bd9aebe3f0f72d89 Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Sat, 5 Aug 2023 16:28:49 +0200 Subject: [PATCH 2/6] Update typing --- src/nodes/grid_annotation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nodes/grid_annotation.py b/src/nodes/grid_annotation.py index 7f04752..207afcd 100644 --- a/src/nodes/grid_annotation.py +++ b/src/nodes/grid_annotation.py @@ -43,7 +43,7 @@ class GridAnnotationNode(BaseNode): if (result := i.strip()) != "" ] - def _set_value_to_texts_list(self, texts_list: list[str]) -> list[str]: + def _set_value_to_texts_list(self, texts_list: list[str]) -> list[str] | None: if not texts_list: return None return texts_list From 4548bf62a4b0e47241f39e609944de74bafa0fb3 Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Sat, 5 Aug 2023 16:30:14 +0200 Subject: [PATCH 3/6] Update typing --- src/utils/images_grid.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/images_grid.py b/src/utils/images_grid.py index df4d977..83d3b69 100644 --- a/src/utils/images_grid.py +++ b/src/utils/images_grid.py @@ -88,8 +88,8 @@ def _arrange_images_on_grid( def _create_grid_annotation( grid_info: _GridInfo, - column_texts: list[str], - row_texts: list[str], + column_texts: list[str] | None, + row_texts: list[str] | None, font: ImageFont.FreeTypeFont, ) -> Image.Image: if not column_texts and not row_texts: From d4e337eeb396c3617a90932f5e16619b62cca2d1 Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Sat, 5 Aug 2023 16:31:28 +0200 Subject: [PATCH 4/6] Move vars --- src/utils/images_grid.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/utils/images_grid.py b/src/utils/images_grid.py index 83d3b69..fba5131 100644 --- a/src/utils/images_grid.py +++ b/src/utils/images_grid.py @@ -97,6 +97,8 @@ def _create_grid_annotation( grid = grid_info.image left_padding = 0 + top_padding = 0 + if row_texts: left_padding = int( max( @@ -106,7 +108,6 @@ def _create_grid_annotation( ) + font.getlength(WIDEST_LETTER)*2 ) - top_padding = 0 if column_texts: top_padding = int(font.size * 2) From fe2447ef6c07d913cd021e2d3c8bdad38f637261 Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Sat, 5 Aug 2023 16:35:35 +0200 Subject: [PATCH 5/6] Update logic --- src/nodes/grid_annotation.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/nodes/grid_annotation.py b/src/nodes/grid_annotation.py index 207afcd..63dfbee 100644 --- a/src/nodes/grid_annotation.py +++ b/src/nodes/grid_annotation.py @@ -26,12 +26,8 @@ class GridAnnotationNode(BaseNode): font_size: int, ) -> tuple[Annotation]: font = ImageFont.truetype(str(STATIC_PATH / "Roboto-Regular.ttf"), size=font_size) - column_texts_list = self._set_value_to_texts_list( - self._get_texts_from_string(column_texts), - ) - row_texts_list = self._set_value_to_texts_list( - self._get_texts_from_string(row_texts), - ) + column_texts_list = self._get_texts_from_string(column_texts) + row_texts_list = self._get_texts_from_string(row_texts) result = Annotation(column_texts=column_texts_list, row_texts=row_texts_list, font=font) return (result,) @@ -42,8 +38,3 @@ class GridAnnotationNode(BaseNode): for i in string.split(";") if (result := i.strip()) != "" ] - - def _set_value_to_texts_list(self, texts_list: list[str]) -> list[str] | None: - if not texts_list: - return None - return texts_list From 8f439e074ec8a4a1c42f93cb8d6316e6e7ce8afb Mon Sep 17 00:00:00 2001 From: LEv145 <40071054+LEv145@users.noreply.github.com> Date: Sat, 5 Aug 2023 16:37:39 +0200 Subject: [PATCH 6/6] Update logic --- src/utils/images_grid.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/images_grid.py b/src/utils/images_grid.py index fba5131..6a09787 100644 --- a/src/utils/images_grid.py +++ b/src/utils/images_grid.py @@ -88,8 +88,8 @@ def _arrange_images_on_grid( def _create_grid_annotation( grid_info: _GridInfo, - column_texts: list[str] | None, - row_texts: list[str] | None, + column_texts: list[str], + row_texts: list[str], font: ImageFont.FreeTypeFont, ) -> Image.Image: if not column_texts and not row_texts: