65 lines
2.1 KiB
Python
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
|
|
|