Struct tiny_skia::Path

source ·
pub struct Path { /* private fields */ }
Expand description

A Bezier path.

Can be created via PathBuilder. Where PathBuilder can be created from the Path using clear to reuse the allocation.

Path is immutable and uses compact storage, where segment types and numbers are stored separately. Use can access path segments via Path::verbs and Path::points, or via Path::segments

Guarantees

  • Has a valid, precomputed bounds.
  • All points are finite.
  • Has at least two segments.
  • Each contour starts with a MoveTo.
  • No duplicated Move.
  • No duplicated Close.
  • Zero-length contours are allowed.

Implementations§

source§

impl Path

source

pub fn dash(&self, dash: &StrokeDash, resolution_scale: f32) -> Option<Path>

Converts the current path into a dashed one.

resolution_scale can be obtained via compute_resolution_scale.

source§

impl Path

source

pub fn len(&self) -> usize

Returns the number of segments in the path.

source

pub fn is_empty(&self) -> bool

Checks if path is empty.

source

pub fn bounds(&self) -> Rect

Returns the bounds of the path’s points.

The value is already calculated.

source

pub fn verbs(&self) -> &[PathVerb]

Returns an internal vector of verbs.

source

pub fn points(&self) -> &[Point]

Returns an internal vector of points.

source

pub fn transform(self, ts: Transform) -> Option<Path>

Returns a transformed in-place path.

Some points may become NaN/inf therefore this method can fail.

source

pub fn segments(&self) -> PathSegmentsIter<'_>

Returns an iterator over path’s segments.

source

pub fn clear(self) -> PathBuilder

Clears the path and returns a PathBuilder that will reuse an allocated memory.

source§

impl Path

source

pub fn stroke(&self, stroke: &Stroke, resolution_scale: f32) -> Option<Path>

Returns a stoked path.

resolution_scale can be obtained via compute_resolution_scale.

If you plan stroking multiple paths, you can try using PathStroker which will preserve temporary allocations required during stroking. This might improve performance a bit.

Trait Implementations§

source§

impl Clone for Path

source§

fn clone(&self) -> Path

Returns a copy 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 Path

source§

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

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

impl PartialEq<Path> for Path

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for Path

Auto Trait Implementations§

§

impl RefUnwindSafe for Path

§

impl Send for Path

§

impl Sync for Path

§

impl Unpin for Path

§

impl UnwindSafe for Path

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. 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 Twhere 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 Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.