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);
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
sourceimpl Style
impl Style
sourcepub fn fg(self, color: Color) -> Style
pub fn fg(self, color: Color) -> Style
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));
sourcepub fn bg(self, color: Color) -> Style
pub fn bg(self, color: Color) -> Style
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));
sourcepub fn add_modifier(self, modifier: Modifier) -> Style
pub fn add_modifier(self, modifier: Modifier) -> Style
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());
sourcepub fn remove_modifier(self, modifier: Modifier) -> Style
pub fn remove_modifier(self, modifier: Modifier) -> Style
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);
sourcepub fn patch(self, other: Style) -> Style
pub fn patch(self, other: Style) -> Style
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 Copy for Style
impl Eq for Style
impl StructuralEq for Style
impl StructuralPartialEq for Style
Auto Trait Implementations
impl RefUnwindSafe for Style
impl Send for Style
impl Sync for Style
impl Unpin for Style
impl UnwindSafe for Style
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more