Struct usvg::Group

source ·
pub struct Group { /* private fields */ }
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.

Implementations§

source§

impl Group

source

pub fn id(&self) -> &str

Element’s ID.

Taken from the SVG itself. Isn’t automatically generated. Can be empty.

source

pub fn transform(&self) -> Transform

Element’s transform.

This is a relative transform. The one that is set via the transform attribute in SVG.

source

pub fn abs_transform(&self) -> Transform

Element’s absolute transform.

Contains all ancestors transforms including group’s transform.

Note that subroots, like clipPaths, masks and patterns, have their own root transform, which isn’t affected by the node that references this subroot.

source

pub fn opacity(&self) -> Opacity

Group opacity.

After the group is rendered we should combine it with a parent group using the specified opacity.

source

pub fn blend_mode(&self) -> BlendMode

Group blend mode.

mix-blend-mode in SVG.

source

pub fn isolate(&self) -> bool

Group isolation.

isolation in SVG.

source

pub fn clip_path(&self) -> Option<&ClipPath>

Element’s clip path.

source

pub fn mask(&self) -> Option<&Mask>

Element’s mask.

source

pub fn filters(&self) -> &[Arc<Filter>]

Element’s filters.

source

pub fn bounding_box(&self) -> 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.

source

pub fn abs_bounding_box(&self) -> Rect

Element’s bounding box in canvas coordinates.

userSpaceOnUse in SVG terms.

source

pub fn stroke_bounding_box(&self) -> Rect

Element’s object bounding box including stroke.

Similar to bounding_box, but includes stroke.

source

pub fn abs_stroke_bounding_box(&self) -> Rect

Element’s bounding box including stroke in user coordinates.

Similar to abs_bounding_box, but includes stroke.

source

pub fn layer_bounding_box(&self) -> 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.

source

pub fn abs_layer_bounding_box(&self) -> NonZeroRect

Element’s “layer” bounding box in canvas units.

source

pub fn children(&self) -> &[Node]

Group’s children.

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 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.

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

Auto Trait Implementations§

§

impl Freeze for Group

§

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.