Skip to main content

Stroke

Enum Stroke 

Source
pub enum Stroke {
    Hairline,
    Mark,
}
Expand description

How heavy an edge is, named for what the edge is saying.

The fourth axis, and the same move as Radius: name the thing, let the width follow. Measured across the tree before it existed, edges were 1px, 2px, 3px and 4px with no token for any of them, and the 3px and 4px ones were all the same thing (a status stripe down one side) spelled two ways.

§Two rungs

An edge says one of two things. Either it separates two surfaces, and wants to be the least ink that still reads as a line, or it marks something the reader has to notice: a focus ring, a status, a selection. Nothing between those is a third meaning, so there is no third rung. none is not a rung either, unlike Radius::Square: an absent edge is border: none, which states itself without a width.

§Pixels, not ratios of the base

The one axis here that does not scale with --geometry-base, and on purpose. A browser snaps a border’s width to whole device pixels, so a hairline at a 20px root would ask for 1.25px and draw 1, while the mark would ask for 2.5 and draw 2: the scaling would buy nothing and blur the ratio between the rungs. A hairline is the device’s own unit of line, and stays one at any text size.

On a terminal both rungs are one cell edge; the box-drawing set has a heavy line for Self::Mark where the surface can draw it.

§Not --border-*

The tokens are --stroke-* because --border and --border-strong are already colour tokens in makeover, and border-strong beside a border-mark would read as two halves of one scale when they are two axes.

Variants§

§

Hairline

The edge between two surfaces: dividers, rules, input outlines, a bevel’s edge. 1px.

§

Mark

An edge that has to be noticed: the focus ring, a status stripe, a selected or latched outline. 2px, twice the hairline so the two never read as the same weight.

Implementations§

Source§

impl Stroke

Source

pub const fn px(self) -> u16

Width in CSS pixels. The same at every base, for the reason in the type’s docs.

Source

pub fn css(self) -> String

The CSS value for this rung.

Source

pub const fn token(self) -> &'static str

The CSS custom-property name, without the leading --.

Source

pub const fn all() -> &'static [Self]

Every rung, lightest first.

Trait Implementations§

Source§

impl Clone for Stroke

Source§

fn clone(&self) -> Self

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 Stroke

Source§

impl Debug for Stroke

Source§

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

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

impl Eq for Stroke

Source§

impl Hash for Stroke

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 Stroke

Source§

fn eq(&self, other: &Self) -> 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 Stroke

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, 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.