[librsvg: 10/19] Parse the skewX / skewY transforms
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 10/19] Parse the skewX / skewY transforms
- Date: Mon, 22 Jan 2018 19:28:47 +0000 (UTC)
commit 40c40b4ee6c55760e41bd2981604e168ff07d9c7
Author: Federico Mena Quintero <federico gnome org>
Date: Mon Jan 22 12:18:30 2018 -0600
Parse the skewX / skewY transforms
rust/src/transform.rs | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
---
diff --git a/rust/src/transform.rs b/rust/src/transform.rs
index 018a2d0..a6693ec 100644
--- a/rust/src/transform.rs
+++ b/rust/src/transform.rs
@@ -70,8 +70,8 @@ fn parse_transform_function(name: &str, parser: &mut Parser) -> Result<cairo::Ma
"translate" => parse_translate_args(parser),
"scale" => parse_scale_args(parser),
"rotate" => parse_rotate_args(parser),
- "skewX" => parse_skewX_args(parser),
- "skewY" => parse_skewY_args(parser),
+ "skewX" => parse_skewx_args(parser),
+ "skewY" => parse_skewy_args(parser),
_ => Err(make_expected_function_error()),
}
}
@@ -151,12 +151,24 @@ fn parse_rotate_args(parser: &mut Parser) -> Result<cairo::Matrix, AttributeErro
.map_err(|e| AttributeError::from(e))
}
-fn parse_skewX_args(parser: &mut Parser) -> Result<cairo::Matrix, AttributeError> {
- unimplemented!();
+fn parse_skewx_args(parser: &mut Parser) -> Result<cairo::Matrix, AttributeError> {
+ parser.parse_nested_block(|p| {
+ let a = p.expect_number()? as f64 * PI / 180.0;
+ Ok(cairo::Matrix::new (1.0, 0.0,
+ a.tan (), 1.0,
+ 0.0, 0.0))
+ }).map_err(CssParseError::<()>::basic)
+ .map_err(|e| AttributeError::from(e))
}
-fn parse_skewY_args(parser: &mut Parser) -> Result<cairo::Matrix, AttributeError> {
- unimplemented!();
+fn parse_skewy_args(parser: &mut Parser) -> Result<cairo::Matrix, AttributeError> {
+ parser.parse_nested_block(|p| {
+ let a = p.expect_number()? as f64 * PI / 180.0;
+ Ok(cairo::Matrix::new (1.0, a.tan (),
+ 0.0, 1.0,
+ 0.0, 0.0))
+ }).map_err(CssParseError::<()>::basic)
+ .map_err(|e| AttributeError::from(e))
}
/*
@@ -325,13 +337,11 @@ mod parser_tests {
}
#[test]
- #[ignore]
fn parses_skew_x () {
assert_eq! (parse_transform ("skewX (30)").unwrap (), make_skew_x_matrix (30.0));
}
#[test]
- #[ignore]
fn parses_skew_y () {
assert_eq! (parse_transform ("skewY (30)").unwrap (), make_skew_y_matrix (30.0));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]