tui_gradient_block/
macros.rs1#[macro_export]
2macro_rules! get_aligned_position {
3 ($area:expr, $alignment:expr, $text_len:expr, $padding_left:expr, $padding_right:expr) => {
4 match $alignment {
5 Some(prelude::Alignment::Left) => {
6 $area.left().saturating_sub($padding_left + 1)
7 }
8 Some(prelude::Alignment::Right) => ($area.right())
9 .saturating_sub($text_len + 1)
10 .saturating_sub($padding_right),
11 Some(prelude::Alignment::Center) => ($area.left() + $area.width / 2)
12 .saturating_sub($text_len / 2)
13 .saturating_sub($padding_right)
14 .saturating_add($padding_left),
15 None => $area.left().saturating_add($padding_left + 1),
16 }
17 };
18}
19#[macro_export]
20macro_rules! handle_fill {
21 ($fill:expr, $area:expr, $buf:expr) => {
22 Paragraph::new($fill)
23 .wrap(widgets::Wrap { trim: true })
24 .block(Block::default().borders(Borders::ALL))
25 .render($area, $buf);
26 };
27}
28#[macro_export]
29macro_rules! handle_args {
30 () => {{
31 use ratatui::symbols::border::{THICK, ROUNDED, DOUBLE, PLAIN};
32 let style: ratatui::symbols::border::Set;
33 let args: Vec<String> = std::env::args().collect();
34 if args.len() < 2 || args.len() > 2 {
35 eprintln!(
36 "Usage: cargo run --example <example_name> <parameter>"
37 );
38 eprintln!(
39 "Valid parameters are plain, double, thick, and rounded"
40 );
41 std::process::exit(1);
42 }
43
44 let parameter = &args[1];
45 match parameter.to_lowercase().as_str() {
46 "plain" => {
47 style = PLAIN;
48 }
49 "double" => {
50 style = DOUBLE;
51 }
52 "thick" => {
53 style = THICK;
54 }
55 "rounded" | "round" => {
56 style = ROUNDED;
57 }
58 _ => {
59 eprintln!(
60 "Please enter a valid parameter. Valid parameters are plain, double, thick, and rounded"
61 );
62 std::process::exit(1);
63 }
64 }
65 style
66 }};
67}
68#[macro_export]
69macro_rules! to_ratatui_color {
70 ($c:expr) => {
71 ratatui::style::Color::Rgb(
72 ($c.r * 255.0) as u8,
73 ($c.g * 255.0) as u8,
74 ($c.b * 255.0) as u8,
75 )
76 };
77}
78#[macro_export]
79macro_rules! gen_titles {
80 ($color:expr) => {{
81 use $crate::{
82 structs::title::TitleSet, style::Style, text::Line,
83 to_ratatui_color as to_r_c,
84 widgets::block::Position as P,
85 };
86 let s = Style::new().fg(to_r_c!($color));
87 TitleSet {
88 double_corners_left: (
89 Line::from("Two Corners Left").centered().style(s),
90 P::Top,
91 ),
92 bottom_left: (
93 Line::from("Bottom Left").style(s).centered(),
94 P::Top,
95 ),
96 bottom_right: (
97 Line::from("Bottom Right").centered().style(s),
98 P::Top,
99 ),
100 top_left: (
101 Line::from("Top Left").centered().style(s),
102 P::Top,
103 ),
104 top_right: (
105 Line::from("Top Right").centered().style(s),
106 P::Top,
107 ),
108 horizontal: (
109 Line::from("Horizontal").centered().style(s),
110 P::Top,
111 ),
112 double_corners_right: (
113 Line::from("Two Corners Right")
114 .centered()
115 .style(s),
116 P::Top,
117 ),
118 vertical: (
119 Line::from("Vertical").centered().style(s),
120 P::Top,
121 ),
122 left: (Line::from("Left").centered().style(s), P::Top),
123 right: (Line::from("Right").centered().style(s), P::Top),
124 up: (Line::from("Up").centered().style(s), P::Top),
125 down: (Line::from("Down").centered().style(s), P::Top),
126 misc1: (Line::from("Misc 1").centered().style(s), P::Top),
127 misc2: (Line::from("Misc 2").centered().style(s), P::Top),
128 }
129 }};
130}
131
132#[macro_export]
133macro_rules! generate_theme_use {
134 () => {
135 pub use colorgrad::{Color, GradientBuilder};
136 pub use tui_rule::generate_gradient_text;
137 pub use $crate::{
138 gen_titles, gradient_block,
139 structs::{
140 gradient::{
141 GradientTheme as GT, GradientVariation as GV,
142 },
143 title::TitleSet,
144 },
145 types::G,
146 };
147 };
148}
149#[macro_export]
150macro_rules! generate_from_json {
151 ($path:expr, $returntype:ty) => {{
152 let f = std::fs::File::open($path)?;
153 let gradient: $returntype =
154 serde_json::from_reader(std::io::BufReader::new(f))?;
155 Ok(gradient)
156 }};
157}
158#[macro_export]
159macro_rules! generate_to_json {
160 ($val:expr) => {
161 serde_json::to_string_pretty(&$val).unwrap()
162 };
163}