pub struct Group {Show 13 fields
pub id: String,
pub transform: Transform,
pub abs_transform: Transform,
pub opacity: Opacity,
pub blend_mode: BlendMode,
pub isolate: bool,
pub clip_path: Option<SharedClipPath>,
pub mask: Option<SharedMask>,
pub filters: Vec<SharedFilter>,
pub bounding_box: Option<Rect>,
pub stroke_bounding_box: Option<NonZeroRect>,
pub layer_bounding_box: Option<NonZeroRect>,
pub children: Vec<Node>,
}
Expand description
A group container.
The preprocessor will remove all groups that don’t impact rendering. Those that left is just an indicator that a new canvas should be created.
g
element in SVG.
Fields§
§id: String
Element’s ID.
Taken from the SVG itself. Isn’t automatically generated. Can be empty.
transform: Transform
Element’s transform.
This is a relative transform. The one that is set via the transform
attribute in SVG.
abs_transform: Transform
Element’s absolute transform.
Contains all ancestors transforms.
Will be set after calling usvg::Tree::postprocess
.
Note that subroots, like clipPaths, masks and patterns, have their own root transform, which isn’t affected by the node that references this subroot.
opacity: Opacity
Group opacity.
After the group is rendered we should combine it with a parent group using the specified opacity.
blend_mode: BlendMode
Group blend mode.
mix-blend-mode
in SVG.
isolate: bool
Group isolation.
isolation
in SVG.
clip_path: Option<SharedClipPath>
Element’s clip path.
mask: Option<SharedMask>
Element’s mask.
filters: Vec<SharedFilter>
Element’s filters.
bounding_box: Option<Rect>
Element’s object bounding box.
objectBoundingBox
in SVG terms. Meaning it doesn’t affected by parent transforms.
Can be set to None
in case of an empty group.
Will be set after calling usvg::Tree::postprocess
.
stroke_bounding_box: Option<NonZeroRect>
Element’s object bounding box including stroke.
Similar to bounding_box
, but includes stroke.
layer_bounding_box: Option<NonZeroRect>
Element’s “layer” bounding box in object units.
Conceptually, this is stroke_bounding_box
expanded and/or clipped
by filters_bounding_box
, but also including all the children.
This is the bounding box resvg
will later use to allocate layers/pixmaps
during isolated groups rendering.
Only groups have it, because only groups can have filters. For other nodes layer bounding box is the same as stroke bounding box.
Unlike other bounding boxes, cannot have zero size.
Will be set after calling usvg::Tree::postprocess
.
children: Vec<Node>
Group’s children.
Implementations§
source§impl Group
impl Group
sourcepub fn should_isolate(&self) -> bool
pub fn should_isolate(&self) -> bool
Checks if this group should be isolated during rendering.
sourcepub fn has_children(&self) -> bool
pub fn has_children(&self) -> bool
Returns true
if the group has any children.
sourcepub fn abs_bounding_box(&self) -> Option<Rect>
pub fn abs_bounding_box(&self) -> Option<Rect>
Returns node’s bounding box in canvas coordinates.
sourcepub fn filters_bounding_box(&self) -> Option<NonZeroRect>
pub fn filters_bounding_box(&self) -> Option<NonZeroRect>
Calculates a node’s filter bounding box.
Filters with objectBoundingBox
and missing or zero bounding_box
would be ignored.
Note that a filter region can act like a clipping rectangle,
therefore this function can produce a bounding box smaller than bounding_box
.
Returns None
when then group has no filters.
This function is very fast, that’s why we do not store this bbox as a Group
field.
sourcepub fn abs_filters_bounding_box(&self) -> Option<NonZeroRect>
pub fn abs_filters_bounding_box(&self) -> Option<NonZeroRect>
Calculates a node’s filter bounding box in canvas coordinates.
source§impl Group
impl Group
sourcepub fn calculate_abs_transforms(&mut self, transform: Transform)
pub fn calculate_abs_transforms(&mut self, transform: Transform)
Calculates absolute transforms for all children of this group.
A low-level methods. Prefer usvg::Tree::postprocess
instead.
sourcepub fn calculate_bounding_boxes(&mut self)
pub fn calculate_bounding_boxes(&mut self)
Calculates bounding boxes for all children of this group.
A low-level methods. Prefer usvg::Tree::postprocess
instead.