Struct tuirealm::tui::style::Style [−][src]
pub struct Style { pub fg: Option<Color>, pub bg: Option<Color>, pub add_modifier: Modifier, pub sub_modifier: Modifier, }
Expand description
Style let you control the main characteristics of the displayed elements.
Style::default() .fg(Color::Black) .bg(Color::Green) .add_modifier(Modifier::ITALIC | Modifier::BOLD);Run
It represents an incremental change. If you apply the styles S1, S2, S3 to a cell of the terminal buffer, the style of this cell will be the result of the merge of S1, S2 and S3, not just S3.
let styles = [ Style::default().fg(Color::Blue).add_modifier(Modifier::BOLD | Modifier::ITALIC), Style::default().bg(Color::Red), Style::default().fg(Color::Yellow).remove_modifier(Modifier::ITALIC), ]; let mut buffer = Buffer::empty(Rect::new(0, 0, 1, 1)); for style in &styles { buffer.get_mut(0, 0).set_style(*style); } assert_eq!( Style { fg: Some(Color::Yellow), bg: Some(Color::Red), add_modifier: Modifier::BOLD, sub_modifier: Modifier::empty(), }, buffer.get(0, 0).style(), );Run
The default implementation returns a Style
that does not modify anything. If you wish to
reset all properties until that point use Style::reset
.
let styles = [ Style::default().fg(Color::Blue).add_modifier(Modifier::BOLD | Modifier::ITALIC), Style::reset().fg(Color::Yellow), ]; let mut buffer = Buffer::empty(Rect::new(0, 0, 1, 1)); for style in &styles { buffer.get_mut(0, 0).set_style(*style); } assert_eq!( Style { fg: Some(Color::Yellow), bg: Some(Color::Reset), add_modifier: Modifier::empty(), sub_modifier: Modifier::empty(), }, buffer.get(0, 0).style(), );Run
Fields
fg: Option<Color>
bg: Option<Color>
add_modifier: Modifier
sub_modifier: Modifier
Implementations
Changes the text emphasis.
When applied, it adds the given modifier to the Style
modifiers.
Examples
let style = Style::default().add_modifier(Modifier::BOLD); let diff = Style::default().add_modifier(Modifier::ITALIC); let patched = style.patch(diff); assert_eq!(patched.add_modifier, Modifier::BOLD | Modifier::ITALIC); assert_eq!(patched.sub_modifier, Modifier::empty());Run
Changes the text emphasis.
When applied, it removes the given modifier from the Style
modifiers.
Examples
let style = Style::default().add_modifier(Modifier::BOLD | Modifier::ITALIC); let diff = Style::default().remove_modifier(Modifier::ITALIC); let patched = style.patch(diff); assert_eq!(patched.add_modifier, Modifier::BOLD); assert_eq!(patched.sub_modifier, Modifier::ITALIC);Run
Results in a combined style that is equivalent to applying the two individual styles to a style one after the other.
Examples
let style_1 = Style::default().fg(Color::Yellow); let style_2 = Style::default().bg(Color::Red); let combined = style_1.patch(style_2); assert_eq!( Style::default().patch(style_1).patch(style_2), Style::default().patch(combined));Run
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Style
impl UnwindSafe for Style
Blanket Implementations
Mutably borrows from an owned value. Read more