[librsvg: 40/45] Compress get_unresolved() with a macro



commit 832be04ce67bfa4a7ebe1f08fc2054f76a5c2b2b
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Sep 30 18:14:15 2019 -0500

    Compress get_unresolved() with a macro

 rsvg_internals/src/gradient.rs | 51 ++++++++++++++++--------------------------
 1 file changed, 19 insertions(+), 32 deletions(-)
---
diff --git a/rsvg_internals/src/gradient.rs b/rsvg_internals/src/gradient.rs
index b7d3465a..20466e7b 100644
--- a/rsvg_internals/src/gradient.rs
+++ b/rsvg_internals/src/gradient.rs
@@ -491,25 +491,6 @@ impl NodeLinearGradient {
     }
 }
 
-impl NodeLinearGradient {
-    fn get_unresolved(&self, node: &RsvgNode) -> Unresolved {
-        let mut gradient = UnresolvedGradient {
-            units: self.common.units,
-            affine: self.common.affine,
-            spread: self.common.spread,
-            stops: None,
-            variant: self.get_unresolved_variant(),
-        };
-
-        gradient.add_color_stops_from_node(node);
-
-        Unresolved {
-            gradient,
-            fallback: self.common.fallback.clone(),
-        }
-    }
-}
-
 impl NodeRadialGradient {
     fn get_unresolved_variant(&self) -> UnresolvedVariant {
         UnresolvedVariant::Radial {
@@ -522,24 +503,30 @@ impl NodeRadialGradient {
     }
 }
 
-impl NodeRadialGradient {
-    fn get_unresolved(&self, node: &RsvgNode) -> Unresolved {
-        let mut gradient = UnresolvedGradient {
-            units: self.common.units,
-            affine: self.common.affine,
-            spread: self.common.spread,
-            stops: None,
-            variant: self.get_unresolved_variant(),
-        };
+macro_rules! impl_get_unresolved {
+    ($gradient:ty) => {
+        impl $gradient {
+            fn get_unresolved(&self, node: &RsvgNode) -> Unresolved {
+                let mut gradient = UnresolvedGradient {
+                    units: self.common.units,
+                    affine: self.common.affine,
+                    spread: self.common.spread,
+                    stops: None,
+                    variant: self.get_unresolved_variant(),
+                };
 
-        gradient.add_color_stops_from_node(node);
+                gradient.add_color_stops_from_node(node);
 
-        Unresolved {
-            gradient,
-            fallback: self.common.fallback.clone(),
+                Unresolved {
+                    gradient,
+                    fallback: self.common.fallback.clone(),
+                }
+            }
         }
     }
 }
+impl_get_unresolved!(NodeLinearGradient);
+impl_get_unresolved!(NodeRadialGradient);
 
 impl Common {
     fn set_atts(&mut self, pbag: &PropertyBag<'_>) -> NodeResult {


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