[librsvg: 11/15] Primitives now take a BoundsBuilder in their render(), not a ResolvedPrimitive
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 11/15] Primitives now take a BoundsBuilder in their render(), not a ResolvedPrimitive
- Date: Thu, 8 Apr 2021 22:52:27 +0000 (UTC)
commit e233d444a4bd6cdc90c520ea0126842c84a623f0
Author: Federico Mena Quintero <federico gnome org>
Date: Thu Apr 8 16:39:43 2021 -0500
Primitives now take a BoundsBuilder in their render(), not a ResolvedPrimitive
src/filters/blend.rs | 8 ++++----
src/filters/color_matrix.rs | 10 ++++------
src/filters/component_transfer.rs | 10 ++++------
src/filters/composite.rs | 8 ++++----
src/filters/convolve_matrix.rs | 10 ++++------
src/filters/displacement_map.rs | 8 ++++----
src/filters/flood.rs | 7 ++++---
src/filters/gaussian_blur.rs | 10 ++++------
src/filters/image.rs | 6 +++---
src/filters/lighting.rs | 10 ++++------
src/filters/merge.rs | 10 +++++-----
src/filters/mod.rs | 34 ++++++++++++++++++----------------
src/filters/morphology.rs | 10 ++++------
src/filters/offset.rs | 10 ++++------
src/filters/tile.rs | 7 ++++---
src/filters/turbulence.rs | 7 ++++---
16 files changed, 78 insertions(+), 87 deletions(-)
---
diff --git a/src/filters/blend.rs b/src/filters/blend.rs
index 011a24e8..63dadcd0 100644
--- a/src/filters/blend.rs
+++ b/src/filters/blend.rs
@@ -10,8 +10,9 @@ use crate::parsers::{Parse, ParseValue};
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// Enumeration of the possible blending modes.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
@@ -71,7 +72,7 @@ impl SetAttributes for FeBlend {
impl Blend {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -88,8 +89,7 @@ impl Blend {
&self.in2,
self.color_interpolation_filters,
)?;
- let bounds = primitive
- .get_bounds(ctx)
+ let bounds = bounds_builder
.add_input(&input_1)
.add_input(&input_2)
.into_irect(ctx);
diff --git a/src/filters/color_matrix.rs b/src/filters/color_matrix.rs
index 73f24940..73e9c939 100644
--- a/src/filters/color_matrix.rs
+++ b/src/filters/color_matrix.rs
@@ -15,8 +15,9 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// Color matrix operation types.
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
@@ -151,7 +152,7 @@ impl SetAttributes for FeColorMatrix {
impl ColorMatrix {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -162,10 +163,7 @@ impl ColorMatrix {
&self.in1,
self.color_interpolation_filters,
)?;
- let bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
let mut surface = ExclusiveImageSurface::new(
ctx.source_graphic().width(),
diff --git a/src/filters/component_transfer.rs b/src/filters/component_transfer.rs
index 4ae3767b..49448723 100644
--- a/src/filters/component_transfer.rs
+++ b/src/filters/component_transfer.rs
@@ -16,8 +16,9 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// The `feComponentTransfer` filter primitive.
#[derive(Default)]
@@ -288,7 +289,7 @@ macro_rules! get_func_x_node {
impl ComponentTransfer {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -299,10 +300,7 @@ impl ComponentTransfer {
&self.in1,
self.color_interpolation_filters,
)?;
- let bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
// Create the output surface.
let mut surface = ExclusiveImageSurface::new(
diff --git a/src/filters/composite.rs b/src/filters/composite.rs
index da5d3733..082f98ac 100644
--- a/src/filters/composite.rs
+++ b/src/filters/composite.rs
@@ -10,8 +10,9 @@ use crate::parsers::{Parse, ParseValue};
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// Enumeration of the possible compositing operations.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
@@ -70,7 +71,7 @@ impl SetAttributes for FeComposite {
impl Composite {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -87,8 +88,7 @@ impl Composite {
&self.in2,
self.color_interpolation_filters,
)?;
- let bounds = primitive
- .get_bounds(ctx)
+ let bounds = bounds_builder
.add_input(&input_1)
.add_input(&input_2)
.into_irect(ctx);
diff --git a/src/filters/convolve_matrix.rs b/src/filters/convolve_matrix.rs
index 97fcaa0d..168fd993 100644
--- a/src/filters/convolve_matrix.rs
+++ b/src/filters/convolve_matrix.rs
@@ -20,8 +20,9 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// The `feConvolveMatrix` filter primitive.
#[derive(Default)]
@@ -136,7 +137,7 @@ impl SetAttributes for FeConvolveMatrix {
impl ConvolveMatrix {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -149,10 +150,7 @@ impl ConvolveMatrix {
&self.in1,
self.color_interpolation_filters,
)?;
- let mut bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let mut bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
let original_bounds = bounds;
let target_x = match self.target_x {
diff --git a/src/filters/displacement_map.rs b/src/filters/displacement_map.rs
index 8c7ae8b7..31a0fb3b 100644
--- a/src/filters/displacement_map.rs
+++ b/src/filters/displacement_map.rs
@@ -11,8 +11,9 @@ use crate::property_defs::ColorInterpolationFilters;
use crate::surface_utils::{iterators::Pixels, shared_surface::ExclusiveImageSurface};
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// Enumeration of the color channels the displacement map can source.
#[derive(Clone, Copy)]
@@ -69,7 +70,7 @@ impl SetAttributes for FeDisplacementMap {
impl DisplacementMap {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -92,8 +93,7 @@ impl DisplacementMap {
&self.in2,
self.color_interpolation_filters,
)?;
- let bounds = primitive
- .get_bounds(ctx)
+ let bounds = bounds_builder
.add_input(&input_1)
.add_input(&displacement_input)
.into_irect(ctx);
diff --git a/src/filters/flood.rs b/src/filters/flood.rs
index 0a4452dc..9371dcae 100644
--- a/src/filters/flood.rs
+++ b/src/filters/flood.rs
@@ -5,8 +5,9 @@ use crate::node::{CascadedValues, Node};
use crate::paint_server::resolve_color;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Primitive, PrimitiveParams};
/// The `feFlood` filter primitive.
#[derive(Default)]
@@ -28,12 +29,12 @@ impl SetAttributes for FeFlood {
impl Flood {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
_acquired_nodes: &mut AcquiredNodes<'_>,
_draw_ctx: &mut DrawingCtx,
) -> Result<FilterOutput, FilterError> {
- let bounds = primitive.get_bounds(ctx).into_irect(ctx);
+ let bounds = bounds_builder.into_irect(ctx);
let surface = ctx.source_graphic().flood(bounds, self.color)?;
diff --git a/src/filters/gaussian_blur.rs b/src/filters/gaussian_blur.rs
index 901da35e..3699990d 100644
--- a/src/filters/gaussian_blur.rs
+++ b/src/filters/gaussian_blur.rs
@@ -17,8 +17,9 @@ use crate::surface_utils::{
};
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// The maximum gaussian blur kernel size.
///
@@ -187,7 +188,7 @@ fn gaussian_blur(
impl GaussianBlur {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -198,10 +199,7 @@ impl GaussianBlur {
&self.in1,
self.color_interpolation_filters,
)?;
- let bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
let (std_x, std_y) = self.std_deviation;
let (std_x, std_y) = ctx.paffine().transform_distance(std_x, std_y);
diff --git a/src/filters/image.rs b/src/filters/image.rs
index 55a25353..d68caa54 100644
--- a/src/filters/image.rs
+++ b/src/filters/image.rs
@@ -13,8 +13,9 @@ use crate::surface_utils::shared_surface::SharedImageSurface;
use crate::viewbox::ViewBox;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Primitive, PrimitiveParams};
/// The `feImage` filter primitive.
#[derive(Default)]
@@ -129,12 +130,11 @@ impl SetAttributes for FeImage {
impl Image {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
) -> Result<FilterOutput, FilterError> {
- let bounds_builder = primitive.get_bounds(ctx);
let (bounds, unclipped_bounds) = bounds_builder.into_rect(ctx);
let href = self.params.href.as_ref().ok_or(FilterError::InvalidInput)?;
diff --git a/src/filters/lighting.rs b/src/filters/lighting.rs
index 36ea3037..ea192705 100644
--- a/src/filters/lighting.rs
+++ b/src/filters/lighting.rs
@@ -11,8 +11,9 @@ use crate::document::AcquiredNodes;
use crate::drawing_ctx::DrawingCtx;
use crate::element::{Draw, Element, ElementResult, SetAttributes};
use crate::filters::{
+ bounds::BoundsBuilder,
context::{FilterContext, FilterOutput},
- FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive,
+ FilterEffect, FilterError, Input, Primitive, PrimitiveParams,
};
use crate::node::{CascadedValues, Node, NodeBorrow};
use crate::paint_server::resolve_color;
@@ -437,7 +438,7 @@ macro_rules! impl_lighting_filter {
impl $params_name {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -448,10 +449,7 @@ macro_rules! impl_lighting_filter {
&self.params.in1,
self.light.color_interpolation_filters,
)?;
- let mut bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let mut bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
let original_bounds = bounds;
let scale = self
diff --git a/src/filters/merge.rs b/src/filters/merge.rs
index 3f494b7d..3dd679c0 100644
--- a/src/filters/merge.rs
+++ b/src/filters/merge.rs
@@ -10,8 +10,9 @@ use crate::rect::IRect;
use crate::surface_utils::shared_surface::{SharedImageSurface, SurfaceType};
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// The `feMerge` filter primitive.
pub struct FeMerge {
@@ -97,13 +98,12 @@ impl MergeNode {
impl Merge {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ mut bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
) -> Result<FilterOutput, FilterError> {
// Compute the filter bounds, taking each feMergeNode's input into account.
- let mut bounds = primitive.get_bounds(ctx);
for merge_node in &self.merge_nodes {
let input = ctx.get_input(
acquired_nodes,
@@ -111,10 +111,10 @@ impl Merge {
&merge_node.in1,
merge_node.color_interpolation_filters,
)?;
- bounds = bounds.add_input(&input);
+ bounds_builder = bounds_builder.add_input(&input);
}
- let bounds = bounds.into_irect(ctx);
+ let bounds = bounds_builder.into_irect(ctx);
// Now merge them all.
let mut output_surface = None;
diff --git a/src/filters/mod.rs b/src/filters/mod.rs
index d7ed3e35..a06258d5 100644
--- a/src/filters/mod.rs
+++ b/src/filters/mod.rs
@@ -353,23 +353,25 @@ fn render_primitive(
) -> Result<FilterOutput, FilterError> {
use PrimitiveParams::*;
+ let bounds_builder = primitive.get_bounds(ctx);
+
match params {
- Blend(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- ColorMatrix(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- ComponentTransfer(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Composite(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- ConvolveMatrix(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- DiffuseLighting(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- DisplacementMap(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Flood(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- GaussianBlur(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Image(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Merge(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Morphology(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Offset(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- SpecularLighting(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Tile(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
- Turbulence(p) => p.render(primitive, ctx, acquired_nodes, draw_ctx),
+ Blend(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ ColorMatrix(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ ComponentTransfer(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Composite(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ ConvolveMatrix(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ DiffuseLighting(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ DisplacementMap(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Flood(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ GaussianBlur(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Image(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Merge(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Morphology(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Offset(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ SpecularLighting(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Tile(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
+ Turbulence(p) => p.render(bounds_builder, ctx, acquired_nodes, draw_ctx),
}
}
diff --git a/src/filters/morphology.rs b/src/filters/morphology.rs
index 42feb46e..295e6696 100644
--- a/src/filters/morphology.rs
+++ b/src/filters/morphology.rs
@@ -18,8 +18,9 @@ use crate::surface_utils::{
};
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// Enumeration of the possible morphology operations.
#[derive(Clone)]
@@ -67,7 +68,7 @@ impl SetAttributes for FeMorphology {
impl Morphology {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -86,10 +87,7 @@ impl Morphology {
&self.in1,
ColorInterpolationFilters::Auto,
)?;
- let bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
let (rx, ry) = self.radius;
let (rx, ry) = ctx.paffine().transform_distance(rx, ry);
diff --git a/src/filters/offset.rs b/src/filters/offset.rs
index 77be049e..98c11a72 100644
--- a/src/filters/offset.rs
+++ b/src/filters/offset.rs
@@ -8,8 +8,9 @@ use crate::parsers::ParseValue;
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// The `feOffset` filter primitive.
#[derive(Default)]
@@ -45,7 +46,7 @@ impl SetAttributes for FeOffset {
impl Offset {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -63,10 +64,7 @@ impl Offset {
&self.in1,
ColorInterpolationFilters::Auto,
)?;
- let bounds = primitive
- .get_bounds(ctx)
- .add_input(&input_1)
- .into_irect(ctx);
+ let bounds = bounds_builder.add_input(&input_1).into_irect(ctx);
let (dx, dy) = ctx.paffine().transform_distance(self.dx, self.dy);
diff --git a/src/filters/tile.rs b/src/filters/tile.rs
index 669e0399..1683080d 100644
--- a/src/filters/tile.rs
+++ b/src/filters/tile.rs
@@ -5,8 +5,9 @@ use crate::node::Node;
use crate::property_defs::ColorInterpolationFilters;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterInput, FilterOutput};
-use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Input, Primitive, PrimitiveParams};
/// The `feTile` filter primitive.
#[derive(Default)]
@@ -31,7 +32,7 @@ impl SetAttributes for FeTile {
impl Tile {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
acquired_nodes: &mut AcquiredNodes<'_>,
draw_ctx: &mut DrawingCtx,
@@ -51,7 +52,7 @@ impl Tile {
)?;
// feTile doesn't consider its inputs in the filter primitive subregion calculation.
- let bounds = primitive.get_bounds(ctx).into_irect(ctx);
+ let bounds = bounds_builder.into_irect(ctx);
let surface = match input_1 {
FilterInput::StandardInput(input_surface) => input_surface,
diff --git a/src/filters/turbulence.rs b/src/filters/turbulence.rs
index ff0b483f..f1bde0f6 100644
--- a/src/filters/turbulence.rs
+++ b/src/filters/turbulence.rs
@@ -15,8 +15,9 @@ use crate::surface_utils::{
use crate::util::clamp;
use crate::xml::Attributes;
+use super::bounds::BoundsBuilder;
use super::context::{FilterContext, FilterOutput};
-use super::{FilterEffect, FilterError, Primitive, PrimitiveParams, ResolvedPrimitive};
+use super::{FilterEffect, FilterError, Primitive, PrimitiveParams};
/// Enumeration of the tile stitching modes.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)]
@@ -341,12 +342,12 @@ impl NoiseGenerator {
impl Turbulence {
pub fn render(
&self,
- primitive: &ResolvedPrimitive,
+ bounds_builder: BoundsBuilder,
ctx: &FilterContext,
_acquired_nodes: &mut AcquiredNodes<'_>,
_draw_ctx: &mut DrawingCtx,
) -> Result<FilterOutput, FilterError> {
- let bounds = primitive.get_bounds(ctx).into_irect(ctx);
+ let bounds = bounds_builder.into_irect(ctx);
let affine = ctx.paffine().invert().unwrap();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]