forked from google/neuroglancer
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathexample_partial_viewport.py
87 lines (75 loc) · 3.21 KB
/
example_partial_viewport.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import argparse
import copy
import neuroglancer
import neuroglancer.cli
import numpy as np
from example import add_example_layers
def _make_viewport_adjust_command(adjustments):
def handler(s):
with viewer.txn() as s:
for i, amount in adjustments:
s.partial_viewport[i] += amount
s.partial_viewport[:2] = np.clip(s.partial_viewport[:2], 0, 0.9)
s.partial_viewport[2:] = np.clip(
s.partial_viewport[2:], 0.1, 1 - s.partial_viewport[:2]
)
partial_viewport = np.array(s.partial_viewport)
with viewer.config_state.txn() as s:
s.viewer_size = [256, 256]
s.status_messages["note"] = f"Viewport: {partial_viewport!r}"
return handler
if __name__ == "__main__":
ap = argparse.ArgumentParser()
neuroglancer.cli.add_server_arguments(ap)
args = ap.parse_args()
neuroglancer.cli.handle_server_arguments(args)
viewer = neuroglancer.Viewer()
with viewer.txn() as s:
a, b = add_example_layers(s)
initial_state = viewer.state
def _add_prefetch(s):
with viewer.config_state.txn() as s:
prefetch_state = copy.deepcopy(initial_state)
prefetch_state.partial_viewport = [0.5, 0, 0.5, 1]
s.prefetch = [neuroglancer.PrefetchState(state=prefetch_state, priority=0)]
def _remove_prefetch(s):
with viewer.config_state.txn() as s:
del s.prefetch[:]
viewer.actions.add(
"viewport-translate-left", _make_viewport_adjust_command([(0, -0.1)])
)
viewer.actions.add(
"viewport-translate-right", _make_viewport_adjust_command([(0, 0.1)])
)
viewer.actions.add(
"viewport-translate-up", _make_viewport_adjust_command([(1, -0.1)])
)
viewer.actions.add(
"viewport-translate-down", _make_viewport_adjust_command([(1, 0.1)])
)
viewer.actions.add(
"viewport-shrink-width", _make_viewport_adjust_command([(2, -0.1)])
)
viewer.actions.add(
"viewport-enlarge-width", _make_viewport_adjust_command([(2, 0.1)])
)
viewer.actions.add(
"viewport-shrink-height", _make_viewport_adjust_command([(3, -0.1)])
)
viewer.actions.add(
"viewport-enlarge-height", _make_viewport_adjust_command([(3, 0.1)])
)
viewer.actions.add("viewport-add-prefetch", _add_prefetch)
viewer.actions.add("viewport-remove-prefetch", _remove_prefetch)
with viewer.config_state.txn() as s:
s.input_event_bindings.viewer["keyh"] = "viewport-translate-left"
s.input_event_bindings.viewer["keyl"] = "viewport-translate-right"
s.input_event_bindings.viewer["keyj"] = "viewport-translate-down"
s.input_event_bindings.viewer["keyk"] = "viewport-translate-up"
s.input_event_bindings.viewer["keyt"] = "viewport-add-prefetch"
s.input_event_bindings.viewer["keyg"] = "viewport-remove-prefetch"
s.input_event_bindings.viewer["shift+keyu"] = "viewport-shrink-height"
s.input_event_bindings.viewer["shift+keyi"] = "viewport-enlarge-height"
s.input_event_bindings.viewer["shift+keyy"] = "viewport-shrink-width"
s.input_event_bindings.viewer["shift+keyo"] = "viewport-enlarge-width"
print(viewer)