Struct usvg_tree::Group

source ·
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

source

pub fn should_isolate(&self) -> bool

Checks if this group should be isolated during rendering.

source

pub fn has_children(&self) -> bool

Returns true if the group has any children.

source

pub fn abs_bounding_box(&self) -> Option<Rect>

Returns node’s bounding box in canvas coordinates.

source

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.

source

pub fn abs_filters_bounding_box(&self) -> Option<NonZeroRect>

Calculates a node’s filter bounding box in canvas coordinates.

source§

impl Group

source

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.

source

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.

Trait Implementations§

source§

impl Clone for Group

source§

fn clone(&self) -> Group

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Group

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Group

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Group

§

impl !Send for Group

§

impl !Sync for Group

§

impl Unpin for Group

§

impl !UnwindSafe for Group

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.