Skip to content

Commit fdcfbeb

Browse files
authored
Merge pull request #92 from EmbroidePy/tatarize-spx
Spx Format (read)
2 parents 028d7f9 + f7f20fd commit fdcfbeb

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

pyembroidery/PyEmbroidery.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import pyembroidery.PngWriter as PngWriter
5151
import pyembroidery.SewReader as SewReader
5252
import pyembroidery.ShvReader as ShvReader
53+
import pyembroidery.SpxReader as SpxReader
5354
import pyembroidery.StcReader as StcReader
5455
import pyembroidery.StxReader as StxReader
5556
import pyembroidery.SvgWriter as SvgWriter
@@ -318,6 +319,14 @@ def supported_formats():
318319
"category": "embroidery",
319320
"reader": TapReader
320321
})
322+
yield ({
323+
"description": "Pfaff Embroidery Format",
324+
"extension": "spx",
325+
"extensions": ("spx"),
326+
"mimetype": "application/x-spx",
327+
"category": "embroidery",
328+
"reader": SpxReader
329+
})
321330
yield ({
322331
"description": "Data Stitch Embroidery Format",
323332
"extension": "stx",

pyembroidery/SpxReader.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from .ReadHelper import read_int_16be, read_int_8, signed8, signed16
2+
3+
4+
def read(f, out, settings=None):
5+
f.seek(0x11E, 1)
6+
while True:
7+
b = bytearray(f.read(2))
8+
if len(b) != 2:
9+
break
10+
dy = -signed16(read_int_16be(f))
11+
dx = signed16(read_int_16be(f))
12+
c = signed8(read_int_8(f))
13+
dy -= c
14+
b = bytearray(f.read(2))
15+
if len(b) != 2:
16+
break
17+
out.stitch(dx, dy)

0 commit comments

Comments
 (0)