Clone in a terminal:
Commit ae45a1e
Johan Mattsson - 2016-07-22T16:02:49+00:00
ae45a1ed94708e814c8377b10c2775589cbf8cbbjohan.mattsson.m@gmail.com

Rotation

Changed files (3)

Diff

diff --git a/libsvgbird/SvgFile.vala b/libsvgbird/SvgFile.valaindex 901ab9d..a28e07e 100644--- a/libsvgbird/SvgFile.vala+++ b/libsvgbird/SvgFile.vala@@ -680,6 +680,9 @@ public class SvgFile : GLib.Object { 				transform_functions.add (matrix (functions[i])); 			} 			+			if (functions[i].has_prefix ("rotate")) {+				transform_functions.add (rotate (functions[i]));+			} 			// TODO: rotate etc. 		} 		@@ -739,6 +742,19 @@ public class SvgFile : GLib.Object { 		return n; 	} 	+	private static SvgTransform rotate (string function) {+		string parameters = get_transform_parameters (function);+		string[] p = parameters.split (" ");+		SvgTransform transform = new SvgTransform ();+		transform.type = TransformType.ROTATE;++		if (p.length > 0) {+			transform.arguments.add (parse_double (p[0]));+		}++		return transform;+	}+	 	private static SvgTransform scale (string function) { 		string parameters = get_transform_parameters (function); 		string[] p = parameters.split (" ");diff --git a/libsvgbird/SvgTransform.vala b/libsvgbird/SvgTransform.valaindex 773318d..2ba7b39 100644--- a/libsvgbird/SvgTransform.vala+++ b/libsvgbird/SvgTransform.vala@@ -21,7 +21,8 @@ public enum TransformType { 	NONE, 	TRANSLATE, 	MATRIX,-	SCALE+	SCALE,+	ROTATE }  public class SvgTransform : GLib.Object {@@ -67,7 +68,14 @@ public class SvgTransform : GLib.Object { 		 		matrix = Matrix.identity (); 		-		if (type == TransformType.SCALE) {+		if (type == TransformType.ROTATE) {+			if (arguments.size == 1) {+				double r = arguments.get_double (0);+				r *= Math.PI / 180;+				matrix.rotate (r);+				return matrix;+			}+		} else if (type == TransformType.SCALE) { 			if (arguments.size == 1) { 				double s = arguments.get_double (0); 				matrix.scale (s, s);diff --git a/libsvgbird/SvgTransforms.vala b/libsvgbird/SvgTransforms.valaindex ae85c69..6524250 100644--- a/libsvgbird/SvgTransforms.vala+++ b/libsvgbird/SvgTransforms.vala@@ -32,6 +32,14 @@ public class SvgTransforms : GLib.Object { 		size_matrix = Matrix.identity (); 	} +	public double get_rotation () {+		Matrix m = get_matrix ();+		double w = 1;+		double h = 1;+		m.transform_distance (ref w, ref h);+		return Math.atan2 (h, w);+	}+ 	public void collapse_transforms () { 		Matrix collapsed = get_matrix (); 		

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112