""" DoCameraImage """
from .misc import mag_map
from .CameraImage import CameraImage
[docs]
class DoCameraImage:
""" DoCameraImage """
def __init__(cls, label=None, nx:int=400, ny:int=300, w:int=400, h:int=300):
""" DoCameraImage """
if label is None:
raise ValueError('DoCameraImage() needs label value')
cls._label = label
cls.nx = nx
cls.ny = ny
cls.w = w
cls.h = h
cls.scale_x = float(cls.nx)/float(cls.w)
cls.scale_y = float(cls.ny)/float(cls.h)
# get camera image ready
cls._ci = CameraImage(cls.w, cls.h)
cls.reset()
[docs]
def reset(cls):
""" reset """
cls.stars()
[docs]
def stars(cls, xy_list=None, mag_list=None):
""" stars """
if cls._label is None or cls._ci is None:
raise ValueError('DoCameraImage() needs register first')
cls._ci.clear(color=(0,0,0))
# cls.outline()
if xy_list is not None:
ii = 0
for x1,y1 in xy_list:
x = ((cls.nx-1) - x1)/cls.scale_x
y = ((cls.ny-1) - y1)/cls.scale_y
mag = mag_list[ii]
diameter = mag_map(mag, multiplier=4.0) / cls.scale_x
cls._ci.circle((x,y), radius=diameter/2, color=(255,255,255))
# print('\tcamera=[%4d,%4d] -> pixel=[%3d,%3d]' % (x1, y1, x, y))
ii += 1
cls._ci.paint(cls._label)
[docs]
def outline(cls):
""" outline """
# red outline
cls._ci.line(( 0, 0), ( 0, cls.h-1), color=(255,0,0))
cls._ci.line(( 0, cls.h-1), (cls.w-1, cls.h-1), color=(255,0,0))
cls._ci.line((cls.w-1, cls.h-1), (cls.w-1, 0), color=(255,0,0))
cls._ci.line((cls.w-1, 0), ( 0, 0), color=(255,0,0))
# crosshairs
cls._ci.line(( 0, 0), (cls.w-1, cls.h-1), color=(255,0,0))
cls._ci.line((cls.w-1, 0), ( 0, cls.h-1), color=(255,0,0))
# optional circle in center
cls._ci.circle((cls.w/2, cls.h/2), 10, color=(255,0,0))