pub struct PathBuilder { /* private fields */ }Expand description
Imperative builder for a single VectorPath. Mirrors a subset of
the SVG path command vocabulary (M, L, C, Q, Z) plus
fill/stroke style. Returns a VectorPath; combine multiple via
VectorAsset::from_paths.
use damascene_core::vector::{
PathBuilder, VectorAsset, VectorColor, VectorLineCap,
};
use damascene_core::tree::Color;
let curve = PathBuilder::new()
.move_to(0.0, 0.0)
.cubic_to(20.0, 0.0, 0.0, 60.0, 20.0, 60.0)
.stroke_solid(Color::srgb_u8(80, 200, 240), 2.0)
.stroke_line_cap(VectorLineCap::Round)
.build();
let asset = VectorAsset::from_paths([0.0, 0.0, 20.0, 60.0], vec![curve]);
// `asset.content_hash()` is stable across rebuilds with the same inputs,
// so backends share one atlas slot per unique geometry.Implementations§
Source§impl PathBuilder
impl PathBuilder
Sourcepub fn cubic_to(
self,
c1x: f32,
c1y: f32,
c2x: f32,
c2y: f32,
x: f32,
y: f32,
) -> Self
pub fn cubic_to( self, c1x: f32, c1y: f32, c2x: f32, c2y: f32, x: f32, y: f32, ) -> Self
SVG C c1x c1y c2x c2y x y.
Sourcepub fn fill_solid(self, color: Color) -> Self
pub fn fill_solid(self, color: Color) -> Self
Fill with a solid colour at full opacity, non-zero rule. For
finer control set Self::fill directly.
Sourcepub fn fill(self, fill: Option<VectorFill>) -> Self
pub fn fill(self, fill: Option<VectorFill>) -> Self
Set the fill explicitly. None clears it.
Sourcepub fn stroke_solid(self, color: Color, width: f32) -> Self
pub fn stroke_solid(self, color: Color, width: f32) -> Self
Stroke with a solid colour and explicit width, with default
line cap (Butt), line join (Miter), and miter limit (4.0).
For finer control chain Self::stroke_line_cap /
Self::stroke_line_join / Self::stroke_miter_limit.
Sourcepub fn stroke(self, stroke: Option<VectorStroke>) -> Self
pub fn stroke(self, stroke: Option<VectorStroke>) -> Self
Set the stroke explicitly. None clears it.
Sourcepub fn stroke_line_cap(self, cap: VectorLineCap) -> Self
pub fn stroke_line_cap(self, cap: VectorLineCap) -> Self
SVG stroke-linecap. No-op unless a stroke is already set.
Sourcepub fn stroke_line_join(self, join: VectorLineJoin) -> Self
pub fn stroke_line_join(self, join: VectorLineJoin) -> Self
SVG stroke-linejoin. No-op unless a stroke is already set.
Sourcepub fn stroke_miter_limit(self, limit: f32) -> Self
pub fn stroke_miter_limit(self, limit: f32) -> Self
SVG stroke-miterlimit. No-op unless a stroke is already set.
Sourcepub fn stroke_opacity(self, opacity: f32) -> Self
pub fn stroke_opacity(self, opacity: f32) -> Self
SVG stroke-opacity in 0.0..=1.0. No-op unless a stroke is
already set.
Sourcepub fn build(self) -> VectorPath
pub fn build(self) -> VectorPath
Finish the builder into a VectorPath.
Trait Implementations§
Source§impl Clone for PathBuilder
impl Clone for PathBuilder
Source§fn clone(&self) -> PathBuilder
fn clone(&self) -> PathBuilder
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PathBuilder
impl Debug for PathBuilder
Auto Trait Implementations§
impl Freeze for PathBuilder
impl RefUnwindSafe for PathBuilder
impl Send for PathBuilder
impl Sync for PathBuilder
impl Unpin for PathBuilder
impl UnsafeUnpin for PathBuilder
impl UnwindSafe for PathBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.