Fonts choosed and prototype created -> 2025-01-26 20:19:12
BIN
assets/cal-icon2.aseprite
Normal file
BIN
assets/cal-icon2.bmp
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
assets/cal-icon3.aseprite
Normal file
BIN
assets/cal-icon3.bmp
Normal file
After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
BIN
assets/prototype.bmp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
assets/test-characters-2bold.bmp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
assets/test-characters-bold.bmp
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
assets/test-characters.bmp
Normal file
After Width: | Height: | Size: 3.9 KiB |
|
@ -60,9 +60,9 @@ def main():
|
||||||
draw.line([(0,16),(250,16)], fill = 0,width = 2)
|
draw.line([(0,16),(250,16)], fill = 0,width = 2)
|
||||||
draw.line([(125,16),(125,122)], fill = 0,width = 2)
|
draw.line([(125,16),(125,122)], fill = 0,width = 2)
|
||||||
|
|
||||||
cal_icon = Image.open(os.path.join(assets, "cal-icon.bmp"))
|
cal_icon = Image.open(os.path.join(assets, "cal-icon3.bmp"))
|
||||||
|
|
||||||
image.paste(cal_icon, (129,24))
|
image.paste(cal_icon, (129,20))
|
||||||
|
|
||||||
draw.text((160, 26), 'Agenda', font = font16_bold, fill = 0)
|
draw.text((160, 26), 'Agenda', font = font16_bold, fill = 0)
|
||||||
|
|
||||||
|
@ -83,8 +83,8 @@ def main():
|
||||||
from display.display import DisplayHelper
|
from display.display import DisplayHelper
|
||||||
|
|
||||||
displayService = DisplayHelper(screenWidth, screenHeight)
|
displayService = DisplayHelper(screenWidth, screenHeight)
|
||||||
displayService.update(image.rotate(rotateAngle)) # go to sleep
|
displayService.update(image.rotate(rotateAngle)) # Displays the image
|
||||||
displayService.clear()
|
#displayService.clear()
|
||||||
displayService.sleep() # go to sleep
|
displayService.sleep() # go to sleep
|
||||||
|
|
||||||
|
|
||||||
|
|
80
test/test_characters.py
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
#!/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)
|
||||||
|
|
||||||
|
|
||||||
|
draw.text((0, 0), f"Pixel Operator 16 bold", font = font16_bold, fill = 0)
|
||||||
|
draw.text((0, 16), f"Hacer la compra", font = font16, fill = 0)
|
||||||
|
draw.text((0, 32), f"Pasear al gato", font = font16, fill = 0)
|
||||||
|
draw.text((0, 48), f"Escribir un post en Mastodon", font = font16, fill = 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
image.save(os.path.join(assets, 'test-characters.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()
|