trading_charts/data/options/handle_scale/
axis_pressed_mouse_move.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Clone)]
4pub struct AxisPressedMouseMoveOptions {
5    #[serde(rename = "time", default = "defaults::time")]
6    time: bool,
7
8    #[serde(rename = "price", default = "defaults::price")]
9    price: bool,
10}
11
12impl AxisPressedMouseMoveOptions {
13    pub fn new() -> Self {
14        Self::default()
15    }
16
17    pub fn new_with_params(time: bool, price: bool) -> Self {
18        Self {
19            time,
20            price,
21        }
22    }
23
24    pub fn with_time(self, time: bool) -> Self {
25        Self {
26            time,
27            ..self
28        }
29    }
30
31    pub fn with_price(self, price: bool) -> Self {
32        Self {
33            price,
34            ..self
35        }
36    }
37
38    pub fn time(&self) -> bool {
39        self.time
40    }
41
42    pub fn set_time(&mut self, time: bool) {
43        self.time = time;
44    }
45
46    pub fn price(&self) -> bool {
47        self.price
48    }
49
50    pub fn set_price(&mut self, price: bool) {
51        self.price = price;
52    }
53}
54
55impl Default for AxisPressedMouseMoveOptions {
56    fn default() -> Self {
57        Self {
58            time:  defaults::time(),
59            price: defaults::price(),
60        }
61    }
62}
63
64mod defaults {
65    pub(super) fn time() -> bool {
66        true
67    }
68
69    pub(super) fn price() -> bool {
70        true
71    }
72}