#!/usr/bin/env python3

from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306
from PIL import Image, ImageFont
from random import randint
import time

#image = Image.open("cattooled.png")
font = ImageFont.truetype(".fonts/unscii-8-thin.otf",6)
f = open("bapple.data","rb")
fps = 10
frames = []
while True:
	d = f.read(128*64//8)
	if not d: break
	frames.append(Image.frombytes("1",(128,64),d))

serial = None
device = None

def connect():
	global serial, device
	serial = i2c(port=2, address=0x3C)
	device = ssd1306(serial,rotate=2)
	device.contrast(1)

connect()

#device.display(image.convert("1"))

stime = time.time()
on = True
try:
	while True:
		try:
			#d2 = []
			#for b in d:
			#	for b2 in range(8):
			#		d2.append((b>>(7-b2))&1)
			#img = Image.frombytes("1",(128,64),bytes(d2))
			fi = int((time.time()-stime)*fps)%len(frames)
			#if fi >= len(frames): break
			device.display(frames[fi])
			#with canvas(device) as draw:
			#	draw.font = font
			#	draw.text((0,0),str(time.time()),fill=1)
			#	if on:
			#		for i in range(8):
			#			draw.text((0,6+i*6),"Quantumn Pillock",fill=1)
			#	on = not on
			#	#for i in range(64):
			#	#	draw.line((randint(0,device.width),randint(0,device.height),randint(0,device.width),randint(0,device.height)),fill=1)
			#device.contrast(randint(1,255))
			#time.sleep(1)
		except OSError:
			continue
			while True:
				time.sleep(5)
				try:
					connect()
					break
				except OSError:
					pass
except KeyboardInterrupt:
	pass

#image.close()
device.cleanup()
