[librsvg: 22/30] aspect_ratio: derive default




commit 34c48eaad2a1425d0fed88c5278f04b898c5ce9e
Author: Paolo Borelli <pborelli gnome org>
Date:   Sat Dec 26 15:03:22 2020 +0100

    aspect_ratio: derive default
    
    Use enum_default so that we can derive the Default impl. Also
    reorder code.

 src/aspect_ratio.rs | 62 ++++++++++++++++++++++-------------------------------
 1 file changed, 26 insertions(+), 36 deletions(-)
---
diff --git a/src/aspect_ratio.rs b/src/aspect_ratio.rs
index 21c39ba1..b5f5be68 100644
--- a/src/aspect_ratio.rs
+++ b/src/aspect_ratio.rs
@@ -24,21 +24,6 @@ use crate::rect::Rect;
 use crate::transform::Transform;
 use crate::viewbox::ViewBox;
 
-#[derive(Debug, Copy, Clone, PartialEq, Eq)]
-pub struct AspectRatio {
-    defer: bool,
-    align: Option<Align>,
-}
-
-impl Default for AspectRatio {
-    fn default() -> AspectRatio {
-        AspectRatio {
-            defer: false,
-            align: Some(Align::default()),
-        }
-    }
-}
-
 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
 enum FitMode {
     Meet,
@@ -47,23 +32,6 @@ enum FitMode {
 
 enum_default!(FitMode, FitMode::Meet);
 
-#[derive(Debug, Copy, Clone, PartialEq, Eq)]
-struct Align {
-    x: X,
-    y: Y,
-    fit: FitMode,
-}
-
-impl Default for Align {
-    fn default() -> Align {
-        Align {
-            x: X(Align1D::Mid),
-            y: Y(Align1D::Mid),
-            fit: FitMode::default(),
-        }
-    }
-}
-
 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
 enum Align1D {
     Min,
@@ -71,9 +39,11 @@ enum Align1D {
     Max,
 }
 
-#[derive(Debug, Copy, Clone, PartialEq, Eq)]
+enum_default!(Align1D, Align1D::Mid);
+
+#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
 struct X(Align1D);
-#[derive(Debug, Copy, Clone, PartialEq, Eq)]
+#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
 struct Y(Align1D);
 
 impl Deref for X {
@@ -102,6 +72,28 @@ impl Align1D {
     }
 }
 
+#[derive(Debug, Default, Copy, Clone, PartialEq, Eq)]
+struct Align {
+    x: X,
+    y: Y,
+    fit: FitMode,
+}
+
+#[derive(Debug, Copy, Clone, PartialEq, Eq)]
+pub struct AspectRatio {
+    defer: bool,
+    align: Option<Align>,
+}
+
+impl Default for AspectRatio {
+    fn default() -> AspectRatio {
+        AspectRatio {
+            defer: false,
+            align: Some(Align::default()),
+        }
+    }
+}
+
 impl AspectRatio {
     pub fn is_slice(&self) -> bool {
         matches!(
@@ -229,9 +221,7 @@ impl Parse for AspectRatio {
             .is_ok();
 
         let align_xy = parser.try_parse(|p| parse_align_xy(p))?;
-
         let fit = parser.try_parse(|p| parse_fit_mode(p)).unwrap_or_default();
-
         let align = align_xy.map(|(x, y)| Align { x, y, fit });
 
         Ok(AspectRatio { defer, align })


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