Clone in a terminal:
Commit 64507ad
Johan Mattsson - 2016-07-15T19:00:24+00:00
64507ad23ab34eb30b9193da267ca4f16e03458cjohan.mattsson.m@gmail.com

Fix polygon

Changed files (3)

Diff

diff --git a/libsvgbird/Polygon.vala b/libsvgbird/Polygon.valaindex 297bc13..a61a719 100644--- a/libsvgbird/Polygon.vala+++ b/libsvgbird/Polygon.vala@@ -19,7 +19,7 @@ namespace SvgBird {  public class Polygon : Object { -	public Doubles points = new Doubles ();+	public Points points = new Points ();  	public Polygon () { 	}@@ -27,11 +27,11 @@ public class Polygon : Object { 	public override void draw_outline (Context cr) { 		return_if_fail (points.size % 2 == 0); 		-		if (points.size > 2) {-			cr.move_to (points.data[0].value, points.data[1].value);+		if (points.size > 8) {+			cr.move_to (points.point_data.get_double (0), points.get_double (1)); 			-			for (int i = 2; i < points.size - 1; i += 2) {-				cr.line_to (points.data[i].value, points.data[i + 1].value);+			for (int i = 8; i < points.size - 8; i += 8) {+				cr.line_to (points.get_double (i + 1), points.get_double (i + 2)); 			} 			 			cr.close_path ();@@ -43,10 +43,8 @@ public class Polygon : Object { 		 		to_object_view (ref x, ref y); 		-		foreach (Points p in points) {-			if (SvgPath.is_over_points (p, point_x, point_y)) {-				inside = !inside;-			}+		if (SvgPath.is_over_points (points, x, y)) {+			inside = !inside; 		} 		 		return inside;diff --git a/libsvgbird/SvgFile.vala b/libsvgbird/SvgFile.valaindex b2d0bfa..4b13a80 100644--- a/libsvgbird/SvgFile.vala+++ b/libsvgbird/SvgFile.vala@@ -425,8 +425,17 @@ public class SvgFile : GLib.Object { 				string data = add_separators (attr.get_content ()); 				string[] point_data = data.split (" "); 				-				foreach (string number in point_data) {-					polygon.points.add (parse_number (number));+				for (int i = 0; i < point_data.length - 1; i++) {+					string number_x = point_data[i];+					string number_y = point_data[i + 1];+					polygon.points.add_type (POINT_LINE);+					polygon.points.add (parse_number (number_x));+					polygon.points.add (parse_number (number_y));+					polygon.points.add (0);+					polygon.points.add (0);+					polygon.points.add (0);+					polygon.points.add (0);+					polygon.points.add (0); 				} 			} 		}diff --git a/libsvgbird/SvgPath.vala b/libsvgbird/SvgPath.valaindex ac64e5e..4ad47c7 100644--- a/libsvgbird/SvgPath.vala+++ b/libsvgbird/SvgPath.vala@@ -77,7 +77,7 @@ public class SvgPath : Object {  				double angle_start, angle_extent, cx, cy; 				-				get_arc_arguments (pen_position_x, pen_position_y, rx, ry,+				get_arc_arguments (previous_x, previous_y, rx, ry, 							rotation, large_arc > 0, sweep > 0, dest_x, dest_y, 							out angle_start, out angle_extent, 							out cx, out cy);@@ -184,7 +184,7 @@ public class SvgPath : Object { 		} 	} -	public void get_start (Points path, out double x, out double y) {+	public static void get_start (Points path, out double x, out double y) { 		int size = path.point_data.size; 		 		x = 0;

Contact

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