Skip to main content

Path

Struct Path 

Source
pub struct Path {
    pub pts: Vec<PathPoint>,
    pub flags: Vec<PathFlags>,
    pub hints: Vec<StrokeAdjustHint>,
    pub cur_subpath: usize,
}
Expand description

A PDF graphics path: an ordered sequence of subpaths built from lines and cubic Bezier curves.

§Invariants

These match SplashPath.cc:

  • pts.len() == flags.len() at all times.
  • cur_subpath is the index of the first point of the currently open subpath, or equals pts.len() when there is no current point.
  • Control points (flag PathFlags::CURVE) always appear in groups of three between two on-curve points.

Fields§

§pts: Vec<PathPoint>

Ordered sequence of path points.

§flags: Vec<PathFlags>

Per-point flags, parallel to Self::pts.

§hints: Vec<StrokeAdjustHint>

Optional stroke-adjust hints.

§cur_subpath: usize

Index of the first point of the currently open subpath.

Equals pts.len() when there is no current point (fresh path or immediately after a close).

Implementations§

Source§

impl Path

Source

pub fn new() -> Self

Create an empty path with no current point.

Source

pub const fn no_current_point(&self) -> bool

Returns true when there is no current point.

This is the case for a freshly created path and immediately after PathBuilder::close completes.

Source

pub const fn one_point_subpath(&self) -> bool

Returns true after exactly one PathBuilder::move_to with no subsequent PathBuilder::line_to or PathBuilder::curve_to.

§Underflow safety

The !self.pts.is_empty() guard ensures pts.len() - 1 is evaluated only when pts has at least one element, so no wrapping subtraction can occur.

Source

pub const fn open_subpath(&self) -> bool

Returns true when the current subpath has at least two points.

Source

pub fn current_point(&self) -> Option<PathPoint>

Returns the current point (last appended endpoint), if any.

Returns None when Self::no_current_point is true — i.e. on a fresh path and immediately after a close (because close sets cur_subpath to pts.len()).

Source

pub fn offset(&mut self, dx: f64, dy: f64)

Translate every point in the path by (dx, dy).

Source

pub fn append(&mut self, other: &Self)

Append all points and hints from other into self.

cur_subpath is set to self.pts.len() + other.cur_subpath before appending, matching SplashPath::append.

§Edge cases

If other is empty (other.pts.is_empty()), then other.cur_subpath == 0 (the default) and self.cur_subpath is set to self.pts.len() — the “no current point” sentinel — which is correct: appending an empty path does not create a current point.

Trait Implementations§

Source§

impl Clone for Path

Source§

fn clone(&self) -> Path

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 Debug for Path

Source§

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

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

impl Default for Path

Source§

fn default() -> Path

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

Auto Trait Implementations§

§

impl Freeze for Path

§

impl RefUnwindSafe for Path

§

impl Send for Path

§

impl Sync for Path

§

impl Unpin for Path

§

impl UnsafeUnpin for Path

§

impl UnwindSafe for Path

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.