Struct tui::style::Style [−][src]
pub struct Style { pub fg: Option<Color>, pub bg: Option<Color>, pub add_modifier: Modifier, pub sub_modifier: Modifier, }
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);
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(), );
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(), );
Fields
fg: Option<Color>
bg: Option<Color>
add_modifier: Modifier
sub_modifier: Modifier
Implementations
impl Style
[src]
impl Style
[src]pub fn reset() -> Style
[src]
Returns a Style
resetting all properties.
pub fn fg(self, color: Color) -> Style
[src]
Changes the foreground color.
Examples
let style = Style::default().fg(Color::Blue); let diff = Style::default().fg(Color::Red); assert_eq!(style.patch(diff), Style::default().fg(Color::Red));
pub fn bg(self, color: Color) -> Style
[src]
Changes the background color.
Examples
let style = Style::default().bg(Color::Blue); let diff = Style::default().bg(Color::Red); assert_eq!(style.patch(diff), Style::default().bg(Color::Red));
pub fn add_modifier(self, modifier: Modifier) -> Style
[src]
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());
pub fn remove_modifier(self, modifier: Modifier) -> Style
[src]
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);
pub fn patch(self, other: Style) -> Style
[src]
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));
Trait Implementations
impl StructuralPartialEq for Style
[src]
impl StructuralPartialEq for Style
[src]Auto Trait Implementations
impl RefUnwindSafe for Style
impl RefUnwindSafe for Style
impl UnwindSafe for Style
impl UnwindSafe for Style