[librsvg: 3/6] ViewParams: use a Dpi field, not separate dpi_x/dpi_y ones
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 3/6] ViewParams: use a Dpi field, not separate dpi_x/dpi_y ones
- Date: Tue, 5 May 2020 20:07:12 +0000 (UTC)
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, ¶ms), h.normalize(values, ¶ms)))
}
(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, ¶ms), h.normalize(values, ¶ms)))
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]