fix tests, add border feature

This commit is contained in:
Ace
2023-11-24 02:37:27 +01:00
parent b08cf00661
commit 60be01fbdb
8 changed files with 60 additions and 32 deletions

View File

@@ -9,7 +9,7 @@ import time
import traceback
import requests
from PIL import ImageFont
from PIL import ImageFont, ImageDraw, Image
logs = logging.getLogger(__name__)
logs.setLevel(level=logging.INFO)
@@ -299,17 +299,17 @@ def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)):
colour = 'black'
# size from function paramter
# size from function parameter
width, height = int(size[0] * (1 - shrinkage[0])), int(size[1] * (1 - shrinkage[1]))
# shift cursor to move rectangle to center
offset_x, offset_y = int((size[0] - width) / 2), int((size[1] - height) / 2)
x, y, diameter = xy[0] + offset_x, xy[1] + offset_y, radius * 2
# lenght of rectangle size
# length of rectangle size
a, b = (width - diameter), (height - diameter)
# Set coordinates for staright lines
# Set coordinates for straight lines
p1, p2 = (x + radius, y), (x + radius + a, y)
p3, p4 = (x + width, y + radius), (x + width, y + radius + b)
p5, p6 = (p2[0], y + height), (p1[0], y + height)
@@ -333,3 +333,12 @@ def draw_border(image, xy, size, radius=5, thickness=1, shrinkage=(0.1, 0.1)):
draw.arc((c3, c4), 270, 360, fill=colour, width=thickness)
draw.arc((c5, c6), 0, 90, fill=colour, width=thickness)
draw.arc((c7, c8), 90, 180, fill=colour, width=thickness)
def draw_border_2(im: Image, xy: tuple, size: tuple, radius: int):
draw = ImageDraw.Draw(im)
x, y = xy
w, h = size
draw.rounded_rectangle(xy=(x, y, x + w, y + h), outline="black", radius=radius)

View File

@@ -104,6 +104,8 @@ class Inkycal:
# Option to use epaper image optimisation, reduces colours
self.optimize = True
self.show_border = self.settings.get('border_around_modules', False)
# Load drivers if image should be rendered
if self.render:
# Init Display class with model in settings file
@@ -203,6 +205,8 @@ class Inkycal:
print(f'generating image(s) for {name}...', end="")
try:
black, colour = module.generate_image()
if self.show_border:
draw_border_2(im=black, xy=(1, 1), size=(black.width - 2, black.height - 2), radius=5)
black.save(f"{self.image_folder}module{number}_black.png", "PNG")
colour.save(f"{self.image_folder}module{number}_colour.png", "PNG")
print('OK!')
@@ -298,6 +302,8 @@ class Inkycal:
try:
black, colour = module.generate_image()
if self.show_border:
draw_border_2(im=black, xy=(1, 1), size=(black.width - 2, black.height - 2), radius=5)
black.save(f"{self.image_folder}module{number}_black.png", "PNG")
colour.save(f"{self.image_folder}module{number}_colour.png", "PNG")
self.info += f"module {number}: OK "

View File

@@ -1,5 +1,3 @@
#!python3
"""
Inkycal iCalendar parsing module
Copyright by aceinnolab

View File

@@ -15,29 +15,15 @@ logger = logging.getLogger(__name__)
class TextToDisplay(inkycal_module):
"""TextToDisplay module
"""TextToDisplay module - Display text from a local file on the display
"""
name = "Text module - Display text from a local file on the display"
requires = {
"filepath": {
"label": "Please enter a filepath or URL pointing to a .txt file",
},
}
def __init__(self, config):
"""Initialize inkycal_textfile_to_display module"""
super().__init__(config)
config = config['config']
# Check if all required parameters are present
for param in self.requires:
if param not in config:
raise Exception(f'config is missing {param}')
# required parameters
self.filepath = config["filepath"]