[librsvg: 23/27] draw_from_use_node - Compute the use_rect in the caller




commit 73e7f080ff1bdd0a8c3e4e068f8d08bac5a12f0e
Author: Federico Mena Quintero <federico gnome org>
Date:   Fri May 7 21:43:59 2021 -0500

    draw_from_use_node - Compute the use_rect in the caller
    
    This lets us make Use.get_rect private.

 src/drawing_ctx.rs | 5 +----
 src/structure.rs   | 8 ++++++--
 2 files changed, 7 insertions(+), 6 deletions(-)
---
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index 7884f85b..c73afaf0 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -1545,6 +1545,7 @@ impl DrawingCtx {
         node: &Node,
         acquired_nodes: &mut AcquiredNodes<'_>,
         values: &ComputedValues,
+        use_rect: Rect,
         link: &NodeId,
         clipping: bool,
     ) -> Result<BoundingBox, RenderingError> {
@@ -1588,10 +1589,6 @@ impl DrawingCtx {
             }
         };
 
-        let view_params = self.get_view_params();
-        let params = NormalizeParams::new(values, &view_params);
-        let use_rect = borrow_element_as!(node, Use).get_rect(&params);
-
         // width or height set to 0 disables rendering of the element
         // https://www.w3.org/TR/SVG/struct.html#UseElementWidthAttribute
         if use_rect.is_empty() {
diff --git a/src/structure.rs b/src/structure.rs
index ac289a4d..fd3a02be 100644
--- a/src/structure.rs
+++ b/src/structure.rs
@@ -250,7 +250,7 @@ pub struct Use {
 }
 
 impl Use {
-    pub fn get_rect(&self, params: &NormalizeParams) -> Rect {
+    fn get_rect(&self, params: &NormalizeParams) -> Rect {
         let x = self.x.to_user(params);
         let y = self.y.to_user(params);
         let w = self.width.to_user(params);
@@ -304,7 +304,11 @@ impl Draw for Use {
     ) -> Result<BoundingBox, RenderingError> {
         if let Some(link) = self.link.as_ref() {
             let values = cascaded.get();
-            draw_ctx.draw_from_use_node(node, acquired_nodes, values, link, clipping)
+            let view_params = draw_ctx.get_view_params();
+            let params = NormalizeParams::new(values, &view_params);
+            let rect = self.get_rect(&params);
+
+            draw_ctx.draw_from_use_node(node, acquired_nodes, values, rect, link, clipping)
         } else {
             Ok(draw_ctx.empty_bbox())
         }


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