ag-psd 22.0.2 → 23.1.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.
@@ -1295,11 +1295,22 @@ function parseFilterFXItem(f, options) {
1295
1295
  lightDirection: f.Fltr.LghD,
1296
1296
  specularity: f.Fltr.specularity,
1297
1297
  } });
1298
- case 'LqFy': {
1299
- return __assign(__assign({}, base), { type: 'liquify', filter: {
1300
- liquifyMesh: f.Fltr.LqMe,
1301
- } });
1302
- }
1298
+ case 'LqFy':
1299
+ {
1300
+ return __assign(__assign({}, base), { type: 'liquify', filter: {
1301
+ liquifyMesh: f.Fltr.LqMe,
1302
+ } });
1303
+ }
1304
+ ;
1305
+ case 'perspectiveWarpTransform':
1306
+ {
1307
+ return __assign(__assign({}, base), { type: 'perspective warp', filter: {
1308
+ vertices: f.Fltr.vertices.map(hrznVrtcToPoint),
1309
+ warpedVertices: f.Fltr.warpedVertices.map(hrznVrtcToPoint),
1310
+ quads: f.Fltr.quads.map(function (q) { return q.indices; }),
1311
+ } });
1312
+ }
1313
+ ;
1303
1314
  default:
1304
1315
  if (options.throwForMissingFeatures) {
1305
1316
  throw new Error("Unknown filter classId: ".concat(f.Fltr._classID));
@@ -1772,6 +1783,13 @@ function serializeFilterFXItem(f) {
1772
1783
  _classID: 'LqFy',
1773
1784
  LqMe: f.filter.liquifyMesh,
1774
1785
  }, filterID: 1282492025 });
1786
+ case 'perspective warp': return __assign(__assign({}, base), { Fltr: {
1787
+ _name: 'Perspective Warp',
1788
+ _classID: 'perspectiveWarpTransform',
1789
+ vertices: f.filter.vertices.map(pointToHrznVrtc),
1790
+ warpedVertices: f.filter.warpedVertices.map(pointToHrznVrtc),
1791
+ quads: f.filter.quads.map(function (indices) { return ({ indices: indices }); }),
1792
+ }, filterID: 442 });
1775
1793
  default: throw new Error("Unknow filter type: ".concat(f.type));
1776
1794
  }
1777
1795
  }
@@ -2126,130 +2144,170 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
2126
2144
  writer.view.setUint32(dataOffset - 4, writer.offset - dataOffset, false);
2127
2145
  }
2128
2146
  });
