E-Paper-Calendar/Calendar/DayRowDesign.py
2019-03-08 21:37:54 +01:00

65 lines
No EOL
2.4 KiB
Python

from PIL import ImageDraw
from TextDesign import TextDesign
from settings import week_starts_on
from DesignEntity import DesignEntity
daynumber_y_size = (1, 0.65)
weekday_y_size = (daynumber_y_size[0], 1 - daynumber_y_size[1])
weekday_ypos = daynumber_y_size[1]
daynumber_fontsize = daynumber_y_size[1] * 0.8
weekday_fontsize = weekday_y_size[1] * 0.75
general_text_color = "black"
highlight_text_color = "red"
background_color = "white"
class DayRowDesign (DesignEntity):
"""Detailed view of a given date."""
def __init__ (self, size, date):
super(DayRowDesign, self).__init__(size)
self.__init_image__(color=background_color)
self.date = date
def __finish_image__ (self):
self.__draw_day_number__()
self.__draw_weekday__()
def __draw_weekday__ (self):
font_size = int(weekday_fontsize * self.size[1])
size = (weekday_y_size[0] * self.size[1], weekday_y_size[1] * self.size[1])
ypos = weekday_ypos * self.size[1]
pos = (0, ypos)
color = self.__get_day_color__()
week_day_name = self.date.strftime("%a")
week_day = TextDesign(size, text=week_day_name, background_color=background_color, color=color, fontsize=font_size, horizontalalignment="center", verticalalignment="top")
week_day.pos = pos
self.draw_design(week_day)
def __draw_day_number__ (self):
font_size = int(daynumber_fontsize * self.size[1])
size = (daynumber_y_size[0] * self.size[1], daynumber_y_size[1] * self.size[1])
pos = (0, 0)
day_text = self.__get_day_text__()
color = self.__get_day_color__()
number = TextDesign(size, text=day_text, background_color=background_color, color=color, fontsize=font_size, horizontalalignment="center", verticalalignment="bottom")
number.pos = pos
self.draw_design(number)
def __abs_co__ (self, coordinates):
return (int(coordinates[0] * self.size[0]),int(coordinates[1] * self.size[1]))
def __get_day_text__ (self):
return str(self.date.day)
def __get_day_color__ (self):
"""Depending on week_starts_on"""
if week_starts_on == "Monday" and self.date.strftime("%w") == "0":
return highlight_text_color
elif week_starts_on == "Sunday" and self.date.strftime("%w") == "6":
return highlight_text_color
else:
return general_text_color