Skip to main content

Shadow

Struct Shadow 

Source
pub struct Shadow { /* private fields */ }
Expand description

A configurable shadow that can be rendered behind a Block.

A Shadow is rendered in an offset area relative to the block. Its Style is applied first, then an optional cell effect can modify the affected cells, for example by filling them with a shading symbol or dimming the existing background.

Built-in presets:

┌Popup─────┐
│content   │▒
└──────────┘▒
  ▒▒▒▒▒▒▒▒▒▒▒

§Custom effects

use ratatui::buffer::Buffer;
use ratatui::layout::{Position, Rect};
use ratatui::widgets::{Block, CellEffect, Shadow};

#[derive(Debug)]
struct Checker;

impl CellEffect for Checker {
    fn apply(&self, shadow_area: Rect, base_area: Rect, buf: &mut Buffer) {
        for y in shadow_area.top()..shadow_area.bottom() {
            for x in shadow_area.left()..shadow_area.right() {
                if base_area.contains(Position { x, y }) {
                    continue;
                }
                if (x + y) % 2 == 0 {
                    buf[(x, y)].set_symbol("░");
                }
            }
        }
    }
}

let shadow = Shadow::custom(Checker);
let block = Block::bordered().shadow(shadow);

Implementations§

Source§

impl Shadow

Source

pub fn overlay() -> Self

Creates a shadow that only applies style to the offset area.

This leaves the existing cell symbols unchanged.

§Example
use ratatui::style::Stylize;
use ratatui::widgets::{Block, Shadow};

let shadow = Shadow::overlay().black().on_white();
let block = Block::bordered().shadow(shadow);
Source

pub fn block() -> Self

Creates a shadow filled with full block symbols.

§Example
use ratatui::widgets::{Block, Shadow};

let block = Block::bordered().shadow(Shadow::block());
Source

pub fn light_shade() -> Self

Creates a shadow filled with light shade symbols.

§Example
use ratatui::widgets::{Block, Shadow};

let block = Block::bordered().shadow(Shadow::light_shade());
Source

pub fn medium_shade() -> Self

Creates a shadow filled with medium shade symbols.

§Example
use ratatui::widgets::{Block, Shadow};

let block = Block::bordered().shadow(Shadow::medium_shade());
Source

pub fn dark_shade() -> Self

Creates a shadow filled with dark shade symbols.

§Example
use ratatui::layout::Offset;
use ratatui::style::Stylize;
use ratatui::widgets::{Block, Shadow};

let block = Block::bordered().shadow(
    Shadow::dark_shade()
        .black()
        .on_white()
        .offset(Offset::new(2, 1)),
);
Source

