[librsvg] DrawingCtx::new() - take a node argument



commit 07c952c221ca3b6d8a05cffa345f14d347118664
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Apr 4 19:20:32 2019 -0600

    DrawingCtx::new() - take a node argument
    
    This lets us remove Handle::create_drawing_ctx_for_node()

 rsvg_internals/src/drawing_ctx.rs | 24 ++++++++++-----------
 rsvg_internals/src/handle.rs      | 45 ++++++++++++++++-----------------------
 2 files changed, 29 insertions(+), 40 deletions(-)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 68e781d0..9ed6537b 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -20,14 +20,8 @@ use crate::node::{CascadedValues, NodeType, RsvgNode};
 use crate::paint_server::{PaintServer, PaintSource};
 use crate::pattern::NodePattern;
 use crate::properties::{
-    ClipRule,
-    ComputedValues,
-    EnableBackground,
-    FillRule,
-    ShapeRendering,
-    StrokeDasharray,
-    StrokeLinecap,
-    StrokeLinejoin,
+    ClipRule, ComputedValues, EnableBackground, FillRule, ShapeRendering, StrokeDasharray,
+    StrokeLinecap, StrokeLinejoin,
 };
 use crate::rect::RectangleExt;
 use crate::surface_utils::shared_surface::SharedImageSurface;
@@ -119,6 +113,7 @@ pub struct DrawingCtx {
 impl DrawingCtx {
     pub fn new(
         svg: Rc<Svg>,
+        node: Option<&RsvgNode>,
         cr: &cairo::Context,
         viewport: &cairo::Rectangle,
         dpi: Dpi,
@@ -163,7 +158,7 @@ impl DrawingCtx {
         let mut view_box_stack = Vec::new();
         view_box_stack.push(vbox);
 
-        DrawingCtx {
+        let mut draw_ctx = DrawingCtx {
             svg,
             initial_affine,
             rect,
@@ -177,7 +172,13 @@ impl DrawingCtx {
             acquired_nodes: Rc::new(RefCell::new(Vec::new())),
             measuring,
             testing,
+        };
+
+        if let Some(node) = node {
+            draw_ctx.add_node_and_ancestors_to_stack(node);
         }
+
+        draw_ctx
     }
 
     pub fn toplevel_viewport(&self) -> cairo::Rectangle {
@@ -409,10 +410,7 @@ impl DrawingCtx {
         }
     }
 
-    fn clip_to_node(
-        &mut self,
-        clip_node: &Option<RsvgNode>,
-    ) -> Result<(), RenderingError> {
+    fn clip_to_node(&mut self, clip_node: &Option<RsvgNode>) -> Result<(), RenderingError> {
         if let Some(clip_node) = clip_node {
             let orig_bbox = self.bbox;
 
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index afe78ae4..9c6a359b 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -297,30 +297,6 @@ impl Handle {
         res
     }
 
-    fn create_drawing_ctx_for_node(
-        &self,
-        cr: &cairo::Context,
-        viewport: &cairo::Rectangle,
-        dpi: Dpi,
-        node: Option<&RsvgNode>,
-        measuring: bool,
-    ) -> DrawingCtx {
-        let mut draw_ctx = DrawingCtx::new(
-            self.get_svg(),
-            cr,
-            viewport,
-            dpi,
-            measuring,
-            self.is_testing.get(),
-        );
-
-        if let Some(node) = node {
-            draw_ctx.add_node_and_ancestors_to_stack(node);
-        }
-
-        draw_ctx
-    }
-
     pub fn has_sub(&self, id: &str) -> Result<bool, RenderingError> {
         self.check_is_loaded()?;
 
@@ -445,7 +421,15 @@ impl Handle {
     ) -> Result<(RsvgRectangle, RsvgRectangle), RenderingError> {
         let target = ImageSurface::create(cairo::Format::Rgb24, 1, 1)?;
         let cr = cairo::Context::new(&target);
-        let mut draw_ctx = self.create_drawing_ctx_for_node(&cr, viewport, dpi, Some(node), true);
+        let mut draw_ctx = DrawingCtx::new(
+            self.get_svg(),
+            Some(node),
+            &cr,
+            viewport,
+            dpi,
+            true,
+            self.is_testing.get(),
+        );
         let root = self.get_root();
 
         draw_ctx.draw_node_from_stack(&root.get_cascaded_values(), &root, false)?;
@@ -591,8 +575,15 @@ impl Handle {
         let root = self.get_root();
 
         cr.save();
-        let mut draw_ctx =
-            self.create_drawing_ctx_for_node(cr, viewport, dpi, node.as_ref(), false);
+        let mut draw_ctx = DrawingCtx::new(
+            self.get_svg(),
+            node.as_ref(),
+            cr,
+            viewport,
+            dpi,
+            false,
+            self.is_testing.get(),
+        );
         let res = draw_ctx.draw_node_from_stack(&root.get_cascaded_values(), &root, false);
         cr.restore();
 


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