Skip to main content

Depth

Enum Depth 

Source
#[non_exhaustive]
pub enum Depth { Flat, Raised, Well, Sunken, Overlay, }
Expand description

How a region sits relative to the surface behind it.

Fill and bevel are named together because naming them apart is what let them disagree. Every consumer measured had at least one region carrying a raised bevel over a recessed fill: audiofiles fixed it in raised_frame and recorded the bug in its doc comment, and Balanced Breakfast still had twelve of them a year later. A single name for the pair makes that unrepresentable. #[non_exhaustive] for the same reason as Fill, and in the same release: a depth this renderer has no drawing for should cost it a wildcard arm, not a compile error and a wait on someone else’s publish.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Flat

Level with its surroundings. No edge.

§

Raised

A card laid on the panel it sits in.

§

Well

A hole in the panel, with content down inside it. For anything the user looks into: a table body, a tag tree, a text field.

§

Sunken

Set back from what it sits on, by colour alone. No edge.

The one member carrying a fill without a bevel, so a renderer cannot assume the two arrive together. That is deliberate and it is still the pairing rule: both halves come off the same Depth, so they cannot disagree, and here one half is legitimately absent.

Distinct from Depth::Flat, which has no fill either and inherits. Recessed and level-with are different claims, and only one of them needs a colour.

§

Overlay

A surface sitting over the page rather than in it. A modal, a popover, a menu.

Takes elevation and no bevel: a surface overlaying the page is lifted off it, and a surface in the page is cut into it. That is the same pairing rule the rest of the enum holds, applied to the one case where the separation is not an edge at all — the lift and the scrim behind it are already saying where the surface is.

Every renderer had the surface before it had this variant. makeover-tui carries Palette::overlay, makeover-immediate gained Palette::elevation at 0.10.0, and makeover-webview emits --elevation-overlay. What was missing was the route from a description to any of them, which is why this is one variant rather than a feature.

Implementations§

Source§

impl Depth

Source

pub const fn bevel(self) -> Option<Bevel>

The edge this depth is drawn with, if it has one.

Source

pub const fn fill(self) -> Option<Fill>

The surface this depth is filled with.

Depth::Flat has no fill of its own: it inherits whatever it sits on, which is the difference between level-with and painted-the-same-colour.

Source

pub const fn pressed(self) -> Self

Pressing a raised region reads as a well, and nothing else moves.

Depth::Overlay is untouched along with the rest: an overlay is a surface, not a control, so there is nothing there to press.

Trait Implementations§

Source§

impl Clone for Depth

Source§

fn clone(&self) -> Depth

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 Copy for Depth

Source§

impl Debug for Depth

Source§

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

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

impl Eq for Depth

Source§

impl Hash for Depth

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 Depth

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Depth

Auto Trait Implementations§

§

impl Freeze for Depth

§

impl RefUnwindSafe for Depth

§

impl Send for Depth

§

impl Sync for Depth

§

impl Unpin for Depth

§

impl UnsafeUnpin for Depth

§

impl UnwindSafe for Depth

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, 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.