Skip to main content

StyleSheet

Struct StyleSheet 

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

A registry of named styles for consistent theming.

StyleSheet allows defining styles by name and looking them up later. This decouples visual appearance from widget logic, allowing themes to override the stylesheet without changing widget code.

§Thread Safety

StyleSheet uses an internal RwLock for thread-safe read access after initialization. Multiple readers can access styles concurrently.

Implementations§

Source§

impl StyleSheet

Source

pub fn new() -> Self

Create a new empty StyleSheet.

Source

pub fn with_defaults() -> Self

Create a StyleSheet with default semantic styles.

This provides a base set of commonly-used style names:

  • error: Red, bold
  • warning: Orange/yellow
  • info: Blue
  • success: Green
  • muted: Gray/dim
  • highlight: Yellow background
  • link: Blue, underline
Source

pub fn define(&self, name: impl Into<String>, style: Style)

Define a named style.

If a style with this name already exists, it is replaced.

Source

pub fn remove(&self, name: &str) -> Option<Style>

Remove a named style.

Returns the removed style if it existed.

Source

pub fn get(&self, name: &str) -> Option<Style>

Get a named style.

Returns None if the style is not defined.

Source

pub fn get_or_default(&self, name: &str) -> Style

Get a named style, returning a default if not found.

Source

pub fn contains(&self, name: &str) -> bool

Check if a style with the given name exists.

Source

pub fn len(&self) -> usize

Get the number of defined styles.

Source

pub fn is_empty(&self) -> bool

Check if the stylesheet is empty.

Source

pub fn names(&self) -> Vec<String>

Get all style names.

Source

pub fn compose(&self, names: &[&str]) -> Style

Compose multiple styles by name, merging them in order.

Styles are merged left-to-right, with later styles taking precedence over earlier ones for conflicting properties.

Missing style names are silently ignored.

§Example
use ftui_style::{Style, StyleSheet};
use ftui_render::cell::PackedRgba;

let sheet = StyleSheet::new();
sheet.define("base", Style::new().fg(PackedRgba::WHITE));
sheet.define("bold", Style::new().bold());

// Compose: base + bold = white text that's bold
let composed = sheet.compose(&["base", "bold"]);
Source

pub fn compose_strict(&self, names: &[&str]) -> Option<Style>

Compose styles with fallback for missing names.

Like compose, but returns None if any named style is missing.

Source

pub fn extend(&self, other: &StyleSheet)

Extend this stylesheet with styles from another.

Styles from other override styles with the same name in self.

Source

pub fn clear(&self)

Clear all styles from the stylesheet.

Trait Implementations§

Source§

impl Clone for StyleSheet

Source§

fn clone(&self) -> Self

Returns a duplicate 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 StyleSheet

Source§

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

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

impl Default for StyleSheet

Source§

fn default() -> StyleSheet

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

Auto Trait Implementations§

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> 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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more