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