diff --git a/g13gui/g13gui/bitwidgets/__init__.py b/g13gui/g13gui/bitwidgets/__init__.py index b798c30..2877bb0 100644 --- a/g13gui/g13gui/bitwidgets/__init__.py +++ b/g13gui/g13gui/bitwidgets/__init__.py @@ -1,3 +1,4 @@ -from g13gui.bitwidgets.display import Fonts -from g13gui.bitwidgets.display import FontManager +from g13gui.bitwidgets.fonts import Fonts +from g13gui.bitwidgets.fonts import FontManager from g13gui.bitwidgets.display import Display +from g13gui.bitwidgets.display import DisplayMetrics diff --git a/g13gui/g13gui/bitwidgets/display.py b/g13gui/g13gui/bitwidgets/display.py index 4687207..67a2f92 100644 --- a/g13gui/g13gui/bitwidgets/display.py +++ b/g13gui/g13gui/bitwidgets/display.py @@ -1,12 +1,51 @@ +import struct +import PIL.ImageDraw +import PIL.PyAccess +import sys +from io import BytesIO from PIL import Image -from PIL.ImageDraw import ImageDraw from g13gui.observer import Subject from g13gui.observer import ChangeType class DisplayMetrics(object): WIDTH_PIXELS = 160 - HEIGHT_PIXELS = 48 + HEIGHT_PIXELS = 43 + + +LPBM_LENGTH = 960 + + +def ImageToLPBM(image): + i = PIL.PyAccess.new(image, readonly=True) + bio = BytesIO() + + maxBytes = (DisplayMetrics.WIDTH_PIXELS * DisplayMetrics.HEIGHT_PIXELS // 8) + row = 0 + col = 0 + + for byteNum in range(0, maxBytes): + b = int() + + if row == 40: + maxSubrow = 3 + else: + maxSubrow = 8 + + for subrow in range(0, maxSubrow): + b |= i[col, row + subrow] << subrow + + bio.write(struct.pack('