Skip to main content

PaintOp

Enum PaintOp 

Source
pub enum PaintOp {
    DrawRect {
        fill: Option<Fill>,
        stroke: Option<Stroke>,
        corner_radius: f32,
        shadow: Option<BoxShadow>,
    },
    DrawText {
        text: String,
        size: f32,
        color: Color,
        underline: bool,
        caret_index: Option<usize>,
    },
    DrawRichText {
        runs: Vec<TextRun>,
        caret_index: Option<usize>,
    },
    DrawImage {
        source: String,
        fit: ImageFit,
    },
    DrawPath {
        path: String,
        fill: Option<Fill>,
        stroke: Option<Stroke>,
    },
    DrawSvg {
        content: String,
        fill: Option<Fill>,
        stroke: Option<Stroke>,
    },
}
Expand description

A paint operation that draws something on screen.

Paint nodes do not participate in layout sizing – their visual output is painted into the bounding box determined by their parent layout node. The renderer walks paint ops to build the final DisplayList.

Variants§

§

DrawRect

Draws a filled and/or stroked rectangle with optional rounded corners and shadow.

This is the workhorse of the paint pipeline – backgrounds, borders, cards, buttons, and dividers all compile down to DrawRect.

Fields

§fill: Option<Fill>

The interior fill color. None means the rectangle has no fill (transparent).

§stroke: Option<Stroke>

The border stroke. None means no border.

§corner_radius: f32

Corner radius in logical pixels. 0.0 means sharp corners.

§shadow: Option<BoxShadow>

An optional drop shadow behind the rectangle.

§

DrawText

Draws a single-style text string.

Use this for simple labels where the entire string shares one style. For mixed-style text (e.g., syntax highlighting), use DrawRichText.

Fields

§text: String

The text content to render.

§size: f32

Font size in logical pixels.

§color: Color

Text foreground color.

§underline: bool

Whether to underline the text.

§caret_index: Option<usize>

If set, the renderer draws a text cursor at this byte index.

§

DrawRichText

Draws multi-style (rich) text composed of TextRuns.

Each run can have a different font size, color, underline, and background highlight. Used for code editors, formatted messages, and any text where inline styling varies.

Fields

§runs: Vec<TextRun>

The styled text runs, in order.

§caret_index: Option<usize>

If set, the renderer draws a text cursor at this byte index (relative to the concatenated run text).

§

DrawImage

Draws a raster image from a URI or asset path.

Fields

§source: String

The image source: a file path, HTTP URL, or asset identifier.

§fit: ImageFit

How the image scales to fit its layout box.

§

DrawPath

Draws an SVG-style path string, optionally filled and/or stroked.

The path uses SVG path data syntax (e.g., "M 0 0 L 10 10 Z").

Fields

§path: String

SVG path data string.

§fill: Option<Fill>

Optional fill color for the path interior.

§stroke: Option<Stroke>

Optional stroke for the path outline.

§

DrawSvg

Draws inline SVG content, optionally overriding fill and stroke colors.

Fields

§content: String

The raw SVG markup as a string.

§fill: Option<Fill>

Optional fill color override applied to the SVG elements.

§stroke: Option<Stroke>

Optional stroke color override applied to the SVG elements.

Trait Implementations§

Source§

impl Clone for PaintOp

Source§

fn clone(&self) -> PaintOp

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 PaintOp

Source§

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

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

impl<'de> Deserialize<'de> for PaintOp

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<PaintOp, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Hash for PaintOp

Source§

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

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 PaintOp

Source§

fn eq(&self, other: &PaintOp) -> 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 Serialize for PaintOp

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for PaintOp

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,