pub struct IconData { /* private fields */ }Expand description
A cheap-clone handle around an icon’s path data and its design box.
Construct one from a generated IconSource (via From, or implicitly
through icon) or from any BezPath via
IconData::from_path — the composability seam that lets an app supply its
own icons without going through the generated set.
Implementations§
Source§impl IconData
impl IconData
Sourcepub fn from_path(path: BezPath, design_size: f64) -> IconData
pub fn from_path(path: BezPath, design_size: f64) -> IconData
Build icon data from an arbitrary kurbo::BezPath and the side length of
the square design box it was authored against.
This is the composability requirement: an app can paint any vector shape
as an icon, not just the vendored Material Symbols set. The path is
stored in an Arc, so cloning the resulting IconData (as a build
closure does every frame) is a refcount bump, never a copy of the geometry.
Sourcepub fn resolve(&self) -> (BezPath, f64)
pub fn resolve(&self) -> (BezPath, f64)
Resolve this handle into a concrete (design-space path, design box)
pair.
For a generated IconSource this parses its d string via
BezPath::from_svg; a parse failure is a
wiring bug (a malformed generated entry) and panics. For a user path it
clones the shared BezPath (cheap for the small paths icons are).
Public because out-of-tree design systems (the design-system plugin
tier) paint icons through it — IconData without resolve has no
reachable geometry outside this crate.
Sourcepub fn same(&self, other: &IconData) -> bool
pub fn same(&self, other: &IconData) -> bool
Whether self and other name the same icon geometry, cheaply — an
Arc pointer check for user paths, a d/design comparison for generated
sources. Lets IconView::rebuild skip re-parsing an unchanged icon.
Public for the same reason as IconData::resolve: out-of-tree design
systems need the cheap-identity check to skip re-parsing on rebuild.
Trait Implementations§
Source§impl From<&IconSource> for IconData
impl From<&IconSource> for IconData
Source§fn from(source: &IconSource) -> IconData
fn from(source: &IconSource) -> IconData
Source§impl From<IconSource> for IconData
impl From<IconSource> for IconData
Source§fn from(source: IconSource) -> IconData
fn from(source: IconSource) -> IconData
Auto Trait Implementations§
impl Freeze for IconData
impl RefUnwindSafe for IconData
impl Send for IconData
impl Sync for IconData
impl Unpin for IconData
impl UnsafeUnpin for IconData
impl UnwindSafe for IconData
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,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.