mdbook_plotly/code_handler/plot_obj_parser/
common.rs1use super::until::Color;
2use crate::code_handler::parse_context::ParseContext;
3use crate::{translate_enum_with_config, translate_with_config};
4use anyhow::Result;
5use plotly::common::{ColorBar, Marker};
6
7pub fn parse_marker(
8 marker_obj: &mut serde_json::Value,
9 context: &ParseContext<'_>,
10) -> Result<Marker> {
11 let marker = translate_with_config! {
12 Marker::new(),
13 marker_obj,
14 context.map(),
15 context.map_eval(),
16 (color, Color),
17 (opacity, f64),
18 (size, usize),
19 (size_array, Vec<usize>),
20 (max_displayed, usize),
21 (size_ref, usize),
22 (size_min, usize),
23 (cauto, bool),
24 (cmax, f64),
25 (cmin, f64),
26 (cmid, f64),
27 (auto_color_scale, bool),
28 (reverse_scale, bool),
29 (show_scale, bool),
30 (outlier_color, Color)
31 }?;
32
33 use plotly::common::{MarkerSymbol, SizeMode};
34 translate_enum_with_config! {
35 marker,
36 marker_obj,
37 context.map(),
38 context.map_eval(),
39 (symbol, {
40 "circle" => MarkerSymbol::Circle,
41 "square" => MarkerSymbol::Square,
42 "diamond" => MarkerSymbol::Diamond,
43 "cross" => MarkerSymbol::Cross,
44 "x" => MarkerSymbol::X,
45 "triangle-up" => MarkerSymbol::TriangleUp,
46 "triangle-down" => MarkerSymbol::TriangleDown,
47 "triangle-left" => MarkerSymbol::TriangleLeft,
48 "triangle-right" => MarkerSymbol::TriangleRight,
49 "pentagon" => MarkerSymbol::Pentagon,
50 "hexagon" => MarkerSymbol::Hexagon,
51 }),
52 (size_mode, {
53 "area" => SizeMode::Area,
54 "diameter" => SizeMode::Diameter,
55 }),
56 }
57}
58
59pub fn parse_color_bar(
60 color_bar_obj: &mut serde_json::Value,
61 context: &ParseContext<'_>,
62) -> Result<ColorBar> {
63 translate_with_config! {
64 ColorBar::new(),
65 color_bar_obj,
66 context.map(),
67 context.map_eval(),
68 (thickness, usize),
69 (len, usize),
70 (x, f64),
71 (y, f64),
72 (title, String),
73 }
74}