Page MenuHomec4science

drawbitmap.py
No OneTemporary

File Metadata

Created
Wed, Feb 26, 21:46

drawbitmap.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, sys
import math
# add ../../Sources to the PYTHONPATH
sys.path.append(os.path.join("..", "..", "Sources"))
import array
from yocto_api import *
from yocto_display import *
def usage():
scriptname = os.path.basename(sys.argv[0])
print("Usage:")
print(scriptname + ' <serial_number>')
print(scriptname + ' <logical_name>')
print(scriptname + ' any ')
sys.exit()
def die(msg):
sys.exit(msg + ' (check USB cable)')
errmsg = YRefParam()
if len(sys.argv) < 2:
usage()
target = sys.argv[1]
# Setup the API to use local USB devices
if YAPI.RegisterHub("usb", errmsg) != YAPI.SUCCESS:
sys.exit("init error" + errmsg.value)
if target == 'any':
# retreive any display
disp = YDisplay.FirstDisplay()
if disp is None:
die('No module connected')
else:
disp = YDisplay.FindDisplay(target + ".display")
if not disp.isOnline():
die("Module not connected ")
disp.resetAll()
# retreive the display size
w = disp.get_displayWidth()
h = disp.get_displayHeight()
# reteive the first layer
l0 = disp.get_displayLayer(0)
bytesPerLines = int(w / 8)
data = array.array('B')
for i in range(0, h * bytesPerLines):
data.append(0)
max_iteration = 50
centerX = 0.0
centerY = 0.0
targetX = 0.834555980181972
targetY = 0.204552998862566
zoom = 1.0
distance = 1.0
while True:
for i in range(0, len(data)):
data[i] = 0
distance *= 0.95
centerX = targetX * (1 - distance)
centerY = targetY * (1 - distance)
max_iteration = int(0.5 + max_iteration + math.sqrt(zoom))
if max_iteration > 1500:
max_iteration = 1500
for j in range(0, h):
for i in range(0, w):
x0 = (((i - w / 2.0) / (w / 8)) / zoom) - centerX
y0 = (((j - h / 2.0) / (w / 8)) / zoom) - centerY
x = 0
y = 0
iteration = 0
while (x * x + y * y < 4) and (iteration < max_iteration):
xtemp = x * x - y * y + x0
y = 2 * x * y + y0
x = xtemp
iteration += 1
if iteration >= max_iteration:
data[j * bytesPerLines + (i >> 3)] |= (128 >> (i & 7))
l0.drawBitmap(0, 0, w, data, 0)
zoom /= 0.95

Event Timeline