RaspAgenda/test/test_fonts.py

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()