Skip to main content

CurveData

Struct CurveData 

Source
pub struct CurveData {
    pub cx: Box<[f64]>,
    pub cy: Box<[f64]>,
    pub c_next: Box<[i32]>,
}
Expand description

Stack storage for the De Casteljau subdivision loop.

Lazy-allocated (via Option<Box<CurveData>>) because it is ~25 KB — only needed for paths containing Bezier curves.

§Array sizing

MAX_CURVE_SPLITS = 1024, so the slot count is n = 1025.

  • cx / cy: length n * 3 = 3075. The maximum slot index used is max_u = 1024, giving a maximum array index of 1024 * 3 + 2 = 3074, which is within bounds (no off-by-one).
  • c_next: length n = 1025. The maximum index used is max_u = 1024, which is also within bounds.

Fields§

§cx: Box<[f64]>

X coordinates: 3 control points per slot, indexed by slot * 3 + {0,1,2}.

§cy: Box<[f64]>

Y coordinates: same layout as cx.

§c_next: Box<[i32]>

cNext[p1] = index of the next segment’s first slot after p1.

Implementations§

Source§

impl CurveData

Source

pub fn new() -> Box<Self>

Allocate a new CurveData.

§Panics

Panics if MAX_CURVE_SPLITS is negative. It is defined as the positive constant 1024 (matching splashMaxCurveSplits in SplashTypes.h), so this branch is unreachable in practice.

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