Projects/Liberty/File Formats/Janome Embroidery Format: Difference between revisions

From KDE Community Wiki
m (→‎Hoop-code: added human name)
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Janome Embroidery Format JEF ==
== Janome Embroidery Format JEF ==


The JEF and JEF+ files consists of a number of sections. Multi-byte numbers appear to be stored little endian. For the JEF (and not JEF+ ) files, there is no simple signature, except to see if the Stitch-offset is after the Thread-type-list.
The JEF and JEF+ files consists of a number of sections. Multi-byte numbers appear to be stored little endian. For the JEF (and not JEF+ ) files, there is no simple signature, except to see if the Stitch-offset is after the Thread-type-list. The JEF pattern can easily be extracted from JEF+ files; by using the Stitch-offset to the Stitch-list, to skip over the JEF+ header; and then to ignore the JEF+ details, after the Stitch-list, at the end of the file.


File =
File = File-header Thread-colour-list Thread-type-list [Plus-header] Stitch-list {Plus-detail}
  File-header
  Thread-colour-list
  Thread-type-list
  [Plus-header]
  Stitch-list
  {Plus-detail}


Thread-colour-list = {Thread-colour}
Thread-colour-list = {Thread-colour}
Line 84: Line 78:
| 4
| 4
| Measure
| Measure
| Extent-2-left -1 implies not used
| Extent-2-left; -1 implies not used
|-
|-
| 56
| 56
Line 104: Line 98:
| 4
| 4
| Measure
| Measure
| Extent-3-left -1 implies not used
| Extent-3-left; -1 implies not used
|-
|-
| 72
| 72
Line 124: Line 118:
| 4
| 4
| Measure
| Measure
| Extent-4-left -1 implies not used
| Extent-4-left; -1 implies not used
|-
|-
| 88
| 88
Line 144: Line 138:
| 4
| 4
| Measure
| Measure
| Extent-5-left -1 implies not used
| Extent-5-left; -1 implies not used
|-
|-
| 104
| 104
Line 701: Line 695:
===Plus-detail===
===Plus-detail===
Unknown, many 32 bit numbers, then many 16 bit numbers.
Unknown, many 32 bit numbers, then many 16 bit numbers.
== SEW Format ==
This appears to be an earlier format, it is fairly simple (from the examples seen), it includes bitmap previews, but sometimes they do not match the pattern described in stitches. The format seems to use the same thread colour codes and the same stitch-list as JEF.
Format appears to be little endian, except for the bitmaps.
SEW-file = SEW-header {Bitmap} {stitch}
=== SEW-header ===
Only SEW files
{| class="wikitable"
| Offset
| Length
| Type
| Description
|-
| 0
| 2
| Count
| Colour count; maximum of 12 colours
|-
| 2
| 12x2
| Table
| Colour index table padded with 0; JEF colour code
|-
| 0x1A
| 12x2
| Table
| Colour unknown; all entries appear to have the same value: 8 or 0 or 255
|-
| 0x32
| 12x2
| Table
| Stitches per colour (minus a few)
|-
| 0x4A
|
|
|
|}
=== Bitmap ===
The bitmaps and sets of bitmaps appear to start at several fixed file offsets:<br/>
0x004A 1 x 48 pixel by 32 lines monochrome<br/>
0x010C 1 to 12 x 24 by 16, one for each colour<br/>
0x043C 1 x 64 by 48 monochrome<br/>
0x05BE 1 to 12 x 64 by 48, one for each colour<br/>
0x17D6 1 x w x h, variously sized monochrome outline and centre mark.<br/>
There are about 1440 bytes before the stitch-list.
This last bitmap may give an indication of the size in millimetres, the width will be a multiple of 8&nbsp;mm. The available bits (for pixels or mm) 1440 x 8 = 11,520 gives a maximum size around 120&nbsp;mm x 96&nbsp;mm, so may be not.
{| class="wikitable"
| Offset
| Length
| Type
| Description
|-
| 0
| 1
| Count
| Width of bitmap in (8 bit) bytes
|-
| 1
| 1
| Count
| Height of bitmap in lines/rows
|-
| 2
| Width x Height
| Byte
| Bits from top to bottom, left to right, MSB to LSB
|-
|2 + Width x Height
|
|
|
|}
The bitmap is similar to PBM P4 format, a PBM file can be created by writing:<br/>
  "P4\n"
  "%d %d\n", Width * 8, Height
then copy Width x Height chars
=== Stitch ===
The SEW stitches appear to start at the fixed file offset 0x1D78, and use the same Escaped-command and (8 bit, 8 bit) Displacement as JEF above.





Latest revision as of 10:00, 17 September 2012

