-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexample_partial_viewport.py
More file actions
72 lines (59 loc) · 3.16 KB
/
example_partial_viewport.py
File metadata and controls
72 lines (59 loc) · 3.16 KB
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
from __future__ import print_function
import argparse
import numpy as np
import copy
import neuroglancer
import neuroglancer.cli
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'] = 'Viewport: %r' % (partial_viewport, )
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)