[librsvg] parse_transform.lalrpop: Parse the "translate" transform
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] parse_transform.lalrpop: Parse the "translate" transform
- Date: Wed, 22 Mar 2017 17:59:44 +0000 (UTC)
commit c82d223bb5d6016284b806e7611e872157b9c15a
Author: Federico Mena Quintero <federico gnome org>
Date: Wed Mar 22 08:02:21 2017 -0600
parse_transform.lalrpop: Parse the "translate" transform
rust/src/parse_transform.lalrpop | 5 +++++
rust/src/parsers.rs | 12 ++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/rust/src/parse_transform.lalrpop b/rust/src/parse_transform.lalrpop
index 50b61da..4f09f79 100644
--- a/rust/src/parse_transform.lalrpop
+++ b/rust/src/parse_transform.lalrpop
@@ -19,6 +19,11 @@ pub Transform: cairo::Matrix = {
pub Matrix: cairo::Matrix = "matrix" "(" <Num> comma? <Num> comma? <Num> comma? <Num> comma? <Num> comma?
<Num> ")" =>
cairo::Matrix::new (<>);
+pub Translate: cairo::Matrix = {
+ "translate" "(" <Num> ")" => cairo::Matrix::new (1.0, 0.0, 0.0, 1.0, <>, 0.0),
+ "translate" "(" <Num> comma? <Num> ")" => cairo::Matrix::new (1.0, 0.0, 0.0, 1.0, <>)
+};
+
pub Num: f64 = <s:r"[+-]?([0-9]*\.[0-9]+|[0-9]+(\.[0-9]*)?)([Ee][+-]?[0-9]+)?"> =>
f64::from_str (s).unwrap ();
diff --git a/rust/src/parsers.rs b/rust/src/parsers.rs
index ae70d7a..0a131d6 100644
--- a/rust/src/parsers.rs
+++ b/rust/src/parsers.rs
@@ -304,4 +304,16 @@ mod parse_transform_tests {
assert_eq! (parse_Matrix ("matrix (1,2.25,-3.25e2,4 5 6)").unwrap (),
cairo::Matrix::new (1.0, 2.25, -325.0, 4.0, 5.0, 6.0));
}
+
+ #[test]
+ fn parses_translate () {
+ assert_eq! (parse_Translate ("translate(-1 -2)").unwrap (),
+ cairo::Matrix::new (1.0, 0.0, 0.0, 1.0, -1.0, -2.0));
+
+ assert_eq! (parse_Translate ("translate(-1, -2)").unwrap (),
+ cairo::Matrix::new (1.0, 0.0, 0.0, 1.0, -1.0, -2.0));
+
+ assert_eq! (parse_Translate ("translate(-1)").unwrap (),
+ cairo::Matrix::new (1.0, 0.0, 0.0, 1.0, -1.0, 0.0));
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]