tui_gradient_block/structs/
border_symbols.rs1use derive_builder::Builder;
2use getset::{Getters, Setters};
3use tui_rule::Set;
4#[cfg_attr(
5 feature = "serde",
6 derive(serde::Serialize, serde::Deserialize)
7)]
8#[derive(Getters, Setters, Builder, Clone, Debug)]
9pub struct SegmentSet {
10 pub top: Set,
11 pub bottom: Set,
12 pub right: Set,
13 pub left: Set,
14}
15#[cfg_attr(
16 feature = "serde",
17 derive(serde::Serialize, serde::Deserialize)
18)]
19#[derive(Getters, Setters, Builder, Clone, Debug)]
20pub struct Corners {
21 pub bottom_right: char,
22 pub bottom_left: char,
23 pub top_left: char,
24 pub top_right: char,
25}
26impl SegmentSet {
27 #[cfg(feature = "serde")]
28 pub fn from_json(path: &str) -> Result<Self, E> {
29 crate::generate_from_json!(path, Self)
30 }
31 pub fn from_ratatui_set(
32 set: ratatui::symbols::border::Set,
33 ) -> Self {
34 macro_rules! parsed {
35 ($s:expr) => {
36 $s.parse::<char>().unwrap_or(' ')
37 };
38 }
39 let top = parsed!(set.horizontal_top);
40 let bottom = parsed!(set.horizontal_bottom);
41 let right = parsed!(set.vertical_right);
42 let left = parsed!(set.vertical_left);
43 let top_right = parsed!(set.top_right);
44 let top_left = parsed!(set.top_left);
45 let bottom_right = parsed!(set.bottom_right);
46 let bottom_left = parsed!(set.bottom_left);
47 Self {
48 top: Set {
49 start: top_left,
50 rep_1: top,
51 center: top,
52 rep_2: top,
53 end: top_right,
54 },
55 bottom: Set {
56 start: bottom_left,
57 rep_1: bottom,
58 center: bottom,
59 rep_2: bottom,
60 end: bottom_right,
61 },
62 right: Set {
63 start: top_right,
64 rep_1: right,
65 center: right,
66 rep_2: right,
67 end: bottom_right,
68 },
69 left: Set {
70 start: top_left,
71 rep_1: left,
72 center: left,
73 rep_2: left,
74 end: bottom_left,
75 },
76 }
77 }
78}