Files
x11ma/script/test/image_arrows.py
2022-05-24 10:16:16 +02:00

65 lines
2.1 KiB
Python

arrows_renderer = arrow_x = arrow_y = None
FOV_ARROWS = { \
"50um[0.0]": [20.0] \
}
FOV_ARROWS_SIZE=100
FOV_ARROWS_ORIGIN=Point(image.getData().width/4, image.getData().height*3/4)
FOV_FUTURE=None
def update_arrows():
global arrows_renderer, arrow_x, arrow_y
if arrows_renderer is not None:
fov = microscope.get_preset_label()
args = FOV_ARROWS.get(fov, None)
if args is not None:
angle=args[0]
x,y = FOV_ARROWS_ORIGIN.x, FOV_ARROWS_ORIGIN.y
a=math.radians(angle)
xa,ya=int(x+FOV_ARROWS_SIZE*math.cos(a)), int(y-FOV_ARROWS_SIZE*math.sin(a))
arrow_x.update(FOV_ARROWS_ORIGIN, Point(xa,ya))
angle=angle+90
a=math.radians(angle)
xa,ya=int(x+FOV_ARROWS_SIZE*math.cos(a)), int(y-FOV_ARROWS_SIZE*math.sin(a))
arrow_y.update(FOV_ARROWS_ORIGIN, Point(xa,ya))
else:
arrow_x.update(FOV_ARROWS_ORIGIN, FOV_ARROWS_ORIGIN)
arrow_y.update(FOV_ARROWS_ORIGIN, FOV_ARROWS_ORIGIN)
def task_update_arrows():
global arrows_renderer
while arrows_renderer is not None:
try:
if arrows_renderer.isShowing():
update_arrows()
time.sleep(5.0)
time.sleep(1.0)
except:
pass
def start_arrows(renderer=None):
global arrows_renderer, arrow_x, arrow_y, FOV_FUTURE
if arrows_renderer is None:
arrows_renderer = renderer if renderer else show_panel(image)
arrow_x = Overlays.Arrow(Pen(Color.GREEN))
arrow_y = Overlays.Arrow(Pen(Color.GREEN.darker().darker()))
arrows_renderer.addOverlays([arrow_x,arrow_y])
#update_arrows()
FOV_FUTURE = fork(task_update_arrows,)[0]
def stop_arrows(renderer=None):
global arrows_renderer, arrow_x, arrow_y, FOV_FUTURE
if arrows_renderer is not None:
arrows_renderer.removeOverlays([arrow_x,arrow_y])
arrows_renderer=None
FOV_FUTURE.cancel(True)
try:
join(FOV_FUTURE)
except:
pass