[librsvg: 3/6] ViewParams: use a Dpi field, not separate dpi_x/dpi_y ones



commit aa378790bc526138e5a1245cea1dafa0e58b52f5
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue May 5 13:53:58 2020 -0500

    ViewParams: use a Dpi field, not separate dpi_x/dpi_y ones

 rsvg_internals/src/drawing_ctx.rs | 14 +++++---------
 rsvg_internals/src/length.rs      | 29 +++++++++++++++--------------
 rsvg_internals/src/structure.rs   |  4 ++--
 3 files changed, 22 insertions(+), 25 deletions(-)
---
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index 55aaba03..2ea77595 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -47,18 +47,16 @@ use crate::viewbox::ViewBox;
 /// returned `ViewParams` is dropped; at that point, the `DrawingCtx` will resume using its
 /// previous viewport.
 pub struct ViewParams {
-    pub dpi_x: f64,
-    pub dpi_y: f64,
+    pub dpi: Dpi,
     pub view_box_width: f64,
     pub view_box_height: f64,
     view_box_stack: Option<Weak<RefCell<Vec<ViewBox>>>>,
 }
 
 impl ViewParams {
-    pub fn new(dpi_x: f64, dpi_y: f64, view_box_width: f64, view_box_height: f64) -> ViewParams {
+    pub fn new(dpi: Dpi, view_box_width: f64, view_box_height: f64) -> ViewParams {
         ViewParams {
-            dpi_x,
-            dpi_y,
+            dpi,
             view_box_width,
             view_box_height,
             view_box_stack: None,
@@ -244,8 +242,7 @@ impl DrawingCtx {
         let top_rect = &view_box_stack[last].0;
 
         ViewParams {
-            dpi_x: self.dpi.x,
-            dpi_y: self.dpi.y,
+            dpi: self.dpi,
             view_box_width: top_rect.width(),
             view_box_height: top_rect.height(),
             view_box_stack: None,
@@ -265,8 +262,7 @@ impl DrawingCtx {
             .push(ViewBox(Rect::from_size(width, height)));
 
         ViewParams {
-            dpi_x: self.dpi.x,
-            dpi_y: self.dpi.y,
+            dpi: self.dpi,
             view_box_width: width,
             view_box_height: height,
             view_box_stack: Some(Rc::downgrade(&self.view_box_stack)),
diff --git a/rsvg_internals/src/length.rs b/rsvg_internals/src/length.rs
index 3d58d81a..aff6f58e 100644
--- a/rsvg_internals/src/length.rs
+++ b/rsvg_internals/src/length.rs
@@ -329,23 +329,23 @@ impl<N: Normalize> Length<N> {
 
             LengthUnit::Ex => self.length * font_size_from_values(values, params) / 2.0,
 
-            LengthUnit::In => self.length * <N as Normalize>::normalize(params.dpi_x, params.dpi_y),
+            LengthUnit::In => self.length * <N as Normalize>::normalize(params.dpi.x, params.dpi.y),
 
             LengthUnit::Cm => {
-                self.length * <N as Normalize>::normalize(params.dpi_x, params.dpi_y) / CM_PER_INCH
+                self.length * <N as Normalize>::normalize(params.dpi.x, params.dpi.y) / CM_PER_INCH
             }
 
             LengthUnit::Mm => {
-                self.length * <N as Normalize>::normalize(params.dpi_x, params.dpi_y) / MM_PER_INCH
+                self.length * <N as Normalize>::normalize(params.dpi.x, params.dpi.y) / MM_PER_INCH
             }
 
             LengthUnit::Pt => {
-                self.length * <N as Normalize>::normalize(params.dpi_x, params.dpi_y)
+                self.length * <N as Normalize>::normalize(params.dpi.x, params.dpi.y)
                     / POINTS_PER_INCH
             }
 
             LengthUnit::Pc => {
-                self.length * <N as Normalize>::normalize(params.dpi_x, params.dpi_y)
+                self.length * <N as Normalize>::normalize(params.dpi.x, params.dpi.y)
                     / PICA_PER_INCH
             }
         }
@@ -366,11 +366,11 @@ fn font_size_from_values(values: &ComputedValues, params: &ViewParams) -> f64 {
         LengthUnit::Ex => v.length * 12.0 / 2.0,
 
         // FontSize always is a Both, per properties.rs
-        LengthUnit::In => v.length * Both::normalize(params.dpi_x, params.dpi_y),
-        LengthUnit::Cm => v.length * Both::normalize(params.dpi_x, params.dpi_y) / CM_PER_INCH,
-        LengthUnit::Mm => v.length * Both::normalize(params.dpi_x, params.dpi_y) / MM_PER_INCH,
-        LengthUnit::Pt => v.length * Both::normalize(params.dpi_x, params.dpi_y) / POINTS_PER_INCH,
-        LengthUnit::Pc => v.length * Both::normalize(params.dpi_x, params.dpi_y) / PICA_PER_INCH,
+        LengthUnit::In => v.length * Both::normalize(params.dpi.x, params.dpi.y),
+        LengthUnit::Cm => v.length * Both::normalize(params.dpi.x, params.dpi.y) / CM_PER_INCH,
+        LengthUnit::Mm => v.length * Both::normalize(params.dpi.x, params.dpi.y) / MM_PER_INCH,
+        LengthUnit::Pt => v.length * Both::normalize(params.dpi.x, params.dpi.y) / POINTS_PER_INCH,
+        LengthUnit::Pc => v.length * Both::normalize(params.dpi.x, params.dpi.y) / PICA_PER_INCH,
     }
 }
 
@@ -386,6 +386,7 @@ fn viewport_percentage(x: f64, y: f64) -> f64 {
 mod tests {
     use super::*;
 
+    use crate::dpi::Dpi;
     use crate::float_eq_cairo::ApproxEqCairo;
 
     #[test]
@@ -480,7 +481,7 @@ mod tests {
 
     #[test]
     fn normalize_default_works() {
-        let params = ViewParams::new(40.0, 40.0, 100.0, 100.0);
+        let params = ViewParams::new(Dpi::new(40.0, 40.0), 100.0, 100.0);
 
         let values = ComputedValues::default();
 
@@ -492,7 +493,7 @@ mod tests {
 
     #[test]
     fn normalize_absolute_units_works() {
-        let params = ViewParams::new(40.0, 50.0, 100.0, 100.0);
+        let params = ViewParams::new(Dpi::new(40.0, 50.0), 100.0, 100.0);
 
         let values = ComputedValues::default();
 
@@ -525,7 +526,7 @@ mod tests {
 
     #[test]
     fn normalize_percent_works() {
-        let params = ViewParams::new(40.0, 40.0, 100.0, 200.0);
+        let params = ViewParams::new(Dpi::new(40.0, 40.0), 100.0, 200.0);
 
         let values = ComputedValues::default();
 
@@ -541,7 +542,7 @@ mod tests {
 
     #[test]
     fn normalize_font_em_ex_works() {
-        let params = ViewParams::new(40.0, 40.0, 100.0, 200.0);
+        let params = ViewParams::new(Dpi::new(40.0, 40.0), 100.0, 200.0);
 
         let values = ComputedValues::default();
 
diff --git a/rsvg_internals/src/structure.rs b/rsvg_internals/src/structure.rs
index 1cab9f83..2ec8342f 100644
--- a/rsvg_internals/src/structure.rs
+++ b/rsvg_internals/src/structure.rs
@@ -127,13 +127,13 @@ impl Svg {
 
         match (w, h, self.vbox) {
             (w, h, Some(vbox)) => {
-                let params = ViewParams::new(dpi.x, dpi.y, vbox.0.width(), vbox.0.height());
+                let params = ViewParams::new(dpi, vbox.0.width(), vbox.0.height());
 
                 Some((w.normalize(values, &params), h.normalize(values, &params)))
             }
 
             (w, h, None) if w.unit != LengthUnit::Percent && h.unit != LengthUnit::Percent => {
-                let params = ViewParams::new(dpi.x, dpi.y, 0.0, 0.0);
+                let params = ViewParams::new(dpi, 0.0, 0.0);
 
                 Some((w.normalize(values, &params), h.normalize(values, &params)))
             }


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