[librsvg/rustification] path_parser.rs: Split part of number() into a helper nonnegative_number() method
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg/rustification] path_parser.rs: Split part of number() into a helper nonnegative_number() method
- Date: Tue, 8 Nov 2016 22:06:38 +0000 (UTC)
commit b8a5bffd37c1b6b863e68f48817691a9d2516e83
Author: Federico Mena Quintero <federico gnome org>
Date: Tue Nov 8 14:35:15 2016 -0600
path_parser.rs: Split part of number() into a helper nonnegative_number() method
We will need nonnegative numbers to match for the radiuses of elliptical arcs.
rust/src/path_parser.rs | 32 +++++++++++++++++++++-----------
1 files changed, 21 insertions(+), 11 deletions(-)
---
diff --git a/rust/src/path_parser.rs b/rust/src/path_parser.rs
index cb96d83..53d69d7 100644
--- a/rust/src/path_parser.rs
+++ b/rust/src/path_parser.rs
@@ -184,16 +184,10 @@ impl<'external> PathParser<'external> {
fn number (&mut self) -> Option <f64> {
let mut has_sign: bool;
- let mut value: f64;
let mut sign: f64;
- let mut exponent_sign: f64;
- let mut exponent: f64;
has_sign = false;
sign = 1.0;
- value = 0.0;
- exponent_sign = 1.0;
- exponent = 0.0;
if self.match_char ('+') {
sign = 1.0;
@@ -203,6 +197,26 @@ impl<'external> PathParser<'external> {
has_sign = true;
}
+ if let Some (num) = self.nonnegative_number () {
+ return Some (num * sign);
+ } else {
+ if has_sign {
+ self.error ("Expected number after sign");
+ }
+
+ None
+ }
+ }
+
+ fn nonnegative_number (&mut self) -> Option<f64> {
+ let mut value: f64;
+ let mut exponent_sign: f64;
+ let mut exponent: f64;
+
+ value = 0.0;
+ exponent_sign = 1.0;
+ exponent = 0.0;
+
let mut c: char = ' ';
if self.lookahead_is_digit (&mut c) || self.lookahead_is ('.') {
@@ -254,12 +268,8 @@ impl<'external> PathParser<'external> {
}
}
- Some (value * sign * 10.0f64.powf (exponent * exponent_sign))
+ Some (value * 10.0f64.powf (exponent * exponent_sign))
} else {
- if has_sign {
- self.error ("Expected number after sign");
- }
-
None
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]