kopia lustrzana https://github.com/EmbroidePy/pyembroidery
42 wiersze
1.2 KiB
Python
42 wiersze
1.2 KiB
Python
from .EmbConstant import *
|
|
|
|
SEQUIN_CONTINGENCY = CONTINGENCY_SEQUIN_JUMP
|
|
FULL_JUMP = True
|
|
MAX_JUMP_DISTANCE = 127
|
|
MAX_STITCH_DISTANCE = 127
|
|
|
|
|
|
def write(pattern, f, settings=None):
|
|
stitches = pattern.stitches
|
|
xx = 0
|
|
yy = 0
|
|
for stitch in stitches:
|
|
x = stitch[0]
|
|
y = stitch[1]
|
|
data = stitch[2]
|
|
dx = int(round(x - xx))
|
|
dy = int(round(y - yy))
|
|
xx += dx
|
|
yy += dy
|
|
if data is STITCH:
|
|
# consider bounds checking the delta_x, delta_y and raising ValueError if exceeds.
|
|
delta_x = dx & 0xFF
|
|
delta_y = -dy & 0xFF
|
|
f.write(bytes(bytearray([delta_x, delta_y])))
|
|
elif data == JUMP:
|
|
delta_x = dx & 0xFF
|
|
delta_y = -dy & 0xFF
|
|
f.write(b'\x80\x04')
|
|
f.write(bytes(bytearray([delta_x, delta_y])))
|
|
elif data == TRIM:
|
|
f.write(b'\x80\x80\x07\x00')
|
|
continue
|
|
elif data == COLOR_CHANGE:
|
|
f.write(b'\x80\x01\x00\x00')
|
|
continue
|
|
elif data == STOP:
|
|
f.write(b'\x80\x01\x00\x00')
|
|
continue
|
|
elif data == END:
|
|
pass
|