pyembroidery/pyembroidery/InbReader.py

35 wiersze
797 B
Python

def read_inb_stitches(f, out):
count = 0
while True:
count += 1
byte = bytearray(f.read(3))
if len(byte) != 3:
break
x = byte[0]
y = -byte[1]
ctrl = byte[2]
if ctrl & 0x20 != 0:
y = -y
if ctrl & 0x40 != 0:
x = -x
if (ctrl & 0b1111) == 0x00:
out.stitch(x, y)
continue
if (ctrl & 0b1111) == 0x01:
out.color_change(x, y)
continue
if (ctrl & 0b1111) == 0x02:
out.move(x, y)
continue
if ctrl == 0x04:
break
break # Uncaught Control
out.end()
def read(f, out, settings=None):
f.seek(0x2000, 0)
read_inb_stitches(f, out)