[librsvg: 16/90] Pass the current bbox as immutable to the masking code



commit 425a521a4c0e8dd75b347877dfd5d73db824b2d4
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Mar 11 13:54:24 2019 -0600

    Pass the current bbox as immutable to the masking code

 rsvg_internals/src/drawing_ctx.rs | 3 ++-
 rsvg_internals/src/mask.rs        | 4 +++-
 2 files changed, 5 insertions(+), 2 deletions(-)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 25906995..fd7b317d 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -500,7 +500,8 @@ impl DrawingCtx {
 
                         res = res.and_then(|_| {
                             node.with_impl(|mask: &NodeMask| {
-                                mask.generate_cairo_mask(&node, &affine, self)
+                                let bbox = self.bbox;
+                                mask.generate_cairo_mask(&node, &affine, self, &bbox)
                             })
                         });
                     } else {
diff --git a/rsvg_internals/src/mask.rs b/rsvg_internals/src/mask.rs
index 08ac4819..502e2125 100644
--- a/rsvg_internals/src/mask.rs
+++ b/rsvg_internals/src/mask.rs
@@ -2,6 +2,7 @@ use cairo::{self, MatrixTrait};
 use std::cell::Cell;
 
 use crate::attributes::Attribute;
+use crate::bbox::BoundingBox;
 use crate::coord_units::CoordUnits;
 use crate::drawing_ctx::DrawingCtx;
 use crate::error::RenderingError;
@@ -52,6 +53,7 @@ impl NodeMask {
         node: &RsvgNode,
         affine_before_mask: &cairo::Matrix,
         draw_ctx: &mut DrawingCtx,
+        bbox: &BoundingBox,
     ) -> Result<(), RenderingError> {
         let cascaded = node.get_cascaded_values();
         let values = cascaded.get();
@@ -80,7 +82,7 @@ impl NodeMask {
         // reference to the surface before we access the pixels
         {
             let bbox_rect = {
-                if let Some(ref rect) = draw_ctx.get_bbox().rect {
+                if let Some(ref rect) = bbox.rect {
                     *rect
                 } else {
                     // The node being masked is empty / doesn't have a


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]