Projects/Liberty/File Formats/Viking Pfaff
Viking/Husqvarna Pfaff/Singer 3 VP3
The VP3 file format appears to be series of nested sections. Most sections contain tagged records.
In the style of Backus–Naur Form,
File = File-header Extent
Extent = Extent-header {Hoop}
Hoop = Hoop-header Canvas Threads
Threads = Threads-header {Thread}
Thread = Thread-header Colours Thread-text Thread-detail Stitches Thread-end
Colours = {Colour-detail}
Stitches = Stitches-header {Stitch}
File-header
Offset | Length | Type | Description |
0 | 6 | ASCIIZ | Signature = "%vsn%" |
6 | N1 | N-WStr | Producer 16 bit big-endian length in bytes followed by 16 bit characters |
6+N1 |
Extent-header
Offset | Length | Type | Description |
0 | 3 | Tag | Extent-tag 00 02 00 three bytes |
3 | 4 | Length | Extent-len remaining bytes in file |
3 | N2 | N-WStr | Settings human readable debugging notes |
7+N2 | 4 | MicroM | Extent-top top edge of stitching in um |
11+N2 | 4 | MicroM | Extent-right |
15+N2 | 4 | MicroM | Extent-bottom |
19+N2 | 4 | MicroM | Extent-left |
23+N2 | 4 | Count | Total-stitch-count |
27+N2 | 2 | Count | Total-thread-count |
29+N2 | 1 | Byte | unknown = 12 |
30+N2 | 2 | Count | unknown = 1 may be hoop-count |
Hoop-header
Offset | Length | Type | Description |
0 | 3 | Tag | Hoop-tag = 00 03 00 |
3 | 4 | Length | Hoop-len |
7 | 4 | MicroM | Centre-X |
11 | 4 | MicroM | Centre-Y |
15 | 3 | Tag | Canvas-tag = 00 00 00 |
18 | 4 | MicroM | Hoop-left |
22 | 4 | MicroM | Hoop-right |
26 | 4 | MicroM | Hoop-bottom |
30 | 4 | MicroM | Hoop-top |
34 | 4 | MicroM | Hoop-width |
38 | 4 | MicroM | Hoop-height |
42 | N3 | N-WStr | Settings-2 second copy of Settings |
42+N3 | 1 | Byte | unknown = 100 |
43+N3 | 1 | Byte | unknown = 100 |
44+N3 | 4 | int | unknown = 4096 |
48+N3 | 4 | int | unknown = 0 |
52+N3 | 4 | int | unknown = 0 |
56+N3 | 4 | int | unknown = 4096 |
Threads-header
Offset | Length | Type | Description |
0 | 6 | Bytes | Threads-sig = 120 120 80 80 1 0 |
6 | N4 | N-WStr | Producer-2 copy of producer text |
6+N4 | 2 | Count | Thread-count |
Thread-header
Offset | Length | Type | Description | |||
0 | 3 | Tag | Thread-tag = 00 05 00 | |||
3 | 4 | Length | Thread-len bytes to next thread | |||
7 | 4 | MicroM | Start-X | |||
11 | 4 | MicroM | Start-Y | |||
15 | 1 | Count | Colours-per-thread | |||
16 | 1 | Byte | unknown = 0 | |||
17 | N5 | Table | Colours | |||
17+N5 | 1 | Code | Thread-type-tension | |||
18+N5 | 1 | Byte | Thread-weight | |||
19+N5 | N6 | Record | Thread-text human readable thread description | |||
19+N5+N6 | 4 | MicroM | unknown-X | |||
23+N5+N6 | 4 | MicroM | unknown-Y | |||
27+N5+N6 | N7 | Record | Stitches
- 27+N5+N6+N7 |
1 | Byte | unknown = 0 |
Colour-detail
Offset | Length | Type | Description | |||||
0 | 3 | RRGGBB | Colour-RGB | |||||
3 | 1 | Byte | unknown = 0 or 10 | |||||
4 | 1 | Byte | unknown = 0 | 5 | 1 | Byte | unknown = 0, 20, or 10 |
Thread-text
Offset | Length | Type | Description |
0 | N6a | N-Str | Thread-code 16 bit length followed by ASCII characters part-number |
0+N6a | N6b | N-Str | Thread-name human readable name of thread |
0+N6a+N6b | N6c | N-Str | Thread-manu maker, material and weight |
Thread-text
Offset | Length | Type | Description |
0 | N6a | N-Str | Thread-code 16 bit length followed by ASCII characters part-number |
0+N6a | N6b | N-Str | Thread-name human readable name of thread |
0+N6a+N6b | N6c | N-Str | Thread-manu maker, material and weight |
This file format appears to describe a stitch out similar to that used in JEF files.