ratatui::style

Enum Color

Source
pub enum Color {
Show 19 variants Reset, Black, Red, Green, Yellow, Blue, Magenta, Cyan, Gray, DarkGray, LightRed, LightGreen, LightYellow, LightBlue, LightMagenta, LightCyan, White, Rgb(u8, u8, u8), Indexed(u8),
}
Expand description

ANSI Color

All colors from the ANSI color table are supported (though some names are not exactly the same).

Color NameColorForegroundBackground
blackColor::Black3040
redColor::Red3141
greenColor::Green3242
yellowColor::Yellow3343
blueColor::Blue3444
magentaColor::Magenta3545
cyanColor::Cyan3646
gray*Color::Gray3747
darkgray*Color::DarkGray90100
lightredColor::LightRed91101
lightgreenColor::LightGreen92102
lightyellowColor::LightYellow93103
lightblueColor::LightBlue94104
lightmagentaColor::LightMagenta95105
lightcyanColor::LightCyan96106
white*Color::White97107
  • gray is sometimes called white - this is not supported as we use white for bright white
  • gray is sometimes called silver - this is supported
  • darkgray is sometimes called light black or bright black (both are supported)
  • white is sometimes called light white or bright white (both are supported)
  • we support bright and light prefixes for all colors
  • we support - and _ and as separators for all colors
  • we support both gray and grey spellings

From<Color> for Style is implemented by creating a style with the foreground color set to the given color. This allows you to use colors anywhere that accepts Into<Style>.

§Example

use std::str::FromStr;

use ratatui::style::Color;

assert_eq!(Color::from_str("red"), Ok(Color::Red));
assert_eq!("red".parse(), Ok(Color::Red));
assert_eq!("lightred".parse(), Ok(Color::LightRed));
assert_eq!("light red".parse(), Ok(Color::LightRed));
assert_eq!("light-red".parse(), Ok(Color::LightRed));
assert_eq!("light_red".parse(), Ok(Color::LightRed));
assert_eq!("lightRed".parse(), Ok(Color::LightRed));
assert_eq!("bright red".parse(), Ok(Color::LightRed));
assert_eq!("bright-red".parse(), Ok(Color::LightRed));
assert_eq!("silver".parse(), Ok(Color::Gray));
assert_eq!("dark-grey".parse(), Ok(Color::DarkGray));
assert_eq!("dark gray".parse(), Ok(Color::DarkGray));
assert_eq!("light-black".parse(), Ok(Color::DarkGray));
assert_eq!("white".parse(), Ok(Color::White));
assert_eq!("bright white".parse(), Ok(Color::White));

Variants§

§

Reset

Resets the foreground or background color

§

Black

ANSI Color: Black. Foreground: 30, Background: 40

§

Red

ANSI Color: Red. Foreground: 31, Background: 41

§

Green

ANSI Color: Green. Foreground: 32, Background: 42

§

Yellow

ANSI Color: Yellow. Foreground: 33, Background: 43

§

Blue

ANSI Color: Blue. Foreground: 34, Background: 44

§

Magenta

ANSI Color: Magenta. Foreground: 35, Background: 45

§

Cyan

ANSI Color: Cyan. Foreground: 36, Background: 46

§

Gray

ANSI Color: White. Foreground: 37, Background: 47

Note that this is sometimes called silver or white but we use white for bright white

§

DarkGray

ANSI Color: Bright Black. Foreground: 90, Background: 100

Note that this is sometimes called light black or bright black but we use dark gray

§

LightRed

ANSI Color: Bright Red. Foreground: 91, Background: 101

§

LightGreen

ANSI Color: Bright Green. Foreground: 92, Background: 102

§

LightYellow

ANSI Color: Bright Yellow. Foreground: 93, Background: 103

§

LightBlue

ANSI Color: Bright Blue. Foreground: 94, Background: 104

§

LightMagenta

ANSI Color: Bright Magenta. Foreground: 95, Background: 105

§

LightCyan

ANSI Color: Bright Cyan. Foreground: 96, Background: 106

§

White

ANSI Color: Bright White. Foreground: 97, Background: 107 Sometimes called bright white or light white in some terminals

§

Rgb(u8, u8, u8)

An RGB color.

Note that only terminals that support 24-bit true color will display this correctly. Notably versions of Windows Terminal prior to Windows 10 and macOS Terminal.app do not support this.

If the terminal does not support true color, code using the TermwizBackend will fallback to the default text color. Crossterm and Termion do not have this capability and the display will be unpredictable (e.g. Terminal.app may display glitched blinking text). See https://github.com/ratatui/ratatui/issues/475 for an example of this problem.

See also: https://en.wikipedia.org/wiki/ANSI_escape_code#24-bit

§

Indexed(u8)

Implementations§

Source§

impl Color

Source

pub const fn from_u32(u: u32) -> Self

Convert a u32 to a Color

The u32 should be in the format 0x00RRGGBB.

Trait Implementations§

Source§

impl Clone for Color

Source§

fn clone(&self) -> Color

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Color

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Color

Source§

fn default() -> Color

Returns the “default value” for a type. Read more
Source§

impl Display for Color

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<Color> for Color

Source§

fn from(color: Color) -> Self

Converts to this type from the input type.
Source§

impl From<Color> for Color

Source§

fn from(value: CColor) -> Self

Converts to this type from the input type.
Source§

impl From<Color> for Style

Source§

fn from(color: Color) -> Self

Creates a new Style with the given foreground color.

To specify a foreground and background color, use the from((fg, bg)) constructor.

§Example
use ratatui::style::{Color, Style};

let style = Style::from(Color::Red);
Source§

impl FromStr for Color

Converts a string representation to a Color instance.

The from_str function attempts to parse the given string and convert it to the corresponding Color variant. It supports named colors, RGB values, and indexed colors. If the string cannot be parsed, a ParseColorError is returned.

See the Color documentation for more information on the supported color names.

§Examples

use std::str::FromStr;

use ratatui::style::Color;

let color: Color = Color::from_str("blue").unwrap();
assert_eq!(color, Color::Blue);

let color: Color = Color::from_str("#FF0000").unwrap();
assert_eq!(color, Color::Rgb(255, 0, 0));

let color: Color = Color::from_str("10").unwrap();
assert_eq!(color, Color::Indexed(10));

let color: Result<Color, _> = Color::from_str("invalid_color");
assert!(color.is_err());
Source§

type Err = ParseColorError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for Color

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Color

Source§

fn eq(&self, other: &Color) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Color

Source§

impl Eq for Color

Source§

impl StructuralPartialEq for Color

Auto Trait Implementations§

§

impl Freeze for Color

§

impl RefUnwindSafe for Color

§

impl Send for Color

§

impl Sync for Color

§

impl Unpin for Color

§

impl UnwindSafe for Color

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToCompactString for T
where T: Display,

Source§

impl<T> ToLine for T
where T: Display,

Source§

fn to_line(&self) -> Line<'_>

Converts the value to a Line.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToSpan for T
where T: Display,

Source§

fn to_span(&self) -> Span<'_>

Converts the value to a Span.
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToText for T
where T: Display,

Source§

fn to_text(&self) -> Text<'_>

Converts the value to a Text.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.