60 lines
1.3 KiB
Rust
60 lines
1.3 KiB
Rust
use crate::widget::Element;
|
|
|
|
pub struct RoundedOutline;
|
|
|
|
impl Element for RoundedOutline {
|
|
fn render(&mut self, scope: &mut crate::prelude::RenderScope) {
|
|
let (w, h) = scope.get_size_or_parent();
|
|
if w > 2 && h > 2 {
|
|
let d = "─".repeat(w as usize - 2);
|
|
scope.draw_text(&format!(
|
|
"╭{d}╮{}\n╰{d}╯",
|
|
format!("\n│{}│", " ".repeat(w as usize - 2)).repeat(h as usize - 2),
|
|
));
|
|
}
|
|
}
|
|
|
|
fn as_any(&self) -> &dyn std::any::Any {
|
|
self
|
|
}
|
|
|
|
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
|
|
self
|
|
}
|
|
}
|
|
|
|
impl RoundedOutline {
|
|
pub fn new() -> Self {
|
|
Self
|
|
}
|
|
}
|
|
|
|
pub struct Outline;
|
|
|
|
impl Element for Outline {
|
|
fn render(&mut self, scope: &mut crate::prelude::RenderScope) {
|
|
let (w, h) = scope.get_size_or_parent();
|
|
if w > 2 && h > 2 {
|
|
let d = "─".repeat(w as usize - 2);
|
|
scope.draw_text(&format!(
|
|
"┌{d}┐{}\n└{d}┘",
|
|
format!("\n│{}│", " ".repeat(w as usize - 2)).repeat(h as usize - 2),
|
|
));
|
|
}
|
|
}
|
|
|
|
fn as_any(&self) -> &dyn std::any::Any {
|
|
self
|
|
}
|
|
|
|
fn as_any_mut(&mut self) -> &mut dyn std::any::Any {
|
|
self
|
|
}
|
|
}
|
|
|
|
impl Outline {
|
|
pub fn new() -> Self {
|
|
Self
|
|
}
|
|
}
|