87 lines
3.7 KiB
Python
87 lines
3.7 KiB
Python
#!/usr/bin python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
This script is created to test the different fonts installed. It may return error if some of them are missing.
|
|
"""
|
|
import datetime as dt
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
from PIL import Image,ImageDraw,ImageFont
|
|
|
|
|
|
def main():
|
|
# Basic configuration settings (user replaceable)
|
|
# config.json is in the root folder
|
|
configFile = open(os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'config.json'))
|
|
config = json.load(configFile)
|
|
|
|
|
|
isDisplayConected = config['isDisplayConected'] # set to true when debugging rendering without displaying to screen
|
|
screenWidth = config['screenWidth'] # Width of E-Ink display. Default is landscape. Need to rotate image to fit.
|
|
screenHeight = config['screenHeight'] # Height of E-Ink display. Default is landscape. Need to rotate image to fit.
|
|
imageWidth = config['imageWidth'] # Width of image to be generated for display.
|
|
imageHeight = config['imageHeight'] # Height of image to be generated for display.
|
|
rotateAngle = config['rotateAngle'] # If image is rendered in portrait orientation, angle to rotate to fit screen
|
|
hourFormat = config['hourFormat'] # The format the hour will be displayed. eg. 13:02 or 01:02 PM
|
|
|
|
# Set the hour, this is important to see what time the e-Paper has been syncronized
|
|
if hourFormat == "12h":
|
|
time = dt.datetime.now().strftime("%I:%M %p")
|
|
else:
|
|
time = dt.datetime.now().strftime("%H:%M")
|
|
|
|
|
|
assets = os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))), 'assets')
|
|
fontsdir = os.path.join(assets, 'fonts')
|
|
# Drawing on the image
|
|
font15 = ImageFont.truetype(os.path.join(fontsdir, 'wavesharefont.ttc'), 15)
|
|
font24 = ImageFont.truetype(os.path.join(fontsdir, 'wavesharefont.ttc'), 24)
|
|
|
|
# pixel_operator fonts
|
|
font8 = ImageFont.truetype(os.path.join(os.path.join(fontsdir, 'pixel_operator'), 'PixelOperator8.ttf'), 8)
|
|
font8_bold = ImageFont.truetype(os.path.join(os.path.join(fontsdir, 'pixel_operator'), 'PixelOperator8-Bold.ttf'), 8)
|
|
font16 = ImageFont.truetype(os.path.join(os.path.join(fontsdir, 'pixel_operator'), 'PixelOperator.ttf'), 16)
|
|
font16_bold = ImageFont.truetype(os.path.join(os.path.join(fontsdir, 'pixel_operator'), 'PixelOperator-Bold.ttf'), 16)
|
|
|
|
# Better VCR font
|
|
font16_2 = ImageFont.truetype(os.path.join(fontsdir, 'Better VCR 9.0.1.ttf'), 16)
|
|
font8_2 = ImageFont.truetype(os.path.join(fontsdir, 'Better VCR 9.0.1.ttf'), 12)
|
|
|
|
|
|
image = Image.new('1', (imageWidth, imageHeight), 255) # 255: clear the frame
|
|
draw = ImageDraw.Draw(image)
|
|
|
|
fonts8 = [font8, font8_bold, font8_2]
|
|
fonts16 = [font16, font16_bold, font16_2]
|
|
y = 0
|
|
for font in fonts8:
|
|
draw.text((0, y), f"Lore Ipso sum {time}", font = font, fill = 0) # draw the current time in the top left corner
|
|
y += 12
|
|
if y >= screenHeight:
|
|
break
|
|
|
|
for font in fonts16:
|
|
draw.text((0, y), f"Lore Ipso sum {time}", font = font, fill = 0) # draw the current time in the top left corner
|
|
y += 16
|
|
if y >= screenHeight:
|
|
break
|
|
|
|
image.save(os.path.join(assets, 'test-fonts.bmp'))
|
|
|
|
|
|
if isDisplayConected:
|
|
# This line is necesary to be able to acceass the modules from this folder
|
|
# We are basically adding the root folder of the proyect to the path
|
|
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
|
|
from display.display import DisplayHelper
|
|
|
|
displayService = DisplayHelper(screenWidth, screenHeight)
|
|
displayService.update(image.rotate(rotateAngle))
|
|
displayService.clear()
|
|
displayService.sleep() # go to sleep
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|