From 438845c81ed467643c83b657781f2699c112c099 Mon Sep 17 00:00:00 2001
From: Ace
Date: Thu, 8 Feb 2024 12:51:06 +0100
Subject: [PATCH 1/3] fix alignment bug
---
inkycal/custom/functions.py | 16 +++++++---------
tests/test_functions.py | 12 ++++++++++++
2 files changed, 19 insertions(+), 9 deletions(-)
create mode 100644 tests/test_functions.py
diff --git a/inkycal/custom/functions.py b/inkycal/custom/functions.py
index 8eddd4e..c1bd12a 100644
--- a/inkycal/custom/functions.py
+++ b/inkycal/custom/functions.py
@@ -110,7 +110,7 @@ def auto_fontsize(font, max_height):
def write(image, xy, box_size, text, font=None, **kwargs):
- """Writes text on a image.
+ """Writes text on an image.
Writes given text at given position on the specified image.
@@ -129,9 +129,9 @@ def write(image, xy, box_size, text, font=None, **kwargs):
- colour: black by default, do not change as it causes issues with rendering
on e-Paper.
- rotation: Rotate the text with the text-box by a given angle anti-clockwise.
- - fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill a
+ - fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill
maximum of 90% of the size of the full width of text-box.
- - fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill a
+ - fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill
maximum of 90% of the size of the full height of the text-box.
"""
allowed_kwargs = ['alignment', 'autofit', 'colour', 'rotation',
@@ -140,7 +140,7 @@ def write(image, xy, box_size, text, font=None, **kwargs):
# Validate kwargs
for key, value in kwargs.items():
if key not in allowed_kwargs:
- print('{0} does not exist'.format(key))
+ print(f'{key} does not exist')
# Set kwargs if given, it not, use defaults
alignment = kwargs['alignment'] if 'alignment' in kwargs else 'center'
@@ -176,7 +176,7 @@ def write(image, xy, box_size, text, font=None, **kwargs):
text_bbox_height = font.getbbox("hg")
text_height = text_bbox_height[3] - text_bbox_height[1]
- # Truncate text if text is too long so it can fit inside the box
+ # Truncate text if text is too long, so it can fit inside the box
if (text_width, text_height) > (box_width, box_height):
logs.debug(('truncating {}'.format(text)))
while (text_width, text_height) > (box_width, box_height):
@@ -195,18 +195,16 @@ def write(image, xy, box_size, text, font=None, **kwargs):
elif alignment == 'right':
x = int(box_width - text_width)
- y = int((box_height / 2) - (text_height / 2))
-
# Draw the text in the text-box
draw = ImageDraw.Draw(image)
space = Image.new('RGBA', (box_width, box_height))
- ImageDraw.Draw(space).text((x, y), text, fill=colour, font=font)
+ ImageDraw.Draw(space).text((x, 0), text, fill=colour, font=font)
# Uncomment following two lines, comment out above two lines to show
# red text-box with white text (debugging purposes)
# space = Image.new('RGBA', (box_width, box_height), color= 'red')
- # ImageDraw.Draw(space).text((x, y), text, fill='white', font=font)
+ # ImageDraw.Draw(space).text((x, 0), text, fill='white', font=font, anchor="la")
if rotation:
space.rotate(rotation, expand=True)
diff --git a/tests/test_functions.py b/tests/test_functions.py
new file mode 100644
index 0000000..b624978
--- /dev/null
+++ b/tests/test_functions.py
@@ -0,0 +1,12 @@
+"""
+Test the functions in the functions module.
+"""
+from PIL import Image, ImageFont
+from inkycal.custom import write, fonts
+
+
+def test_write():
+ im = Image.new("RGB", (500, 200), "white")
+ font = ImageFont.truetype(fonts['NotoSans-SemiCondensed'], size = 40)
+ write(im, (125,75), (250, 50), "Hello World", font)
+ # im.show()
From 7e7e32ade6b86dd6bd742937f6b72f895ffed152 Mon Sep 17 00:00:00 2001
From: Ace
Date: Thu, 8 Feb 2024 13:22:43 +0100
Subject: [PATCH 2/3] fix test
---
tests/test_inkycal_image.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/test_inkycal_image.py b/tests/test_inkycal_image.py
index fa5289b..4c1b24c 100755
--- a/tests/test_inkycal_image.py
+++ b/tests/test_inkycal_image.py
@@ -14,7 +14,7 @@ from tests import Config
preview = Inkyimage.preview
merge = Inkyimage.merge
-url ="https://raw.githubusercontent.com/aceinnolab/Inkycal/assets/tests/mark-harpur-unsplash.jpg"
+url ="https://github.com/aceinnolab/Inkycal/blob/assets/tests/Inkycal_cover.png"
im = Image.open(requests.get(url, stream=True).raw)
im.save("test.png", "PNG")
From c84ccb215760e14556f6ca88aa58d6463ae2819f Mon Sep 17 00:00:00 2001
From: github-actions
Date: Thu, 8 Feb 2024 12:24:25 +0000
Subject: [PATCH 3/3] update docs [bot]
---
docs/inkycal.html | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/inkycal.html b/docs/inkycal.html
index 9fd09ef..a2c01b1 100644
--- a/docs/inkycal.html
+++ b/docs/inkycal.html
@@ -321,7 +321,7 @@ splitting the text into the next chunk.
-
inkycal.custom.functions.write(image, xy, box_size, text, font=None, **kwargs)
-Writes text on a image.
+Writes text on an image.
Writes given text at given position on the specified image.
- Args:
@@ -340,9 +340,9 @@ as much of the box-height as possible.
colour: black by default, do not change as it causes issues with rendering
on e-Paper.
rotation: Rotate the text with the text-box by a given angle anti-clockwise.
-fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill a
+
fill_width: Decimal representing a percentage e.g. 0.9 # 90%. Fill
maximum of 90% of the size of the full width of text-box.
-fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill a
+
fill_height: Decimal representing a percentage e.g. 0.9 # 90%. Fill
maximum of 90% of the size of the full height of the text-box.