2129
- addHandler('lnk2', function (target) { return !!target.linkedFiles && target.linkedFiles.length > 0; }, function (reader, target, left) {
2130
- var psd = target;
2131
- psd.linkedFiles = psd.linkedFiles || [];
2132
- while (left() > 8) {
2133
- var size = readLength64(reader); // size
2134
- var startOffset = reader.offset;
2135
- var type = readSignature(reader);
2136
- // liFD - linked file data
2137
- // liFE - linked file external
2138
- // liFA - linked file alias
2139
- var version = readInt32(reader);
2140
- var id = readPascalString(reader, 1);
2141
- var name_3 = readUnicodeString(reader);
2142
- var fileType = readSignature(reader).trim(); // ' ' if empty
2143
- var fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
2144
- var dataSize = readLength64(reader);
2145
- var hasFileOpenDescriptor = readUint8(reader);
2146
- var fileOpenDescriptor = hasFileOpenDescriptor ? readVersionAndDescriptor(reader) : undefined;
2147
- var linkedFileDescriptor = type === 'liFE' ? readVersionAndDescriptor(reader) : undefined;
2148
- var file = { id: id, name: name_3 };
2149
- if (fileType)
2150
- file.type = fileType;
2151
- if (fileCreator)
2152
- file.creator = fileCreator;
2153
- if (fileOpenDescriptor) {
2154
- file.descriptor = {
2155
- compInfo: {
2156
- compID: fileOpenDescriptor.compInfo.compID,
2157
- originalCompID: fileOpenDescriptor.compInfo.originalCompID,
2158
- }
2159
- };
2160
- }
2161
- if (type === 'liFE' && version > 3) {
2162
- var year = readInt32(reader);
2163
- var month = readUint8(reader);
2164
- var day = readUint8(reader);
2165
- var hour = readUint8(reader);
2166
- var minute = readUint8(reader);
2167
- var seconds = readFloat64(reader);
2168
- var wholeSeconds = Math.floor(seconds);
2169
- var ms = (seconds - wholeSeconds) * 1000;
2170
- file.time = (new Date(year, month, day, hour, minute, wholeSeconds, ms)).toISOString();
2171
- }
2172
- var fileSize = type === 'liFE' ? readLength64(reader) : 0;
2173
- if (type === 'liFA')
2174
- skipBytes(reader, 8);
2175
- if (type === 'liFD')
2176
- file.data = readBytes(reader, dataSize); // seems to be a typo in docs
2177
- if (version >= 5)
2178
- file.childDocumentID = readUnicodeString(reader);
2179
- if (version >= 6)
2180
- file.assetModTime = readFloat64(reader);
2181
- if (version >= 7)
2182
- file.assetLockedState = readUint8(reader);
2183
- if (type === 'liFE' && version === 2)
2184
- file.data = readBytes(reader, fileSize);
2185
- if (reader.skipLinkedFilesData)
2186
- file.data = undefined;
2187
- psd.linkedFiles.push(file);
2188
- linkedFileDescriptor;
2189
- while (size % 4)
2190
- size++;
2191
- reader.offset = startOffset + size;
2192
- }
2193
- skipBytes(reader, left()); // ?
2194
- }, function (writer, target) {
2195
- var psd = target;
2196
- for (var _i = 0, _a = psd.linkedFiles; _i < _a.length; _i++) {
2197
- var file = _a[_i];
2198
- var version = 2;
2199
- if (file.assetLockedState != null)
2200
- version = 7;
2201
- else if (file.assetModTime != null)
2202
- version = 6;
2203
- else if (file.childDocumentID != null)
2204
- version = 5;
2205
- // TODO: else if (file.time != null) version = 3; (only for liFE)
2206
- writeUint32(writer, 0);
2207
- writeUint32(writer, 0); // size
2208
- var sizeOffset = writer.offset;
2209
- writeSignature(writer, file.data ? 'liFD' : 'liFA');
2210
- writeInt32(writer, version);
2211
- if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2212
- throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2213
- }
2214
- writePascalString(writer, file.id, 1);
2215
- writeUnicodeStringWithPadding(writer, file.name || '');
2216
- writeSignature(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2217
- writeSignature(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
2218
- writeLength64(writer, file.data ? file.data.byteLength : 0);
2219
- if (file.descriptor && file.descriptor.compInfo) {
2220
- var desc = {
2221
- compInfo: {
2222
- compID: file.descriptor.compInfo.compID,
2223
- originalCompID: file.descriptor.compInfo.originalCompID,
2224
- }
2225
- };
2226
- writeUint8(writer, 1);
2227
- writeVersionAndDescriptor(writer, '', 'null', desc);
2228
- }
2229
- else {
2230
- writeUint8(writer, 0);
2147
+ function createLnkHandler(tag) {
2148
+ addHandler(tag, function (target) {
2149
+ var psd = target;
2150
+ if (!psd.linkedFiles || !psd.linkedFiles.length)
2151
+ return false;
2152
+ if (tag === 'lnkE' && !psd.linkedFiles.some(function (f) { return f.linkedFile; }))
2153
+ return false;
2154
+ return true;
2155
+ }, function (reader, target, left, _psd) {
2156
+ var psd = target;
2157
+ psd.linkedFiles = psd.linkedFiles || [];
2158
+ while (left() > 8) {
2159
+ var size = readLength64(reader);
2160
+ var startOffset = reader.offset;
2161
+ var type = readSignature(reader);
2162
+ // liFD - linked file data
2163
+ // liFE - linked file external
2164
+ // liFA - linked file alias
2165
+ var version = readInt32(reader);
2166
+ var id = readPascalString(reader, 1);
2167
+ var name_3 = readUnicodeString(reader);
2168
+ var fileType = readSignature(reader).trim(); // ' ' if empty
2169
+ var fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
2170
+ var dataSize = readLength64(reader);
2171
+ var hasFileOpenDescriptor = readUint8(reader);
2172
+ var fileOpenDescriptor = hasFileOpenDescriptor ? readVersionAndDescriptor(reader) : undefined;
2173
+ var linkedFileDescriptor = type === 'liFE' ? readVersionAndDescriptor(reader) : undefined;
2174
+ var file = { id: id, name: name_3 };
2175
+ if (fileType)
2176
+ file.type = fileType;
2177
+ if (fileCreator)
2178
+ file.creator = fileCreator;
2179
+ if (fileOpenDescriptor) {
2180
+ file.descriptor = {
2181
+ compInfo: {
2182
+ compID: fileOpenDescriptor.compInfo.compID,
2183
+ originalCompID: fileOpenDescriptor.compInfo.originalCompID,
2184
+ }
2185
+ };
2186
+ }
2187
+ if (type === 'liFE' && version > 3) {
2188
+ var year = readInt32(reader);
2189
+ var month = readUint8(reader);
2190
+ var day = readUint8(reader);
2191
+ var hour = readUint8(reader);
2192
+ var minute = readUint8(reader);
2193
+ var seconds = readFloat64(reader);
2194
+ var wholeSeconds = Math.floor(seconds);
2195
+ var ms = (seconds - wholeSeconds) * 1000;
2196
+ file.time = (new Date(Date.UTC(year, month, day, hour, minute, wholeSeconds, ms))).toISOString();
2197
+ }
2198
+ var fileSize = type === 'liFE' ? readLength64(reader) : 0;
2199
+ if (type === 'liFA')
2200
+ skipBytes(reader, 8);
2201
+ if (type === 'liFD')
2202
+ file.data = readBytes(reader, dataSize); // seems to be a typo in docs
2203
+ if (version >= 5)
2204
+ file.childDocumentID = readUnicodeString(reader);
2205
+ if (version >= 6)
2206
+ file.assetModTime = readFloat64(reader);
2207
+ if (version >= 7)
2208
+ file.assetLockedState = readUint8(reader);
2209
+ if (type === 'liFE' && version === 2)
2210
+ file.data = readBytes(reader, fileSize);
2211
+ if (reader.skipLinkedFilesData)
2212
+ file.data = undefined;
2213
+ if (tag === 'lnkE') {
2214
+ file.linkedFile = {
2215
+ fileSize: fileSize,
2216
+ name: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor['Nm ']) || '',
2217
+ fullPath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.fullPath) || '',
2218
+ originalPath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.originalPath) || '',
2219
+ relativePath: (linkedFileDescriptor === null || linkedFileDescriptor === void 0 ? void 0 : linkedFileDescriptor.relPath) || '',
2220
+ };
2221
+ }
2222
+ psd.linkedFiles.push(file);
2223
+ while (size % 4)
2224
+ size++;
2225
+ reader.offset = startOffset + size;
2231
2226
  }
2232
- if (file.data)
2233
- writeBytes(writer, file.data);
2234
- else
2227
+ skipBytes(reader, left()); // ?
2228
+ }, function (writer, target) {
2229
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
2230
+ var psd = target;
2231
+ for (var _i = 0, _k = psd.linkedFiles; _i < _k.length; _i++) {
2232
+ var file = _k[_i];
2233
+ if ((tag === 'lnkE') !== !!file.linkedFile)
2234
+ continue;
2235
+ var version = 2;
2236
+ if (file.assetLockedState != null)
2237
+ version = 7;
2238
+ else if (file.assetModTime != null)
2239
+ version = 6;
2240
+ else if (file.childDocumentID != null)
2241
+ version = 5;
2242
+ else if (tag == 'lnkE')
2243
+ version = 3;
2235
2244
  writeLength64(writer, 0);
2236
- if (version >= 5)
2237
- writeUnicodeStringWithPadding(writer, file.childDocumentID || '');
2238
- if (version >= 6)
2239
- writeFloat64(writer, file.assetModTime || 0);
2240
- if (version >= 7)
2241
- writeUint8(writer, file.assetLockedState || 0);
2242
- var size = writer.offset - sizeOffset;
2243
- writer.view.setUint32(sizeOffset - 4, size, false); // write size
2244
- while (size % 4) {
2245
- size++;
2246
- writeUint8(writer, 0);
2245
+ var sizeOffset = writer.offset;
2246
+ writeSignature(writer, (tag === 'lnkE') ? 'liFE' : (file.data ? 'liFD' : 'liFA'));
2247
+ writeInt32(writer, version);
2248
+ if (!file.id || typeof file.id !== 'string' || !/^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$/.test(file.id)) {
2249
+ throw new Error('Linked file ID must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)');
2250
+ }
2251
+ writePascalString(writer, file.id, 1);
2252
+ writeUnicodeStringWithPadding(writer, file.name || '');
2253
+ writeSignature(writer, file.type ? "".concat(file.type, " ").substring(0, 4) : ' ');
2254
+ writeSignature(writer, file.creator ? "".concat(file.creator, " ").substring(0, 4) : '\0\0\0\0');
2255
+ writeLength64(writer, file.data ? file.data.byteLength : 0);
2256
+ if (file.descriptor && file.descriptor.compInfo) {
2257
+ var desc = {
2258
+ compInfo: {
2259
+ compID: file.descriptor.compInfo.compID,
2260
+ originalCompID: file.descriptor.compInfo.originalCompID,
2261
+ },
2262
+ };
2263
+ writeUint8(writer, 1);
2264
+ writeVersionAndDescriptor(writer, '', 'null', desc);
2265
+ }
2266
+ else {
2267
+ writeUint8(writer, 0);
2268
+ }
2269
+ if (tag === 'lnkE') {
2270
+ var desc = {
2271
+ descVersion: 2,
2272
+ 'Nm ': (_b = (_a = file.linkedFile) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
2273
+ fullPath: (_d = (_c = file.linkedFile) === null || _c === void 0 ? void 0 : _c.fullPath) !== null && _d !== void 0 ? _d : '',
2274
+ originalPath: (_f = (_e = file.linkedFile) === null || _e === void 0 ? void 0 : _e.originalPath) !== null && _f !== void 0 ? _f : '',
2275
+ relPath: (_h = (_g = file.linkedFile) === null || _g === void 0 ? void 0 : _g.relativePath) !== null && _h !== void 0 ? _h : '',
2276
+ };
2277
+ writeVersionAndDescriptor(writer, '', 'ExternalFileLink', desc);
2278
+ var time = file.time ? new Date(file.time) : new Date();
2279
+ writeInt32(writer, time.getUTCFullYear());
2280
+ writeUint8(writer, time.getUTCMonth());
2281
+ writeUint8(writer, time.getUTCDate());
2282
+ writeUint8(writer, time.getUTCHours());
2283
+ writeUint8(writer, time.getUTCMinutes());
2284
+ writeFloat64(writer, time.getUTCSeconds() + time.getUTCMilliseconds() / 1000);
2285
+ }
2286
+ if (file.data) {
2287
+ writeBytes(writer, file.data);
2288
+ }
2289
+ else {
2290
+ writeLength64(writer, ((_j = file.linkedFile) === null || _j === void 0 ? void 0 : _j.fileSize) || 0);
2291
+ }
2292
+ if (version >= 5)
2293
+ writeUnicodeStringWithPadding(writer, file.childDocumentID || '');
2294
+ if (version >= 6)
2295
+ writeFloat64(writer, file.assetModTime || 0);
2296
+ if (version >= 7)
2297
+ writeUint8(writer, file.assetLockedState || 0);
2298
+ var size = writer.offset - sizeOffset;
2299
+ writer.view.setUint32(sizeOffset - 4, size, false); // write size
2300
+ while (size % 4) {
2301
+ size++;
2302
+ writeUint8(writer, 0);
2303
+ }
2247
2304
  }
2248
- }
2249
- });
2305
+ });
2306
+ }
2307
+ createLnkHandler('lnk2');
2308
+ createLnkHandler('lnkE');
2250
2309
  addHandlerAlias('lnkD', 'lnk2');
2251
2310
  addHandlerAlias('lnk3', 'lnk2');
2252
- addHandlerAlias('lnkE', 'lnk2');
2253
2311
  addHandler('pths', hasKey('pathList'), function (reader, target) {
2254
2312
  var desc = readVersionAndDescriptor(reader, true);
2255
2313
  // console.log(require('util').inspect(desc, false, 99, true));