[librsvg: 77/90] Pass the whole CompositingAffines to the masking code



commit 39b5cbaa2f9ac439b3ed14ce873069ed47ffb893
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Mar 21 19:28:16 2019 -0600

    Pass the whole CompositingAffines to the masking code
    
    It needs a couple of them, so do that in a single argument.

 rsvg_internals/src/drawing_ctx.rs | 15 +++++----------
 rsvg_internals/src/mask.rs        | 10 ++++------
 2 files changed, 9 insertions(+), 16 deletions(-)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 3c7e7710..aad60053 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -533,12 +533,7 @@ impl DrawingCtx {
                             res = res.and_then(|_| {
                                 node.with_impl(|mask: &NodeMask| {
                                     let bbox = dc.bbox;
-                                    mask.generate_cairo_mask(
-                                        &node,
-                                        &affines.for_temporary_surface,
-                                        dc,
-                                        &bbox,
-                                    )
+                                    mask.generate_cairo_mask(&node, &affines, dc, &bbox)
                                 })
                             });
                         } else {
@@ -908,10 +903,10 @@ impl DrawingCtx {
     }
 }
 
-struct CompositingAffines {
-    affine: cairo::Matrix,
-    for_temporary_surface: cairo::Matrix,
-    compositing: cairo::Matrix,
+pub struct CompositingAffines {
+    pub affine: cairo::Matrix,
+    pub for_temporary_surface: cairo::Matrix,
+    pub compositing: cairo::Matrix,
 }
 
 impl CompositingAffines {
diff --git a/rsvg_internals/src/mask.rs b/rsvg_internals/src/mask.rs
index 78be20af..dddf82f6 100644
--- a/rsvg_internals/src/mask.rs
+++ b/rsvg_internals/src/mask.rs
@@ -4,7 +4,7 @@ use std::cell::Cell;
 use crate::attributes::Attribute;
 use crate::bbox::BoundingBox;
 use crate::coord_units::CoordUnits;
-use crate::drawing_ctx::DrawingCtx;
+use crate::drawing_ctx::{CompositingAffines, DrawingCtx};
 use crate::error::RenderingError;
 use crate::length::{LengthHorizontal, LengthVertical};
 use crate::node::{NodeResult, NodeTrait, RsvgNode};
@@ -13,9 +13,7 @@ use crate::properties::Opacity;
 use crate::property_bag::PropertyBag;
 use crate::rect::IRect;
 use crate::surface_utils::{
-    iterators::Pixels,
-    shared_surface::SharedImageSurface,
-    shared_surface::SurfaceType,
+    iterators::Pixels, shared_surface::SharedImageSurface, shared_surface::SurfaceType,
     ImageSurfaceDataExt,
 };
 use crate::unit_interval::UnitInterval;
@@ -51,7 +49,7 @@ impl NodeMask {
     pub fn generate_cairo_mask(
         &self,
         node: &RsvgNode,
-        affine_before_mask: &cairo::Matrix,
+        affines: &CompositingAffines,
         draw_ctx: &mut DrawingCtx,
         bbox: &BoundingBox,
     ) -> Result<(), RenderingError> {
@@ -92,7 +90,7 @@ impl NodeMask {
             let save_cr = draw_ctx.get_cairo_context();
 
             let mask_cr = cairo::Context::new(&mask_content_surface);
-            mask_cr.set_matrix(*affine_before_mask);
+            mask_cr.set_matrix(affines.for_temporary_surface);
             mask_cr.transform(node.get_transform());
 
             draw_ctx.set_cairo_context(&mask_cr);


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