Janome Embroidery Format JEF

The JEF and JEF+ files consists of a number of sections. Multi-byte numbers appear to be stored little endian. For the JEF (and not JEF+ ) files, there is no simple signature, except to see if the Stitch-offset is after the Thread-type-list. The JEF pattern can easily be extracted from JEF+ files; by using the Stitch-offset to the Stitch-list, to skip over the JEF+ header; and then to ignore the JEF+ details, after the Stitch-list, at the end of the file.

File = File-header Thread-colour-list Thread-type-list [Plus-header] Stitch-list {Plus-detail}

Thread-colour-list = {Thread-colour}

Thread-type-list = {Thread-type}

Stitch-list = {Stitch}

Stitch = Escaped-command | Displacement

File-header

Offset Length Type Description
0 4 Offset Stitch-offset location of first stitch
4 4 Flags unknown = 1, 10 or 20
8 8 ASCII Date YYYYMMDD
16 8 ASCII Time HHMMSSxx
24 4 Count Thread-count number of thread changes
28 4 Count Stitch-count
32 4 Code Hoop-code = 0 to 4
36 4 Measure Extent-1-left stitch extent left of centre in 0.1 mm units
40 4 Measure Extent-1-top
44 4 Measure Extent-1-right
48 4 Measure Extent-1-bottom
52 4 Measure Extent-2-left; -1 implies not used
56 4 Measure Extent-2-top
60 4 Measure Extent-2-right
64 4 Measure Extent-2-bottom
68 4 Measure Extent-3-left; -1 implies not used
72 4 Measure Extent-3-top
76 4 Measure Extent-3-right
80 4 Measure Extent-3-bottom
84 4 Measure Extent-4-left; -1 implies not used
88 4 Measure Extent-4-top
92 4 Measure Extent-4-right
96 4 Measure Extent-4-bottom
100 4 Measure Extent-5-left; -1 implies not used
104 4 Measure Extent-5-top
108 4 Measure Extent-5-right
112 4 Measure Extent-5-bottom

Hoop-code

Hoop-code Hoop-name Hoop-size
0 A Standard 126 x 110 mm
1 C Free Arm 50 x 50 mm
2 B Large 140 x 200 mm
3 F Spring Loaded 126 x 110 mm
4 D Giga 230 x 200 mm

Thread-colour

Offset Length Type Description
0 4 Code Thread-code = 1 to 78


Thread-code Colour-RGB Colour-number Colour-name
1 "#000000" 002 "Black"
2 "#F0F0F0" 001 "White"
3 "#FFCC00" 239 "Sunflower"
4 "#E6651E" 254 "Hazel"
5 "#C4E39D" 264 "Green Dust"
6 "#237336" 226 "Green"
7 "#071650" 232 "Navy Blue"
8 "#4CB58F" 250 "Emerald Green"
9 "#F669A0" 201 "Pink"
10 "#FF4720" 202 "Vermilion"
11 "#E2A188" 236 "Cinnamon"
12 "#595B61" 252 "Dark Gray"
13 "#E4C35D" 003 "Gold"
14 "#6231BD" 261 "Violet Blue"
15 "#2F5933" 219 "Olive Green"
16 "#FAB381" 212 "Peach"
17 "#F999B7" 211 "Pale Pink"
18 "#F09C96" 256 "Salmon"
19 "#A39166" 268 "Olive Drab"
20 "#970533" 215 "Wine Red"
21 "#AC9CC7" 209 "Pale Violet"
22 "#65C2C8" 217 "Sky"
23 "#E5E5E5" 220 "Silver Gray"
24 "#A0B8CC" 216 "Pale Sky"
25 "#98D6BD" 227 "Pale Aqua"
26 "#0B2F84" 207 "Blue"
27 "#98F3FE" 229 "Powder Blue"
28 "#B2E1E3" 228 "Baby Blue"
29 "#FF0927" 244 "Cardinal Red"
30 "#14329C" 262 "Blue Ink"
31 "#A80043" 242 "Burgundy"
32 "#FF6600" 203 "Orange"
33 "#FF6048" 234 "Coral"
34 "#B59474" 237 "Umber"
35 "#FDF5B5" 210 "Pale Yellow"
36 "#F5DB8B" 238 "Blond"
37 "#C79732" 272 "Old Gold"
38 "#889B9B" 221 "Gray"
39 "#AB5A96" 208 "Purple"
40 "#FFBDE3" 240 "Orchid Pink"
41 "#C3007E" 241 "Peony Purple"
42 "#FF0000" 225 "Red"
43 "#EE71AF" 266 "Floral Pink"
44 "#608541" 246 "Moss Green"
45 "#609418" 247 "Meadow Green"
46 "#C6EECB" 245 "Opal Green"
47 "#5BD2B5" 249 "Aquamarine"
48 "#FFFF17" 204 "Yellow"
49 "#04917B" 251 "Peacock Green"
50 "#5C2625" 260 "Dark Sepia"
51 "#FFFFDC" 253 "Ivory White"
52 "#FF5A27" 235 "Burnt Orange"
53 "#A76C3D" 257 "Cocoa Brown"
54 "#9C6445" 214 "Brown"
55 "#B45A30" 258 "Sienna"
56 "#481A05" 205 "Dark Brown"
57 "#0C8918" 269 "Meadow"
58 "#70A9E2" 230 "Bright Blue"
59 "#1D5478" 231 "Slate Blue"
60 "#165FA7" 263 "Solar Blue"
61 "#7FC21C" 218 "Yellow Green"
62 "#06480D" 248 "Dark Green"
63 "#843154" 267 "Wine"
64 "#FD33A3" 265 "Crimson"
65 "#FFBBBB" 233 "Salmon Pink"
66 "#F7F297" 270 "Mustard"
67 "#00B552" 206 "Bright Green"
68 "#FCF121" 275 "Canary Yellow"
69 "#E6965A" 255 "Toast"
70 "#D7BDA4" 213 "Beige"
71 "#FF9D00" 273 "Honey Dew"
72 "#FFBA5E" 274 "Tangerine"
73 "#0257B5" 222 "Ocean Blue"
74 "#6E3937" 259 "Sepia"
75 "#540571" 243 "Royal Purple"
76 "#CC9900" 271 "Yellow Ocher"
77 "#D0BAB0" 223 "Beige Gray"
78 "#E3BE81" 224 "Bamboo"

