ak_vis/viewer/session/
appearance.rs1use crate::ScalarColorMap;
2
3#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
4pub enum AppearanceChannel {
5 Color,
6 Metallic,
7 PerceptualRoughness,
8}
9
10#[derive(Clone, Debug, PartialEq)]
11pub struct AtomAppearanceRule {
12 pub name: String,
13 pub channel: AppearanceChannel,
14 pub palette: Option<ScalarColorMap>,
15 pub min: Option<f32>,
16 pub max: Option<f32>,
17}
18
19#[derive(Clone, Copy, Debug, PartialEq)]
20pub enum BondScope {
21 BothSelected,
22 TouchSelection,
23}
24
25#[derive(Clone, Copy, Debug, PartialEq)]
26pub struct BallAndStickStyle {
27 pub atom_scale: f32,
28 pub bond_radius: f32,
29 pub bond_color: [f32; 4],
30 pub bond_scope: BondScope,
31}
32
33#[derive(Clone, Copy, Debug, PartialEq)]
34pub enum RenderStyle {
35 SpaceFilling,
36 BallAndStick(BallAndStickStyle),
37}
38
39#[derive(Clone, Debug, PartialEq)]
40pub struct RenderStyleRule {
41 pub frame_index: usize,
42 pub selection: Vec<bool>,
43 pub style: RenderStyle,
44}
45
46impl BallAndStickStyle {
47 pub fn bond_color(self) -> bevy::color::Color {
48 bevy::color::Color::srgba(
49 self.bond_color[0],
50 self.bond_color[1],
51 self.bond_color[2],
52 self.bond_color[3],
53 )
54 }
55}