openpine_vm/visuals/
plot.rs1use num_enum::FromPrimitive;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 series::Series,
6 visuals::{Color, PlotDisplay},
7};
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, FromPrimitive, Serialize, Deserialize)]
11#[repr(i32)]
12pub enum PlotStyle {
13 #[default]
15 Line = 0,
16 StepLine = 8,
18 Diamond = 9,
20 Histogram = 7,
22 Cross = 6,
24 Area = 2,
26 Columns = 5,
28 Circles = 4,
30 LineBr = 1,
32 AreaBr = 3,
34 StepLineBr = 10,
36}
37
38#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, FromPrimitive, Serialize, Deserialize)]
40#[repr(i32)]
41pub enum PlotLineStyle {
42 #[default]
44 Solid = 0,
45 Dotted = 2,
47 Dashed = 1,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
53pub struct Plot {
54 pub title: Option<String>,
56 pub series: Series<Option<f64>>,
58 pub colors: Series<Option<Color>>,
60 pub line_width: i32,
62 pub style: PlotStyle,
64 pub track_price: bool,
66 pub histbase: f64,
68 pub offset: i32,
70 pub join: bool,
72 pub editable: bool,
74 pub show_last: Option<usize>,
76 pub display: PlotDisplay,
78 pub format: Option<String>,
80 pub precision: Option<i32>,
82 pub force_overlay: bool,
84 pub line_style: PlotLineStyle,
86}
87
88impl Plot {
89 pub(crate) fn append_new(&mut self) {
90 self.series.append_new();
91 self.colors.append_new();
92 }
93}