ag-psd 30.1.1 → 30.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.v8-cache/v24.13.1-x64-cf738c9d/017325ac +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/043c7b90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/05135617 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/059f8558 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0706ecb8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0db754a7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1130885f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15f0e479 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/20477c23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/20dfa422 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2a19133e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2b069ee0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2de09439 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2e44f5f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2fb229a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3144b401 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/37481985 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4511bacf +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/49d22b79 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4f5702bd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/514cc428 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/57d3380b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6024ce3f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/61735b23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/63dbdb75 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6cbfc0ec +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6f08372c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7100ee08 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/71df9cb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/75e41e43 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7ea06cea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8568576b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87372817 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87cf2209 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/932f0770 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a79a40bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a7e80865 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/acc36e66 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b3c2fab7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b69ed3a3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bdff1628 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c0b789d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c314aece +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cfc49f4f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cff9434a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d02dd6f7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dc86f000 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/de74e659 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e03e2acd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e158d332 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6735171 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6745c2b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6b99945 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/eeeebdfe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fbca6276 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc97d72d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fd0a2987 +0 -0
- package/CHANGELOG.md +3 -0
- package/README.md +1 -1
- package/README_PSD.md +1 -1
- package/dist/abr.js +43 -56
- package/dist/abr.js.map +1 -1
- package/dist/additionalInfo.js +770 -808
- package/dist/additionalInfo.js.map +1 -1
- package/dist/ase.js +21 -21
- package/dist/ase.js.map +1 -1
- package/dist/bundle.js +2592 -2778
- package/dist/csh.js +18 -29
- package/dist/csh.js.map +1 -1
- package/dist/descriptor.js +234 -269
- package/dist/descriptor.js.map +1 -1
- package/dist/effectsHelpers.js +91 -112
- package/dist/effectsHelpers.js.map +1 -1
- package/dist/engineData.js +45 -51
- package/dist/engineData.js.map +1 -1
- package/dist/engineData2.js +8 -9
- package/dist/engineData2.js.map +1 -1
- package/dist/helpers.js +75 -81
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.js +342 -381
- package/dist/imageResources.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/initializeCanvas.js +2 -2
- package/dist/initializeCanvas.js.map +1 -1
- package/dist/jpeg.js +279 -279
- package/dist/jpeg.js.map +1 -1
- package/dist/psdReader.js +336 -347
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.d.ts +2 -1
- package/dist/psdWriter.js +225 -206
- package/dist/psdWriter.js.map +1 -1
- package/dist/text.js +98 -122
- package/dist/text.js.map +1 -1
- package/dist/utf8.js +22 -22
- package/dist/utf8.js.map +1 -1
- package/dist-es/abr.js +41 -54
- package/dist-es/abr.js.map +1 -1
- package/dist-es/additionalInfo.js +765 -803
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/ase.js +20 -20
- package/dist-es/ase.js.map +1 -1
- package/dist-es/csh.js +16 -27
- package/dist-es/csh.js.map +1 -1
- package/dist-es/descriptor.js +284 -319
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/effectsHelpers.js +88 -109
- package/dist-es/effectsHelpers.js.map +1 -1
- package/dist-es/engineData.js +45 -51
- package/dist-es/engineData.js.map +1 -1
- package/dist-es/engineData2.js +8 -9
- package/dist-es/engineData2.js.map +1 -1
- package/dist-es/helpers.js +79 -85
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.js +338 -377
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/index.js +4 -4
- package/dist-es/index.js.map +1 -1
- package/dist-es/jpeg.js +279 -279
- package/dist-es/jpeg.js.map +1 -1
- package/dist-es/psdReader.js +333 -344
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.d.ts +2 -1
- package/dist-es/psdWriter.js +220 -202
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/text.js +98 -122
- package/dist-es/text.js.map +1 -1
- package/dist-es/utf8.js +22 -22
- package/dist-es/utf8.js.map +1 -1
- package/package.json +1 -1
- package/publish.js +24 -0
- package/src/additionalInfo.ts +15 -11
- package/src/psdWriter.ts +76 -1
- package/tsconfig.json +4 -3
|
@@ -1,31 +1,20 @@
|
|
|
1
|
-
var __assign = (this && this.__assign) || function () {
|
|
2
|
-
__assign = Object.assign || function(t) {
|
|
3
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
-
s = arguments[i];
|
|
5
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
-
t[p] = s[p];
|
|
7
|
-
}
|
|
8
|
-
return t;
|
|
9
|
-
};
|
|
10
|
-
return __assign.apply(this, arguments);
|
|
11
|
-
};
|
|
12
1
|
import { toByteArray } from 'base64-js';
|
|
13
2
|
import { readUnicodeString, readUint32, readUint16, readUint8, readFloat64, readBytes, skipBytes, readFloat32, readInt16, readFixedPoint32, readSignature, checkSignature, readSection, readColor, readInt32, readAsciiString } from './psdReader';
|
|
14
3
|
import { writeUnicodeString, writeUint32, writeUint8, writeFloat64, writeUint16, writeBytes, writeInt16, writeFloat32, writeFixedPoint32, writeUnicodeStringWithPadding, writeColor, writeSignature, writeSection, writeInt32, writeAsciiString, } from './psdWriter';
|
|
15
4
|
import { createCanvasFromData, createEnum, MOCK_HANDLERS } from './helpers';
|
|
16
5
|
import { decodeString, encodeString } from './utf8';
|
|
17
6
|
import { ESliceBGColorType, ESliceHorzAlign, ESliceOrigin, ESliceType, ESliceVertAlign, frac, parseTrackList, readVersionAndDescriptor, serializeTrackList, writeVersionAndDescriptor } from './descriptor';
|
|
18
|
-
export
|
|
19
|
-
export
|
|
7
|
+
export const resourceHandlers = [];
|
|
8
|
+
export const resourceHandlersMap = {};
|
|
20
9
|
function addHandler(key, has, read, write) {
|
|
21
|
-
|
|
10
|
+
const handler = { key, has, read, write };
|
|
22
11
|
resourceHandlers.push(handler);
|
|
23
12
|
resourceHandlersMap[handler.key] = handler;
|
|
24
13
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
14
|
+
const LOG_MOCK_HANDLERS = false;
|
|
15
|
+
const RESOLUTION_UNITS = [undefined, 'PPI', 'PPCM'];
|
|
16
|
+
const MEASUREMENT_UNITS = [undefined, 'Inches', 'Centimeters', 'Points', 'Picas', 'Columns'];
|
|
17
|
+
const hex = '0123456789abcdef';
|
|
29
18
|
function charToNibble(code) {
|
|
30
19
|
return code <= 57 ? code - 48 : code - 87;
|
|
31
20
|
}
|
|
@@ -33,25 +22,25 @@ function byteAt(value, index) {
|
|
|
33
22
|
return (charToNibble(value.charCodeAt(index)) << 4) | charToNibble(value.charCodeAt(index + 1));
|
|
34
23
|
}
|
|
35
24
|
function readUtf8String(reader, length) {
|
|
36
|
-
|
|
25
|
+
const buffer = readBytes(reader, length);
|
|
37
26
|
return decodeString(buffer);
|
|
38
27
|
}
|
|
39
28
|
function writeUtf8String(writer, value) {
|
|
40
|
-
|
|
29
|
+
const buffer = encodeString(value);
|
|
41
30
|
writeBytes(writer, buffer);
|
|
42
31
|
}
|
|
43
32
|
function readEncodedString(reader) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
for (
|
|
33
|
+
const length = readUint8(reader);
|
|
34
|
+
const buffer = readBytes(reader, length);
|
|
35
|
+
let notAscii = false;
|
|
36
|
+
for (let i = 0; i < buffer.byteLength; i++) {
|
|
48
37
|
if (buffer[i] & 0x80) {
|
|
49
38
|
notAscii = true;
|
|
50
39
|
break;
|
|
51
40
|
}
|
|
52
41
|
}
|
|
53
42
|
if (notAscii) {
|
|
54
|
-
|
|
43
|
+
const decoder = new TextDecoder('gbk');
|
|
55
44
|
return decoder.decode(buffer);
|
|
56
45
|
}
|
|
57
46
|
else {
|
|
@@ -59,61 +48,61 @@ function readEncodedString(reader) {
|
|
|
59
48
|
}
|
|
60
49
|
}
|
|
61
50
|
function writeEncodedString(writer, value) {
|
|
62
|
-
|
|
63
|
-
for (
|
|
51
|
+
let ascii = '';
|
|
52
|
+
for (let i = 0, code = value.codePointAt(i++); code !== undefined; code = value.codePointAt(i++)) {
|
|
64
53
|
ascii += code > 0x7f ? '?' : String.fromCodePoint(code);
|
|
65
54
|
}
|
|
66
|
-
|
|
55
|
+
const buffer = encodeString(ascii);
|
|
67
56
|
writeUint8(writer, buffer.byteLength);
|
|
68
57
|
writeBytes(writer, buffer);
|
|
69
58
|
}
|
|
70
59
|
MOCK_HANDLERS && addHandler(1028, // IPTC-NAA record
|
|
71
|
-
|
|
72
|
-
target
|
|
60
|
+
// IPTC-NAA record
|
|
61
|
+
target => target._ir1028 !== undefined, (reader, target, left) => {
|
|
73
62
|
LOG_MOCK_HANDLERS && console.log('image resource 1028', left());
|
|
74
63
|
target._ir1028 = readBytes(reader, left());
|
|
75
|
-
},
|
|
64
|
+
}, (writer, target) => {
|
|
76
65
|
writeBytes(writer, target._ir1028);
|
|
77
66
|
});
|
|
78
|
-
addHandler(1061,
|
|
79
|
-
|
|
80
|
-
for (
|
|
81
|
-
|
|
67
|
+
addHandler(1061, target => target.captionDigest !== undefined, (reader, target) => {
|
|
68
|
+
let captionDigest = '';
|
|
69
|
+
for (let i = 0; i < 16; i++) {
|
|
70
|
+
const byte = readUint8(reader);
|
|
82
71
|
captionDigest += hex[byte >> 4];
|
|
83
72
|
captionDigest += hex[byte & 0xf];
|
|
84
73
|
}
|
|
85
74
|
target.captionDigest = captionDigest;
|
|
86
|
-
},
|
|
87
|
-
for (
|
|
75
|
+
}, (writer, target) => {
|
|
76
|
+
for (let i = 0; i < 16; i++) {
|
|
88
77
|
writeUint8(writer, byteAt(target.captionDigest, i * 2));
|
|
89
78
|
}
|
|
90
79
|
});
|
|
91
|
-
addHandler(1060,
|
|
80
|
+
addHandler(1060, target => target.xmpMetadata !== undefined, (reader, target, left) => {
|
|
92
81
|
target.xmpMetadata = readUtf8String(reader, left());
|
|
93
|
-
},
|
|
82
|
+
}, (writer, target) => {
|
|
94
83
|
writeUtf8String(writer, target.xmpMetadata);
|
|
95
84
|
});
|
|
96
|
-
|
|
85
|
+
const Inte = createEnum('Inte', 'perceptual', {
|
|
97
86
|
'perceptual': 'Img ',
|
|
98
87
|
'saturation': 'Grp ',
|
|
99
88
|
'relative colorimetric': 'Clrm',
|
|
100
89
|
'absolute colorimetric': 'AClr',
|
|
101
90
|
});
|
|
102
91
|
MOCK_HANDLERS && addHandler(1085, // Windows DEVMODE. Variable OS specific info for Windows.
|
|
103
|
-
|
|
104
|
-
target
|
|
92
|
+
// Windows DEVMODE. Variable OS specific info for Windows.
|
|
93
|
+
target => target._ir1085 !== undefined, (reader, target, left) => {
|
|
105
94
|
target._ir1085 = readBytes(reader, left());
|
|
106
|
-
},
|
|
95
|
+
}, (writer, target) => {
|
|
107
96
|
writeBytes(writer, target._ir1085);
|
|
108
97
|
});
|
|
109
|
-
addHandler(1082,
|
|
98
|
+
addHandler(1082, target => target.printInformation !== undefined, (reader, target) => {
|
|
110
99
|
var _a, _b;
|
|
111
|
-
|
|
100
|
+
const desc = readVersionAndDescriptor(reader);
|
|
112
101
|
target.printInformation = {
|
|
113
102
|
printerName: desc.printerName || '',
|
|
114
103
|
renderingIntent: Inte.decode((_a = desc.Inte) !== null && _a !== void 0 ? _a : 'Inte.Img '),
|
|
115
104
|
};
|
|
116
|
-
|
|
105
|
+
const info = target.printInformation;
|
|
117
106
|
if (desc.PstS !== undefined)
|
|
118
107
|
info.printerManagesColors = desc.PstS;
|
|
119
108
|
if (desc['Nm '] !== undefined)
|
|
@@ -137,10 +126,10 @@ addHandler(1082, function (target) { return target.printInformation !== undefine
|
|
|
137
126
|
};
|
|
138
127
|
}
|
|
139
128
|
}
|
|
140
|
-
},
|
|
129
|
+
}, (writer, target) => {
|
|
141
130
|
var _a, _b;
|
|
142
|
-
|
|
143
|
-
|
|
131
|
+
const info = target.printInformation;
|
|
132
|
+
const desc = {};
|
|
144
133
|
if (info.printerManagesColors) {
|
|
145
134
|
desc.PstS = true;
|
|
146
135
|
}
|
|
@@ -165,39 +154,39 @@ addHandler(1082, function (target) { return target.printInformation !== undefine
|
|
|
165
154
|
}
|
|
166
155
|
else {
|
|
167
156
|
desc.printProofSetup = {
|
|
168
|
-
Bltn: ((_b = info.proofSetup) === null || _b === void 0 ? void 0 : _b.builtin) ?
|
|
157
|
+
Bltn: ((_b = info.proofSetup) === null || _b === void 0 ? void 0 : _b.builtin) ? `builtinProof.${info.proofSetup.builtin}` : 'builtinProof.proofCMYK',
|
|
169
158
|
};
|
|
170
159
|
}
|
|
171
160
|
writeVersionAndDescriptor(writer, '', 'printOutput', desc);
|
|
172
161
|
});
|
|
173
162
|
MOCK_HANDLERS && addHandler(1083, // Print style
|
|
174
|
-
|
|
175
|
-
target
|
|
163
|
+
// Print style
|
|
164
|
+
target => target._ir1083 !== undefined, (reader, target, left) => {
|
|
176
165
|
LOG_MOCK_HANDLERS && console.log('image resource 1083', left());
|
|
177
166
|
target._ir1083 = readBytes(reader, left());
|
|
178
167
|
// TODO:
|
|
179
168
|
// const desc = readVersionAndDescriptor(reader);
|
|
180
169
|
// console.log('1083', require('util').inspect(desc, false, 99, true));
|
|
181
|
-
},
|
|
170
|
+
}, (writer, target) => {
|
|
182
171
|
writeBytes(writer, target._ir1083);
|
|
183
172
|
});
|
|
184
|
-
addHandler(1005,
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
173
|
+
addHandler(1005, target => target.resolutionInfo !== undefined, (reader, target) => {
|
|
174
|
+
const horizontalResolution = readFixedPoint32(reader);
|
|
175
|
+
const horizontalResolutionUnit = readUint16(reader);
|
|
176
|
+
const widthUnit = readUint16(reader);
|
|
177
|
+
const verticalResolution = readFixedPoint32(reader);
|
|
178
|
+
const verticalResolutionUnit = readUint16(reader);
|
|
179
|
+
const heightUnit = readUint16(reader);
|
|
191
180
|
target.resolutionInfo = {
|
|
192
|
-
horizontalResolution
|
|
181
|
+
horizontalResolution,
|
|
193
182
|
horizontalResolutionUnit: RESOLUTION_UNITS[horizontalResolutionUnit] || 'PPI',
|
|
194
183
|
widthUnit: MEASUREMENT_UNITS[widthUnit] || 'Inches',
|
|
195
|
-
verticalResolution
|
|
184
|
+
verticalResolution,
|
|
196
185
|
verticalResolutionUnit: RESOLUTION_UNITS[verticalResolutionUnit] || 'PPI',
|
|
197
186
|
heightUnit: MEASUREMENT_UNITS[heightUnit] || 'Inches',
|
|
198
187
|
};
|
|
199
|
-
},
|
|
200
|
-
|
|
188
|
+
}, (writer, target) => {
|
|
189
|
+
const info = target.resolutionInfo;
|
|
201
190
|
writeFixedPoint32(writer, info.horizontalResolution || 0);
|
|
202
191
|
writeUint16(writer, Math.max(1, RESOLUTION_UNITS.indexOf(info.horizontalResolutionUnit)));
|
|
203
192
|
writeUint16(writer, Math.max(1, MEASUREMENT_UNITS.indexOf(info.widthUnit)));
|
|
@@ -205,26 +194,26 @@ addHandler(1005, function (target) { return target.resolutionInfo !== undefined;
|
|
|
205
194
|
writeUint16(writer, Math.max(1, RESOLUTION_UNITS.indexOf(info.verticalResolutionUnit)));
|
|
206
195
|
writeUint16(writer, Math.max(1, MEASUREMENT_UNITS.indexOf(info.heightUnit)));
|
|
207
196
|
});
|
|
208
|
-
|
|
209
|
-
addHandler(1062,
|
|
197
|
+
const printScaleStyles = ['centered', 'size to fit', 'user defined'];
|
|
198
|
+
addHandler(1062, target => target.printScale !== undefined, (reader, target) => {
|
|
210
199
|
target.printScale = {
|
|
211
200
|
style: printScaleStyles[readInt16(reader)],
|
|
212
201
|
x: readFloat32(reader),
|
|
213
202
|
y: readFloat32(reader),
|
|
214
203
|
scale: readFloat32(reader),
|
|
215
204
|
};
|
|
216
|
-
},
|
|
217
|
-
|
|
205
|
+
}, (writer, target) => {
|
|
206
|
+
const { style, x, y, scale } = target.printScale;
|
|
218
207
|
writeInt16(writer, Math.max(0, printScaleStyles.indexOf(style)));
|
|
219
208
|
writeFloat32(writer, x || 0);
|
|
220
209
|
writeFloat32(writer, y || 0);
|
|
221
210
|
writeFloat32(writer, scale || 0);
|
|
222
211
|
});
|
|
223
|
-
addHandler(1006,
|
|
212
|
+
addHandler(1006, target => target.alphaChannelNames !== undefined, (reader, target, left) => {
|
|
224
213
|
if (!target.alphaChannelNames) { // skip if the unicode versions are already read
|
|
225
214
|
target.alphaChannelNames = [];
|
|
226
215
|
while (left() > 0) {
|
|
227
|
-
|
|
216
|
+
const value = readEncodedString(reader);
|
|
228
217
|
// const value = readPascalString(reader, 1);
|
|
229
218
|
target.alphaChannelNames.push(value);
|
|
230
219
|
}
|
|
@@ -232,45 +221,42 @@ addHandler(1006, function (target) { return target.alphaChannelNames !== undefin
|
|
|
232
221
|
else {
|
|
233
222
|
skipBytes(reader, left());
|
|
234
223
|
}
|
|
235
|
-
},
|
|
236
|
-
for (
|
|
237
|
-
|
|
238
|
-
writeEncodedString(writer, name_1);
|
|
224
|
+
}, (writer, target) => {
|
|
225
|
+
for (const name of target.alphaChannelNames) {
|
|
226
|
+
writeEncodedString(writer, name);
|
|
239
227
|
// writePascalString(writer, name, 1);
|
|
240
228
|
}
|
|
241
229
|
});
|
|
242
|
-
addHandler(1045,
|
|
230
|
+
addHandler(1045, target => target.alphaChannelNames !== undefined, (reader, target, left) => {
|
|
243
231
|
target.alphaChannelNames = [];
|
|
244
232
|
while (left() > 0) {
|
|
245
233
|
target.alphaChannelNames.push(readUnicodeString(reader));
|
|
246
234
|
}
|
|
247
|
-
},
|
|
248
|
-
for (
|
|
249
|
-
|
|
250
|
-
writeUnicodeStringWithPadding(writer, name_2);
|
|
235
|
+
}, (writer, target) => {
|
|
236
|
+
for (const name of target.alphaChannelNames) {
|
|
237
|
+
writeUnicodeStringWithPadding(writer, name);
|
|
251
238
|
}
|
|
252
239
|
});
|
|
253
|
-
MOCK_HANDLERS && addHandler(1077,
|
|
240
|
+
MOCK_HANDLERS && addHandler(1077, target => target._ir1077 !== undefined, (reader, target, left) => {
|
|
254
241
|
LOG_MOCK_HANDLERS && console.log('image resource 1077', left());
|
|
255
242
|
target._ir1077 = readBytes(reader, left());
|
|
256
|
-
},
|
|
243
|
+
}, (writer, target) => {
|
|
257
244
|
writeBytes(writer, target._ir1077);
|
|
258
245
|
});
|
|
259
|
-
addHandler(1053,
|
|
246
|
+
addHandler(1053, target => target.alphaIdentifiers !== undefined, (reader, target, left) => {
|
|
260
247
|
target.alphaIdentifiers = [];
|
|
261
248
|
while (left() >= 4) {
|
|
262
249
|
target.alphaIdentifiers.push(readUint32(reader));
|
|
263
250
|
}
|
|
264
|
-
},
|
|
265
|
-
for (
|
|
266
|
-
var id = _a[_i];
|
|
251
|
+
}, (writer, target) => {
|
|
252
|
+
for (const id of target.alphaIdentifiers) {
|
|
267
253
|
writeUint32(writer, id);
|
|
268
254
|
}
|
|
269
255
|
});
|
|
270
|
-
addHandler(1010,
|
|
271
|
-
addHandler(1037,
|
|
272
|
-
addHandler(1049,
|
|
273
|
-
addHandler(1011,
|
|
256
|
+
addHandler(1010, target => target.backgroundColor !== undefined, (reader, target) => target.backgroundColor = readColor(reader), (writer, target) => writeColor(writer, target.backgroundColor));
|
|
257
|
+
addHandler(1037, target => target.globalAngle !== undefined, (reader, target) => target.globalAngle = readInt32(reader), (writer, target) => writeInt32(writer, target.globalAngle));
|
|
258
|
+
addHandler(1049, target => target.globalAltitude !== undefined, (reader, target) => target.globalAltitude = readUint32(reader), (writer, target) => writeUint32(writer, target.globalAltitude));
|
|
259
|
+
addHandler(1011, target => target.printFlags !== undefined, (reader, target) => {
|
|
274
260
|
target.printFlags = {
|
|
275
261
|
labels: !!readUint8(reader),
|
|
276
262
|
cropMarks: !!readUint8(reader),
|
|
@@ -282,8 +268,8 @@ addHandler(1011, function (target) { return target.printFlags !== undefined; },
|
|
|
282
268
|
caption: !!readUint8(reader),
|
|
283
269
|
printFlags: !!readUint8(reader),
|
|
284
270
|
};
|
|
285
|
-
},
|
|
286
|
-
|
|
271
|
+
}, (writer, target) => {
|
|
272
|
+
const flags = target.printFlags;
|
|
287
273
|
writeUint8(writer, flags.labels ? 1 : 0);
|
|
288
274
|
writeUint8(writer, flags.cropMarks ? 1 : 0);
|
|
289
275
|
writeUint8(writer, flags.colorBars ? 1 : 0);
|
|
@@ -295,59 +281,59 @@ addHandler(1011, function (target) { return target.printFlags !== undefined; },
|
|
|
295
281
|
writeUint8(writer, flags.printFlags ? 1 : 0);
|
|
296
282
|
});
|
|
297
283
|
addHandler(1034, // Copyright flag
|
|
298
|
-
|
|
299
|
-
target
|
|
284
|
+
// Copyright flag
|
|
285
|
+
target => target.copyrighted !== undefined, (reader, target) => {
|
|
300
286
|
target.copyrighted = !!readUint8(reader);
|
|
301
|
-
},
|
|
287
|
+
}, (writer, target) => {
|
|
302
288
|
writeUint8(writer, target.copyrighted ? 1 : 0);
|
|
303
289
|
});
|
|
304
290
|
addHandler(1035, // URL
|
|
305
|
-
|
|
306
|
-
target
|
|
291
|
+
// URL
|
|
292
|
+
target => target.url !== undefined, (reader, target, left) => {
|
|
307
293
|
target.url = readAsciiString(reader, left());
|
|
308
|
-
},
|
|
294
|
+
}, (writer, target) => {
|
|
309
295
|
writeAsciiString(writer, target.url);
|
|
310
296
|
});
|
|
311
297
|
MOCK_HANDLERS && addHandler(10000, // Print flags
|
|
312
|
-
|
|
313
|
-
target
|
|
298
|
+
// Print flags
|
|
299
|
+
target => target._ir10000 !== undefined, (reader, target, left) => {
|
|
314
300
|
LOG_MOCK_HANDLERS && console.log('image resource 10000', left());
|
|
315
301
|
target._ir10000 = readBytes(reader, left());
|
|
316
|
-
},
|
|
302
|
+
}, (writer, target) => {
|
|
317
303
|
writeBytes(writer, target._ir10000);
|
|
318
304
|
});
|
|
319
305
|
MOCK_HANDLERS && addHandler(1013, // Color halftoning
|
|
320
|
-
|
|
321
|
-
target
|
|
306
|
+
// Color halftoning
|
|
307
|
+
target => target._ir1013 !== undefined, (reader, target, left) => {
|
|
322
308
|
LOG_MOCK_HANDLERS && console.log('image resource 1013', left());
|
|
323
309
|
target._ir1013 = readBytes(reader, left());
|
|
324
|
-
},
|
|
310
|
+
}, (writer, target) => {
|
|
325
311
|
writeBytes(writer, target._ir1013);
|
|
326
312
|
});
|
|
327
313
|
MOCK_HANDLERS && addHandler(1016, // Color transfer functions
|
|
328
|
-
|
|
329
|
-
target
|
|
314
|
+
// Color transfer functions
|
|
315
|
+
target => target._ir1016 !== undefined, (reader, target, left) => {
|
|
330
316
|
LOG_MOCK_HANDLERS && console.log('image resource 1016', left());
|
|
331
317
|
target._ir1016 = readBytes(reader, left());
|
|
332
|
-
},
|
|
318
|
+
}, (writer, target) => {
|
|
333
319
|
writeBytes(writer, target._ir1016);
|
|
334
320
|
});
|
|
335
321
|
addHandler(1080, // Count Information
|
|
336
|
-
|
|
337
|
-
target
|
|
338
|
-
|
|
339
|
-
target.countInformation = desc.countGroupList.map(
|
|
322
|
+
// Count Information
|
|
323
|
+
target => target.countInformation !== undefined, (reader, target) => {
|
|
324
|
+
const desc = readVersionAndDescriptor(reader);
|
|
325
|
+
target.countInformation = desc.countGroupList.map(g => ({
|
|
340
326
|
color: { r: g['Rd '], g: g['Grn '], b: g['Bl '] },
|
|
341
327
|
name: g['Nm '],
|
|
342
328
|
size: g['Rds '],
|
|
343
329
|
fontSize: g.fontSize,
|
|
344
330
|
visible: g.Vsbl,
|
|
345
|
-
points: g.countObjectList.map(
|
|
346
|
-
})
|
|
347
|
-
},
|
|
348
|
-
|
|
331
|
+
points: g.countObjectList.map(p => ({ x: p['X '], y: p['Y '] })),
|
|
332
|
+
}));
|
|
333
|
+
}, (writer, target) => {
|
|
334
|
+
const desc = {
|
|
349
335
|
Vrsn: 1,
|
|
350
|
-
countGroupList: target.countInformation.map(
|
|
336
|
+
countGroupList: target.countInformation.map(g => ({
|
|
351
337
|
'Rd ': g.color.r,
|
|
352
338
|
'Grn ': g.color.g,
|
|
353
339
|
'Bl ': g.color.b,
|
|
@@ -355,86 +341,81 @@ target) { return target.countInformation !== undefined; }, function (reader, tar
|
|
|
355
341
|
'Rds ': g.size,
|
|
356
342
|
fontSize: g.fontSize,
|
|
357
343
|
Vsbl: g.visible,
|
|
358
|
-
countObjectList: g.points.map(
|
|
359
|
-
})
|
|
344
|
+
countObjectList: g.points.map(p => ({ 'X ': p.x, 'Y ': p.y })),
|
|
345
|
+
})),
|
|
360
346
|
};
|
|
361
347
|
writeVersionAndDescriptor(writer, '', 'Cnt ', desc);
|
|
362
348
|
});
|
|
363
|
-
addHandler(1024,
|
|
364
|
-
addHandler(1026,
|
|
349
|
+
addHandler(1024, target => target.layerState !== undefined, (reader, target) => target.layerState = readUint16(reader), (writer, target) => writeUint16(writer, target.layerState));
|
|
350
|
+
addHandler(1026, target => target.layersGroup !== undefined, (reader, target, left) => {
|
|
365
351
|
target.layersGroup = [];
|
|
366
352
|
while (left() > 0) {
|
|
367
353
|
target.layersGroup.push(readUint16(reader));
|
|
368
354
|
}
|
|
369
|
-
},
|
|
370
|
-
for (
|
|
371
|
-
var g = _a[_i];
|
|
355
|
+
}, (writer, target) => {
|
|
356
|
+
for (const g of target.layersGroup) {
|
|
372
357
|
writeUint16(writer, g);
|
|
373
358
|
}
|
|
374
359
|
});
|
|
375
|
-
addHandler(1072,
|
|
360
|
+
addHandler(1072, target => target.layerGroupsEnabledId !== undefined, (reader, target, left) => {
|
|
376
361
|
target.layerGroupsEnabledId = [];
|
|
377
362
|
while (left() > 0) {
|
|
378
363
|
target.layerGroupsEnabledId.push(readUint8(reader));
|
|
379
364
|
}
|
|
380
|
-
},
|
|
381
|
-
for (
|
|
382
|
-
var id = _a[_i];
|
|
365
|
+
}, (writer, target) => {
|
|
366
|
+
for (const id of target.layerGroupsEnabledId) {
|
|
383
367
|
writeUint8(writer, id);
|
|
384
368
|
}
|
|
385
369
|
});
|
|
386
|
-
addHandler(1069,
|
|
387
|
-
|
|
370
|
+
addHandler(1069, target => target.layerSelectionIds !== undefined, (reader, target) => {
|
|
371
|
+
let count = readUint16(reader);
|
|
388
372
|
target.layerSelectionIds = [];
|
|
389
373
|
while (count--) {
|
|
390
374
|
target.layerSelectionIds.push(readUint32(reader));
|
|
391
375
|
}
|
|
392
|
-
},
|
|
376
|
+
}, (writer, target) => {
|
|
393
377
|
writeUint16(writer, target.layerSelectionIds.length);
|
|
394
|
-
for (
|
|
395
|
-
var id = _a[_i];
|
|
378
|
+
for (const id of target.layerSelectionIds) {
|
|
396
379
|
writeUint32(writer, id);
|
|
397
380
|
}
|
|
398
381
|
});
|
|
399
|
-
addHandler(1032,
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
382
|
+
addHandler(1032, target => target.gridAndGuidesInformation !== undefined, (reader, target) => {
|
|
383
|
+
const version = readUint32(reader);
|
|
384
|
+
const horizontal = readUint32(reader);
|
|
385
|
+
const vertical = readUint32(reader);
|
|
386
|
+
const count = readUint32(reader);
|
|
404
387
|
if (version !== 1)
|
|
405
|
-
throw new Error(
|
|
388
|
+
throw new Error(`Invalid 1032 resource version: ${version}`);
|
|
406
389
|
target.gridAndGuidesInformation = {
|
|
407
|
-
grid: { horizontal
|
|
390
|
+
grid: { horizontal, vertical },
|
|
408
391
|
guides: [],
|
|
409
392
|
};
|
|
410
|
-
for (
|
|
393
|
+
for (let i = 0; i < count; i++) {
|
|
411
394
|
target.gridAndGuidesInformation.guides.push({
|
|
412
395
|
location: readUint32(reader) / 32,
|
|
413
396
|
direction: readUint8(reader) ? 'horizontal' : 'vertical'
|
|
414
397
|
});
|
|
415
398
|
}
|
|
416
|
-
},
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
399
|
+
}, (writer, target) => {
|
|
400
|
+
const info = target.gridAndGuidesInformation;
|
|
401
|
+
const grid = info.grid || { horizontal: 18 * 32, vertical: 18 * 32 };
|
|
402
|
+
const guides = info.guides || [];
|
|
420
403
|
writeUint32(writer, 1);
|
|
421
404
|
writeUint32(writer, grid.horizontal);
|
|
422
405
|
writeUint32(writer, grid.vertical);
|
|
423
406
|
writeUint32(writer, guides.length);
|
|
424
|
-
for (
|
|
425
|
-
var g = guides_1[_i];
|
|
407
|
+
for (const g of guides) {
|
|
426
408
|
writeUint32(writer, g.location * 32);
|
|
427
409
|
writeUint8(writer, g.direction === 'horizontal' ? 1 : 0);
|
|
428
410
|
}
|
|
429
411
|
});
|
|
430
412
|
addHandler(1065, // Layer Comps
|
|
431
|
-
|
|
432
|
-
target
|
|
433
|
-
|
|
413
|
+
// Layer Comps
|
|
414
|
+
target => target.layerComps !== undefined, (reader, target) => {
|
|
415
|
+
const desc = readVersionAndDescriptor(reader, true);
|
|
434
416
|
// console.log('CompList', require('util').inspect(desc, false, 99, true));
|
|
435
417
|
target.layerComps = { list: [] };
|
|
436
|
-
for (
|
|
437
|
-
var item = _a[_i];
|
|
418
|
+
for (const item of desc.list) {
|
|
438
419
|
target.layerComps.list.push({
|
|
439
420
|
id: item.compID,
|
|
440
421
|
name: item['Nm '],
|
|
@@ -445,12 +426,11 @@ target) { return target.layerComps !== undefined; }, function (reader, target) {
|
|
|
445
426
|
}
|
|
446
427
|
if ('lastAppliedComp' in desc)
|
|
447
428
|
target.layerComps.lastApplied = desc.lastAppliedComp;
|
|
448
|
-
},
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
for (
|
|
452
|
-
|
|
453
|
-
var t = {};
|
|
429
|
+
}, (writer, target) => {
|
|
430
|
+
const layerComps = target.layerComps;
|
|
431
|
+
const desc = { list: [] };
|
|
432
|
+
for (const item of layerComps.list) {
|
|
433
|
+
const t = {};
|
|
454
434
|
t._classID = 'Comp';
|
|
455
435
|
t['Nm '] = item.name;
|
|
456
436
|
if ('comment' in item)
|
|
@@ -465,24 +445,24 @@ target) { return target.layerComps !== undefined; }, function (reader, target) {
|
|
|
465
445
|
writeVersionAndDescriptor(writer, '', 'CompList', desc);
|
|
466
446
|
});
|
|
467
447
|
MOCK_HANDLERS && addHandler(1092, // ???
|
|
468
|
-
|
|
469
|
-
target
|
|
448
|
+
// ???
|
|
449
|
+
target => target._ir1092 !== undefined, (reader, target, left) => {
|
|
470
450
|
LOG_MOCK_HANDLERS && console.log('image resource 1092', left());
|
|
471
451
|
// 16 bytes, seems to be 4 integers
|
|
472
452
|
target._ir1092 = readBytes(reader, left());
|
|
473
|
-
},
|
|
453
|
+
}, (writer, target) => {
|
|
474
454
|
writeBytes(writer, target._ir1092);
|
|
475
455
|
});
|
|
476
456
|
// 0 - normal, 7 - multiply, 8 - screen, 23 - difference
|
|
477
|
-
|
|
457
|
+
const onionSkinsBlendModes = [
|
|
478
458
|
'normal', undefined, undefined, undefined, undefined, undefined, undefined, 'multiply',
|
|
479
459
|
'screen', undefined, undefined, undefined, undefined, undefined, undefined, undefined,
|
|
480
460
|
undefined, undefined, undefined, undefined, undefined, undefined, undefined, 'difference',
|
|
481
461
|
];
|
|
482
462
|
addHandler(1078, // Onion Skins
|
|
483
|
-
|
|
484
|
-
target
|
|
485
|
-
|
|
463
|
+
// Onion Skins
|
|
464
|
+
target => target.onionSkins !== undefined, (reader, target) => {
|
|
465
|
+
const desc = readVersionAndDescriptor(reader);
|
|
486
466
|
// console.log('1078', require('util').inspect(desc, false, 99, true));
|
|
487
467
|
target.onionSkins = {
|
|
488
468
|
enabled: desc.enab,
|
|
@@ -493,9 +473,9 @@ target) { return target.onionSkins !== undefined; }, function (reader, target) {
|
|
|
493
473
|
maxOpacity: desc.maxOpacity / 100,
|
|
494
474
|
blendMode: onionSkinsBlendModes[desc.BlnM] || 'normal',
|
|
495
475
|
};
|
|
496
|
-
},
|
|
497
|
-
|
|
498
|
-
|
|
476
|
+
}, (writer, target) => {
|
|
477
|
+
const onionSkins = target.onionSkins;
|
|
478
|
+
const desc = {
|
|
499
479
|
Vrsn: 1,
|
|
500
480
|
enab: onionSkins.enabled,
|
|
501
481
|
numBefore: onionSkins.framesBefore,
|
|
@@ -508,10 +488,10 @@ target) { return target.onionSkins !== undefined; }, function (reader, target) {
|
|
|
508
488
|
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
509
489
|
});
|
|
510
490
|
addHandler(1075, // Timeline Information
|
|
511
|
-
|
|
512
|
-
target
|
|
491
|
+
// Timeline Information
|
|
492
|
+
target => target.timelineInformation !== undefined, (reader, target) => {
|
|
513
493
|
var _a, _b;
|
|
514
|
-
|
|
494
|
+
const desc = readVersionAndDescriptor(reader);
|
|
515
495
|
target.timelineInformation = {
|
|
516
496
|
enabled: desc.enab,
|
|
517
497
|
frameStep: frac(desc.frameStep),
|
|
@@ -525,36 +505,33 @@ target) { return target.timelineInformation !== undefined; }, function (reader,
|
|
|
525
505
|
globalTracks: parseTrackList(desc.globalTrackList, !!reader.logMissingFeatures),
|
|
526
506
|
};
|
|
527
507
|
if ((_b = (_a = desc.audioClipGroupList) === null || _a === void 0 ? void 0 : _a.audioClipGroupList) === null || _b === void 0 ? void 0 : _b.length) {
|
|
528
|
-
target.timelineInformation.audioClipGroups = desc.audioClipGroupList.audioClipGroupList.map(
|
|
508
|
+
target.timelineInformation.audioClipGroups = desc.audioClipGroupList.audioClipGroupList.map(g => ({
|
|
529
509
|
id: g.groupID,
|
|
530
510
|
muted: g.muted,
|
|
531
|
-
audioClips: g.audioClipList.map(
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
fullPath: frameReader['Lnk '].fullPath,
|
|
547
|
-
relativePath: frameReader['Lnk '].relPath,
|
|
548
|
-
},
|
|
511
|
+
audioClips: g.audioClipList.map(({ clipID, timeScope, muted, audioLevel, frameReader }) => ({
|
|
512
|
+
id: clipID,
|
|
513
|
+
start: frac(timeScope.Strt),
|
|
514
|
+
duration: frac(timeScope.duration),
|
|
515
|
+
inTime: frac(timeScope.inTime),
|
|
516
|
+
outTime: frac(timeScope.outTime),
|
|
517
|
+
muted: muted,
|
|
518
|
+
audioLevel: audioLevel,
|
|
519
|
+
frameReader: {
|
|
520
|
+
type: frameReader.frameReaderType,
|
|
521
|
+
mediaDescriptor: frameReader.mediaDescriptor,
|
|
522
|
+
link: {
|
|
523
|
+
name: frameReader['Lnk ']['Nm '],
|
|
524
|
+
fullPath: frameReader['Lnk '].fullPath,
|
|
525
|
+
relativePath: frameReader['Lnk '].relPath,
|
|
549
526
|
},
|
|
550
|
-
}
|
|
551
|
-
}),
|
|
552
|
-
})
|
|
527
|
+
},
|
|
528
|
+
})),
|
|
529
|
+
}));
|
|
553
530
|
}
|
|
554
|
-
},
|
|
531
|
+
}, (writer, target) => {
|
|
555
532
|
var _a;
|
|
556
|
-
|
|
557
|
-
|
|
533
|
+
const timeline = target.timelineInformation;
|
|
534
|
+
const desc = {
|
|
558
535
|
Vrsn: 1,
|
|
559
536
|
enab: timeline.enabled,
|
|
560
537
|
frameStep: timeline.frameStep,
|
|
@@ -566,10 +543,10 @@ target) { return target.timelineInformation !== undefined; }, function (reader,
|
|
|
566
543
|
LCnt: timeline.repeats,
|
|
567
544
|
globalTrackList: serializeTrackList(timeline.globalTracks),
|
|
568
545
|
audioClipGroupList: {
|
|
569
|
-
audioClipGroupList: (_a = timeline.audioClipGroups) === null || _a === void 0 ? void 0 : _a.map(
|
|
546
|
+
audioClipGroupList: (_a = timeline.audioClipGroups) === null || _a === void 0 ? void 0 : _a.map(a => ({
|
|
570
547
|
groupID: a.id,
|
|
571
548
|
muted: a.muted,
|
|
572
|
-
audioClipList: a.audioClips.map(
|
|
549
|
+
audioClipList: a.audioClips.map(c => ({
|
|
573
550
|
clipID: c.id,
|
|
574
551
|
timeScope: {
|
|
575
552
|
Vrsn: 1,
|
|
@@ -591,59 +568,59 @@ target) { return target.timelineInformation !== undefined; }, function (reader,
|
|
|
591
568
|
},
|
|
592
569
|
muted: c.muted,
|
|
593
570
|
audioLevel: c.audioLevel,
|
|
594
|
-
})
|
|
595
|
-
})
|
|
571
|
+
})),
|
|
572
|
+
})),
|
|
596
573
|
},
|
|
597
574
|
hasMotion: timeline.hasMotion,
|
|
598
575
|
};
|
|
599
576
|
writeVersionAndDescriptor(writer, '', 'null', desc, 'anim');
|
|
600
577
|
});
|
|
601
578
|
addHandler(1076, // Sheet Disclosure
|
|
602
|
-
|
|
603
|
-
target
|
|
604
|
-
|
|
579
|
+
// Sheet Disclosure
|
|
580
|
+
target => target.sheetDisclosure !== undefined, (reader, target) => {
|
|
581
|
+
const desc = readVersionAndDescriptor(reader);
|
|
605
582
|
target.sheetDisclosure = {};
|
|
606
583
|
if (desc.sheetTimelineOptions) {
|
|
607
|
-
target.sheetDisclosure.sheetTimelineOptions = desc.sheetTimelineOptions.map(
|
|
584
|
+
target.sheetDisclosure.sheetTimelineOptions = desc.sheetTimelineOptions.map(o => ({
|
|
608
585
|
sheetID: o.sheetID,
|
|
609
586
|
sheetDisclosed: o.sheetDisclosed,
|
|
610
587
|
lightsDisclosed: o.lightsDisclosed,
|
|
611
588
|
meshesDisclosed: o.meshesDisclosed,
|
|
612
589
|
materialsDisclosed: o.materialsDisclosed,
|
|
613
|
-
})
|
|
590
|
+
}));
|
|
614
591
|
}
|
|
615
|
-
},
|
|
616
|
-
|
|
617
|
-
|
|
592
|
+
}, (writer, target) => {
|
|
593
|
+
const disclosure = target.sheetDisclosure;
|
|
594
|
+
const desc = { Vrsn: 1 };
|
|
618
595
|
if (disclosure.sheetTimelineOptions) {
|
|
619
|
-
desc.sheetTimelineOptions = disclosure.sheetTimelineOptions.map(
|
|
596
|
+
desc.sheetTimelineOptions = disclosure.sheetTimelineOptions.map(d => ({
|
|
620
597
|
Vrsn: 2,
|
|
621
598
|
sheetID: d.sheetID,
|
|
622
599
|
sheetDisclosed: d.sheetDisclosed,
|
|
623
600
|
lightsDisclosed: d.lightsDisclosed,
|
|
624
601
|
meshesDisclosed: d.meshesDisclosed,
|
|
625
602
|
materialsDisclosed: d.materialsDisclosed,
|
|
626
|
-
})
|
|
603
|
+
}));
|
|
627
604
|
}
|
|
628
605
|
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
629
606
|
});
|
|
630
607
|
addHandler(1054, // URL List
|
|
631
|
-
|
|
632
|
-
target
|
|
633
|
-
|
|
608
|
+
// URL List
|
|
609
|
+
target => target.urlsList !== undefined, (reader, target) => {
|
|
610
|
+
const count = readUint32(reader);
|
|
634
611
|
target.urlsList = [];
|
|
635
|
-
for (
|
|
636
|
-
|
|
612
|
+
for (let i = 0; i < count; i++) {
|
|
613
|
+
const long = readSignature(reader);
|
|
637
614
|
if (long !== 'slic' && reader.throwForMissingFeatures)
|
|
638
615
|
throw new Error('Unknown long');
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
target.urlsList.push({ id
|
|
616
|
+
const id = readUint32(reader);
|
|
617
|
+
const url = readUnicodeString(reader);
|
|
618
|
+
target.urlsList.push({ id, url, ref: 'slice' });
|
|
642
619
|
}
|
|
643
|
-
},
|
|
644
|
-
|
|
620
|
+
}, (writer, target) => {
|
|
621
|
+
const list = target.urlsList;
|
|
645
622
|
writeUint32(writer, list.length);
|
|
646
|
-
for (
|
|
623
|
+
for (let i = 0; i < list.length; i++) {
|
|
647
624
|
writeSignature(writer, 'slic');
|
|
648
625
|
writeUint32(writer, list[i].id);
|
|
649
626
|
writeUnicodeString(writer, list[i].url);
|
|
@@ -658,71 +635,58 @@ function boundsFromBounds(bounds) {
|
|
|
658
635
|
function clamped(array, index) {
|
|
659
636
|
return array[Math.max(0, Math.min(array.length - 1, index))];
|
|
660
637
|
}
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
638
|
+
const sliceOrigins = ['autoGenerated', 'layer', 'userGenerated'];
|
|
639
|
+
const sliceTypes = ['noImage', 'image'];
|
|
640
|
+
const sliceAlignments = ['default'];
|
|
664
641
|
addHandler(1050, // Slices
|
|
665
|
-
|
|
666
|
-
target
|
|
667
|
-
|
|
642
|
+
// Slices
|
|
643
|
+
target => target.slices ? target.slices.length : 0, (reader, target) => {
|
|
644
|
+
const version = readUint32(reader);
|
|
668
645
|
if (version === 6) {
|
|
669
646
|
if (!target.slices)
|
|
670
647
|
target.slices = [];
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
target.slices.push({ bounds: { top
|
|
678
|
-
|
|
679
|
-
for (
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
id
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
name: name_3,
|
|
709
|
-
target: target_1,
|
|
710
|
-
message: message,
|
|
711
|
-
altTag: altTag,
|
|
712
|
-
cellTextIsHTML: cellTextIsHTML,
|
|
713
|
-
cellText: cellText,
|
|
714
|
-
horizontalAlignment: horizontalAlignment,
|
|
715
|
-
verticalAlignment: verticalAlignment,
|
|
716
|
-
type: type,
|
|
717
|
-
url: url,
|
|
718
|
-
bounds: { top: top_2, left: left_1, bottom: bottom_1, right: right_1 },
|
|
719
|
-
backgroundColorType: backgroundColorType,
|
|
720
|
-
backgroundColor: { r: r, g: g, b: b, a: a },
|
|
648
|
+
const top = readInt32(reader);
|
|
649
|
+
const left = readInt32(reader);
|
|
650
|
+
const bottom = readInt32(reader);
|
|
651
|
+
const right = readInt32(reader);
|
|
652
|
+
const groupName = readUnicodeString(reader);
|
|
653
|
+
const count = readUint32(reader);
|
|
654
|
+
target.slices.push({ bounds: { top, left, bottom, right }, groupName, slices: [] });
|
|
655
|
+
const slices = target.slices[target.slices.length - 1].slices;
|
|
656
|
+
for (let i = 0; i < count; i++) {
|
|
657
|
+
const id = readUint32(reader);
|
|
658
|
+
const groupId = readUint32(reader);
|
|
659
|
+
const origin = clamped(sliceOrigins, readUint32(reader));
|
|
660
|
+
const associatedLayerId = origin == 'layer' ? readUint32(reader) : 0;
|
|
661
|
+
const name = readUnicodeString(reader);
|
|
662
|
+
const type = clamped(sliceTypes, readUint32(reader));
|
|
663
|
+
const left = readInt32(reader);
|
|
664
|
+
const top = readInt32(reader);
|
|
665
|
+
const right = readInt32(reader);
|
|
666
|
+
const bottom = readInt32(reader);
|
|
667
|
+
const url = readUnicodeString(reader);
|
|
668
|
+
const target = readUnicodeString(reader);
|
|
669
|
+
const message = readUnicodeString(reader);
|
|
670
|
+
const altTag = readUnicodeString(reader);
|
|
671
|
+
const cellTextIsHTML = !!readUint8(reader);
|
|
672
|
+
const cellText = readUnicodeString(reader);
|
|
673
|
+
const horizontalAlignment = clamped(sliceAlignments, readUint32(reader));
|
|
674
|
+
const verticalAlignment = clamped(sliceAlignments, readUint32(reader));
|
|
675
|
+
const a = readUint8(reader);
|
|
676
|
+
const r = readUint8(reader);
|
|
677
|
+
const g = readUint8(reader);
|
|
678
|
+
const b = readUint8(reader);
|
|
679
|
+
const backgroundColorType = ((a + r + g + b) === 0) ? 'none' : (a === 0 ? 'matte' : 'color');
|
|
680
|
+
slices.push({
|
|
681
|
+
id, groupId, origin, associatedLayerId, name, target, message, altTag, cellTextIsHTML, cellText,
|
|
682
|
+
horizontalAlignment, verticalAlignment, type, url,
|
|
683
|
+
bounds: { top, left, bottom, right },
|
|
684
|
+
backgroundColorType, backgroundColor: { r, g, b, a },
|
|
721
685
|
});
|
|
722
686
|
}
|
|
723
|
-
|
|
724
|
-
desc.slices.forEach(
|
|
725
|
-
|
|
687
|
+
const desc = readVersionAndDescriptor(reader);
|
|
688
|
+
desc.slices.forEach(d => {
|
|
689
|
+
const slice = slices.find(s => d.sliceID == s.id);
|
|
726
690
|
if (slice) {
|
|
727
691
|
slice.topOutset = d.topOutset;
|
|
728
692
|
slice.leftOutset = d.leftOutset;
|
|
@@ -732,20 +696,20 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
|
|
|
732
696
|
});
|
|
733
697
|
}
|
|
734
698
|
else if (version === 7 || version === 8) {
|
|
735
|
-
|
|
699
|
+
const desc = readVersionAndDescriptor(reader);
|
|
736
700
|
if (!target.slices)
|
|
737
701
|
target.slices = [];
|
|
738
702
|
target.slices.push({
|
|
739
703
|
groupName: desc.baseName,
|
|
740
704
|
bounds: boundsFromBounds(desc.bounds),
|
|
741
|
-
slices: desc.slices.map(
|
|
705
|
+
slices: desc.slices.map(s => (Object.assign(Object.assign({}, (s['Nm '] ? { name: s['Nm '] } : {})), { id: s.sliceID, groupId: s.groupID, associatedLayerId: 0, origin: ESliceOrigin.decode(s.origin), type: ESliceType.decode(s.Type), bounds: boundsFromBounds(s.bounds), url: s.url, target: s.null, message: s.Msge, altTag: s.altTag, cellTextIsHTML: s.cellTextIsHTML, cellText: s.cellText, horizontalAlignment: ESliceHorzAlign.decode(s.horzAlign), verticalAlignment: ESliceVertAlign.decode(s.vertAlign), backgroundColorType: ESliceBGColorType.decode(s.bgColorType), backgroundColor: s.bgColor ? { r: s.bgColor['Rd '], g: s.bgColor['Grn '], b: s.bgColor['Bl '], a: s.bgColor.alpha } : { r: 0, g: 0, b: 0, a: 0 }, topOutset: s.topOutset || 0, leftOutset: s.leftOutset || 0, bottomOutset: s.bottomOutset || 0, rightOutset: s.rightOutset || 0 }))),
|
|
742
706
|
});
|
|
743
707
|
}
|
|
744
708
|
else {
|
|
745
|
-
throw new Error(
|
|
709
|
+
throw new Error(`Invalid slices version (${version})`);
|
|
746
710
|
}
|
|
747
|
-
},
|
|
748
|
-
|
|
711
|
+
}, (writer, target, index) => {
|
|
712
|
+
const { bounds, groupName, slices } = target.slices[index];
|
|
749
713
|
writeUint32(writer, 6); // version
|
|
750
714
|
writeInt32(writer, bounds.top);
|
|
751
715
|
writeInt32(writer, bounds.left);
|
|
@@ -753,9 +717,9 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
|
|
|
753
717
|
writeInt32(writer, bounds.right);
|
|
754
718
|
writeUnicodeString(writer, groupName);
|
|
755
719
|
writeUint32(writer, slices.length);
|
|
756
|
-
for (
|
|
757
|
-
|
|
758
|
-
|
|
720
|
+
for (let i = 0; i < slices.length; i++) {
|
|
721
|
+
const slice = slices[i];
|
|
722
|
+
let { a, r, g, b } = slice.backgroundColor;
|
|
759
723
|
if (slice.backgroundColorType === 'none') {
|
|
760
724
|
a = r = g = b = 0;
|
|
761
725
|
}
|
|
@@ -787,14 +751,14 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
|
|
|
787
751
|
writeUint8(writer, g);
|
|
788
752
|
writeUint8(writer, b);
|
|
789
753
|
}
|
|
790
|
-
|
|
754
|
+
const desc = {
|
|
791
755
|
bounds: boundsToBounds(bounds),
|
|
792
756
|
slices: [],
|
|
793
757
|
};
|
|
794
|
-
slices.forEach(
|
|
795
|
-
|
|
758
|
+
slices.forEach(s => {
|
|
759
|
+
const slice = Object.assign(Object.assign({ sliceID: s.id, groupID: s.groupId, origin: ESliceOrigin.encode(s.origin), Type: ESliceType.encode(s.type), bounds: boundsToBounds(s.bounds) }, (s.name ? { 'Nm ': s.name } : {})), { url: s.url, null: s.target, Msge: s.message, altTag: s.altTag, cellTextIsHTML: s.cellTextIsHTML, cellText: s.cellText, horzAlign: ESliceHorzAlign.encode(s.horizontalAlignment), vertAlign: ESliceVertAlign.encode(s.verticalAlignment), bgColorType: ESliceBGColorType.encode(s.backgroundColorType) });
|
|
796
760
|
if (s.backgroundColorType === 'color') {
|
|
797
|
-
|
|
761
|
+
const { r, g, b, a } = s.backgroundColor;
|
|
798
762
|
slice.bgColor = { 'Rd ': r, 'Grn ': g, 'Bl ': b, alpha: a };
|
|
799
763
|
}
|
|
800
764
|
slice.topOutset = s.topOutset || 0;
|
|
@@ -805,56 +769,56 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
|
|
|
805
769
|
});
|
|
806
770
|
writeVersionAndDescriptor(writer, '', 'null', desc, 'slices');
|
|
807
771
|
});
|
|
808
|
-
addHandler(1064,
|
|
772
|
+
addHandler(1064, target => target.pixelAspectRatio !== undefined, (reader, target) => {
|
|
809
773
|
if (readUint32(reader) > 2)
|
|
810
774
|
throw new Error('Invalid pixelAspectRatio version');
|
|
811
775
|
target.pixelAspectRatio = { aspect: readFloat64(reader) };
|
|
812
|
-
},
|
|
776
|
+
}, (writer, target) => {
|
|
813
777
|
writeUint32(writer, 2); // version
|
|
814
778
|
writeFloat64(writer, target.pixelAspectRatio.aspect);
|
|
815
779
|
});
|
|
816
|
-
addHandler(1041,
|
|
780
|
+
addHandler(1041, target => target.iccUntaggedProfile !== undefined, (reader, target) => {
|
|
817
781
|
target.iccUntaggedProfile = !!readUint8(reader);
|
|
818
|
-
},
|
|
782
|
+
}, (writer, target) => {
|
|
819
783
|
writeUint8(writer, target.iccUntaggedProfile ? 1 : 0);
|
|
820
784
|
});
|
|
821
785
|
MOCK_HANDLERS && addHandler(1039, // ICC Profile
|
|
822
|
-
|
|
823
|
-
target
|
|
786
|
+
// ICC Profile
|
|
787
|
+
target => target._ir1039 !== undefined, (reader, target, left) => {
|
|
824
788
|
// TODO: this is raw bytes, just return as a byte array
|
|
825
789
|
LOG_MOCK_HANDLERS && console.log('image resource 1039', left());
|
|
826
790
|
target._ir1039 = readBytes(reader, left());
|
|
827
|
-
},
|
|
791
|
+
}, (writer, target) => {
|
|
828
792
|
writeBytes(writer, target._ir1039);
|
|
829
793
|
});
|
|
830
|
-
addHandler(1044,
|
|
831
|
-
addHandler(1036,
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
794
|
+
addHandler(1044, target => target.idsSeedNumber !== undefined, (reader, target) => target.idsSeedNumber = readUint32(reader), (writer, target) => writeUint32(writer, target.idsSeedNumber));
|
|
795
|
+
addHandler(1036, target => target.thumbnail !== undefined || target.thumbnailRaw !== undefined, (reader, target, left) => {
|
|
796
|
+
const format = readUint32(reader); // 1 = kJpegRGB, 0 = kRawRGB
|
|
797
|
+
const width = readUint32(reader);
|
|
798
|
+
const height = readUint32(reader);
|
|
835
799
|
readUint32(reader); // widthBytes = (width * bits_per_pixel + 31) / 32 * 4.
|
|
836
800
|
readUint32(reader); // totalSize = widthBytes * height * planes
|
|
837
801
|
readUint32(reader); // sizeAfterCompression
|
|
838
|
-
|
|
839
|
-
|
|
802
|
+
const bitsPerPixel = readUint16(reader); // 24
|
|
803
|
+
const planes = readUint16(reader); // 1
|
|
840
804
|
if (format !== 1 || bitsPerPixel !== 24 || planes !== 1) {
|
|
841
|
-
reader.logMissingFeatures && reader.log(
|
|
805
|
+
reader.logMissingFeatures && reader.log(`Invalid thumbnail data (format: ${format}, bitsPerPixel: ${bitsPerPixel}, planes: ${planes})`);
|
|
842
806
|
skipBytes(reader, left());
|
|
843
807
|
return;
|
|
844
808
|
}
|
|
845
|
-
|
|
846
|
-
|
|
809
|
+
const size = left();
|
|
810
|
+
const data = readBytes(reader, size);
|
|
847
811
|
if (reader.useRawThumbnail) {
|
|
848
|
-
target.thumbnailRaw = { width
|
|
812
|
+
target.thumbnailRaw = { width, height, data };
|
|
849
813
|
}
|
|
850
814
|
else if (data.byteLength) {
|
|
851
815
|
target.thumbnail = createCanvasFromData(data);
|
|
852
816
|
}
|
|
853
|
-
},
|
|
817
|
+
}, (writer, target) => {
|
|
854
818
|
var _a;
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
819
|
+
let width = 0;
|
|
820
|
+
let height = 0;
|
|
821
|
+
let data = new Uint8Array(0);
|
|
858
822
|
if (target.thumbnailRaw) {
|
|
859
823
|
width = target.thumbnailRaw.width;
|
|
860
824
|
height = target.thumbnailRaw.height;
|
|
@@ -862,7 +826,7 @@ addHandler(1036, function (target) { return target.thumbnail !== undefined || ta
|
|
|
862
826
|
}
|
|
863
827
|
else {
|
|
864
828
|
try {
|
|
865
|
-
|
|
829
|
+
const dataUrl = (_a = target.thumbnail.toDataURL('image/jpeg', 1)) === null || _a === void 0 ? void 0 : _a.substring('data:image/jpeg;base64,'.length);
|
|
866
830
|
if (dataUrl) {
|
|
867
831
|
data = toByteArray(dataUrl); // this sometimes fails for some reason, maybe some browser bugs
|
|
868
832
|
width = target.thumbnail.width;
|
|
@@ -871,11 +835,11 @@ addHandler(1036, function (target) { return target.thumbnail !== undefined || ta
|
|
|
871
835
|
}
|
|
872
836
|
catch (_b) { }
|
|
873
837
|
}
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
838
|
+
const bitsPerPixel = 24;
|
|
839
|
+
const widthBytes = Math.floor((width * bitsPerPixel + 31) / 32) * 4;
|
|
840
|
+
const planes = 1;
|
|
841
|
+
const totalSize = widthBytes * height * planes;
|
|
842
|
+
const sizeAfterCompression = data.length;
|
|
879
843
|
writeUint32(writer, 1); // 1 = kJpegRGB
|
|
880
844
|
writeUint32(writer, width);
|
|
881
845
|
writeUint32(writer, height);
|
|
@@ -886,8 +850,8 @@ addHandler(1036, function (target) { return target.thumbnail !== undefined || ta
|
|
|
886
850
|
writeUint16(writer, planes);
|
|
887
851
|
writeBytes(writer, data);
|
|
888
852
|
});
|
|
889
|
-
addHandler(1057,
|
|
890
|
-
|
|
853
|
+
addHandler(1057, target => target.versionInfo !== undefined, (reader, target, left) => {
|
|
854
|
+
const version = readUint32(reader);
|
|
891
855
|
if (version !== 1)
|
|
892
856
|
throw new Error('Invalid versionInfo version');
|
|
893
857
|
target.versionInfo = {
|
|
@@ -897,8 +861,8 @@ addHandler(1057, function (target) { return target.versionInfo !== undefined; },
|
|
|
897
861
|
fileVersion: readUint32(reader),
|
|
898
862
|
};
|
|
899
863
|
skipBytes(reader, left());
|
|
900
|
-
},
|
|
901
|
-
|
|
864
|
+
}, (writer, target) => {
|
|
865
|
+
const versionInfo = target.versionInfo;
|
|
902
866
|
writeUint32(writer, 1); // version
|
|
903
867
|
writeUint8(writer, versionInfo.hasRealMergedData ? 1 : 0);
|
|
904
868
|
writeUnicodeString(writer, versionInfo.writerName);
|
|
@@ -906,109 +870,106 @@ addHandler(1057, function (target) { return target.versionInfo !== undefined; },
|
|
|
906
870
|
writeUint32(writer, versionInfo.fileVersion);
|
|
907
871
|
});
|
|
908
872
|
MOCK_HANDLERS && addHandler(1058, // EXIF data 1.
|
|
909
|
-
|
|
910
|
-
target
|
|
873
|
+
// EXIF data 1.
|
|
874
|
+
target => target._ir1058 !== undefined, (reader, target, left) => {
|
|
911
875
|
LOG_MOCK_HANDLERS && console.log('image resource 1058', left());
|
|
912
876
|
target._ir1058 = readBytes(reader, left());
|
|
913
|
-
},
|
|
877
|
+
}, (writer, target) => {
|
|
914
878
|
writeBytes(writer, target._ir1058);
|
|
915
879
|
});
|
|
916
|
-
addHandler(7000,
|
|
880
|
+
addHandler(7000, target => target.imageReadyVariables !== undefined, (reader, target, left) => {
|
|
917
881
|
target.imageReadyVariables = readUtf8String(reader, left());
|
|
918
|
-
},
|
|
882
|
+
}, (writer, target) => {
|
|
919
883
|
writeUtf8String(writer, target.imageReadyVariables);
|
|
920
884
|
});
|
|
921
|
-
addHandler(7001,
|
|
885
|
+
addHandler(7001, target => target.imageReadyDataSets !== undefined, (reader, target, left) => {
|
|
922
886
|
target.imageReadyDataSets = readUtf8String(reader, left());
|
|
923
|
-
},
|
|
887
|
+
}, (writer, target) => {
|
|
924
888
|
writeUtf8String(writer, target.imageReadyDataSets);
|
|
925
889
|
});
|
|
926
|
-
addHandler(1088,
|
|
927
|
-
|
|
890
|
+
addHandler(1088, target => target.pathSelectionState !== undefined, (reader, target, _left) => {
|
|
891
|
+
const desc = readVersionAndDescriptor(reader);
|
|
928
892
|
target.pathSelectionState = desc['null'];
|
|
929
|
-
},
|
|
930
|
-
|
|
893
|
+
}, (writer, target) => {
|
|
894
|
+
const desc = { 'null': target.pathSelectionState };
|
|
931
895
|
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
932
896
|
});
|
|
933
|
-
MOCK_HANDLERS && addHandler(1025,
|
|
897
|
+
MOCK_HANDLERS && addHandler(1025, target => target._ir1025 !== undefined, (reader, target, left) => {
|
|
934
898
|
LOG_MOCK_HANDLERS && console.log('image resource 1025', left());
|
|
935
899
|
target._ir1025 = readBytes(reader, left());
|
|
936
|
-
},
|
|
900
|
+
}, (writer, target) => {
|
|
937
901
|
writeBytes(writer, target._ir1025);
|
|
938
902
|
});
|
|
939
|
-
|
|
903
|
+
const FrmD = createEnum('FrmD', '', {
|
|
940
904
|
auto: 'Auto',
|
|
941
905
|
none: 'None',
|
|
942
906
|
dispose: 'Disp',
|
|
943
907
|
});
|
|
944
908
|
addHandler(4000, // Plug-In resource(s)
|
|
945
|
-
|
|
946
|
-
target
|
|
947
|
-
|
|
909
|
+
// Plug-In resource(s)
|
|
910
|
+
target => target.animations !== undefined, (reader, target, left) => {
|
|
911
|
+
const key = readSignature(reader);
|
|
948
912
|
if (key === 'mani') {
|
|
949
913
|
checkSignature(reader, 'IRFR');
|
|
950
|
-
readSection(reader, 1,
|
|
951
|
-
|
|
914
|
+
readSection(reader, 1, left => {
|
|
915
|
+
while (left() > 0) {
|
|
952
916
|
checkSignature(reader, '8BIM');
|
|
953
|
-
|
|
954
|
-
readSection(reader, 1,
|
|
955
|
-
if (
|
|
956
|
-
|
|
917
|
+
const key = readSignature(reader);
|
|
918
|
+
readSection(reader, 1, left => {
|
|
919
|
+
if (key === 'AnDs') {
|
|
920
|
+
const desc = readVersionAndDescriptor(reader);
|
|
957
921
|
target.animations = {
|
|
958
922
|
// desc.AFSt ???
|
|
959
|
-
frames: desc.FrIn.map(
|
|
923
|
+
frames: desc.FrIn.map(x => ({
|
|
960
924
|
id: x.FrID,
|
|
961
925
|
delay: (x.FrDl || 0) / 100,
|
|
962
926
|
dispose: x.FrDs ? FrmD.decode(x.FrDs) : 'auto', // missing == auto
|
|
963
927
|
// x.FrGA ???
|
|
964
|
-
})
|
|
965
|
-
animations: desc.FSts.map(
|
|
928
|
+
})),
|
|
929
|
+
animations: desc.FSts.map(x => ({
|
|
966
930
|
id: x.FsID,
|
|
967
931
|
frames: x.FsFr,
|
|
968
932
|
repeats: x.LCnt,
|
|
969
933
|
activeFrame: x.AFrm || 0,
|
|
970
|
-
})
|
|
934
|
+
})),
|
|
971
935
|
};
|
|
972
936
|
// console.log('#4000 AnDs', require('util').inspect(desc, false, 99, true));
|
|
973
937
|
// console.log('#4000 AnDs:result', require('util').inspect(target.animations, false, 99, true));
|
|
974
938
|
}
|
|
975
|
-
else if (
|
|
976
|
-
|
|
939
|
+
else if (key === 'Roll') {
|
|
940
|
+
const bytes = readBytes(reader, left());
|
|
977
941
|
reader.logDevFeatures && reader.log('#4000 Roll', bytes);
|
|
978
942
|
}
|
|
979
943
|
else {
|
|
980
|
-
reader.logMissingFeatures && reader.log('Unhandled subsection in #4000',
|
|
944
|
+
reader.logMissingFeatures && reader.log('Unhandled subsection in #4000', key);
|
|
981
945
|
}
|
|
982
946
|
});
|
|
983
|
-
};
|
|
984
|
-
while (left() > 0) {
|
|
985
|
-
_loop_1();
|
|
986
947
|
}
|
|
987
948
|
});
|
|
988
949
|
}
|
|
989
950
|
else if (key === 'mopt') {
|
|
990
|
-
|
|
951
|
+
const bytes = readBytes(reader, left());
|
|
991
952
|
reader.logDevFeatures && reader.log('#4000 mopt', bytes);
|
|
992
953
|
}
|
|
993
954
|
else {
|
|
994
955
|
reader.logMissingFeatures && reader.log('Unhandled key in #4000:', key);
|
|
995
956
|
}
|
|
996
|
-
},
|
|
957
|
+
}, (writer, target) => {
|
|
997
958
|
if (target.animations) {
|
|
998
959
|
writeSignature(writer, 'mani');
|
|
999
960
|
writeSignature(writer, 'IRFR');
|
|
1000
|
-
writeSection(writer, 1,
|
|
961
|
+
writeSection(writer, 1, () => {
|
|
1001
962
|
writeSignature(writer, '8BIM');
|
|
1002
963
|
writeSignature(writer, 'AnDs');
|
|
1003
|
-
writeSection(writer, 1,
|
|
1004
|
-
|
|
964
|
+
writeSection(writer, 1, () => {
|
|
965
|
+
const desc = {
|
|
1005
966
|
// AFSt: 0, // ???
|
|
1006
967
|
FrIn: [],
|
|
1007
968
|
FSts: [],
|
|
1008
969
|
};
|
|
1009
|
-
for (
|
|
1010
|
-
|
|
1011
|
-
|
|
970
|
+
for (let i = 0; i < target.animations.frames.length; i++) {
|
|
971
|
+
const f = target.animations.frames[i];
|
|
972
|
+
const frame = {
|
|
1012
973
|
FrID: f.id,
|
|
1013
974
|
};
|
|
1014
975
|
if (f.delay)
|
|
@@ -1017,9 +978,9 @@ target) { return target.animations !== undefined; }, function (reader, target, l
|
|
|
1017
978
|
// if (i === 0) frame.FrGA = 30; // ???
|
|
1018
979
|
desc.FrIn.push(frame);
|
|
1019
980
|
}
|
|
1020
|
-
for (
|
|
1021
|
-
|
|
1022
|
-
|
|
981
|
+
for (let i = 0; i < target.animations.animations.length; i++) {
|
|
982
|
+
const a = target.animations.animations[i];
|
|
983
|
+
const anim = {
|
|
1023
984
|
FsID: a.id,
|
|
1024
985
|
AFrm: a.activeFrame | 0,
|
|
1025
986
|
FsFr: a.frames,
|
|
@@ -1039,39 +1000,39 @@ target) { return target.animations !== undefined; }, function (reader, target, l
|
|
|
1039
1000
|
});
|
|
1040
1001
|
// TODO: Unfinished
|
|
1041
1002
|
MOCK_HANDLERS && addHandler(4001, // Plug-In resource(s)
|
|
1042
|
-
|
|
1043
|
-
target
|
|
1003
|
+
// Plug-In resource(s)
|
|
1004
|
+
target => target._ir4001 !== undefined, (reader, target, left) => {
|
|
1044
1005
|
if (MOCK_HANDLERS) {
|
|
1045
1006
|
LOG_MOCK_HANDLERS && console.log('image resource 4001', left());
|
|
1046
1007
|
target._ir4001 = readBytes(reader, left());
|
|
1047
1008
|
return;
|
|
1048
1009
|
}
|
|
1049
|
-
|
|
1010
|
+
const key = readSignature(reader);
|
|
1050
1011
|
if (key === 'mfri') {
|
|
1051
|
-
|
|
1012
|
+
const version = readUint32(reader);
|
|
1052
1013
|
if (version !== 2)
|
|
1053
1014
|
throw new Error('Invalid mfri version');
|
|
1054
|
-
|
|
1055
|
-
|
|
1015
|
+
const length = readUint32(reader);
|
|
1016
|
+
const bytes = readBytes(reader, length);
|
|
1056
1017
|
reader.logDevFeatures && reader.log('mfri', bytes);
|
|
1057
1018
|
}
|
|
1058
1019
|
else if (key === 'mset') {
|
|
1059
|
-
|
|
1020
|
+
const desc = readVersionAndDescriptor(reader);
|
|
1060
1021
|
reader.logDevFeatures && reader.log('mset', desc);
|
|
1061
1022
|
}
|
|
1062
1023
|
else {
|
|
1063
1024
|
reader.logMissingFeatures && reader.log('Unhandled key in #4001', key);
|
|
1064
1025
|
}
|
|
1065
|
-
},
|
|
1026
|
+
}, (writer, target) => {
|
|
1066
1027
|
writeBytes(writer, target._ir4001);
|
|
1067
1028
|
});
|
|
1068
1029
|
// TODO: Unfinished
|
|
1069
1030
|
MOCK_HANDLERS && addHandler(4002, // Plug-In resource(s)
|
|
1070
|
-
|
|
1071
|
-
target
|
|
1031
|
+
// Plug-In resource(s)
|
|
1032
|
+
target => target._ir4002 !== undefined, (reader, target, left) => {
|
|
1072
1033
|
LOG_MOCK_HANDLERS && console.log('image resource 4002', left());
|
|
1073
1034
|
target._ir4002 = readBytes(reader, left());
|
|
1074
|
-
},
|
|
1035
|
+
}, (writer, target) => {
|
|
1075
1036
|
writeBytes(writer, target._ir4002);
|
|
1076
1037
|
});
|
|
1077
1038
|
//# sourceMappingURL=imageResources.js.map
|