11 Commits
Author SHA1 Message Date
LEv145 6c93712961 v 2.5.1
Add support `\n` for column texts
2024-02-23 01:09:19 +02:00
LEv145 9591638263 Merge pull request #9 from kenjiqq/main
Fix padding calculation for column annotations with newlines
2024-02-23 01:04:18 +02:00
kenjiqq bb195b17e2 fix padding calculation for column annotations with newlines 2024-02-18 15:17:09 +01:00
LEv145 44365fa3ea Merge pull request #8 from LEv145/dev
v 2.5
2023-08-05 16:52:22 +02:00
LEv145 d6fc97799f Merge pull request #7 from Lightsockie/main
Allow Single-Axis Annotations
2023-08-05 16:45:37 +02:00
LEv145 8f439e074e Update logic 2023-08-05 16:37:39 +02:00
LEv145 fe2447ef6c Update logic 2023-08-05 16:35:35 +02:00
LEv145 d4e337eeb3 Move vars 2023-08-05 16:31:28 +02:00
LEv145 4548bf62a4 Update typing 2023-08-05 16:30:14 +02:00
LEv145 63ddd51d0b Update typing 2023-08-05 16:28:49 +02:00
lightsockie aefa323bab Allow Single-Axis Annotations 2023-08-04 15:04:52 -07:00
2 changed files with 33 additions and 35 deletions
+2 -11
View File
@@ -26,12 +26,8 @@ class GridAnnotationNode(BaseNode):
font_size: int, font_size: int,
) -> tuple[Annotation]: ) -> tuple[Annotation]:
font = ImageFont.truetype(str(STATIC_PATH / "Roboto-Regular.ttf"), size=font_size) font = ImageFont.truetype(str(STATIC_PATH / "Roboto-Regular.ttf"), size=font_size)
column_texts_list = self._set_value_to_texts_list( column_texts_list = self._get_texts_from_string(column_texts)
self._get_texts_from_string(column_texts), row_texts_list = self._get_texts_from_string(row_texts)
)
row_texts_list = self._set_value_to_texts_list(
self._get_texts_from_string(row_texts),
)
result = Annotation(column_texts=column_texts_list, row_texts=row_texts_list, font=font) result = Annotation(column_texts=column_texts_list, row_texts=row_texts_list, font=font)
return (result,) return (result,)
@@ -42,8 +38,3 @@ class GridAnnotationNode(BaseNode):
for i in string.split(";") for i in string.split(";")
if (result := i.strip()) != "" if (result := i.strip()) != ""
] ]
def _set_value_to_texts_list(self, texts_list: list[str]) -> list[str]:
if not texts_list:
return ["None"]
return texts_list
+31 -24
View File
@@ -92,19 +92,24 @@ def _create_grid_annotation(
row_texts: list[str], row_texts: list[str],
font: ImageFont.FreeTypeFont, font: ImageFont.FreeTypeFont,
) -> Image.Image: ) -> Image.Image:
if not column_texts or not row_texts: if not column_texts and not row_texts:
raise ValueError("Column text or row text is empty") raise ValueError("Column text and row text is empty")
grid = grid_info.image grid = grid_info.image
left_padding = int( left_padding = 0
max( top_padding = 0
font.getlength(splitted_text)
for raw_text in row_texts if row_texts:
for splitted_text in raw_text.split("\n") 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 if column_texts:
) top_padding = max(elem.count("\n") for elem in column_texts) * int(font.size) + int(font.size * 2)
top_padding = int(font.size * 2)
image = Image.new( image = Image.new(
"RGB", "RGB",
@@ -116,20 +121,22 @@ def _create_grid_annotation(
draw.font = font # type: ignore draw.font = font # type: ignore
_paste_image_to_lower_left_corner(image, grid) _paste_image_to_lower_left_corner(image, grid)
_draw_column_text( if column_texts:
draw=draw, _draw_column_text(
texts=column_texts, draw=draw,
grid_info=grid_info, texts=column_texts,
left_padding=left_padding, grid_info=grid_info,
top_padding=top_padding, left_padding=left_padding,
) top_padding=top_padding,
_draw_row_text( )
draw=draw, if row_texts:
texts=row_texts, _draw_row_text(
grid_info=grid_info, draw=draw,
left_padding=left_padding, texts=row_texts,
top_padding=top_padding, grid_info=grid_info,
) left_padding=left_padding,
top_padding=top_padding,
)
return image return image