1use litequad::color::{Color, BLUE, GREEN, RED, YELLOW};
2
3#[derive(PartialEq, Clone, Copy)]
4pub enum Marker {
5 Circle(f32),
6 None,
7}
8
9#[derive(Clone, Copy)]
10pub enum LineType {
11 Solid,
12 None,
13}
14
15#[derive(Clone, Copy)]
16pub struct LineDesc {
17 pub color: Color,
18 pub marker: Marker,
19 pub line_type: LineType,
20}
21
22impl Default for LineDesc {
23 fn default() -> Self {
24 LineDesc {
25 color: GREEN,
26 marker: Marker::None,
27 line_type: LineType::Solid,
28 }
29 }
30}
31
32impl From<&str> for LineDesc {
33 fn from(desc: &str) -> LineDesc {
34 let mut color = GREEN;
35 let mut line_type = LineType::None;
36 let mut marker = Marker::None;
37
38 let mut radius = 5.;
39
40 for char in desc.chars() {
41 match char {
42 'r' => color = RED,
43 'g' => color = GREEN,
44 'b' => color = BLUE,
45 'y' => color = YELLOW,
46 'c' => color = Color::new(0., 1., 1., 1.),
48 'o' => marker = Marker::Circle(radius),
49 '-' => line_type = LineType::Solid,
50 '1'..='9' => radius = char.to_digit(10).unwrap() as f32,
51 _ => {}
52 }
53 }
54 if marker == Marker::None {
55 line_type = LineType::Solid
56 }
57 LineDesc {
58 color,
59 marker,
60 line_type,
61 }
62 }
63}