#!/usr/bin/env python
# coding=utf-8

import cv2
import time
import qrcode
import numpy as np
from PIL import ImageDraw, ImageFont


win_name = "video synchronization"

try:
    fnt = ImageFont.truetype(
        "/usr/share/fonts/truetype/freefont/FreeMonoBold.ttf", size=40
    )
except Exception as e:
    fnt = ImageFont.load_default()


def cb(click, *p):
    if click:
        cv2.destroyWindow(win_name)


cv2.namedWindow(win_name, cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty(
    win_name, cv2.WND_PROP_FULLSCREEN, cv2.cv.CV_WINDOW_FULLSCREEN
)
# cv2.moveWindow(win_name, 200, 0)
cv2.setMouseCallback(win_name, cb)

while True:
    t = time.time()
    code = "%.3f" % t
    csum = sum(int(c) for c in code.replace(".", ""))
    code = "%s#%x" % (code, csum)
    desc = "%s %s" % (code, time.strftime("%y-%m-%d %H:%M:%S", time.gmtime(t)))
    img = qrcode.make(code, box_size=30).convert('RGB')
    d = ImageDraw.Draw(img)
    d.text((0, 0), desc, font=fnt, fill=(50, 50, 50))
    i2 = np.array(img)
    i2 = i2[:, :, ::-1].copy()
    cv2.imshow(win_name, i2)
    key = cv2.waitKey(970)
    if key != -1:
        break
    try:
        cv2.getWindowProperty(win_name, 0)
    except cv2.error:
        break