Thread-type

Offset Length Type Description
0 4 int unknown = 13

Plus-header

Only in JEF+ files.

Offset Length Type Description
0 4 int Signature-1 = 0
4 4 int Signature-2 = 0
8 8 ASCII Signature-3 = "JANOME\0\0"
16 4 Count Plus-detail-count = 1
20 4 Offset Plus-detail-offset from file-start to JEF+ extra details

Escaped-command

Offset Length Type Description
0 1 Byte Escape = -128 or 0x80
1 1 Byte Command-code = 1, 2 or 16


Command-code Description
1 Change to next thread in list
2 Move followed by 8 bit displacement-X and 8 bit displacement-Y
16 Last-stitch

Displacement

Offset Length Type Description
0 1 Byte Displacement-X -127 to 127 in 0.1 mm
1 1 Byte Displacement-Y -127 to 127 in 0.1 mm


Plus-detail

Unknown, many 32 bit numbers, then many 16 bit numbers.


SEW Format

This appears to be an earlier format, it is fairly simple (from the examples seen), it includes bitmap previews, but sometimes they do not match the pattern described in stitches. The format seems to use the same thread colour codes and the same stitch-list as JEF.

Format appears to be little endian, except for the bitmaps.

SEW-file = SEW-header {Bitmap} {stitch}

SEW-header

Only SEW files

Offset Length Type Description
0 2 Count Colour count; maximum of 12 colours
2 12x2 Table Colour index table padded with 0; JEF colour code
0x1A 12x2 Table Colour unknown; all entries appear to have the same value: 8 or 0 or 255
0x32 12x2 Table Stitches per colour (minus a few)
0x4A


Bitmap

The bitmaps and sets of bitmaps appear to start at several fixed file offsets:
0x004A 1 x 48 pixel by 32 lines monochrome
0x010C 1 to 12 x 24 by 16, one for each colour
0x043C 1 x 64 by 48 monochrome
0x05BE 1 to 12 x 64 by 48, one for each colour
0x17D6 1 x w x h, variously sized monochrome outline and centre mark.
There are about 1440 bytes before the stitch-list.

This last bitmap may give an indication of the size in millimetres, the width will be a multiple of 8 mm. The available bits (for pixels or mm) 1440 x 8 = 11,520 gives a maximum size around 120 mm x 96 mm, so may be not.


Offset Length Type Description
0 1 Count Width of bitmap in (8 bit) bytes
1 1 Count Height of bitmap in lines/rows
2 Width x Height Byte Bits from top to bottom, left to right, MSB to LSB
2 + Width x Height


The bitmap is similar to PBM P4 format, a PBM file can be created by writing:

 "P4\n"
 "%d %d\n", Width * 8, Height

then copy Width x Height chars

Stitch

The SEW stitches appear to start at the fixed file offset 0x1D78, and use the same Escaped-command and (8 bit, 8 bit) Displacement as JEF above.