From 816afa9ed85f811c296d380073622f83d0cc5921 Mon Sep 17 00:00:00 2001 From: Tatarize Date: Tue, 2 Mar 2021 17:10:11 -0800 Subject: [PATCH] git-sync --- .travis.yml | 2 +- pyembroidery/WriteEncoder.py | 172 ----------------------------------- requirements.txt | 1 - 3 files changed, 1 insertion(+), 174 deletions(-) delete mode 100644 pyembroidery/WriteEncoder.py diff --git a/.travis.yml b/.travis.yml index e3261c3..001f974 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,4 +3,4 @@ python: - "2.7" - "3.6" script: - - python -m unittest discover test + - python -m unittest discover test \ No newline at end of file diff --git a/pyembroidery/WriteEncoder.py b/pyembroidery/WriteEncoder.py deleted file mode 100644 index da9281d..0000000 --- a/pyembroidery/WriteEncoder.py +++ /dev/null @@ -1,172 +0,0 @@ -import pyembroidery.EmbPattern as EmbPattern -import math - - -def distance_squared(x0, y0, x1, y1): - dx = x1 - x0 - dy = y1 - y0 - dx *= dx - dy *= dy - return dx + dy - - -def distance(x0, y0, x1, y1): - return math.sqrt(distance_squared(x0, y0, x1, y1)) - - -def towards(a, b, amount): - return (amount * (b - a)) + a - - -def angleR(x0, y0, x1, y1): - return math.atan2(y1 - y0, x1 - x0) - - -def oriented(x0, y0, x1, y1, r): - radians = angleR(x0, y0, x1, y1) - return (x0 + (r * math.cos(radians)), y0 + (r * math.sin(radians))) - - -class WriteEncoder(): - def __init__(self): - self.max_jump = float('inf') # type: float - self.max_stitch = float('inf') # type: float - self.tie_on = False # type: bool - self.tie_off = False # type: bool - self.needle_x = 0 # type: float - self.needle_y = 0 # type: float - self.translate_x = 0 # type: float - self.translate_y = 0 # type: float - - def set_translation(self, x, y): - self.translate_x = x - self.translate_y = y - - def jumpTo(self, transcode, x, y): - self.step_to(transcode, x, y, self.max_jump, EmbPattern.JUMP) - transcode.append([x, y, EmbPattern.JUMP]) - - def stitchTo(self, transcode, x, y): - self.step_to(transcode, x, y, self.max_stitch, EmbPattern.STITCH) - transcode.append([x, y, EmbPattern.STITCH]) - - def step_to(self, transcode, x, y, length, data): - distance_x = x - self.needle_x - distance_y = y - self.needle_y - if abs(distance_x) > length or abs(distance_y) > length: - stepsX = math.ceil(abs(distance_x / length)) - stepsY = math.ceil(abs(distance_y / length)) - if (stepsX > stepsY): - steps = stepsX - else: - steps = stepsY - stepSizeX = distance_x / steps - stepSizeY = distance_y / steps - - q = 0 - qe = steps - qx = self.needle_x - qy = self.needle_y - while q < qe: - transcode.append([round(qx), round(qy), data]) - q += 1 - qx += stepSizeX - qy += stepSizeY - - def lock_stitch(self, transcode, lock_x, lock_y, anchor_x, anchor_y): - dist = distance(lock_x, lock_y, anchor_x, anchor_y) - if dist > self.max_stitch: - p = oriented(lock_x, lock_y, anchor_x, anchor_y, self.max_stitch) - anchor_x = p[0] - anchor_y = p[1] - f = (towards(lock_x, anchor_x, .33), towards(lock_y, anchor_y, .33)) - s = (towards(lock_x, anchor_x, .66), towards(lock_y, anchor_y, .66)) - self.stitchTo(transcode, lock_x, lock_y) - self.stitchTo(transcode, f[0], f[1]) - self.stitchTo(transcode, s[0], s[1]) - self.stitchTo(transcode, f[0], f[1]) - - def process(self, p): - self.needle_x = 0 - self.needle_y = 0 - copy = EmbPattern.EmbPattern() - EmbPattern.set(p, copy) - layer = copy.stitches - for stitch in layer: - stitch[0] = round(stitch[0] - self.translate_x) - stitch[1] = round(stitch[1] - self.translate_y) - p.stitches = [] - p.threadlist = [] - self.write_code(copy, p) - self.write_thread(copy, p) - return p - - def write_thread(self, pattern_from, pattern_to): - threads_to = pattern_to.threadlist - threads_to.extend(pattern_from.threadlist) - - def write_code(self, pattern_source, pattern_dest): - source = pattern_source.stitches - dest = pattern_dest.stitches - flags = EmbPattern.NO_COMMAND - trimmed = True - for i, stitch in enumerate(source): - x = stitch[0] - y = stitch[1] - flags = stitch[2] - if flags == EmbPattern.STITCH: - if trimmed: - self.jumpTo(dest, x, y) - self.needle_x = x - self.needle_y = y - if self.tie_on: - b = source[i + 1] - bx = b[0] - by = b[1] - self.lock_stitch(dest, x, y, bx, by) - dest.append([x, y, EmbPattern.STITCH]) - trimmed = False; - else: - self.stitchTo(dest, x, y) - elif flags == EmbPattern.FRAME_EJECT: - if not trimmed: - dest.append([self.needle_x, self.needle_y, EmbPattern.TRIM]) - trimmed = True - self.jumpTo(dest, x, y) - dest.append([x, y, EmbPattern.STOP]) - elif flags == EmbPattern.BREAK: - if not trimmed: - dest.append([self.needle_x, self.needle_y, EmbPattern.TRIM]) - trimmed = True - continue # do not update the needle. - elif flags == EmbPattern.BREAK_COLOR: - if not trimmed: - dest.append([self.needle_x, self.needle_y, EmbPattern.TRIM]) - trimmed = True - dest.append([x, y, EmbPattern.COLOR_CHANGE]) - continue # do not update the needle. - elif flags == EmbPattern.STITCH_FINAL: - if self.tie_off: - b = source[i - 1] - bx = b[0] - by = b[1] - self.lock_stitch(dest, x, y, bx, by) - self.stitchTo(dest, x, y) - dest.append([x, y, EmbPattern.TRIM]) - trimmed = True - elif flags == EmbPattern.STITCH_FINAL_COLOR: - if self.tie_off: - b = source[i - 1] - bx = b[0] - by = b[1] - self.lock_stitch(dest, x, y, bx, by) - self.stitchTo(dest, x, y) - dest.append([x, y, EmbPattern.TRIM]) - dest.append([x, y, EmbPattern.COLOR_CHANGE]) - trimmed = True - else: - dest.append(stitch) - self.needle_x = x - self.needle_y = y - if flags != EmbPattern.END: - dest.append([self.needle_x, self.needle_y, EmbPattern.END]) diff --git a/requirements.txt b/requirements.txt index 8b13789..e69de29 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +0,0 @@ -