[librsvg: 1/2] Use float_cmp for floating number comparisons
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 1/2] Use float_cmp for floating number comparisons
- Date: Fri, 4 Sep 2020 15:48:11 +0000 (UTC)
commit 2d4aed0812564f3d22b3ea6a40032c39f0f4d5f4
Author: Sven Neumann <sven svenfoo org>
Date: Fri Sep 4 10:02:47 2020 +0200
Use float_cmp for floating number comparisons
rsvg_internals/src/angle.rs | 9 ++++-----
rsvg_internals/src/drawing_ctx.rs | 10 +++++-----
2 files changed, 9 insertions(+), 10 deletions(-)
---
diff --git a/rsvg_internals/src/angle.rs b/rsvg_internals/src/angle.rs
index fcd65a5c..182b5b7c 100644
--- a/rsvg_internals/src/angle.rs
+++ b/rsvg_internals/src/angle.rs
@@ -3,6 +3,7 @@
use std::f64::consts::*;
use cssparser::{Parser, Token};
+use float_cmp::approx_eq;
use crate::error::*;
use crate::parsers::{finite_f32, Parse};
@@ -46,8 +47,8 @@ impl Angle {
// Normalizes an angle to [0.0, 2*PI)
fn normalize(rad: f64) -> f64 {
let res = rad % (PI * 2.0);
- if res.abs() < std::f64::EPSILON {
- res.abs()
+ if approx_eq!(f64, res, 0.0) {
+ 0.0
} else if res < 0.0 {
res + PI * 2.0
} else {
@@ -100,8 +101,6 @@ impl Parse for Angle {
#[cfg(test)]
mod tests {
use super::*;
- use float_cmp::ApproxEq;
- use std::f64;
#[test]
fn parses_angle() {
@@ -129,7 +128,7 @@ mod tests {
let i = Angle::from_vector(incoming_vx, incoming_vy);
let o = Angle::from_vector(outgoing_vx, outgoing_vy);
let bisected = i.bisect(o);
- assert!(expected.approx_eq(bisected.radians(), (2.0 * PI * f64::EPSILON, 1)));
+ assert!(approx_eq!(f64, expected, bisected.radians()));
}
#[test]
diff --git a/rsvg_internals/src/drawing_ctx.rs b/rsvg_internals/src/drawing_ctx.rs
index ead30f4b..b77efb72 100644
--- a/rsvg_internals/src/drawing_ctx.rs
+++ b/rsvg_internals/src/drawing_ctx.rs
@@ -926,14 +926,14 @@ impl DrawingCtx {
let scaled_width = pattern_rect.width() * bbwscale;
let scaled_height = pattern_rect.height() * bbhscale;
+ if approx_eq!(f64, scaled_width, 0.0) || approx_eq!(f64, scaled_height, 0.0) {
+ return Ok(false);
+ }
+
let pw: i32 = (scaled_width * scwscale) as i32;
let ph: i32 = (scaled_height * schscale) as i32;
- if scaled_width.abs() < f64::EPSILON
- || scaled_height.abs() < f64::EPSILON
- || pw < 1
- || ph < 1
- {
+ if pw < 1 || ph < 1 {
return Ok(false);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]