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) -> Self
pub fn from_path(path: BezPath, design_size: f64) -> Self
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.