From 60199fffe0c2028794f0d969e71f6a55f457b782 Mon Sep 17 00:00:00 2001
From: Stefan Siegl <stesie@brokenpipe.de>
Date: Mon, 29 Dec 2014 23:34:37 +0100
Subject: [PATCH] Filter out duplicate stitches

---
 embroider.py | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/embroider.py b/embroider.py
index d92f733a5..ffeb99f1f 100644
--- a/embroider.py
+++ b/embroider.py
@@ -335,13 +335,20 @@ class EmbroideryObject:
 		for patch in self.patchList.patches:
 			jumpStitch = True
 			for stitch in patch.stitches:
-				if jumpStitch and lastStitch and lastColor == patch.color:
-					# consider collapsing jump stich, if it is pretty short
-					c = math.sqrt((stitch.x - lastStitch.x) ** 2 + (stitch.y + lastStitch.y) ** 2)
-					dbg.write("jump stitch length: %f (%d/%d -> %d/%d)\n" % (c, lastStitch.x, lastStitch.y, stitch.x, stitch.y))
-					if c < collapse_len_px:
-						dbg.write("... collapsed\n")
-						jumpStitch = False
+                                if lastStitch and lastColor == patch.color:
+                                        c = math.sqrt((stitch.x - lastStitch.x) ** 2 + (stitch.y + lastStitch.y) ** 2)
+                                        dbg.write("stitch length: %f (%d/%d -> %d/%d)\n" % (c, lastStitch.x, lastStitch.y, stitch.x, stitch.y))
+
+                                        if c == 0:
+                                                # filter out duplicate successive stitches
+                                                jumpStitch = False
+                                                continue
+
+                                        if jumpStitch:
+                                                # consider collapsing jump stich, if it is pretty short
+                                                if c < collapse_len_px:
+                                                        dbg.write("... collapsed\n")
+                                                        jumpStitch = False
 
 				dbg.write("stitch color %s\n" % patch.color)