[librsvg: 1/2] node: impl fmt::Display for RsvgNode



commit ed894ea5477b2e5da5c09606e1de31d523270828
Author: Paolo Borelli <pborelli gnome org>
Date:   Sun May 12 11:00:52 2019 +0200

    node: impl fmt::Display for RsvgNode

 rsvg_internals/src/drawing_ctx.rs |  8 ++------
 rsvg_internals/src/filters/mod.rs | 13 +++----------
 rsvg_internals/src/gradient.rs    | 10 ++--------
 rsvg_internals/src/node.rs        | 31 ++++++++++++++-----------------
 rsvg_internals/src/pattern.rs     |  5 +----
 rsvg_internals/src/shapes.rs      |  6 +-----
 rsvg_internals/src/structure.rs   |  6 +-----
 rsvg_internals/src/text.rs        |  2 +-
 8 files changed, 25 insertions(+), 56 deletions(-)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 41642d8e..ade5322c 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -489,11 +489,7 @@ impl DrawingCtx {
                                 })
                             });
                         } else {
-                            rsvg_log!(
-                                "element {} references nonexistent mask \"{}\"",
-                                node.get_human_readable_name(),
-                                mask,
-                            );
+                            rsvg_log!("element {} references nonexistent mask \"{}\"", node, mask);
                         }
                     } else {
                         // No mask, so composite the temporary surface
@@ -580,7 +576,7 @@ impl DrawingCtx {
             None => {
                 rsvg_log!(
                     "element {} will not be rendered since its filter \"{}\" was not found",
-                    node.get_human_readable_name(),
+                    node,
                     filter_uri,
                 );
 
diff --git a/rsvg_internals/src/filters/mod.rs b/rsvg_internals/src/filters/mod.rs
index ce903ec2..c871307f 100644
--- a/rsvg_internals/src/filters/mod.rs
+++ b/rsvg_internals/src/filters/mod.rs
@@ -285,10 +285,7 @@ pub fn render(
             let in_error = c.is_in_error();
 
             if in_error {
-                rsvg_log!(
-                    "(ignoring filter primitive {} because it is in error)",
-                    c.get_human_readable_name()
-                );
+                rsvg_log!("(ignoring filter primitive {} because it is in error)", c);
             }
 
             !in_error
@@ -364,11 +361,7 @@ pub fn render(
                 .render(&rr_node, filter_ctx, draw_ctx)
                 .and_then(|result| filter_ctx.store_result(result))
             {
-                rsvg_log!(
-                    "(filter primitive {} returned an error: {})",
-                    rr_node.get_human_readable_name(),
-                    err
-                );
+                rsvg_log!("(filter primitive {} returned an error: {})", rr_node, err);
 
                 // Exit early on Cairo errors. Continue rendering otherwise.
                 if let FilterError::CairoError(status) = err {
@@ -390,7 +383,7 @@ pub fn render(
         let elapsed = start.elapsed();
         rsvg_log!(
             "(rendered filter primitive {} in\n    {} seconds)",
-            rr_node.get_human_readable_name(),
+            rr_node,
             elapsed.as_secs() as f64 + f64::from(elapsed.subsec_nanos()) / 1e9
         );
     }
diff --git a/rsvg_internals/src/gradient.rs b/rsvg_internals/src/gradient.rs
index e3d3cdd1..18931387 100644
--- a/rsvg_internals/src/gradient.rs
+++ b/rsvg_internals/src/gradient.rs
@@ -380,10 +380,7 @@ impl Gradient {
                 let in_error = child.is_in_error();
 
                 if in_error {
-                    rsvg_log!(
-                        "(not using gradient stop {} because it is in error)",
-                        child.get_human_readable_name()
-                    );
+                    rsvg_log!("(not using gradient stop {} because it is in error)", child);
                 }
 
                 !in_error
@@ -549,10 +546,7 @@ impl PaintSource for NodeGradient {
                 let a_node = acquired.get();
 
                 if stack.contains(a_node) {
-                    rsvg_log!(
-                        "circular reference in gradient {}",
-                        node.get_human_readable_name()
-                    );
+                    rsvg_log!("circular reference in gradient {}", node);
                     return Err(RenderingError::CircularReference);
                 }
 
diff --git a/rsvg_internals/src/node.rs b/rsvg_internals/src/node.rs
index 04e98e60..91426697 100644
--- a/rsvg_internals/src/node.rs
+++ b/rsvg_internals/src/node.rs
@@ -2,6 +2,7 @@ use cairo::{Matrix, MatrixTrait};
 use downcast_rs::*;
 use std::cell::{Cell, Ref, RefCell};
 use std::collections::HashSet;
+use std::fmt;
 use std::rc::Rc;
 
 use crate::attributes::Attribute;
@@ -327,14 +328,6 @@ impl RsvgNode {
         self.borrow().class.as_ref().map(String::as_str)
     }
 
-    pub fn get_human_readable_name(&self) -> String {
-        format!(
-            "{:?} id={}",
-            self.get_type(),
-            self.get_id().unwrap_or("None")
-        )
-    }
-
     pub fn get_transform(&self) -> Matrix {
         self.borrow().transform.get()
     }
@@ -541,21 +534,14 @@ impl RsvgNode {
                 self.borrow().node_impl.draw(node, cascaded, dc, clipping)
             })
         } else {
-            rsvg_log!(
-                "(not rendering element {} because it is in error)",
-                self.get_human_readable_name()
-            );
+            rsvg_log!("(not rendering element {} because it is in error)", self);
 
             Ok(()) // maybe we should actually return a RenderingError::NodeIsInError here?
         }
     }
 
     pub fn set_error(&self, error: NodeError) {
-        rsvg_log!(
-            "(attribute error for {}:\n  {})",
-            self.get_human_readable_name(),
-            error
-        );
+        rsvg_log!("(attribute error for {}:\n  {})", self, error);
 
         *self.borrow().result.borrow_mut() = Err(error);
     }
@@ -606,3 +592,14 @@ impl RsvgNode {
         specified_values.overflow = SpecifiedValue::Specified(Overflow::Hidden);
     }
 }
+
+impl fmt::Display for RsvgNode {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        write!(
+            f,
+            "{:?} id={}",
+            self.get_type(),
+            self.get_id().unwrap_or("None")
+        )
+    }
+}
diff --git a/rsvg_internals/src/pattern.rs b/rsvg_internals/src/pattern.rs
index 54dc9934..b5c04bf4 100644
--- a/rsvg_internals/src/pattern.rs
+++ b/rsvg_internals/src/pattern.rs
@@ -242,10 +242,7 @@ impl PaintSource for NodePattern {
                 let a_node = acquired.get();
 
                 if stack.contains(a_node) {
-                    rsvg_log!(
-                        "circular reference in pattern {}",
-                        node.get_human_readable_name()
-                    );
+                    rsvg_log!("circular reference in pattern {}", node);
                     return Err(RenderingError::CircularReference);
                 }
 
diff --git a/rsvg_internals/src/shapes.rs b/rsvg_internals/src/shapes.rs
index f7a9fd1d..5bca9abb 100644
--- a/rsvg_internals/src/shapes.rs
+++ b/rsvg_internals/src/shapes.rs
@@ -132,11 +132,7 @@ impl NodeTrait for NodePath {
                     // FIXME: we don't propagate errors upstream, but creating a partial
                     // path is OK per the spec
 
-                    rsvg_log!(
-                        "could not parse path {}: {}",
-                        node.get_human_readable_name(),
-                        e
-                    );
+                    rsvg_log!("could not parse path {}: {}", node, e);
                 }
 
                 *self.builder.borrow_mut() = Some(builder);
diff --git a/rsvg_internals/src/structure.rs b/rsvg_internals/src/structure.rs
index 76998774..135148ca 100644
--- a/rsvg_internals/src/structure.rs
+++ b/rsvg_internals/src/structure.rs
@@ -377,11 +377,7 @@ impl NodeTrait for NodeUse {
             // to re-acquire the child for other purposes.
             acquired.get().clone()
         } else {
-            rsvg_log!(
-                "element {} references nonexistent \"{}\"",
-                node.get_human_readable_name(),
-                link,
-            );
+            rsvg_log!("element {} references nonexistent \"{}\"", node, link,);
             return Ok(());
         };
 
diff --git a/rsvg_internals/src/text.rs b/rsvg_internals/src/text.rs
index c8790634..3a832b52 100644
--- a/rsvg_internals/src/text.rs
+++ b/rsvg_internals/src/text.rs
@@ -681,7 +681,7 @@ impl NodeTRef {
         } else {
             rsvg_log!(
                 "element {} references a nonexistent text source \"{}\"",
-                node.get_human_readable_name(),
+                node,
                 link,
             );
         }


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