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 aetna_core::vector::{
PathBuilder, VectorAsset, VectorColor, VectorLineCap,
};
use aetna_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::rgb(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
pub fn new() -> Self
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.
pub fn stroke_line_cap(self, cap: VectorLineCap) -> Self
pub fn stroke_line_join(self, join: VectorLineJoin) -> Self
pub fn stroke_miter_limit(self, limit: f32) -> Self
pub fn stroke_opacity(self, opacity: f32) -> Self
pub fn build(self) -> VectorPath
Trait Implementations§
Source§impl Clone for PathBuilder
impl Clone for PathBuilder
Source§fn clone(&self) -> PathBuilder
fn clone(&self) -> PathBuilder
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
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
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.