|
|
@@ -19,6 +19,7 @@ epd_colormap = [ |
|
|
|
] |
|
|
|
|
|
|
|
images = list(filter(lambda x : x.endswith(".bmp"), os.listdir())) |
|
|
|
max_free_height = 200 |
|
|
|
|
|
|
|
def init_display(): |
|
|
|
#print("ePaper init ", str(time.localtime())) |
|
|
@@ -29,17 +30,30 @@ def init_display(): |
|
|
|
def draw_image(filename): |
|
|
|
global epd |
|
|
|
global epd_colormap |
|
|
|
global free_x, free_y, free_width, free_height |
|
|
|
offset_x = 0 |
|
|
|
offset_y = 0 |
|
|
|
free_x = 0 |
|
|
|
free_y = 0 |
|
|
|
free_width = 0 |
|
|
|
free_height = 0 |
|
|
|
color_map = {} |
|
|
|
def header_callback(header): |
|
|
|
#print("header callback: ", str(header)) |
|
|
|
global epd_resolution |
|
|
|
global offset_x, offset_y |
|
|
|
global free_x, free_y, free_width, free_height |
|
|
|
global max_free_height |
|
|
|
w = header[0] |
|
|
|
h = header[1] |
|
|
|
offset_x = (epd_resolution[0] - w)//2 |
|
|
|
offset_y = (epd_resolution[1] - h)//2 |
|
|
|
rest_x = (epd_resolution[0] - w) |
|
|
|
rest_y = (epd_resolution[1] - h) |
|
|
|
free_x = 0 |
|
|
|
free_y = max(h, epd_resolution[1] - max_free_height) |
|
|
|
free_width = epd_resolution[0] |
|
|
|
free_height = min(rest_y, max_free_height) |
|
|
|
offset_x = rest_x//2 |
|
|
|
offset_y = max(0, rest_y - max_free_height)//2 |
|
|
|
def pixel_callback(x, y, color): |
|
|
|
global epd |
|
|
|
global epd_colormap |
|
|
@@ -79,22 +93,52 @@ def draw_image(filename): |
|
|
|
time_loaded = time.ticks_ms() |
|
|
|
print(" time to load: ", (time_loaded - time_start) / 1000, " s") |
|
|
|
#print(str(time.localtime()), " BMP loaded") |
|
|
|
epd.EPD_5IN65F_Display(epd.buffer) |
|
|
|
#epd.EPD_5IN65F_Display(epd.buffer) |
|
|
|
#print(str(time.localtime()), " ePaper printed") |
|
|
|
time_finished = time.ticks_ms() |
|
|
|
print(" time to render: ", (time_finished - time_loaded) / 1000, " s") |
|
|
|
return [free_x, free_y, free_width, free_height] |
|
|
|
|
|
|
|
def draw_pattern(): |
|
|
|
global epd |
|
|
|
global epd_resolution |
|
|
|
free_x = 0 |
|
|
|
free_y = 400 |
|
|
|
free_width = epd_resolution[0] |
|
|
|
free_height = epd_resolution[1] - free_y |
|
|
|
epd.fill_rect(0, 0, epd_resolution[0], free_y, random.randrange(2,7)) |
|
|
|
return [free_x, free_y, free_width, free_height] |
|
|
|
|
|
|
|
def print_text(text, region): |
|
|
|
global epd |
|
|
|
epd.text(text, region[0]+5, region[1]+5, epd.Black) |
|
|
|
|
|
|
|
def draw_extra(region): |
|
|
|
fnt = 8 |
|
|
|
if region[2] < fnt or region[3] < fnt: |
|
|
|
print("Not enough space for extra: ", str(region)) |
|
|
|
return |
|
|
|
#epd.rect(region[0], region[1], region[2], region[3], epd.Black) |
|
|
|
#region[0] += random.randrange(50) |
|
|
|
print_text("Lorem ipsum: " + str(random.randrange(1000, 999999)), region) |
|
|
|
|
|
|
|
# MAIN |
|
|
|
|
|
|
|
epd = init_display() |
|
|
|
|
|
|
|
while True: |
|
|
|
epd.EPD_5IN65F_Init() |
|
|
|
epd.fill(epd.White) |
|
|
|
filename = random.choice(images) |
|
|
|
print("TV loading image ", filename) |
|
|
|
draw_image(filename) |
|
|
|
print("TV drawing image ", filename) |
|
|
|
free_space = draw_image(filename) |
|
|
|
#free_space = draw_pattern() |
|
|
|
draw_extra(free_space) |
|
|
|
time_render_start = time.ticks_ms() |
|
|
|
epd.EPD_5IN65F_Display(epd.buffer) |
|
|
|
time_render_stop = time.ticks_ms() |
|
|
|
print(" time to render: ", (time_render_stop - time_render_start) / 1000, " s") |
|
|
|
print("TV showing ", filename) |
|
|
|
epd.Sleep() |
|
|
|
|
|
|
|
print("") |
|
|
|
gc.collect() |
|
|
|
epd.delay_ms(10000) |
|
|
|
epd.delay_ms(60000 * 1) |