pub fn symbol(symbol: &'static str) -> Self

Creates a shadow filled with the given symbol.

§Example
use ratatui::widgets::{Block, Shadow};

let shadow = Shadow::symbol("░");
let block = Block::bordered().shadow(shadow);
Source

pub fn custom<F: CellEffect + 'static>(effect: F) -> Self

Creates a new shadow from a custom cell effect.

The effect receives the shadow area, the original block area, and the target buffer. It is called after the shadow style has been applied.

Source

pub fn new<F: CellEffect + 'static>(effect: F) -> Self

Creates a new shadow from a custom cell effect.

Alias for Shadow::custom.

Source

pub fn style<S: Into<Style>>(self, style: S) -> Self

Sets the style applied to the shadow area.

Source

pub const fn offset(self, offset: Offset) -> Self

Sets the shadow offset relative to the original area.

Positive horizontal values move the shadow to the right and positive vertical values move it downward.

Trait Implementations§

Source§

impl Clone for Shadow

Source§

fn clone(&self) -> Shadow

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Shadow

Source§

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

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

impl Default for Shadow

Source§

fn default() -> Self

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

impl Eq for Shadow

Source§

impl Hash for Shadow

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 Shadow

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Styled for Shadow

Source§

type Item = Shadow

Source§

fn style(&self) -> Style

Returns the style of the object.
Source§

fn set_style<S: Into<Style>>(self, style: S) -> Self::Item

Sets the style of the object. Read more
Source§

impl Widget for &Shadow

Source§

fn render(self, area: Rect, buf: &mut Buffer)

Draws the current state of the widget in the given buffer. That is the only method required to implement a custom widget.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Shadow

§

impl !Send for Shadow

§

impl !Sync for Shadow

§

impl !UnwindSafe for Shadow

§

impl Freeze for Shadow

§

impl Unpin for Shadow

§

impl UnsafeUnpin for Shadow

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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, U> Stylize<'_, T> for U
where U: Styled<Item = T>,

Source§

fn bg<C>(self, color: C) -> T
where C: Into<Color>,

Source§

fn fg<C>(self, color: C) -> T
where C: Into<Color>,

Source§

fn add_modifier(self, modifier: Modifier) -> T

Source§

fn remove_modifier(self, modifier: Modifier) -> T

Source§

fn reset(self) -> T

Source§

fn black(self) -> T

Sets the foreground color to black.
Source§

fn on_black(self) -> T

Sets the background color to black.
Source§

fn red(self) -> T

Sets the foreground color to red.
Source§

fn on_red(self) -> T

Sets the background color to red.
Source§

fn green(self) -> T

Sets the foreground color to green.
Source§

fn on_green(self) -> T

Sets the background color to green.
Source§

fn yellow(self) -> T

Sets the foreground color to yellow.
Source§

fn on_yellow(self) -> T

Sets the background color to yellow.
Source§

fn blue(self) -> T

Sets the foreground color to blue.
Source§

fn on_blue(self) -> T

Sets the background color to blue.
Source§

fn magenta(self) -> T

Sets the foreground color to magenta.
Source§

fn on_magenta(self) -> T

Sets the background color to magenta.
Source§

fn cyan(self) -> T

Sets the foreground color to cyan.
Source§

fn on_cyan(self) -> T

Sets the background color to cyan.
Source§

fn gray(self) -> T

Sets the foreground color to gray.
Source§

fn on_gray(self) -> T

Sets the background color to gray.
Source§

fn dark_gray(self) -> T

Sets the foreground color to dark_gray.
Source§

fn on_dark_gray(self) -> T

Sets the background color to dark_gray.
Source§

fn light_red(self) -> T

Sets the foreground color to light_red.
Source§

fn on_light_red(self) -> T

Sets the background color to light_red.
Source§

fn light_green(self) -> T

Sets the foreground color to light_green.
Source§

fn on_light_green(self) -> T

Sets the background color to light_green.
Source§

fn light_yellow(self) -> T

Sets the foreground color to light_yellow.
Source§

fn on_light_yellow(self) -> T

Sets the background color to light_yellow.
Source§

fn light_blue(self) -> T

Sets the foreground color to light_blue.
Source§

fn on_light_blue(self) -> T

Sets the background color to light_blue.
Source§

fn light_magenta(self) -> T

Sets the foreground color to light_magenta.
Source§

fn on_light_magenta(self) -> T

Sets the background color to light_magenta.
Source§

fn light_cyan(self) -> T

Sets the foreground color to light_cyan.
Source§

fn on_light_cyan(self) -> T

Sets the background color to light_cyan.
Source§

fn white(self) -> T

Sets the foreground color to white.
Source§

fn on_white(self) -> T

Sets the background color to white.
Source§

fn bold(self) -> T

Adds the bold modifier.
Source§

fn not_bold(self) -> T

Removes the bold modifier.
Source§

fn dim(self) -> T

Adds the dim modifier.
Source§

fn not_dim(self) -> T

Removes the dim modifier.
Source§

fn italic(self) -> T

Adds the italic modifier.
Source§

fn not_italic(self) -> T

Removes the italic modifier.
Source§

fn underlined(self) -> T

Adds the underlined modifier.
Source§

fn not_underlined(self) -> T

Removes the underlined modifier.
Adds the slow_blink modifier.
Removes the slow_blink modifier.
Adds the rapid_blink modifier.
Removes the rapid_blink modifier.
Source§

fn reversed(self) -> T

Adds the reversed modifier.
Source§

fn not_reversed(self) -> T

Removes the reversed modifier.
Source§

fn hidden(self) -> T

Adds the hidden modifier.
Source§

fn not_hidden(self) -> T

Removes the hidden modifier.
Source§

fn crossed_out(self) -> T

Adds the crossed_out modifier.
Source§

fn not_crossed_out(self) -> T

Removes the crossed_out modifier.
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, 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.