1use ak_core::Structure;
2
3use crate::ScalarColorMap;
4
5use super::{AppearanceChannel, BondList, FaceList, RenderStyle, SelectedImageAtom};
6
7pub enum ViewerCommand {
8 LoadTrajectory {
9 frames: Vec<Structure>,
10 initial_frame: usize,
11 },
12 AppendFrame {
13 frame: Structure,
14 },
15 SetCurrentFrame {
16 index: usize,
17 },
18 SetFollowTail {
19 enabled: bool,
20 },
21 SetAtomScalars {
22 name: String,
23 values: Vec<f32>,
24 frame_index: Option<usize>,
25 },
26 MapAppearanceByScalar {
27 name: String,
28 channel: AppearanceChannel,
29 palette: Option<ScalarColorMap>,
30 min: Option<f32>,
31 max: Option<f32>,
32 append: bool,
33 },
34 ResetAtomAppearance {
35 channel: Option<AppearanceChannel>,
36 },
37 SetBonds {
38 bonds: BondList,
39 frame_index: Option<usize>,
40 },
41 AddBonds {
42 bonds: BondList,
43 frame_index: Option<usize>,
44 },
45 RemoveBonds {
46 bonds: BondList,
47 frame_index: Option<usize>,
48 },
49 ClearBonds {
50 frame_index: Option<usize>,
51 },
52 SetFaces {
53 faces: FaceList,
54 frame_index: Option<usize>,
55 },
56 AddFaces {
57 faces: FaceList,
58 frame_index: Option<usize>,
59 },
60 RemoveFaces {
61 faces: FaceList,
62 frame_index: Option<usize>,
63 },
64 ClearFaces {
65 frame_index: Option<usize>,
66 },
67 SetRenderStyle {
68 style: RenderStyle,
69 selection: Vec<bool>,
70 frame_index: Option<usize>,
71 append: bool,
72 },
73 ResetRenderStyle,
74 ReplaceSelection {
75 selection: Vec<bool>,
76 frame_index: Option<usize>,
77 },
78 AddSelection {
79 selection: Vec<bool>,
80 frame_index: Option<usize>,
81 },
82 RemoveSelection {
83 selection: Vec<bool>,
84 frame_index: Option<usize>,
85 },
86 ClearSelection {
87 frame_index: Option<usize>,
88 },
89 ReplaceImageSelection {
90 selection: Vec<SelectedImageAtom>,
91 frame_index: Option<usize>,
92 },
93 AddImageSelection {
94 selection: Vec<SelectedImageAtom>,
95 frame_index: Option<usize>,
96 },
97 RemoveImageSelection {
98 selection: Vec<SelectedImageAtom>,
99 frame_index: Option<usize>,
100 },
101 ClearImageSelection {
102 frame_index: Option<usize>,
103 },
104 SetSupercell {
105 repeats: [u32; 3],
106 },
107 IncrementSupercellAxis {
108 axis: usize,
109 },
110 DecrementSupercellAxis {
111 axis: usize,
112 },
113 ResetSupercell,
114 SetGhostRepeatedImages {
115 enabled: bool,
116 },
117 ToggleGhostRepeatedImages,
118 SetCameraView {
119 focus: Option<[f32; 3]>,
120 radius: Option<f32>,
121 yaw: Option<f32>,
122 pitch: Option<f32>,
123 },
124 PanCamera {
125 delta: [f32; 3],
126 },
127 ZoomCamera {
128 factor: Option<f32>,
129 delta: Option<f32>,
130 },
131 OrbitCamera {
132 yaw_delta: f32,
133 pitch_delta: f32,
134 },
135 FrameAll,
136 StartOrbit {
137 yaw_rate: f32,
138 pitch_rate: f32,
139 },
140 StopCameraMotion,
141 Close,
142}