ag-psd 15.3.1 → 17.0.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/CHANGELOG.md +9 -0
- package/README.md +1 -0
- package/dist/additionalInfo.js +864 -157
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +1223 -242
- package/dist/descriptor.d.ts +129 -0
- package/dist/descriptor.js +272 -36
- package/dist/descriptor.js.map +1 -1
- package/dist/imageResources.js +9 -17
- package/dist/imageResources.js.map +1 -1
- package/dist/psd.d.ts +450 -74
- package/dist/psdReader.d.ts +2 -0
- package/dist/psdReader.js +30 -13
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.d.ts +4 -0
- package/dist/psdWriter.js +25 -7
- package/dist/psdWriter.js.map +1 -1
- package/dist/text.js +23 -12
- package/dist/text.js.map +1 -1
- package/dist-es/additionalInfo.js +865 -158
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/descriptor.d.ts +129 -0
- package/dist-es/descriptor.js +270 -37
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/imageResources.js +10 -18
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/psd.d.ts +450 -74
- package/dist-es/psdReader.d.ts +2 -0
- package/dist-es/psdReader.js +27 -12
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.d.ts +4 -0
- package/dist-es/psdWriter.js +21 -7
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/text.js +23 -12
- package/dist-es/text.js.map +1 -1
- package/package.json +1 -1
- package/src/additionalInfo.ts +1956 -212
- package/src/descriptor.ts +297 -37
- package/src/imageResources.ts +14 -19
- package/src/psd.ts +472 -49
- package/src/psdReader.ts +26 -7
- package/src/psdWriter.ts +24 -8
- package/src/text.ts +22 -14
package/dist/bundle.js
CHANGED
|
@@ -292,6 +292,7 @@ var psdWriter_1 = require("./psdWriter");
|
|
|
292
292
|
var descriptor_1 = require("./descriptor");
|
|
293
293
|
var engineData_1 = require("./engineData");
|
|
294
294
|
var text_1 = require("./text");
|
|
295
|
+
var fromAtoZ = 'abcdefghijklmnopqrstuvwxyz';
|
|
295
296
|
exports.infoHandlers = [];
|
|
296
297
|
exports.infoHandlersMap = {};
|
|
297
298
|
function addHandler(key, has, read, write) {
|
|
@@ -818,10 +819,10 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
818
819
|
var timeScope = desc.timeScope;
|
|
819
820
|
// console.log('tmln', target.name, target.id, require('util').inspect(desc, false, 99, true));
|
|
820
821
|
var timeline = {
|
|
821
|
-
start: timeScope.Strt,
|
|
822
|
-
duration: timeScope.duration,
|
|
823
|
-
inTime: timeScope.inTime,
|
|
824
|
-
outTime: timeScope.outTime,
|
|
822
|
+
start: (0, descriptor_1.frac)(timeScope.Strt),
|
|
823
|
+
duration: (0, descriptor_1.frac)(timeScope.duration),
|
|
824
|
+
inTime: (0, descriptor_1.frac)(timeScope.inTime),
|
|
825
|
+
outTime: (0, descriptor_1.frac)(timeScope.outTime),
|
|
825
826
|
autoScope: desc.autoScope,
|
|
826
827
|
audioLevel: desc.audioLevel,
|
|
827
828
|
};
|
|
@@ -962,7 +963,7 @@ addHandler('vstk', hasKey('vectorStroke'), function (reader, target, left) {
|
|
|
962
963
|
}, function (writer, target) {
|
|
963
964
|
var _a, _b, _c;
|
|
964
965
|
var stroke = target.vectorStroke;
|
|
965
|
-
var
|
|
966
|
+
var desc = {
|
|
966
967
|
strokeStyleVersion: 2,
|
|
967
968
|
strokeEnabled: !!stroke.strokeEnabled,
|
|
968
969
|
fillEnabled: !!stroke.fillEnabled,
|
|
@@ -980,7 +981,7 @@ addHandler('vstk', hasKey('vectorStroke'), function (reader, target, left) {
|
|
|
980
981
|
strokeStyleContent: (0, descriptor_1.serializeVectorContent)(stroke.content || { type: 'color', color: { r: 0, g: 0, b: 0 } }).descriptor,
|
|
981
982
|
strokeStyleResolution: (_c = stroke.resolution) !== null && _c !== void 0 ? _c : 72,
|
|
982
983
|
};
|
|
983
|
-
(0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'strokeStyle',
|
|
984
|
+
(0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'strokeStyle', desc);
|
|
984
985
|
});
|
|
985
986
|
addHandler('artb', // per-layer arboard info
|
|
986
987
|
hasKey('artboard'), function (reader, target, left) {
|
|
@@ -1045,7 +1046,7 @@ function isQuiltWarp(warp) {
|
|
|
1045
1046
|
}
|
|
1046
1047
|
function encodeWarp(warp) {
|
|
1047
1048
|
var bounds = warp.bounds;
|
|
1048
|
-
var desc = __assign(__assign({ warpStyle: descriptor_1.warpStyle.encode(warp.style) }, (warp.values ? { warpValues: warp.values } : { warpValue: warp.value })), { warpPerspective: warp.perspective || 0, warpPerspectiveOther: warp.perspectiveOther || 0, warpRotate: descriptor_1.Ornt.encode(warp.rotate), bounds: {
|
|
1049
|
+
var desc = __assign(__assign({ warpStyle: descriptor_1.warpStyle.encode(warp.style) }, (warp.values ? { warpValues: warp.values } : { warpValue: warp.value || 0 })), { warpPerspective: warp.perspective || 0, warpPerspectiveOther: warp.perspectiveOther || 0, warpRotate: descriptor_1.Ornt.encode(warp.rotate), bounds: {
|
|
1049
1050
|
'Top ': (0, descriptor_1.unitsValue)(bounds && bounds.top || { units: 'Pixels', value: 0 }, 'bounds.top'),
|
|
1050
1051
|
Left: (0, descriptor_1.unitsValue)(bounds && bounds.left || { units: 'Pixels', value: 0 }, 'bounds.left'),
|
|
1051
1052
|
Btom: (0, descriptor_1.unitsValue)(bounds && bounds.bottom || { units: 'Pixels', value: 0 }, 'bounds.bottom'),
|
|
@@ -1063,6 +1064,8 @@ function encodeWarp(warp) {
|
|
|
1063
1064
|
if (isQuilt) {
|
|
1064
1065
|
var desc2 = desc;
|
|
1065
1066
|
desc2.customEnvelopeWarp = {
|
|
1067
|
+
_name: '',
|
|
1068
|
+
_classID: 'customEnvelopeWarp',
|
|
1066
1069
|
quiltSliceX: [{
|
|
1067
1070
|
type: 'quiltSliceX',
|
|
1068
1071
|
values: customEnvelopeWarp.quiltSliceX || [],
|
|
@@ -1079,6 +1082,8 @@ function encodeWarp(warp) {
|
|
|
1079
1082
|
}
|
|
1080
1083
|
else {
|
|
1081
1084
|
desc.customEnvelopeWarp = {
|
|
1085
|
+
_name: '',
|
|
1086
|
+
_classID: 'customEnvelopeWarp',
|
|
1082
1087
|
meshPoints: [
|
|
1083
1088
|
{ type: 'Hrzn', values: meshPoints.map(function (p) { return p.x; }) },
|
|
1084
1089
|
{ type: 'Vrtc', values: meshPoints.map(function (p) { return p.y; }) },
|
|
@@ -1159,7 +1164,7 @@ function pointsToArray(points) {
|
|
|
1159
1164
|
}
|
|
1160
1165
|
return array;
|
|
1161
1166
|
}
|
|
1162
|
-
function
|
|
1167
|
+
function uint8ToPoints(array) {
|
|
1163
1168
|
return arrayToPoints(uint8ToFloat32(array));
|
|
1164
1169
|
}
|
|
1165
1170
|
function hrznVrtcToPoint(desc) {
|
|
@@ -1170,27 +1175,249 @@ function hrznVrtcToPoint(desc) {
|
|
|
1170
1175
|
}
|
|
1171
1176
|
function pointToHrznVrtc(point) {
|
|
1172
1177
|
return {
|
|
1178
|
+
_name: '',
|
|
1179
|
+
_classID: 'Pnt ',
|
|
1173
1180
|
Hrzn: (0, descriptor_1.unitsValue)(point.x, 'x'),
|
|
1174
1181
|
Vrtc: (0, descriptor_1.unitsValue)(point.y, 'y'),
|
|
1175
1182
|
};
|
|
1176
1183
|
}
|
|
1177
|
-
function
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1184
|
+
function parseFilterFXItem(f) {
|
|
1185
|
+
var base = {
|
|
1186
|
+
name: f['Nm '],
|
|
1187
|
+
opacity: (0, descriptor_1.parsePercent)(f.blendOptions.Opct),
|
|
1188
|
+
blendMode: descriptor_1.BlnM.decode(f.blendOptions['Md ']),
|
|
1189
|
+
enabled: f.enab,
|
|
1190
|
+
hasOptions: f.hasoptions,
|
|
1191
|
+
foregroundColor: (0, descriptor_1.parseColor)(f.FrgC),
|
|
1192
|
+
backgroundColor: (0, descriptor_1.parseColor)(f.BckC),
|
|
1193
|
+
};
|
|
1194
|
+
switch (f.filterID) {
|
|
1195
|
+
case 1098281575: return __assign(__assign({}, base), { type: 'average' });
|
|
1196
|
+
case 1114403360: return __assign(__assign({}, base), { type: 'blur' });
|
|
1197
|
+
case 1114403405: return __assign(__assign({}, base), { type: 'blur more' });
|
|
1198
|
+
case 697: return __assign(__assign({}, base), { type: 'box blur', filter: {
|
|
1199
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1200
|
+
} });
|
|
1201
|
+
case 1198747202: return __assign(__assign({}, base), { type: 'gaussian blur', filter: {
|
|
1202
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1203
|
+
} });
|
|
1204
|
+
case 1299476034: return __assign(__assign({}, base), { type: 'motion blur', filter: {
|
|
1205
|
+
angle: f.Fltr.Angl,
|
|
1206
|
+
distance: (0, descriptor_1.parseUnits)(f.Fltr.Dstn),
|
|
1207
|
+
} });
|
|
1208
|
+
case 1382313026: return __assign(__assign({}, base), { type: 'radial blur', filter: {
|
|
1209
|
+
amount: f.Fltr.Amnt,
|
|
1210
|
+
method: descriptor_1.BlrM.decode(f.Fltr.BlrM),
|
|
1211
|
+
quality: descriptor_1.BlrQ.decode(f.Fltr.BlrQ),
|
|
1212
|
+
} });
|
|
1213
|
+
case 702: return __assign(__assign({}, base), { type: 'shape blur', filter: {
|
|
1214
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1215
|
+
customShape: { name: f.Fltr.customShape['Nm '], id: f.Fltr.customShape.Idnt },
|
|
1216
|
+
} });
|
|
1217
|
+
case 1399681602: return __assign(__assign({}, base), { type: 'smart blur', filter: {
|
|
1218
|
+
radius: f.Fltr['Rds '],
|
|
1219
|
+
threshold: f.Fltr.Thsh,
|
|
1220
|
+
quality: descriptor_1.SmBQ.decode(f.Fltr.SmBQ),
|
|
1221
|
+
mode: descriptor_1.SmBM.decode(f.Fltr.SmBM),
|
|
1222
|
+
} });
|
|
1223
|
+
case 701: return __assign(__assign({}, base), { type: 'surface blur', filter: {
|
|
1224
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1225
|
+
threshold: f.Fltr.Thsh,
|
|
1226
|
+
} });
|
|
1227
|
+
case 1148416108: return __assign(__assign({}, base), { type: 'displace', filter: {
|
|
1228
|
+
horizontalScale: f.Fltr.HrzS,
|
|
1229
|
+
verticalScale: f.Fltr.VrtS,
|
|
1230
|
+
displacementMap: descriptor_1.DspM.decode(f.Fltr.DspM),
|
|
1231
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1232
|
+
displacementFile: {
|
|
1233
|
+
signature: f.Fltr.DspF.sig,
|
|
1234
|
+
path: f.Fltr.DspF.path, // TODO: this is decoded incorrectly ???
|
|
1235
|
+
},
|
|
1236
|
+
} });
|
|
1237
|
+
case 1349411688: return __assign(__assign({}, base), { type: 'pinch', filter: {
|
|
1238
|
+
amount: f.Fltr.Amnt,
|
|
1239
|
+
} });
|
|
1240
|
+
case 1349284384: return __assign(__assign({}, base), { type: 'polar coordinates', filter: {
|
|
1241
|
+
conversion: descriptor_1.Cnvr.decode(f.Fltr.Cnvr),
|
|
1242
|
+
} });
|
|
1243
|
+
case 1383099493: return __assign(__assign({}, base), { type: 'ripple', filter: {
|
|
1244
|
+
amount: f.Fltr.Amnt,
|
|
1245
|
+
size: descriptor_1.RplS.decode(f.Fltr.RplS),
|
|
1246
|
+
} });
|
|
1247
|
+
case 1399353888: return __assign(__assign({}, base), { type: 'shear', filter: {
|
|
1248
|
+
shearPoints: f.Fltr.ShrP.map(function (p) { return ({ x: p.Hrzn, y: p.Vrtc }); }),
|
|
1249
|
+
shearStart: f.Fltr.ShrS,
|
|
1250
|
+
shearEnd: f.Fltr.ShrE,
|
|
1251
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1252
|
+
} });
|
|
1253
|
+
case 1399875698: return __assign(__assign({}, base), { type: 'spherize', filter: {
|
|
1254
|
+
amount: f.Fltr.Amnt,
|
|
1255
|
+
mode: descriptor_1.SphM.decode(f.Fltr.SphM),
|
|
1256
|
+
} });
|
|
1257
|
+
case 1417114220: return __assign(__assign({}, base), { type: 'twirl', filter: {
|
|
1258
|
+
angle: f.Fltr.Angl,
|
|
1259
|
+
} });
|
|
1260
|
+
case 1466005093: return __assign(__assign({}, base), { type: 'wave', filter: {
|
|
1261
|
+
numberOfGenerators: f.Fltr.NmbG,
|
|
1262
|
+
type: descriptor_1.Wvtp.decode(f.Fltr.Wvtp),
|
|
1263
|
+
wavelength: { min: f.Fltr.WLMn, max: f.Fltr.WLMx },
|
|
1264
|
+
amplitude: { min: f.Fltr.AmMn, max: f.Fltr.AmMx },
|
|
1265
|
+
scale: { x: f.Fltr.SclH, y: f.Fltr.SclV },
|
|
1266
|
+
randomSeed: f.Fltr.RndS,
|
|
1267
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1268
|
+
} });
|
|
1269
|
+
case 1516722791: return __assign(__assign({}, base), { type: 'zigzag', filter: {
|
|
1270
|
+
amount: f.Fltr.Amnt,
|
|
1271
|
+
ridges: f.Fltr.NmbR,
|
|
1272
|
+
style: descriptor_1.ZZTy.decode(f.Fltr.ZZTy),
|
|
1273
|
+
} });
|
|
1274
|
+
case 1097092723: return __assign(__assign({}, base), { type: 'add noise', filter: {
|
|
1275
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Nose),
|
|
1276
|
+
distribution: descriptor_1.Dstr.decode(f.Fltr.Dstr),
|
|
1277
|
+
monochromatic: f.Fltr.Mnch,
|
|
1278
|
+
randomSeed: f.Fltr.FlRs,
|
|
1279
|
+
} });
|
|
1280
|
+
case 1148416099: return __assign(__assign({}, base), { type: 'despeckle' });
|
|
1281
|
+
case 1148417107: return __assign(__assign({}, base), { type: 'dust and scratches', filter: {
|
|
1282
|
+
radius: f.Fltr['Rds '],
|
|
1283
|
+
threshold: f.Fltr.Thsh,
|
|
1284
|
+
} });
|
|
1285
|
+
case 1298427424: return __assign(__assign({}, base), { type: 'median', filter: {
|
|
1286
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1287
|
+
} });
|
|
1288
|
+
case 633: return __assign(__assign({}, base), { type: 'reduce noise', filter: {
|
|
1289
|
+
preset: f.Fltr.preset,
|
|
1290
|
+
removeJpegArtifact: f.Fltr.removeJPEGArtifact,
|
|
1291
|
+
reduceColorNoise: (0, descriptor_1.parsePercent)(f.Fltr.ClNs),
|
|
1292
|
+
sharpenDetails: (0, descriptor_1.parsePercent)(f.Fltr.Shrp),
|
|
1293
|
+
channelDenoise: f.Fltr.channelDenoise.map(function (c) { return (__assign({ channels: c.Chnl.map(function (i) { return descriptor_1.Chnl.decode(i); }), amount: c.Amnt }, (c.EdgF ? { preserveDetails: c.EdgF } : {}))); }),
|
|
1294
|
+
} });
|
|
1295
|
+
case 1131180616: return __assign(__assign({}, base), { type: 'color halftone', filter: {
|
|
1296
|
+
radius: f.Fltr['Rds '],
|
|
1297
|
+
angle1: f.Fltr.Ang1,
|
|
1298
|
+
angle2: f.Fltr.Ang2,
|
|
1299
|
+
angle3: f.Fltr.Ang3,
|
|
1300
|
+
angle4: f.Fltr.Ang4,
|
|
1301
|
+
} });
|
|
1302
|
+
case 1131574132: return __assign(__assign({}, base), { type: 'crystallize', filter: {
|
|
1303
|
+
cellSize: f.Fltr.ClSz,
|
|
1304
|
+
randomSeed: f.Fltr.FlRs,
|
|
1305
|
+
} });
|
|
1306
|
+
case 1180922912: return __assign(__assign({}, base), { type: 'facet' });
|
|
1307
|
+
case 1181902701: return __assign(__assign({}, base), { type: 'fragment' });
|
|
1308
|
+
case 1299870830: return __assign(__assign({}, base), { type: 'mezzotint', filter: {
|
|
1309
|
+
type: descriptor_1.MztT.decode(f.Fltr.MztT),
|
|
1310
|
+
randomSeed: f.Fltr.FlRs,
|
|
1311
|
+
} });
|
|
1312
|
+
case 1299407648: return __assign(__assign({}, base), { type: 'mosaic', filter: {
|
|
1313
|
+
cellSize: (0, descriptor_1.parseUnits)(f.Fltr.ClSz),
|
|
1314
|
+
} });
|
|
1315
|
+
case 1349416044: return __assign(__assign({}, base), { type: 'pointillize', filter: {
|
|
1316
|
+
cellSize: f.Fltr.ClSz,
|
|
1317
|
+
randomSeed: f.Fltr.FlRs,
|
|
1318
|
+
} });
|
|
1319
|
+
case 1131177075: return __assign(__assign({}, base), { type: 'clouds', filter: {
|
|
1320
|
+
randomSeed: f.Fltr.FlRs,
|
|
1321
|
+
} });
|
|
1322
|
+
case 1147564611: return __assign(__assign({}, base), { type: 'difference clouds', filter: {
|
|
1323
|
+
randomSeed: f.Fltr.FlRs,
|
|
1324
|
+
} });
|
|
1325
|
+
case 1180856947: return __assign(__assign({}, base), { type: 'fibers', filter: {
|
|
1326
|
+
variance: f.Fltr.Vrnc,
|
|
1327
|
+
strength: f.Fltr.Strg,
|
|
1328
|
+
randomSeed: f.Fltr.RndS,
|
|
1329
|
+
} });
|
|
1330
|
+
case 1282306886: return __assign(__assign({}, base), { type: 'lens flare', filter: {
|
|
1331
|
+
brightness: f.Fltr.Brgh,
|
|
1332
|
+
position: { x: f.Fltr.FlrC.Hrzn, y: f.Fltr.FlrC.Vrtc },
|
|
1333
|
+
lensType: descriptor_1.Lns.decode(f.Fltr['Lns ']),
|
|
1334
|
+
} });
|
|
1335
|
+
case 1399353968: return __assign(__assign({}, base), { type: 'sharpen' });
|
|
1336
|
+
case 1399353925: return __assign(__assign({}, base), { type: 'sharpen edges' });
|
|
1337
|
+
case 1399353933: return __assign(__assign({}, base), { type: 'sharpen more' });
|
|
1338
|
+
case 698: return __assign(__assign({}, base), { type: 'smart sharpen', filter: {
|
|
1339
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Amnt),
|
|
1340
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1341
|
+
threshold: f.Fltr.Thsh,
|
|
1342
|
+
angle: f.Fltr.Angl,
|
|
1343
|
+
moreAccurate: f.Fltr.moreAccurate,
|
|
1344
|
+
blur: descriptor_1.blurType.decode(f.Fltr.blur),
|
|
1345
|
+
preset: f.Fltr.preset,
|
|
1346
|
+
shadow: {
|
|
1347
|
+
fadeAmount: (0, descriptor_1.parsePercent)(f.Fltr.sdwM.Amnt),
|
|
1348
|
+
tonalWidth: (0, descriptor_1.parsePercent)(f.Fltr.sdwM.Wdth),
|
|
1349
|
+
radius: f.Fltr.sdwM['Rds '],
|
|
1350
|
+
},
|
|
1351
|
+
highlight: {
|
|
1352
|
+
fadeAmount: (0, descriptor_1.parsePercent)(f.Fltr.hglM.Amnt),
|
|
1353
|
+
tonalWidth: (0, descriptor_1.parsePercent)(f.Fltr.hglM.Wdth),
|
|
1354
|
+
radius: f.Fltr.hglM['Rds '],
|
|
1355
|
+
},
|
|
1356
|
+
} });
|
|
1357
|
+
case 1433301837: return __assign(__assign({}, base), { type: 'unsharp mask', filter: {
|
|
1358
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Amnt),
|
|
1359
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1360
|
+
threshold: f.Fltr.Thsh,
|
|
1361
|
+
} });
|
|
1362
|
+
case 1147564832: return __assign(__assign({}, base), { type: 'diffuse', filter: {
|
|
1363
|
+
mode: descriptor_1.DfsM.decode(f.Fltr['Md ']),
|
|
1364
|
+
randomSeed: f.Fltr.FlRs,
|
|
1365
|
+
} });
|
|
1366
|
+
case 1164796531: return __assign(__assign({}, base), { type: 'emboss', filter: {
|
|
1367
|
+
angle: f.Fltr.Angl,
|
|
1368
|
+
height: f.Fltr.Hght,
|
|
1369
|
+
amount: f.Fltr.Amnt,
|
|
1370
|
+
} });
|
|
1371
|
+
case 1165522034: return __assign(__assign({}, base), { type: 'extrude', filter: {
|
|
1372
|
+
type: descriptor_1.ExtT.decode(f.Fltr.ExtT),
|
|
1373
|
+
size: f.Fltr.ExtS,
|
|
1374
|
+
depth: f.Fltr.ExtD,
|
|
1375
|
+
depthMode: descriptor_1.ExtR.decode(f.Fltr.ExtR),
|
|
1376
|
+
randomSeed: f.Fltr.FlRs,
|
|
1377
|
+
solidFrontFaces: f.Fltr.ExtF,
|
|
1378
|
+
maskIncompleteBlocks: f.Fltr.ExtM,
|
|
1379
|
+
} });
|
|
1380
|
+
case 1181639749: return __assign(__assign({}, base), { type: 'find edges' });
|
|
1381
|
+
case 1399616122: return __assign(__assign({}, base), { type: 'solarize' });
|
|
1382
|
+
case 1416393504: return __assign(__assign({}, base), { type: 'tiles', filter: {
|
|
1383
|
+
numberOfTiles: f.Fltr.TlNm,
|
|
1384
|
+
maximumOffset: f.Fltr.TlOf,
|
|
1385
|
+
fillEmptyAreaWith: descriptor_1.FlCl.decode(f.Fltr.FlCl),
|
|
1386
|
+
randomSeed: f.Fltr.FlRs,
|
|
1387
|
+
} });
|
|
1388
|
+
case 1416782659: return __assign(__assign({}, base), { type: 'trace contour', filter: {
|
|
1389
|
+
level: f.Fltr['Lvl '],
|
|
1390
|
+
edge: descriptor_1.CntE.decode(f.Fltr['Edg ']),
|
|
1391
|
+
} });
|
|
1392
|
+
case 1466852384: return __assign(__assign({}, base), { type: 'wind', filter: {
|
|
1393
|
+
method: descriptor_1.WndM.decode(f.Fltr.WndM),
|
|
1394
|
+
direction: descriptor_1.Drct.decode(f.Fltr.Drct),
|
|
1395
|
+
} });
|
|
1396
|
+
case 1148089458: return __assign(__assign({}, base), { type: 'de-interlace', filter: {
|
|
1397
|
+
eliminate: descriptor_1.IntE.decode(f.Fltr.IntE),
|
|
1398
|
+
newFieldsBy: descriptor_1.IntC.decode(f.Fltr.IntC),
|
|
1399
|
+
} });
|
|
1400
|
+
case 1314149187: return __assign(__assign({}, base), { type: 'ntsc colors' });
|
|
1401
|
+
case 1131639917: return __assign(__assign({}, base), { type: 'custom', filter: {
|
|
1402
|
+
scale: f.Fltr['Scl '],
|
|
1403
|
+
offset: f.Fltr.Ofst,
|
|
1404
|
+
matrix: f.Fltr.Mtrx,
|
|
1405
|
+
} });
|
|
1406
|
+
case 1214736464: return __assign(__assign({}, base), { type: 'high pass', filter: {
|
|
1407
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1408
|
+
} });
|
|
1409
|
+
case 1299737888: return __assign(__assign({}, base), { type: 'maximum', filter: {
|
|
1410
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1411
|
+
} });
|
|
1412
|
+
case 1299082528: return __assign(__assign({}, base), { type: 'minimum', filter: {
|
|
1413
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1414
|
+
} });
|
|
1415
|
+
case 1332114292: return __assign(__assign({}, base), { type: 'offset', filter: {
|
|
1416
|
+
horizontal: f.Fltr.Hrzn,
|
|
1417
|
+
vertical: f.Fltr.Vrtc,
|
|
1418
|
+
undefinedAreas: descriptor_1.FlMd.decode(f.Fltr['Fl ']),
|
|
1419
|
+
} });
|
|
1420
|
+
case 991: return __assign(__assign({}, base), { type: 'puppet', filter: {
|
|
1194
1421
|
rigidType: f.Fltr.rigidType,
|
|
1195
1422
|
bounds: [
|
|
1196
1423
|
{ x: f.Fltr.PuX0, y: f.Fltr.PuY0, },
|
|
@@ -1202,8 +1429,8 @@ function parseFilterFX(desc) {
|
|
|
1202
1429
|
rigidType: p.rigidType,
|
|
1203
1430
|
// TODO: VrsM
|
|
1204
1431
|
// TODO: VrsN
|
|
1205
|
-
originalVertexArray:
|
|
1206
|
-
deformedVertexArray:
|
|
1432
|
+
originalVertexArray: uint8ToPoints(p.originalVertexArray),
|
|
1433
|
+
deformedVertexArray: uint8ToPoints(p.deformedVertexArray),
|
|
1207
1434
|
indexArray: Array.from(uint8ToUint32(p.indexArray)),
|
|
1208
1435
|
pinOffsets: arrayToPoints(p.pinOffsets),
|
|
1209
1436
|
posFinalPins: arrayToPoints(p.posFinalPins),
|
|
@@ -1232,31 +1459,429 @@ function parseFilterFX(desc) {
|
|
|
1232
1459
|
}); }),
|
|
1233
1460
|
},
|
|
1234
1461
|
}); }),
|
|
1235
|
-
}
|
|
1236
|
-
|
|
1237
|
-
|
|
1462
|
+
} });
|
|
1463
|
+
case 1348620396: {
|
|
1464
|
+
var parameters = [];
|
|
1465
|
+
var Flrt = f.Fltr;
|
|
1466
|
+
for (var i = 0; i < fromAtoZ.length; i++) {
|
|
1467
|
+
if (!Flrt["PN".concat(fromAtoZ[i], "a")])
|
|
1468
|
+
break;
|
|
1469
|
+
for (var j = 0; j < fromAtoZ.length; j++) {
|
|
1470
|
+
if (!Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])])
|
|
1471
|
+
break;
|
|
1472
|
+
parameters.push({
|
|
1473
|
+
name: Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])],
|
|
1474
|
+
value: Flrt["PF".concat(fromAtoZ[i]).concat(fromAtoZ[j])]
|
|
1475
|
+
});
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
return __assign(__assign({}, base), { type: 'oil paint plugin', filter: {
|
|
1479
|
+
name: f.Fltr.KnNm,
|
|
1480
|
+
gpu: f.Fltr.GpuY,
|
|
1481
|
+
lighting: f.Fltr.LIWy,
|
|
1482
|
+
parameters: parameters,
|
|
1483
|
+
} });
|
|
1484
|
+
}
|
|
1485
|
+
// case 2089: return {
|
|
1486
|
+
// ...base,
|
|
1487
|
+
// type: 'adaptive wide angle',
|
|
1488
|
+
// params: {
|
|
1489
|
+
// correction: prjM.decode(f.Fltr.prjM),
|
|
1490
|
+
// focalLength: f.Fltr.focL,
|
|
1491
|
+
// cropFactor: f.Fltr.CrpF,
|
|
1492
|
+
// imageScale: f.Fltr.imgS,
|
|
1493
|
+
// imageX: f.Fltr.imgX,
|
|
1494
|
+
// imageY: f.Fltr.imgY,
|
|
1495
|
+
// },
|
|
1496
|
+
// };
|
|
1497
|
+
case 1215521360: return __assign(__assign({}, base), { type: 'hsb/hsl', filter: {
|
|
1498
|
+
inputMode: descriptor_1.ClrS.decode(f.Fltr.Inpt),
|
|
1499
|
+
rowOrder: descriptor_1.ClrS.decode(f.Fltr.Otpt),
|
|
1500
|
+
} });
|
|
1501
|
+
case 1122: return __assign(__assign({}, base), { type: 'oil paint', filter: {
|
|
1502
|
+
lightingOn: f.Fltr.lightingOn,
|
|
1503
|
+
stylization: f.Fltr.stylization,
|
|
1504
|
+
cleanliness: f.Fltr.cleanliness,
|
|
1505
|
+
brushScale: f.Fltr.brushScale,
|
|
1506
|
+
microBrush: f.Fltr.microBrush,
|
|
1507
|
+
lightDirection: f.Fltr.LghD,
|
|
1508
|
+
specularity: f.Fltr.specularity,
|
|
1509
|
+
} });
|
|
1510
|
+
case 1282492025: {
|
|
1511
|
+
return __assign(__assign({}, base), { type: 'liquify', filter: {
|
|
1512
|
+
liquifyMesh: f.Fltr.LqMe,
|
|
1513
|
+
} });
|
|
1514
|
+
}
|
|
1515
|
+
default:
|
|
1516
|
+
throw new Error("Unknown filterID: ".concat(f.filterID));
|
|
1517
|
+
}
|
|
1238
1518
|
}
|
|
1239
|
-
function
|
|
1519
|
+
function parseFilterFX(desc) {
|
|
1240
1520
|
return {
|
|
1241
|
-
|
|
1242
|
-
validAtPosition:
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1521
|
+
enabled: desc.enab,
|
|
1522
|
+
validAtPosition: desc.validAtPosition,
|
|
1523
|
+
maskEnabled: desc.filterMaskEnable,
|
|
1524
|
+
maskLinked: desc.filterMaskLinked,
|
|
1525
|
+
maskExtendWithWhite: desc.filterMaskExtendWithWhite,
|
|
1526
|
+
list: desc.filterFXList.map(parseFilterFXItem),
|
|
1527
|
+
};
|
|
1528
|
+
}
|
|
1529
|
+
function uvRadius(t) {
|
|
1530
|
+
return (0, descriptor_1.unitsValue)(t.radius, 'radius');
|
|
1531
|
+
}
|
|
1532
|
+
function serializeFilterFXItem(f) {
|
|
1533
|
+
var base = {
|
|
1534
|
+
_name: '',
|
|
1535
|
+
_classID: 'filterFX',
|
|
1536
|
+
'Nm ': f.name,
|
|
1537
|
+
blendOptions: {
|
|
1538
|
+
_name: '',
|
|
1539
|
+
_classID: 'blendOptions',
|
|
1540
|
+
Opct: (0, descriptor_1.unitsPercentF)(f.opacity),
|
|
1541
|
+
'Md ': descriptor_1.BlnM.encode(f.blendMode),
|
|
1542
|
+
},
|
|
1543
|
+
enab: f.enabled,
|
|
1544
|
+
hasoptions: f.hasOptions,
|
|
1545
|
+
FrgC: (0, descriptor_1.serializeColor)(f.foregroundColor),
|
|
1546
|
+
BckC: (0, descriptor_1.serializeColor)(f.backgroundColor),
|
|
1547
|
+
};
|
|
1548
|
+
switch (f.type) {
|
|
1549
|
+
case 'average': return __assign(__assign({}, base), { filterID: 1098281575 });
|
|
1550
|
+
case 'blur': return __assign(__assign({}, base), { filterID: 1114403360 });
|
|
1551
|
+
case 'blur more': return __assign(__assign({}, base), { filterID: 1114403405 });
|
|
1552
|
+
case 'box blur': return __assign(__assign({}, base), { Fltr: {
|
|
1553
|
+
_name: 'Box Blur',
|
|
1554
|
+
_classID: 'boxblur',
|
|
1555
|
+
'Rds ': uvRadius(f.filter),
|
|
1556
|
+
}, filterID: 697 });
|
|
1557
|
+
case 'gaussian blur': return __assign(__assign({}, base), { Fltr: {
|
|
1558
|
+
_name: 'Gaussian Blur',
|
|
1559
|
+
_classID: 'GsnB',
|
|
1560
|
+
'Rds ': uvRadius(f.filter),
|
|
1561
|
+
}, filterID: 1198747202 });
|
|
1562
|
+
case 'motion blur': return __assign(__assign({}, base), { Fltr: {
|
|
1563
|
+
_name: 'Motion Blur',
|
|
1564
|
+
_classID: 'MtnB',
|
|
1565
|
+
Angl: f.filter.angle,
|
|
1566
|
+
Dstn: (0, descriptor_1.unitsValue)(f.filter.distance, 'distance'),
|
|
1567
|
+
}, filterID: 1299476034 });
|
|
1568
|
+
case 'radial blur': return __assign(__assign({}, base), { Fltr: {
|
|
1569
|
+
_name: 'Radial Blur',
|
|
1570
|
+
_classID: 'RdlB',
|
|
1571
|
+
Amnt: f.filter.amount,
|
|
1572
|
+
BlrM: descriptor_1.BlrM.encode(f.filter.method),
|
|
1573
|
+
BlrQ: descriptor_1.BlrQ.encode(f.filter.quality),
|
|
1574
|
+
}, filterID: 1382313026 });
|
|
1575
|
+
case 'shape blur': return __assign(__assign({}, base), { Fltr: {
|
|
1576
|
+
_name: 'Shape Blur',
|
|
1577
|
+
_classID: 'shapeBlur',
|
|
1578
|
+
'Rds ': uvRadius(f.filter),
|
|
1579
|
+
customShape: {
|
|
1580
|
+
_name: '',
|
|
1581
|
+
_classID: 'customShape',
|
|
1582
|
+
'Nm ': f.filter.customShape.name,
|
|
1583
|
+
Idnt: f.filter.customShape.id,
|
|
1584
|
+
}
|
|
1585
|
+
}, filterID: 702 });
|
|
1586
|
+
case 'smart blur': return __assign(__assign({}, base), { Fltr: {
|
|
1587
|
+
_name: 'Smart Blur',
|
|
1588
|
+
_classID: 'SmrB',
|
|
1589
|
+
'Rds ': f.filter.radius,
|
|
1590
|
+
Thsh: f.filter.threshold,
|
|
1591
|
+
SmBQ: descriptor_1.SmBQ.encode(f.filter.quality),
|
|
1592
|
+
SmBM: descriptor_1.SmBM.encode(f.filter.mode),
|
|
1593
|
+
}, filterID: 1399681602 });
|
|
1594
|
+
case 'surface blur': return __assign(__assign({}, base), { Fltr: {
|
|
1595
|
+
_name: 'Surface Blur',
|
|
1596
|
+
_classID: 'surfaceBlur',
|
|
1597
|
+
'Rds ': uvRadius(f.filter),
|
|
1598
|
+
Thsh: f.filter.threshold,
|
|
1599
|
+
}, filterID: 701 });
|
|
1600
|
+
case 'displace': return __assign(__assign({}, base), { Fltr: {
|
|
1601
|
+
_name: 'Displace',
|
|
1602
|
+
_classID: 'Dspl',
|
|
1603
|
+
HrzS: f.filter.horizontalScale,
|
|
1604
|
+
VrtS: f.filter.verticalScale,
|
|
1605
|
+
DspM: descriptor_1.DspM.encode(f.filter.displacementMap),
|
|
1606
|
+
UndA: descriptor_1.UndA.encode(f.filter.undefinedAreas),
|
|
1607
|
+
DspF: {
|
|
1608
|
+
sig: f.filter.displacementFile.signature,
|
|
1609
|
+
path: f.filter.displacementFile.path,
|
|
1610
|
+
},
|
|
1611
|
+
}, filterID: 1148416108 });
|
|
1612
|
+
case 'pinch': return __assign(__assign({}, base), { Fltr: {
|
|
1613
|
+
_name: 'Pinch',
|
|
1614
|
+
_classID: 'Pnch',
|
|
1615
|
+
Amnt: f.filter.amount,
|
|
1616
|
+
}, filterID: 1349411688 });
|
|
1617
|
+
case 'polar coordinates': return __assign(__assign({}, base), { Fltr: {
|
|
1618
|
+
_name: 'Polar Coordinates',
|
|
1619
|
+
_classID: 'Plr ',
|
|
1620
|
+
Cnvr: descriptor_1.Cnvr.encode(f.filter.conversion),
|
|
1621
|
+
}, filterID: 1349284384 });
|
|
1622
|
+
case 'ripple': return __assign(__assign({}, base), { Fltr: {
|
|
1623
|
+
_name: 'Ripple',
|
|
1624
|
+
_classID: 'Rple',
|
|
1625
|
+
Amnt: f.filter.amount,
|
|
1626
|
+
RplS: descriptor_1.RplS.encode(f.filter.size),
|
|
1627
|
+
}, filterID: 1383099493 });
|
|
1628
|
+
case 'shear': return __assign(__assign({}, base), { Fltr: {
|
|
1629
|
+
_name: 'Shear',
|
|
1630
|
+
_classID: 'Shr ',
|
|
1631
|
+
ShrP: f.filter.shearPoints.map(function (p) { return ({ _name: '', _classID: 'Pnt ', Hrzn: p.x, Vrtc: p.y }); }),
|
|
1632
|
+
UndA: descriptor_1.UndA.encode(f.filter.undefinedAreas),
|
|
1633
|
+
ShrS: f.filter.shearStart,
|
|
1634
|
+
ShrE: f.filter.shearEnd,
|
|
1635
|
+
}, filterID: 1399353888 });
|
|
1636
|
+
case 'spherize': return __assign(__assign({}, base), { Fltr: {
|
|
1637
|
+
_name: 'Spherize',
|
|
1638
|
+
_classID: 'Sphr',
|
|
1639
|
+
Amnt: f.filter.amount,
|
|
1640
|
+
SphM: descriptor_1.SphM.encode(f.filter.mode),
|
|
1641
|
+
}, filterID: 1399875698 });
|
|
1642
|
+
case 'twirl': return __assign(__assign({}, base), { Fltr: {
|
|
1643
|
+
_name: 'Twirl',
|
|
1644
|
+
_classID: 'Twrl',
|
|
1645
|
+
Angl: f.filter.angle,
|
|
1646
|
+
}, filterID: 1417114220 });
|
|
1647
|
+
case 'wave': return __assign(__assign({}, base), { Fltr: {
|
|
1648
|
+
_name: 'Wave',
|
|
1649
|
+
_classID: 'Wave',
|
|
1650
|
+
Wvtp: descriptor_1.Wvtp.encode(f.filter.type),
|
|
1651
|
+
NmbG: f.filter.numberOfGenerators,
|
|
1652
|
+
WLMn: f.filter.wavelength.min,
|
|
1653
|
+
WLMx: f.filter.wavelength.max,
|
|
1654
|
+
AmMn: f.filter.amplitude.min,
|
|
1655
|
+
AmMx: f.filter.amplitude.max,
|
|
1656
|
+
SclH: f.filter.scale.x,
|
|
1657
|
+
SclV: f.filter.scale.y,
|
|
1658
|
+
UndA: descriptor_1.UndA.encode(f.filter.undefinedAreas),
|
|
1659
|
+
RndS: f.filter.randomSeed,
|
|
1660
|
+
}, filterID: 1466005093 });
|
|
1661
|
+
case 'zigzag': return __assign(__assign({}, base), { Fltr: {
|
|
1662
|
+
_name: 'ZigZag',
|
|
1663
|
+
_classID: 'ZgZg',
|
|
1664
|
+
Amnt: f.filter.amount,
|
|
1665
|
+
NmbR: f.filter.ridges,
|
|
1666
|
+
ZZTy: descriptor_1.ZZTy.encode(f.filter.style),
|
|
1667
|
+
}, filterID: 1516722791 });
|
|
1668
|
+
case 'add noise': return __assign(__assign({}, base), { Fltr: {
|
|
1669
|
+
_name: 'Add Noise',
|
|
1670
|
+
_classID: 'AdNs',
|
|
1671
|
+
Dstr: descriptor_1.Dstr.encode(f.filter.distribution),
|
|
1672
|
+
Nose: (0, descriptor_1.unitsPercentF)(f.filter.amount),
|
|
1673
|
+
Mnch: f.filter.monochromatic,
|
|
1674
|
+
FlRs: f.filter.randomSeed,
|
|
1675
|
+
}, filterID: 1097092723 });
|
|
1676
|
+
case 'despeckle': return __assign(__assign({}, base), { filterID: 1148416099 });
|
|
1677
|
+
case 'dust and scratches': return __assign(__assign({}, base), { Fltr: {
|
|
1678
|
+
_name: 'Dust & Scratches',
|
|
1679
|
+
_classID: 'DstS',
|
|
1680
|
+
'Rds ': f.filter.radius,
|
|
1681
|
+
Thsh: f.filter.threshold,
|
|
1682
|
+
}, filterID: 1148417107 });
|
|
1683
|
+
case 'median': return __assign(__assign({}, base), { Fltr: {
|
|
1684
|
+
_name: 'Median',
|
|
1685
|
+
_classID: 'Mdn ',
|
|
1686
|
+
'Rds ': uvRadius(f.filter),
|
|
1687
|
+
}, filterID: 1298427424 });
|
|
1688
|
+
case 'reduce noise': return __assign(__assign({}, base), { Fltr: {
|
|
1689
|
+
_name: 'Reduce Noise',
|
|
1690
|
+
_classID: 'denoise',
|
|
1691
|
+
ClNs: (0, descriptor_1.unitsPercentF)(f.filter.reduceColorNoise),
|
|
1692
|
+
Shrp: (0, descriptor_1.unitsPercentF)(f.filter.sharpenDetails),
|
|
1693
|
+
removeJPEGArtifact: f.filter.removeJpegArtifact,
|
|
1694
|
+
channelDenoise: f.filter.channelDenoise.map(function (c) { return (__assign({ _name: '', _classID: 'channelDenoiseParams', Chnl: c.channels.map(function (i) { return descriptor_1.Chnl.encode(i); }), Amnt: c.amount }, (c.preserveDetails ? { EdgF: c.preserveDetails } : {}))); }),
|
|
1695
|
+
preset: f.filter.preset,
|
|
1696
|
+
}, filterID: 633 });
|
|
1697
|
+
case 'color halftone': return __assign(__assign({}, base), { Fltr: {
|
|
1698
|
+
_name: 'Color Halftone',
|
|
1699
|
+
_classID: 'ClrH',
|
|
1700
|
+
'Rds ': f.filter.radius,
|
|
1701
|
+
Ang1: f.filter.angle1,
|
|
1702
|
+
Ang2: f.filter.angle2,
|
|
1703
|
+
Ang3: f.filter.angle3,
|
|
1704
|
+
Ang4: f.filter.angle4,
|
|
1705
|
+
}, filterID: 1131180616 });
|
|
1706
|
+
case 'crystallize': return __assign(__assign({}, base), { Fltr: {
|
|
1707
|
+
_name: 'Crystallize',
|
|
1708
|
+
_classID: 'Crst',
|
|
1709
|
+
ClSz: f.filter.cellSize,
|
|
1710
|
+
FlRs: f.filter.randomSeed,
|
|
1711
|
+
}, filterID: 1131574132 });
|
|
1712
|
+
case 'facet': return __assign(__assign({}, base), { filterID: 1180922912 });
|
|
1713
|
+
case 'fragment': return __assign(__assign({}, base), { filterID: 1181902701 });
|
|
1714
|
+
case 'mezzotint': return __assign(__assign({}, base), { Fltr: {
|
|
1715
|
+
_name: 'Mezzotint',
|
|
1716
|
+
_classID: 'Mztn',
|
|
1717
|
+
MztT: descriptor_1.MztT.encode(f.filter.type),
|
|
1718
|
+
FlRs: f.filter.randomSeed,
|
|
1719
|
+
}, filterID: 1299870830 });
|
|
1720
|
+
case 'mosaic': return __assign(__assign({}, base), { Fltr: {
|
|
1721
|
+
_name: 'Mosaic',
|
|
1722
|
+
_classID: 'Msc ',
|
|
1723
|
+
ClSz: (0, descriptor_1.unitsValue)(f.filter.cellSize, 'cellSize'),
|
|
1724
|
+
}, filterID: 1299407648 });
|
|
1725
|
+
case 'pointillize': return __assign(__assign({}, base), { Fltr: {
|
|
1726
|
+
_name: 'Pointillize',
|
|
1727
|
+
_classID: 'Pntl',
|
|
1728
|
+
ClSz: f.filter.cellSize,
|
|
1729
|
+
FlRs: f.filter.randomSeed,
|
|
1730
|
+
}, filterID: 1349416044 });
|
|
1731
|
+
case 'clouds': return __assign(__assign({}, base), { Fltr: {
|
|
1732
|
+
_name: 'Clouds',
|
|
1733
|
+
_classID: 'Clds',
|
|
1734
|
+
FlRs: f.filter.randomSeed,
|
|
1735
|
+
}, filterID: 1131177075 });
|
|
1736
|
+
case 'difference clouds': return __assign(__assign({}, base), { Fltr: {
|
|
1737
|
+
_name: 'Difference Clouds',
|
|
1738
|
+
_classID: 'DfrC',
|
|
1739
|
+
FlRs: f.filter.randomSeed,
|
|
1740
|
+
}, filterID: 1147564611 });
|
|
1741
|
+
case 'fibers': return __assign(__assign({}, base), { Fltr: {
|
|
1742
|
+
_name: 'Fibers',
|
|
1743
|
+
_classID: 'Fbrs',
|
|
1744
|
+
Vrnc: f.filter.variance,
|
|
1745
|
+
Strg: f.filter.strength,
|
|
1746
|
+
RndS: f.filter.randomSeed,
|
|
1747
|
+
}, filterID: 1180856947 });
|
|
1748
|
+
case 'lens flare': return __assign(__assign({}, base), { Fltr: {
|
|
1749
|
+
_name: 'Lens Flare',
|
|
1750
|
+
_classID: 'LnsF',
|
|
1751
|
+
Brgh: f.filter.brightness,
|
|
1752
|
+
FlrC: {
|
|
1753
|
+
_name: '',
|
|
1754
|
+
_classID: 'Pnt ',
|
|
1755
|
+
Hrzn: f.filter.position.x,
|
|
1756
|
+
Vrtc: f.filter.position.y,
|
|
1757
|
+
},
|
|
1758
|
+
'Lns ': descriptor_1.Lns.encode(f.filter.lensType),
|
|
1759
|
+
}, filterID: 1282306886 });
|
|
1760
|
+
case 'sharpen': return __assign(__assign({}, base), { filterID: 1399353968 });
|
|
1761
|
+
case 'sharpen edges': return __assign(__assign({}, base), { filterID: 1399353925 });
|
|
1762
|
+
case 'sharpen more': return __assign(__assign({}, base), { filterID: 1399353933 });
|
|
1763
|
+
case 'smart sharpen': return __assign(__assign({}, base), { Fltr: {
|
|
1764
|
+
_name: 'Smart Sharpen',
|
|
1765
|
+
_classID: 'smartSharpen',
|
|
1766
|
+
Amnt: (0, descriptor_1.unitsPercentF)(f.filter.amount),
|
|
1767
|
+
'Rds ': uvRadius(f.filter),
|
|
1768
|
+
Thsh: f.filter.threshold,
|
|
1769
|
+
Angl: f.filter.angle,
|
|
1770
|
+
moreAccurate: f.filter.moreAccurate,
|
|
1771
|
+
blur: descriptor_1.blurType.encode(f.filter.blur),
|
|
1772
|
+
preset: f.filter.preset,
|
|
1773
|
+
sdwM: {
|
|
1774
|
+
_name: 'Parameters',
|
|
1775
|
+
_classID: 'adaptCorrectTones',
|
|
1776
|
+
Amnt: (0, descriptor_1.unitsPercentF)(f.filter.shadow.fadeAmount),
|
|
1777
|
+
Wdth: (0, descriptor_1.unitsPercentF)(f.filter.shadow.tonalWidth),
|
|
1778
|
+
'Rds ': f.filter.shadow.radius,
|
|
1779
|
+
},
|
|
1780
|
+
hglM: {
|
|
1781
|
+
_name: 'Parameters',
|
|
1782
|
+
_classID: 'adaptCorrectTones',
|
|
1783
|
+
Amnt: (0, descriptor_1.unitsPercentF)(f.filter.highlight.fadeAmount),
|
|
1784
|
+
Wdth: (0, descriptor_1.unitsPercentF)(f.filter.highlight.tonalWidth),
|
|
1785
|
+
'Rds ': f.filter.highlight.radius,
|
|
1786
|
+
},
|
|
1787
|
+
}, filterID: 698 });
|
|
1788
|
+
case 'unsharp mask': return __assign(__assign({}, base), { Fltr: {
|
|
1789
|
+
_name: 'Unsharp Mask',
|
|
1790
|
+
_classID: 'UnsM',
|
|
1791
|
+
Amnt: (0, descriptor_1.unitsPercentF)(f.filter.amount),
|
|
1792
|
+
'Rds ': uvRadius(f.filter),
|
|
1793
|
+
Thsh: f.filter.threshold,
|
|
1794
|
+
}, filterID: 1433301837 });
|
|
1795
|
+
case 'diffuse': return __assign(__assign({}, base), { Fltr: {
|
|
1796
|
+
_name: 'Diffuse',
|
|
1797
|
+
_classID: 'Dfs ',
|
|
1798
|
+
'Md ': descriptor_1.DfsM.encode(f.filter.mode),
|
|
1799
|
+
FlRs: f.filter.randomSeed,
|
|
1800
|
+
}, filterID: 1147564832 });
|
|
1801
|
+
case 'emboss': return __assign(__assign({}, base), { Fltr: {
|
|
1802
|
+
_name: 'Emboss',
|
|
1803
|
+
_classID: 'Embs',
|
|
1804
|
+
Angl: f.filter.angle,
|
|
1805
|
+
Hght: f.filter.height,
|
|
1806
|
+
Amnt: f.filter.amount,
|
|
1807
|
+
}, filterID: 1164796531 });
|
|
1808
|
+
case 'extrude': return __assign(__assign({}, base), { Fltr: {
|
|
1809
|
+
_name: 'Extrude',
|
|
1810
|
+
_classID: 'Extr',
|
|
1811
|
+
ExtS: f.filter.size,
|
|
1812
|
+
ExtD: f.filter.depth,
|
|
1813
|
+
ExtF: f.filter.solidFrontFaces,
|
|
1814
|
+
ExtM: f.filter.maskIncompleteBlocks,
|
|
1815
|
+
ExtT: descriptor_1.ExtT.encode(f.filter.type),
|
|
1816
|
+
ExtR: descriptor_1.ExtR.encode(f.filter.depthMode),
|
|
1817
|
+
FlRs: f.filter.randomSeed,
|
|
1818
|
+
}, filterID: 1165522034 });
|
|
1819
|
+
case 'find edges': return __assign(__assign({}, base), { filterID: 1181639749 });
|
|
1820
|
+
case 'solarize': return __assign(__assign({}, base), { filterID: 1399616122 });
|
|
1821
|
+
case 'tiles': return __assign(__assign({}, base), { Fltr: {
|
|
1822
|
+
_name: 'Tiles',
|
|
1823
|
+
_classID: 'Tls ',
|
|
1824
|
+
TlNm: f.filter.numberOfTiles,
|
|
1825
|
+
TlOf: f.filter.maximumOffset,
|
|
1826
|
+
FlCl: descriptor_1.FlCl.encode(f.filter.fillEmptyAreaWith),
|
|
1827
|
+
FlRs: f.filter.randomSeed,
|
|
1828
|
+
}, filterID: 1416393504 });
|
|
1829
|
+
case 'trace contour': return __assign(__assign({}, base), { Fltr: {
|
|
1830
|
+
_name: 'Trace Contour',
|
|
1831
|
+
_classID: 'TrcC',
|
|
1832
|
+
'Lvl ': f.filter.level,
|
|
1833
|
+
'Edg ': descriptor_1.CntE.encode(f.filter.edge),
|
|
1834
|
+
}, filterID: 1416782659 });
|
|
1835
|
+
case 'wind': return __assign(__assign({}, base), { Fltr: {
|
|
1836
|
+
_name: 'Wind',
|
|
1837
|
+
_classID: 'Wnd ',
|
|
1838
|
+
WndM: descriptor_1.WndM.encode(f.filter.method),
|
|
1839
|
+
Drct: descriptor_1.Drct.encode(f.filter.direction),
|
|
1840
|
+
}, filterID: 1466852384 });
|
|
1841
|
+
case 'de-interlace': return __assign(__assign({}, base), { Fltr: {
|
|
1842
|
+
_name: 'De-Interlace',
|
|
1843
|
+
_classID: 'Dntr',
|
|
1844
|
+
IntE: descriptor_1.IntE.encode(f.filter.eliminate),
|
|
1845
|
+
IntC: descriptor_1.IntC.encode(f.filter.newFieldsBy),
|
|
1846
|
+
}, filterID: 1148089458 });
|
|
1847
|
+
case 'ntsc colors': return __assign(__assign({}, base), { filterID: 1314149187 });
|
|
1848
|
+
case 'custom': return __assign(__assign({}, base), { Fltr: {
|
|
1849
|
+
_name: 'Custom',
|
|
1850
|
+
_classID: 'Cstm',
|
|
1851
|
+
'Scl ': f.filter.scale,
|
|
1852
|
+
Ofst: f.filter.offset,
|
|
1853
|
+
Mtrx: f.filter.matrix,
|
|
1854
|
+
}, filterID: 1131639917 });
|
|
1855
|
+
case 'high pass': return __assign(__assign({}, base), { Fltr: {
|
|
1856
|
+
_name: 'High Pass',
|
|
1857
|
+
_classID: 'HghP',
|
|
1858
|
+
'Rds ': uvRadius(f.filter),
|
|
1859
|
+
}, filterID: 1214736464 });
|
|
1860
|
+
case 'maximum': return __assign(__assign({}, base), { Fltr: {
|
|
1861
|
+
_name: 'Maximum',
|
|
1862
|
+
_classID: 'Mxm ',
|
|
1863
|
+
'Rds ': uvRadius(f.filter),
|
|
1864
|
+
}, filterID: 1299737888 });
|
|
1865
|
+
case 'minimum': return __assign(__assign({}, base), { Fltr: {
|
|
1866
|
+
_name: 'Minimum',
|
|
1867
|
+
_classID: 'Mnm ',
|
|
1868
|
+
'Rds ': uvRadius(f.filter),
|
|
1869
|
+
}, filterID: 1299082528 });
|
|
1870
|
+
case 'offset': return __assign(__assign({}, base), { Fltr: {
|
|
1871
|
+
_name: 'Offset',
|
|
1872
|
+
_classID: 'Ofst',
|
|
1873
|
+
Hrzn: f.filter.horizontal,
|
|
1874
|
+
Vrtc: f.filter.vertical,
|
|
1875
|
+
'Fl ': descriptor_1.FlMd.encode(f.filter.undefinedAreas),
|
|
1876
|
+
}, filterID: 1332114292 });
|
|
1877
|
+
case 'puppet': return __assign(__assign({}, base), { Fltr: {
|
|
1878
|
+
_name: 'Rigid Transform',
|
|
1879
|
+
_classID: 'rigidTransform',
|
|
1257
1880
|
'null': ['Ordn.Trgt'],
|
|
1258
1881
|
rigidType: f.filter.rigidType,
|
|
1259
|
-
puppetShapeList:
|
|
1882
|
+
puppetShapeList: f.filter.puppetShapeList.map(function (p) { return ({
|
|
1883
|
+
_name: '',
|
|
1884
|
+
_classID: 'puppetShape',
|
|
1260
1885
|
rigidType: p.rigidType,
|
|
1261
1886
|
VrsM: 1,
|
|
1262
1887
|
VrsN: 0,
|
|
@@ -1265,7 +1890,6 @@ function serializeFilterFX(filter) {
|
|
|
1265
1890
|
indexArray: toUint8(new Uint32Array(p.indexArray)),
|
|
1266
1891
|
pinOffsets: pointsToArray(p.pinOffsets),
|
|
1267
1892
|
posFinalPins: pointsToArray(p.posFinalPins),
|
|
1268
|
-
selectedPin: p.selectedPin,
|
|
1269
1893
|
pinVertexIndices: p.pinVertexIndices,
|
|
1270
1894
|
PinP: pointsToArray(p.pinPosition),
|
|
1271
1895
|
PnRt: p.pinRotation,
|
|
@@ -1276,11 +1900,19 @@ function serializeFilterFX(filter) {
|
|
|
1276
1900
|
meshRigidity: p.meshRigidity,
|
|
1277
1901
|
imageResolution: p.imageResolution,
|
|
1278
1902
|
meshBoundaryPath: {
|
|
1279
|
-
|
|
1903
|
+
_name: '',
|
|
1904
|
+
_classID: 'pathClass',
|
|
1905
|
+
pathComponents: p.meshBoundaryPath.pathComponents.map(function (c) { return ({
|
|
1906
|
+
_name: '',
|
|
1907
|
+
_classID: 'PaCm',
|
|
1280
1908
|
shapeOperation: "shapeOperation.".concat(c.shapeOperation),
|
|
1281
|
-
SbpL:
|
|
1909
|
+
SbpL: c.paths.map(function (path) { return ({
|
|
1910
|
+
_name: '',
|
|
1911
|
+
_classID: 'Sbpl',
|
|
1282
1912
|
Clsp: path.closed,
|
|
1283
|
-
'Pts ':
|
|
1913
|
+
'Pts ': path.points.map(function (pt) { return ({
|
|
1914
|
+
_name: '',
|
|
1915
|
+
_classID: 'Pthp',
|
|
1284
1916
|
Anch: pointToHrznVrtc(pt.anchor),
|
|
1285
1917
|
'Fwd ': pointToHrznVrtc(pt.forward),
|
|
1286
1918
|
'Bwd ': pointToHrznVrtc(pt.backward),
|
|
@@ -1289,6 +1921,7 @@ function serializeFilterFX(filter) {
|
|
|
1289
1921
|
}); }),
|
|
1290
1922
|
}); }),
|
|
1291
1923
|
},
|
|
1924
|
+
selectedPin: p.selectedPin,
|
|
1292
1925
|
}); }),
|
|
1293
1926
|
PuX0: f.filter.bounds[0].x,
|
|
1294
1927
|
PuX1: f.filter.bounds[1].x,
|
|
@@ -1298,11 +1931,38 @@ function serializeFilterFX(filter) {
|
|
|
1298
1931
|
PuY1: f.filter.bounds[1].y,
|
|
1299
1932
|
PuY2: f.filter.bounds[2].y,
|
|
1300
1933
|
PuY3: f.filter.bounds[3].y,
|
|
1301
|
-
},
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1934
|
+
}, filterID: 991 });
|
|
1935
|
+
case 'oil paint plugin': {
|
|
1936
|
+
var params = {};
|
|
1937
|
+
for (var i = 0; i < f.filter.parameters.length; i++) {
|
|
1938
|
+
var _a = f.filter.parameters[i], name_1 = _a.name, value = _a.value;
|
|
1939
|
+
var suffix = "".concat(fromAtoZ[Math.floor(i / fromAtoZ.length)]).concat(fromAtoZ[i % fromAtoZ.length]);
|
|
1940
|
+
params["PN".concat(suffix)] = name_1;
|
|
1941
|
+
params["PT".concat(suffix)] = 0;
|
|
1942
|
+
params["PF".concat(suffix)] = value;
|
|
1943
|
+
}
|
|
1944
|
+
return __assign(__assign({}, base), { Fltr: __assign({ _name: 'Oil Paint Plugin', _classID: 'PbPl', KnNm: f.filter.name, GpuY: f.filter.gpu, LIWy: f.filter.lighting, FPth: '1' }, params), filterID: 1348620396 });
|
|
1945
|
+
}
|
|
1946
|
+
case 'oil paint': return __assign(__assign({}, base), { Fltr: {
|
|
1947
|
+
_name: 'Oil Paint',
|
|
1948
|
+
_classID: 'oilPaint',
|
|
1949
|
+
lightingOn: f.filter.lightingOn,
|
|
1950
|
+
stylization: f.filter.stylization,
|
|
1951
|
+
cleanliness: f.filter.cleanliness,
|
|
1952
|
+
brushScale: f.filter.brushScale,
|
|
1953
|
+
microBrush: f.filter.microBrush,
|
|
1954
|
+
LghD: f.filter.lightDirection,
|
|
1955
|
+
specularity: f.filter.specularity,
|
|
1956
|
+
}, filterID: 1122 });
|
|
1957
|
+
case 'liquify': return __assign(__assign({}, base), { Fltr: {
|
|
1958
|
+
_name: 'Liquify',
|
|
1959
|
+
_classID: 'LqFy',
|
|
1960
|
+
LqMe: f.filter.liquifyMesh,
|
|
1961
|
+
}, filterID: 1282492025 });
|
|
1962
|
+
default: throw new Error("Unknow filter type: ".concat(f.type));
|
|
1963
|
+
}
|
|
1305
1964
|
}
|
|
1965
|
+
// let t: any;
|
|
1306
1966
|
addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
1307
1967
|
if ((0, psdReader_1.readSignature)(reader) !== 'soLD')
|
|
1308
1968
|
throw new Error("Invalid SoLd type");
|
|
@@ -1314,15 +1974,17 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
1314
1974
|
// console.log('SoLd.warp', require('util').inspect(desc.warp, false, 99, true));
|
|
1315
1975
|
// console.log('SoLd.quiltWarp', require('util').inspect(desc.quiltWarp, false, 99, true));
|
|
1316
1976
|
// desc.filterFX!.filterFXList[0].Fltr.puppetShapeList[0].meshBoundaryPath.pathComponents[0].SbpL[0]['Pts '] = [];
|
|
1317
|
-
// console.log('
|
|
1977
|
+
// console.log('read', require('util').inspect(desc.filterFX, false, 99, true));
|
|
1978
|
+
// console.log('filterFXList[0]', require('util').inspect((desc as any).filterFX.filterFXList[0], false, 99, true));
|
|
1979
|
+
// t = desc;
|
|
1318
1980
|
target.placedLayer = {
|
|
1319
1981
|
id: desc.Idnt,
|
|
1320
1982
|
placed: desc.placed,
|
|
1321
1983
|
type: placedLayerTypes[desc.Type],
|
|
1322
1984
|
pageNumber: desc.PgNm,
|
|
1323
1985
|
totalPages: desc.totalPages,
|
|
1324
|
-
frameStep: desc.frameStep,
|
|
1325
|
-
duration: desc.duration,
|
|
1986
|
+
frameStep: (0, descriptor_1.frac)(desc.frameStep),
|
|
1987
|
+
duration: (0, descriptor_1.frac)(desc.duration),
|
|
1326
1988
|
frameCount: desc.frameCount,
|
|
1327
1989
|
transform: desc.Trnf,
|
|
1328
1990
|
width: desc['Sz '].Wdth,
|
|
@@ -1337,22 +1999,48 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
1337
1999
|
target.placedLayer.crop = desc.Crop;
|
|
1338
2000
|
if (desc.comp)
|
|
1339
2001
|
target.placedLayer.comp = desc.comp;
|
|
1340
|
-
if (desc.compInfo)
|
|
1341
|
-
target.placedLayer.compInfo =
|
|
2002
|
+
if (desc.compInfo) {
|
|
2003
|
+
target.placedLayer.compInfo = {
|
|
2004
|
+
compID: desc.compInfo.compID,
|
|
2005
|
+
originalCompID: desc.compInfo.originalCompID,
|
|
2006
|
+
};
|
|
2007
|
+
}
|
|
1342
2008
|
if (desc.filterFX)
|
|
1343
2009
|
target.placedLayer.filter = parseFilterFX(desc.filterFX);
|
|
2010
|
+
// console.log('filter', require('util').inspect(target.placedLayer.filter, false, 99, true));
|
|
1344
2011
|
(0, psdReader_1.skipBytes)(reader, left()); // HACK
|
|
1345
2012
|
}, function (writer, target) {
|
|
1346
2013
|
var _a, _b;
|
|
1347
2014
|
(0, psdWriter_1.writeSignature)(writer, 'soLD');
|
|
1348
2015
|
(0, psdWriter_1.writeInt32)(writer, 4); // version
|
|
1349
2016
|
var placed = target.placedLayer;
|
|
1350
|
-
var desc = __assign(__assign({ Idnt: placed.id, placed: (_a = placed.placed) !== null && _a !== void 0 ? _a : placed.id, PgNm: placed.pageNumber || 1, totalPages: placed.totalPages || 1 }, (placed.crop ? { Crop: placed.crop } : {})), { frameStep: placed.frameStep || { numerator: 0, denominator: 600 }, duration: placed.duration || { numerator: 0, denominator: 600 }, frameCount: placed.frameCount || 0, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform,
|
|
2017
|
+
var desc = __assign(__assign({ Idnt: placed.id, placed: (_a = placed.placed) !== null && _a !== void 0 ? _a : placed.id, PgNm: placed.pageNumber || 1, totalPages: placed.totalPages || 1 }, (placed.crop ? { Crop: placed.crop } : {})), { frameStep: placed.frameStep || { numerator: 0, denominator: 600 }, duration: placed.duration || { numerator: 0, denominator: 600 }, frameCount: placed.frameCount || 0, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform,
|
|
2018
|
+
// quiltWarp: {} as any,
|
|
2019
|
+
warp: encodeWarp(placed.warp || {}), 'Sz ': {
|
|
2020
|
+
_name: '',
|
|
2021
|
+
_classID: 'Pnt ',
|
|
1351
2022
|
Wdth: placed.width || 0,
|
|
1352
2023
|
Hght: placed.height || 0, // TODO: find size ?
|
|
1353
2024
|
}, Rslt: placed.resolution ? (0, descriptor_1.unitsValue)(placed.resolution, 'resolution') : { units: 'Density', value: 72 } });
|
|
1354
|
-
if (placed.filter)
|
|
1355
|
-
desc.filterFX =
|
|
2025
|
+
if (placed.filter) {
|
|
2026
|
+
desc.filterFX = {
|
|
2027
|
+
_name: '',
|
|
2028
|
+
_classID: 'filterFXStyle',
|
|
2029
|
+
enab: placed.filter.enabled,
|
|
2030
|
+
validAtPosition: placed.filter.validAtPosition,
|
|
2031
|
+
filterMaskEnable: placed.filter.maskEnabled,
|
|
2032
|
+
filterMaskLinked: placed.filter.maskLinked,
|
|
2033
|
+
filterMaskExtendWithWhite: placed.filter.maskExtendWithWhite,
|
|
2034
|
+
filterFXList: placed.filter.list.map(function (f) { return serializeFilterFXItem(f); }),
|
|
2035
|
+
};
|
|
2036
|
+
}
|
|
2037
|
+
// console.log('write', require('util').inspect(desc.filterFX, false, 99, true)); ///
|
|
2038
|
+
// if (JSON.stringify(t) !== JSON.stringify(desc)) {
|
|
2039
|
+
// console.log('read', require('util').inspect(t, false, 99, true));
|
|
2040
|
+
// console.log('write', require('util').inspect(desc, false, 99, true));
|
|
2041
|
+
// console.error('DIFFERENT');
|
|
2042
|
+
// // throw new Error('DIFFERENT');
|
|
2043
|
+
// }
|
|
1356
2044
|
if (placed.warp && isQuiltWarp(placed.warp)) {
|
|
1357
2045
|
var quiltWarp = encodeWarp(placed.warp);
|
|
1358
2046
|
desc.quiltWarp = quiltWarp;
|
|
@@ -1438,7 +2126,7 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
|
|
|
1438
2126
|
var popupLocation = readRect(reader);
|
|
1439
2127
|
var color = (0, psdReader_1.readColor)(reader);
|
|
1440
2128
|
var author = (0, psdReader_1.readPascalString)(reader, 2);
|
|
1441
|
-
var
|
|
2129
|
+
var name_2 = (0, psdReader_1.readPascalString)(reader, 2);
|
|
1442
2130
|
var date = (0, psdReader_1.readPascalString)(reader, 2);
|
|
1443
2131
|
/*const contentLength =*/ (0, psdReader_1.readUint32)(reader);
|
|
1444
2132
|
/*const dataType =*/ (0, psdReader_1.readSignature)(reader);
|
|
@@ -1467,7 +2155,7 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
|
|
|
1467
2155
|
popupLocation: popupLocation,
|
|
1468
2156
|
color: color,
|
|
1469
2157
|
author: author,
|
|
1470
|
-
name:
|
|
2158
|
+
name: name_2,
|
|
1471
2159
|
date: date,
|
|
1472
2160
|
data: data,
|
|
1473
2161
|
});
|
|
@@ -1526,20 +2214,26 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
|
|
|
1526
2214
|
var type = (0, psdReader_1.readSignature)(reader);
|
|
1527
2215
|
var version = (0, psdReader_1.readInt32)(reader);
|
|
1528
2216
|
var id = (0, psdReader_1.readPascalString)(reader, 1);
|
|
1529
|
-
var
|
|
2217
|
+
var name_3 = (0, psdReader_1.readUnicodeString)(reader);
|
|
1530
2218
|
var fileType = (0, psdReader_1.readSignature)(reader).trim(); // ' ' if empty
|
|
1531
2219
|
var fileCreator = (0, psdReader_1.readSignature)(reader).trim(); // ' ' or '\0\0\0\0' if empty
|
|
1532
2220
|
var dataSize = readLength64(reader);
|
|
1533
2221
|
var hasFileOpenDescriptor = (0, psdReader_1.readUint8)(reader);
|
|
1534
2222
|
var fileOpenDescriptor = hasFileOpenDescriptor ? (0, descriptor_1.readVersionAndDescriptor)(reader) : undefined;
|
|
1535
2223
|
var linkedFileDescriptor = type === 'liFE' ? (0, descriptor_1.readVersionAndDescriptor)(reader) : undefined;
|
|
1536
|
-
var file = { id: id, name:
|
|
2224
|
+
var file = { id: id, name: name_3, data: undefined };
|
|
1537
2225
|
if (fileType)
|
|
1538
2226
|
file.type = fileType;
|
|
1539
2227
|
if (fileCreator)
|
|
1540
2228
|
file.creator = fileCreator;
|
|
1541
|
-
if (fileOpenDescriptor)
|
|
1542
|
-
file.descriptor =
|
|
2229
|
+
if (fileOpenDescriptor) {
|
|
2230
|
+
file.descriptor = {
|
|
2231
|
+
compInfo: {
|
|
2232
|
+
compID: fileOpenDescriptor.compInfo.compID,
|
|
2233
|
+
originalCompID: fileOpenDescriptor.compInfo.originalCompID,
|
|
2234
|
+
}
|
|
2235
|
+
};
|
|
2236
|
+
}
|
|
1543
2237
|
if (type === 'liFE' && version > 3) {
|
|
1544
2238
|
var year = (0, psdReader_1.readInt32)(reader);
|
|
1545
2239
|
var month = (0, psdReader_1.readUint8)(reader);
|
|
@@ -1597,7 +2291,10 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
|
|
|
1597
2291
|
writeLength64(writer, file.data ? file.data.byteLength : 0);
|
|
1598
2292
|
if (file.descriptor && file.descriptor.compInfo) {
|
|
1599
2293
|
var desc = {
|
|
1600
|
-
compInfo:
|
|
2294
|
+
compInfo: {
|
|
2295
|
+
compID: file.descriptor.compInfo.compID,
|
|
2296
|
+
originalCompID: file.descriptor.compInfo.originalCompID,
|
|
2297
|
+
}
|
|
1601
2298
|
};
|
|
1602
2299
|
(0, psdWriter_1.writeUint8)(writer, 1);
|
|
1603
2300
|
(0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc);
|
|
@@ -2337,6 +3034,94 @@ addHandler('Txt2', hasKey('engineData'), function (reader, target, left) {
|
|
|
2337
3034
|
var buffer = (0, base64_js_1.toByteArray)(target.engineData);
|
|
2338
3035
|
(0, psdWriter_1.writeBytes)(writer, buffer);
|
|
2339
3036
|
});
|
|
3037
|
+
addHandler('FEid', hasKey('filterEffectsMasks'), function (reader, target, leftBytes) {
|
|
3038
|
+
var version = (0, psdReader_1.readInt32)(reader);
|
|
3039
|
+
if (version < 1 || version > 3)
|
|
3040
|
+
throw new Error("Invalid filterEffects version ".concat(version));
|
|
3041
|
+
if ((0, psdReader_1.readUint32)(reader))
|
|
3042
|
+
throw new Error('filterEffects: 64 bit length is not supported');
|
|
3043
|
+
var length = (0, psdReader_1.readUint32)(reader);
|
|
3044
|
+
var end = reader.offset + length;
|
|
3045
|
+
target.filterEffectsMasks = [];
|
|
3046
|
+
while (reader.offset < end) {
|
|
3047
|
+
var id = (0, psdReader_1.readPascalString)(reader, 1);
|
|
3048
|
+
var effectVersion = (0, psdReader_1.readInt32)(reader);
|
|
3049
|
+
if (effectVersion !== 1)
|
|
3050
|
+
throw new Error("Invalid filterEffect version ".concat(effectVersion));
|
|
3051
|
+
if ((0, psdReader_1.readUint32)(reader))
|
|
3052
|
+
throw new Error('filterEffect: 64 bit length is not supported');
|
|
3053
|
+
/*const effectLength =*/ (0, psdReader_1.readUint32)(reader);
|
|
3054
|
+
// const endOfEffect = reader.offset + effectLength;
|
|
3055
|
+
var top_2 = (0, psdReader_1.readInt32)(reader);
|
|
3056
|
+
var left = (0, psdReader_1.readInt32)(reader);
|
|
3057
|
+
var bottom = (0, psdReader_1.readInt32)(reader);
|
|
3058
|
+
var right = (0, psdReader_1.readInt32)(reader);
|
|
3059
|
+
var depth = (0, psdReader_1.readInt32)(reader);
|
|
3060
|
+
var maxChannels = (0, psdReader_1.readInt32)(reader);
|
|
3061
|
+
var channels = [];
|
|
3062
|
+
// 0 -> R, 1 -> G, 2 -> B, 25 -> A
|
|
3063
|
+
for (var i = 0; i < (maxChannels + 2); i++) {
|
|
3064
|
+
var exists = (0, psdReader_1.readInt32)(reader);
|
|
3065
|
+
if (exists) {
|
|
3066
|
+
if ((0, psdReader_1.readUint32)(reader))
|
|
3067
|
+
throw new Error('filterEffect: 64 bit length is not supported');
|
|
3068
|
+
var channelLength = (0, psdReader_1.readUint32)(reader);
|
|
3069
|
+
var compressionMode = (0, psdReader_1.readUint16)(reader);
|
|
3070
|
+
var data = (0, psdReader_1.readBytes)(reader, channelLength - 2);
|
|
3071
|
+
channels.push({ compressionMode: compressionMode, data: data });
|
|
3072
|
+
}
|
|
3073
|
+
else {
|
|
3074
|
+
channels.push(undefined);
|
|
3075
|
+
}
|
|
3076
|
+
}
|
|
3077
|
+
target.filterEffectsMasks.push({ id: id, top: top_2, left: left, bottom: bottom, right: right, depth: depth, channels: channels });
|
|
3078
|
+
if (leftBytes() && (0, psdReader_1.readUint8)(reader)) {
|
|
3079
|
+
var compressionMode = (0, psdReader_1.readUint16)(reader);
|
|
3080
|
+
var data = (0, psdReader_1.readBytes)(reader, leftBytes());
|
|
3081
|
+
target.filterEffectsMasks[target.filterEffectsMasks.length - 1].extra = { compressionMode: compressionMode, data: data };
|
|
3082
|
+
}
|
|
3083
|
+
}
|
|
3084
|
+
}, function (writer, target) {
|
|
3085
|
+
var _a;
|
|
3086
|
+
(0, psdWriter_1.writeInt32)(writer, 3);
|
|
3087
|
+
(0, psdWriter_1.writeUint32)(writer, 0);
|
|
3088
|
+
(0, psdWriter_1.writeUint32)(writer, 0);
|
|
3089
|
+
var lengthOffset = writer.offset;
|
|
3090
|
+
for (var _i = 0, _b = target.filterEffectsMasks; _i < _b.length; _i++) {
|
|
3091
|
+
var mask = _b[_i];
|
|
3092
|
+
(0, psdWriter_1.writePascalString)(writer, mask.id, 1);
|
|
3093
|
+
(0, psdWriter_1.writeInt32)(writer, 1);
|
|
3094
|
+
(0, psdWriter_1.writeUint32)(writer, 0);
|
|
3095
|
+
(0, psdWriter_1.writeUint32)(writer, 0);
|
|
3096
|
+
var length2Offset = writer.offset;
|
|
3097
|
+
(0, psdWriter_1.writeInt32)(writer, mask.top);
|
|
3098
|
+
(0, psdWriter_1.writeInt32)(writer, mask.left);
|
|
3099
|
+
(0, psdWriter_1.writeInt32)(writer, mask.bottom);
|
|
3100
|
+
(0, psdWriter_1.writeInt32)(writer, mask.right);
|
|
3101
|
+
(0, psdWriter_1.writeInt32)(writer, mask.depth);
|
|
3102
|
+
var maxChannels = Math.max(0, mask.channels.length - 2);
|
|
3103
|
+
(0, psdWriter_1.writeInt32)(writer, maxChannels);
|
|
3104
|
+
for (var i = 0; i < (maxChannels + 2); i++) {
|
|
3105
|
+
var channel = mask.channels[i];
|
|
3106
|
+
(0, psdWriter_1.writeInt32)(writer, channel ? 1 : 0);
|
|
3107
|
+
if (channel) {
|
|
3108
|
+
(0, psdWriter_1.writeUint32)(writer, 0);
|
|
3109
|
+
(0, psdWriter_1.writeUint32)(writer, channel.data.length + 2);
|
|
3110
|
+
(0, psdWriter_1.writeUint16)(writer, channel.compressionMode);
|
|
3111
|
+
(0, psdWriter_1.writeBytes)(writer, channel.data);
|
|
3112
|
+
}
|
|
3113
|
+
}
|
|
3114
|
+
writer.view.setUint32(length2Offset - 4, writer.offset - length2Offset, false);
|
|
3115
|
+
}
|
|
3116
|
+
var extra = (_a = target.filterEffectsMasks[target.filterEffectsMasks.length - 1]) === null || _a === void 0 ? void 0 : _a.extra;
|
|
3117
|
+
if (extra) {
|
|
3118
|
+
(0, psdWriter_1.writeUint8)(writer, 1);
|
|
3119
|
+
(0, psdWriter_1.writeUint16)(writer, extra.compressionMode);
|
|
3120
|
+
(0, psdWriter_1.writeBytes)(writer, extra.data);
|
|
3121
|
+
}
|
|
3122
|
+
writer.view.setUint32(lengthOffset - 4, writer.offset - lengthOffset, false);
|
|
3123
|
+
});
|
|
3124
|
+
addHandlerAlias('FXid', 'FEid');
|
|
2340
3125
|
addHandler('FMsk', hasKey('filterMask'), function (reader, target) {
|
|
2341
3126
|
target.filterMask = {
|
|
2342
3127
|
colorSpace: (0, psdReader_1.readColor)(reader),
|
|
@@ -2402,14 +3187,17 @@ addHandler('lfx2', function (target) { return target.effects !== undefined && !h
|
|
|
2402
3187
|
addHandler('cinf', hasKey('compositorUsed'), function (reader, target, left) {
|
|
2403
3188
|
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
2404
3189
|
// console.log(require('util').inspect(desc, false, 99, true));
|
|
3190
|
+
function enumValue(desc) {
|
|
3191
|
+
return desc.split('.')[1];
|
|
3192
|
+
}
|
|
2405
3193
|
target.compositorUsed = {
|
|
2406
3194
|
description: desc.description,
|
|
2407
3195
|
reason: desc.reason,
|
|
2408
|
-
engine: desc.Engn
|
|
2409
|
-
enableCompCore: desc.enableCompCore
|
|
2410
|
-
enableCompCoreGPU: desc.enableCompCoreGPU
|
|
2411
|
-
compCoreSupport: desc.compCoreSupport
|
|
2412
|
-
compCoreGPUSupport: desc.compCoreGPUSupport
|
|
3196
|
+
engine: enumValue(desc.Engn),
|
|
3197
|
+
enableCompCore: enumValue(desc.enableCompCore),
|
|
3198
|
+
enableCompCoreGPU: enumValue(desc.enableCompCoreGPU),
|
|
3199
|
+
compCoreSupport: enumValue(desc.compCoreSupport),
|
|
3200
|
+
compCoreGPUSupport: enumValue(desc.compCoreGPUSupport),
|
|
2413
3201
|
};
|
|
2414
3202
|
(0, psdReader_1.skipBytes)(reader, left());
|
|
2415
3203
|
}, function (writer, target) {
|
|
@@ -2464,87 +3252,6 @@ addHandler('tsly', hasKey('transparencyShapesLayer'), function (reader, target)
|
|
|
2464
3252
|
(0, psdWriter_1.writeUint8)(writer, target.transparencyShapesLayer ? 1 : 0);
|
|
2465
3253
|
(0, psdWriter_1.writeZeros)(writer, 3);
|
|
2466
3254
|
});
|
|
2467
|
-
/*addHandler(
|
|
2468
|
-
'FEid',
|
|
2469
|
-
hasKey('filterEffects'),
|
|
2470
|
-
(reader, _target) => {
|
|
2471
|
-
const version = readInt32(reader);
|
|
2472
|
-
if (version < 1 || version > 3) throw new Error(`Invalid filterEffects version ${version}`);
|
|
2473
|
-
|
|
2474
|
-
if (readUint32(reader)) throw new Error('filterEffects: 64 bit length is not supported');
|
|
2475
|
-
const length = readUint32(reader);
|
|
2476
|
-
const end = reader.offset + length;
|
|
2477
|
-
|
|
2478
|
-
while (reader.offset < end) {
|
|
2479
|
-
console.log('bytes to go', end - reader.offset, 'at', reader.offset.toString(16));
|
|
2480
|
-
//
|
|
2481
|
-
const id = readPascalString(reader, 1);
|
|
2482
|
-
const effectVersion = readInt32(reader);
|
|
2483
|
-
if (effectVersion !== 1) throw new Error(`Invalid filterEffect version ${effectVersion}`);
|
|
2484
|
-
if (readUint32(reader)) throw new Error('filterEffect: 64 bit length is not supported');
|
|
2485
|
-
const effectLength = readUint32(reader);
|
|
2486
|
-
const endOfEffect = reader.offset + effectLength;
|
|
2487
|
-
const top = readInt32(reader);
|
|
2488
|
-
const left = readInt32(reader);
|
|
2489
|
-
const bottom = readInt32(reader);
|
|
2490
|
-
const right = readInt32(reader);
|
|
2491
|
-
const depth = readInt32(reader);
|
|
2492
|
-
const maxChannels = readInt32(reader);
|
|
2493
|
-
const channels: any[] = [];
|
|
2494
|
-
|
|
2495
|
-
for (let i = 0; i < (maxChannels + 2); i++) {
|
|
2496
|
-
const exists = readInt32(reader);
|
|
2497
|
-
if (exists) {
|
|
2498
|
-
if (readUint32(reader)) throw new Error('filterEffect: 64 bit length is not supported');
|
|
2499
|
-
const channelLength = readUint32(reader);
|
|
2500
|
-
const compressionMode = readUint16(reader);
|
|
2501
|
-
const data = readBytes(reader, channelLength - 2);
|
|
2502
|
-
channels.push({ channelLength, compressionMode, data: data?.length + ' bytes' });
|
|
2503
|
-
// if (c < 3 || c == 25) e_ = _F.Cn(!0, rL, m, b.rect.F, b.rect.V, X, rp);
|
|
2504
|
-
// if (c == 0) _c.S = e_;
|
|
2505
|
-
// if (c == 1) _c.v = e_;
|
|
2506
|
-
// if (c == 2) _c.e = e_;
|
|
2507
|
-
// if (c == 25) _c.w = e_;
|
|
2508
|
-
} else {
|
|
2509
|
-
channels.push(undefined);
|
|
2510
|
-
}
|
|
2511
|
-
}
|
|
2512
|
-
|
|
2513
|
-
console.log('left at the end', endOfEffect - reader.offset);
|
|
2514
|
-
if (endOfEffect > reader.offset) {
|
|
2515
|
-
if (readUint8(reader)) {
|
|
2516
|
-
const compressionMode = readUint16(reader);
|
|
2517
|
-
const data = endOfEffect > reader.offset ? readBytes(reader, endOfEffect - reader.offset) : undefined;
|
|
2518
|
-
console.log('extra data', { compressionMode, data: data?.length + ' bytes' });
|
|
2519
|
-
} else {
|
|
2520
|
-
console.log('no extra');
|
|
2521
|
-
}
|
|
2522
|
-
}
|
|
2523
|
-
|
|
2524
|
-
console.log('effect', {
|
|
2525
|
-
id,
|
|
2526
|
-
effectVersion,
|
|
2527
|
-
effectLength,
|
|
2528
|
-
top,
|
|
2529
|
-
left,
|
|
2530
|
-
bottom,
|
|
2531
|
-
right,
|
|
2532
|
-
depth,
|
|
2533
|
-
maxChannels,
|
|
2534
|
-
channels,
|
|
2535
|
-
});
|
|
2536
|
-
|
|
2537
|
-
console.log('bytes left after effect', endOfEffect - reader.offset);
|
|
2538
|
-
// if (length % 4) skipBytes(reader, 4 - length % 4);
|
|
2539
|
-
}
|
|
2540
|
-
|
|
2541
|
-
console.log({ version, length });
|
|
2542
|
-
},
|
|
2543
|
-
(_writer, _target) => {
|
|
2544
|
-
},
|
|
2545
|
-
);
|
|
2546
|
-
|
|
2547
|
-
addHandlerAlias('FXid', 'FEid');*/
|
|
2548
3255
|
|
|
2549
3256
|
},{"./descriptor":4,"./effectsHelpers":5,"./engineData":6,"./helpers":7,"./psdReader":11,"./psdWriter":12,"./text":13,"base64-js":15}],3:[function(require,module,exports){
|
|
2550
3257
|
"use strict";
|
|
@@ -2609,7 +3316,8 @@ var __assign = (this && this.__assign) || function () {
|
|
|
2609
3316
|
return __assign.apply(this, arguments);
|
|
2610
3317
|
};
|
|
2611
3318
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2612
|
-
exports.
|
|
3319
|
+
exports.strokeStyleLineCapType = exports.ESliceBGColorType = exports.ESliceOrigin = exports.ESliceVertAlign = exports.ESliceHorzAlign = exports.ESliceType = exports.FrFl = exports.FStl = exports.ClrS = exports.gradientInterpolationMethodType = exports.stdTrackID = exports.animInterpStyleEnum = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.frac = exports.unitsValue = exports.unitsPercentF = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.serializeColor = exports.parseColor = exports.serializeVectorContent = exports.parseVectorContent = exports.serializeTrackList = exports.parseTrackList = exports.parseEffects = exports.serializeEffects = exports.xyToHorzVrtc = exports.horzVrtcToXY = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
|
|
3320
|
+
exports.prjM = exports.FlMd = exports.IntC = exports.IntE = exports.Drct = exports.WndM = exports.CntE = exports.FlCl = exports.ExtR = exports.ExtT = exports.DfsM = exports.blurType = exports.Lns = exports.MztT = exports.Chnl = exports.Dstr = exports.ZZTy = exports.Wvtp = exports.SphM = exports.RplS = exports.Cnvr = exports.UndA = exports.DspM = exports.SmBQ = exports.SmBM = exports.BlrQ = exports.BlrM = exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = void 0;
|
|
2613
3321
|
var helpers_1 = require("./helpers");
|
|
2614
3322
|
var psdReader_1 = require("./psdReader");
|
|
2615
3323
|
var psdWriter_1 = require("./psdWriter");
|
|
@@ -2711,11 +3419,15 @@ var fieldToExtType = {
|
|
|
2711
3419
|
Anch: makeType('', 'Pnt '),
|
|
2712
3420
|
'Fwd ': makeType('', 'Pnt '),
|
|
2713
3421
|
'Bwd ': makeType('', 'Pnt '),
|
|
3422
|
+
FlrC: makeType('', 'Pnt '),
|
|
2714
3423
|
meshBoundaryPath: makeType('', 'pathClass'),
|
|
2715
3424
|
filterFX: makeType('', 'filterFXStyle'),
|
|
2716
3425
|
Fltr: makeType('', 'rigidTransform'),
|
|
2717
3426
|
FrgC: makeType('', 'RGBC'),
|
|
2718
3427
|
BckC: makeType('', 'RGBC'),
|
|
3428
|
+
sdwM: makeType('Parameters', 'adaptCorrectTones'),
|
|
3429
|
+
hglM: makeType('Parameters', 'adaptCorrectTones'),
|
|
3430
|
+
customShape: makeType('', 'customShape'),
|
|
2719
3431
|
};
|
|
2720
3432
|
var fieldToArrayExtType = {
|
|
2721
3433
|
'Crv ': makeType('', 'CrPt'),
|
|
@@ -2744,15 +3456,20 @@ var fieldToArrayExtType = {
|
|
|
2744
3456
|
pathComponents: makeType('', 'PaCm'),
|
|
2745
3457
|
filterFXList: makeType('', 'filterFX'),
|
|
2746
3458
|
puppetShapeList: makeType('', 'puppetShape'),
|
|
3459
|
+
channelDenoise: makeType('', 'channelDenoiseParams'),
|
|
3460
|
+
ShrP: makeType('', 'Pnt '),
|
|
2747
3461
|
};
|
|
2748
3462
|
var typeToField = {
|
|
2749
3463
|
'TEXT': [
|
|
2750
3464
|
'Txt ', 'printerName', 'Nm ', 'Idnt', 'blackAndWhitePresetFileName', 'LUT3DFileName',
|
|
2751
3465
|
'presetFileName', 'curvesPresetFileName', 'mixerPresetFileName', 'placed', 'description', 'reason',
|
|
2752
3466
|
'artboardPresetName', 'json', 'clipID', 'relPath', 'fullPath', 'mediaDescriptor', 'Msge',
|
|
2753
|
-
'altTag', 'url', 'cellText',
|
|
3467
|
+
'altTag', 'url', 'cellText', 'preset', 'KnNm', 'FPth',
|
|
3468
|
+
],
|
|
3469
|
+
'tdta': [
|
|
3470
|
+
'EngineData', 'LUT3DFileData', 'indexArray', 'originalVertexArray', 'deformedVertexArray',
|
|
3471
|
+
'LqMe',
|
|
2754
3472
|
],
|
|
2755
|
-
'tdta': ['EngineData', 'LUT3DFileData', 'indexArray', 'originalVertexArray', 'deformedVertexArray'],
|
|
2756
3473
|
'long': [
|
|
2757
3474
|
'TextIndex', 'RndS', 'Mdpn', 'Smth', 'Lctn', 'strokeStyleVersion', 'LaID', 'Vrsn', 'Cnt ',
|
|
2758
3475
|
'Brgh', 'Cntr', 'means', 'vibrance', 'Strt', 'bwPresetKind', 'presetKind', 'comp', 'compID', 'originalCompID',
|
|
@@ -2763,16 +3480,19 @@ var typeToField = {
|
|
|
2763
3480
|
'numBefore', 'numAfter', 'Spcn', 'minOpacity', 'maxOpacity', 'BlnM', 'sheetID', 'gblA', 'globalAltitude',
|
|
2764
3481
|
'descVersion', 'frameReaderType', 'LyrI', 'zoomOrigin', 'fontSize', 'Rds ', 'sliceID',
|
|
2765
3482
|
'topOutset', 'leftOutset', 'bottomOutset', 'rightOutset', 'filterID', 'meshQuality',
|
|
2766
|
-
'meshExpansion', 'meshRigidity', 'VrsM', 'VrsN',
|
|
3483
|
+
'meshExpansion', 'meshRigidity', 'VrsM', 'VrsN', 'NmbG', 'WLMn', 'WLMx', 'AmMn', 'AmMx', 'SclH', 'SclV',
|
|
3484
|
+
'Lvl ', 'TlNm', 'TlOf', 'FlRs', 'Thsh', 'ShrS', 'ShrE', 'FlRs', 'Vrnc', 'Strg', 'ExtS', 'ExtD',
|
|
3485
|
+
'HrzS', 'VrtS', 'NmbR', 'EdgF', 'Ang1', 'Ang2', 'Ang3', 'Ang4',
|
|
2767
3486
|
],
|
|
2768
3487
|
'enum': [
|
|
2769
|
-
'textGridding', 'Ornt', 'warpStyle', 'warpRotate', 'Inte', 'Bltn', 'ClrS',
|
|
2770
|
-
'
|
|
3488
|
+
'textGridding', 'Ornt', 'warpStyle', 'warpRotate', 'Inte', 'Bltn', 'ClrS', 'BlrQ',
|
|
3489
|
+
'bvlT', 'bvlS', 'bvlD', 'Md ', 'glwS', 'GrdF', 'GlwT', 'RplS', 'BlrM', 'SmBM',
|
|
2771
3490
|
'strokeStyleLineCapType', 'strokeStyleLineJoinType', 'strokeStyleLineAlignment',
|
|
2772
3491
|
'strokeStyleBlendMode', 'PntT', 'Styl', 'lookupType', 'LUTFormat', 'dataOrder',
|
|
2773
3492
|
'tableOrder', 'enableCompCore', 'enableCompCoreGPU', 'compCoreSupport', 'compCoreGPUSupport', 'Engn',
|
|
2774
3493
|
'enableCompCoreThreads', 'gs99', 'FrDs', 'trackID', 'animInterpStyle', 'horzAlign',
|
|
2775
|
-
'vertAlign', 'bgColorType', 'shapeOperation',
|
|
3494
|
+
'vertAlign', 'bgColorType', 'shapeOperation', 'UndA', 'Wvtp', 'Drct', 'WndM', 'Edg ', 'FlCl', 'IntE',
|
|
3495
|
+
'IntC', 'Cnvr', 'Fl ', 'Dstr', 'MztT', 'Lns ', 'ExtT', 'DspM', 'ExtR', 'ZZTy', 'SphM', 'SmBQ',
|
|
2776
3496
|
],
|
|
2777
3497
|
'bool': [
|
|
2778
3498
|
'PstS', 'printSixteenBit', 'masterFXSwitch', 'enab', 'uglg', 'antialiasGloss',
|
|
@@ -2784,7 +3504,8 @@ var typeToField = {
|
|
|
2784
3504
|
'present', 'showInDialog', 'overprint', 'sheetDisclosed', 'lightsDisclosed', 'meshesDisclosed',
|
|
2785
3505
|
'materialsDisclosed', 'hasMotion', 'muted', 'Effc', 'selected', 'autoScope', 'fillCanvas',
|
|
2786
3506
|
'cellTextIsHTML', 'Smoo', 'Clsp', 'validAtPosition', 'rigidType', 'hasoptions', 'filterMaskEnable',
|
|
2787
|
-
'filterMaskLinked', 'filterMaskExtendWithWhite',
|
|
3507
|
+
'filterMaskLinked', 'filterMaskExtendWithWhite', 'removeJPEGArtifact', 'Mnch', 'ExtF', 'ExtM',
|
|
3508
|
+
'moreAccurate', 'GpuY', 'LIWy',
|
|
2788
3509
|
],
|
|
2789
3510
|
'doub': [
|
|
2790
3511
|
'warpValue', 'warpPerspective', 'warpPerspectiveOther', 'Intr', 'Wdth', 'Hght',
|
|
@@ -2794,10 +3515,10 @@ var typeToField = {
|
|
|
2794
3515
|
'PuX0', 'PuX1', 'PuX2', 'PuX3', 'PuY0', 'PuY1', 'PuY2', 'PuY3'
|
|
2795
3516
|
],
|
|
2796
3517
|
'UntF': [
|
|
2797
|
-
'
|
|
3518
|
+
'sdwO', 'hglO', 'lagl', 'Lald', 'srgR', 'blur', 'Sftn', 'Opct', 'Dstn', 'Angl',
|
|
2798
3519
|
'Ckmt', 'Nose', 'Inpr', 'ShdN', 'strokeStyleLineWidth', 'strokeStyleLineDashOffset',
|
|
2799
3520
|
'strokeStyleOpacity', 'H ', 'Top ', 'Left', 'Btom', 'Rght', 'Rslt',
|
|
2800
|
-
'topRight', 'topLeft', 'bottomLeft', 'bottomRight',
|
|
3521
|
+
'topRight', 'topLeft', 'bottomLeft', 'bottomRight', 'ClNs', 'Shrp',
|
|
2801
3522
|
],
|
|
2802
3523
|
'VlLs': [
|
|
2803
3524
|
'Crv ', 'Clrs', 'Mnm ', 'Mxm ', 'Trns', 'pathList', 'strokeStyleLineDashSet', 'FrLs', 'slices',
|
|
@@ -2805,10 +3526,12 @@ var typeToField = {
|
|
|
2805
3526
|
'solidFillMulti', 'frameFXMulti', 'innerShadowMulti', 'dropShadowMulti', 'FrIn', 'FSts', 'FsFr',
|
|
2806
3527
|
'sheetTimelineOptions', 'audioClipList', 'trackList', 'globalTrackList', 'keyList', 'audioClipList',
|
|
2807
3528
|
'warpValues', 'selectedPin', 'Pts ', 'SbpL', 'pathComponents', 'pinOffsets', 'posFinalPins',
|
|
2808
|
-
'pinVertexIndices', 'PinP', 'PnRt', 'PnOv', 'PnDp', 'filterFXList', 'puppetShapeList',
|
|
3529
|
+
'pinVertexIndices', 'PinP', 'PnRt', 'PnOv', 'PnDp', 'filterFXList', 'puppetShapeList', 'ShrP',
|
|
3530
|
+
'channelDenoise', 'Mtrx',
|
|
2809
3531
|
],
|
|
2810
3532
|
'ObAr': ['meshPoints', 'quiltSliceX', 'quiltSliceY'],
|
|
2811
|
-
'obj ': ['null'],
|
|
3533
|
+
'obj ': ['null', 'Chnl'],
|
|
3534
|
+
'Pth ': ['DspF'],
|
|
2812
3535
|
};
|
|
2813
3536
|
var channels = [
|
|
2814
3537
|
'Rd ', 'Grn ', 'Bl ', 'Yllw', 'Ylw ', 'Cyn ', 'Mgnt', 'Blck', 'Gry ', 'Lmnc', 'A ', 'B ',
|
|
@@ -2847,6 +3570,9 @@ var fieldToArrayType = {
|
|
|
2847
3570
|
PnDp: 'doub',
|
|
2848
3571
|
filterFXList: 'Objc',
|
|
2849
3572
|
puppetShapeList: 'Objc',
|
|
3573
|
+
ShrP: 'Objc',
|
|
3574
|
+
channelDenoise: 'Objc',
|
|
3575
|
+
Mtrx: 'long',
|
|
2850
3576
|
};
|
|
2851
3577
|
var fieldToType = {};
|
|
2852
3578
|
for (var _i = 0, _a = Object.keys(typeToField); _i < _a.length; _i++) {
|
|
@@ -2922,11 +3648,12 @@ function writeAsciiStringOrClassId(writer, value) {
|
|
|
2922
3648
|
}
|
|
2923
3649
|
}
|
|
2924
3650
|
function readDescriptorStructure(reader) {
|
|
2925
|
-
|
|
2926
|
-
// object.__struct =
|
|
3651
|
+
// const struct =
|
|
2927
3652
|
readClassStructure(reader);
|
|
3653
|
+
// const object: any = { _name: struct.name, _classID: struct.classID };
|
|
3654
|
+
var object = {};
|
|
3655
|
+
// console.log('>> ', struct);
|
|
2928
3656
|
var itemsCount = (0, psdReader_1.readUint32)(reader);
|
|
2929
|
-
// console.log('//', object.__struct);
|
|
2930
3657
|
for (var i = 0; i < itemsCount; i++) {
|
|
2931
3658
|
var key = readAsciiStringOrClassId(reader);
|
|
2932
3659
|
var type = (0, psdReader_1.readSignature)(reader);
|
|
@@ -2945,21 +3672,60 @@ function writeDescriptorStructure(writer, name, classId, value, root) {
|
|
|
2945
3672
|
(0, psdWriter_1.writeUnicodeStringWithPadding)(writer, name);
|
|
2946
3673
|
writeAsciiStringOrClassId(writer, classId);
|
|
2947
3674
|
var keys = Object.keys(value);
|
|
2948
|
-
|
|
3675
|
+
var keyCount = keys.length;
|
|
3676
|
+
if ('_name' in value)
|
|
3677
|
+
keyCount--;
|
|
3678
|
+
if ('_classID' in value)
|
|
3679
|
+
keyCount--;
|
|
3680
|
+
(0, psdWriter_1.writeUint32)(writer, keyCount);
|
|
2949
3681
|
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
|
|
2950
3682
|
var key = keys_1[_i];
|
|
3683
|
+
if (key === '_name' || key === '_classID')
|
|
3684
|
+
continue;
|
|
2951
3685
|
var type = getTypeByKey(key, value[key], root, value);
|
|
2952
3686
|
var extType = fieldToExtType[key];
|
|
2953
3687
|
if (key === 'origin') {
|
|
2954
3688
|
type = root === 'slices' ? 'enum' : 'Objc';
|
|
2955
3689
|
}
|
|
3690
|
+
else if ((key === 'Cyn ' || key === 'Mgnt' || key === 'Ylw ' || key === 'Blck') && value._classID === 'CMYC') {
|
|
3691
|
+
type = 'doub';
|
|
3692
|
+
}
|
|
3693
|
+
else if (/^PN[a-z][a-z]$/.test(key)) {
|
|
3694
|
+
type = 'TEXT';
|
|
3695
|
+
}
|
|
3696
|
+
else if (/^PT[a-z][a-z]$/.test(key)) {
|
|
3697
|
+
type = 'long';
|
|
3698
|
+
}
|
|
3699
|
+
else if (/^PF[a-z][a-z]$/.test(key)) {
|
|
3700
|
+
type = 'doub';
|
|
3701
|
+
}
|
|
3702
|
+
else if (key === 'ClSz' || key === 'Rds ' || key === 'Amnt') {
|
|
3703
|
+
type = typeof value[key] === 'number' ? 'long' : 'UntF';
|
|
3704
|
+
}
|
|
3705
|
+
else if ((key === 'sdwM' || key === 'hglM') && typeof value[key] === 'string') {
|
|
3706
|
+
type = 'enum';
|
|
3707
|
+
}
|
|
3708
|
+
else if (key === 'blur' && typeof value[key] === 'string') {
|
|
3709
|
+
type = 'enum';
|
|
3710
|
+
}
|
|
3711
|
+
else if (key === 'Angl' && typeof value[key] === 'number') {
|
|
3712
|
+
type = 'doub'; // ???
|
|
3713
|
+
}
|
|
2956
3714
|
else if (key === 'bounds' && root === 'slices') {
|
|
2957
3715
|
type = 'Objc';
|
|
2958
3716
|
extType = makeType('', 'Rct1');
|
|
2959
3717
|
}
|
|
2960
|
-
else if (key === 'Scl '
|
|
2961
|
-
|
|
2962
|
-
|
|
3718
|
+
else if (key === 'Scl ') {
|
|
3719
|
+
if (typeof value[key] === 'object' && 'Hrzn' in value[key]) {
|
|
3720
|
+
type = 'Objc';
|
|
3721
|
+
extType = nullType;
|
|
3722
|
+
}
|
|
3723
|
+
else if (typeof value[key] === 'number') {
|
|
3724
|
+
type = 'long';
|
|
3725
|
+
}
|
|
3726
|
+
else {
|
|
3727
|
+
type = 'UntF';
|
|
3728
|
+
}
|
|
2963
3729
|
}
|
|
2964
3730
|
else if (key === 'audioClipGroupList' && keys.length === 1) {
|
|
2965
3731
|
type = 'VlLs';
|
|
@@ -2967,7 +3733,13 @@ function writeDescriptorStructure(writer, name, classId, value, root) {
|
|
|
2967
3733
|
else if ((key === 'Strt' || key === 'Brgh') && 'H ' in value) {
|
|
2968
3734
|
type = 'doub';
|
|
2969
3735
|
}
|
|
2970
|
-
else if (key === '
|
|
3736
|
+
else if (key === 'Wdth' && typeof value[key] === 'object') {
|
|
3737
|
+
type = 'UntF';
|
|
3738
|
+
}
|
|
3739
|
+
else if (key === 'Ofst' && typeof value[key] === 'number') {
|
|
3740
|
+
type = 'long';
|
|
3741
|
+
}
|
|
3742
|
+
else if (key === 'Strt' && typeof value[key] === 'object') {
|
|
2971
3743
|
type = 'Objc';
|
|
2972
3744
|
extType = nullType;
|
|
2973
3745
|
}
|
|
@@ -3087,11 +3859,11 @@ function readOSType(reader, type) {
|
|
|
3087
3859
|
return items;
|
|
3088
3860
|
}
|
|
3089
3861
|
case 'Pth ': { // File path
|
|
3090
|
-
/*const length =*/ (0, psdReader_1.readInt32)(reader);
|
|
3862
|
+
/*const length =*/ (0, psdReader_1.readInt32)(reader); // total size of all fields below
|
|
3091
3863
|
var sig = (0, psdReader_1.readSignature)(reader);
|
|
3092
|
-
/*const pathSize =*/ (0, psdReader_1.readInt32LE)(reader);
|
|
3864
|
+
/*const pathSize =*/ (0, psdReader_1.readInt32LE)(reader); // the same as length
|
|
3093
3865
|
var charsCount = (0, psdReader_1.readInt32LE)(reader);
|
|
3094
|
-
var path = (0, psdReader_1.
|
|
3866
|
+
var path = (0, psdReader_1.readUnicodeStringWithLengthLE)(reader, charsCount);
|
|
3095
3867
|
return { sig: sig, path: path };
|
|
3096
3868
|
}
|
|
3097
3869
|
default:
|
|
@@ -3109,12 +3881,19 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
3109
3881
|
writeReferenceStructure(writer, key, value);
|
|
3110
3882
|
break;
|
|
3111
3883
|
case 'Objc': // Descriptor
|
|
3112
|
-
case 'GlbO': // GlobalObject same as Descriptor
|
|
3884
|
+
case 'GlbO': { // GlobalObject same as Descriptor
|
|
3885
|
+
if (typeof value !== 'object')
|
|
3886
|
+
throw new Error("Invalid struct value: ".concat(JSON.stringify(value), ", key: ").concat(key));
|
|
3113
3887
|
if (!extType)
|
|
3114
3888
|
throw new Error("Missing ext type for: '".concat(key, "' (").concat(JSON.stringify(value), ")"));
|
|
3115
|
-
|
|
3889
|
+
var name_1 = value._name || extType.name;
|
|
3890
|
+
var classID = value._classID || extType.classID;
|
|
3891
|
+
writeDescriptorStructure(writer, name_1, classID, value, root);
|
|
3116
3892
|
break;
|
|
3893
|
+
}
|
|
3117
3894
|
case 'VlLs': // List
|
|
3895
|
+
if (!Array.isArray(value))
|
|
3896
|
+
throw new Error("Invalid list value: ".concat(JSON.stringify(value), ", key: ").concat(key));
|
|
3118
3897
|
(0, psdWriter_1.writeInt32)(writer, value.length);
|
|
3119
3898
|
for (var i = 0; i < value.length; i++) {
|
|
3120
3899
|
var type_3 = fieldToArrayType[key];
|
|
@@ -3125,6 +3904,8 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
3125
3904
|
}
|
|
3126
3905
|
break;
|
|
3127
3906
|
case 'doub': // Double
|
|
3907
|
+
if (typeof value !== 'number')
|
|
3908
|
+
throw new Error("Invalid number value: ".concat(JSON.stringify(value), ", key: ").concat(key));
|
|
3128
3909
|
(0, psdWriter_1.writeFloat64)(writer, value);
|
|
3129
3910
|
break;
|
|
3130
3911
|
case 'UntF': // Unit double
|
|
@@ -3143,17 +3924,23 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
3143
3924
|
(0, psdWriter_1.writeUnicodeStringWithPadding)(writer, value);
|
|
3144
3925
|
break;
|
|
3145
3926
|
case 'enum': { // Enumerated
|
|
3927
|
+
if (typeof value !== 'string')
|
|
3928
|
+
throw new Error("Invalid enum value: ".concat(JSON.stringify(value), ", key: ").concat(key));
|
|
3146
3929
|
var _a = value.split('.'), _type = _a[0], val = _a[1];
|
|
3147
3930
|
writeAsciiStringOrClassId(writer, _type);
|
|
3148
3931
|
writeAsciiStringOrClassId(writer, val);
|
|
3149
3932
|
break;
|
|
3150
3933
|
}
|
|
3151
3934
|
case 'long': // Integer
|
|
3935
|
+
if (typeof value !== 'number')
|
|
3936
|
+
throw new Error("Invalid integer value: ".concat(JSON.stringify(value), ", key: ").concat(key));
|
|
3152
3937
|
(0, psdWriter_1.writeInt32)(writer, value);
|
|
3153
3938
|
break;
|
|
3154
3939
|
// case 'comp': // Large Integer
|
|
3155
3940
|
// writeLargeInteger(reader);
|
|
3156
3941
|
case 'bool': // Boolean
|
|
3942
|
+
if (typeof value !== 'boolean')
|
|
3943
|
+
throw new Error("Invalid boolean value: ".concat(JSON.stringify(value), ", key: ").concat(key));
|
|
3157
3944
|
(0, psdWriter_1.writeUint8)(writer, value ? 1 : 0);
|
|
3158
3945
|
break;
|
|
3159
3946
|
// case 'type': // Class
|
|
@@ -3184,8 +3971,15 @@ function writeOSType(writer, type, value, key, extType, root) {
|
|
|
3184
3971
|
}
|
|
3185
3972
|
break;
|
|
3186
3973
|
}
|
|
3187
|
-
|
|
3188
|
-
|
|
3974
|
+
case 'Pth ': { // File path
|
|
3975
|
+
var length_5 = 4 + 4 + 4 + value.path.length * 2;
|
|
3976
|
+
(0, psdWriter_1.writeInt32)(writer, length_5);
|
|
3977
|
+
(0, psdWriter_1.writeSignature)(writer, value.sig);
|
|
3978
|
+
(0, psdWriter_1.writeInt32LE)(writer, length_5);
|
|
3979
|
+
(0, psdWriter_1.writeInt32LE)(writer, value.path.length);
|
|
3980
|
+
(0, psdWriter_1.writeUnicodeStringWithoutLengthLE)(writer, value.path);
|
|
3981
|
+
break;
|
|
3982
|
+
}
|
|
3189
3983
|
default:
|
|
3190
3984
|
throw new Error("Not implemented descriptor OSType: ".concat(type));
|
|
3191
3985
|
}
|
|
@@ -3276,7 +4070,6 @@ function writeReferenceStructure(writer, _key, items) {
|
|
|
3276
4070
|
function readClassStructure(reader) {
|
|
3277
4071
|
var name = (0, psdReader_1.readUnicodeString)(reader);
|
|
3278
4072
|
var classID = readAsciiStringOrClassId(reader);
|
|
3279
|
-
// console.log({ name, classID });
|
|
3280
4073
|
return { name: name, classID: classID };
|
|
3281
4074
|
}
|
|
3282
4075
|
function writeClassStructure(writer, name, classID) {
|
|
@@ -3456,7 +4249,8 @@ function parseKeyList(keyList, logMissingFeatures) {
|
|
|
3456
4249
|
var keys = [];
|
|
3457
4250
|
for (var j = 0; j < keyList.length; j++) {
|
|
3458
4251
|
var key = keyList[j];
|
|
3459
|
-
var
|
|
4252
|
+
var _a = key.time, denominator = _a.denominator, numerator = _a.numerator, selected = key.selected, animKey = key.animKey;
|
|
4253
|
+
var time = { numerator: numerator, denominator: denominator };
|
|
3460
4254
|
var interpolation = exports.animInterpStyleEnum.decode(key.animInterpStyle);
|
|
3461
4255
|
switch (animKey.Type) {
|
|
3462
4256
|
case 'keyType.Opct':
|
|
@@ -3705,6 +4499,9 @@ function parseEffectObject(obj, reportErrors) {
|
|
|
3705
4499
|
case 'antialiasGloss':
|
|
3706
4500
|
result[key] = val;
|
|
3707
4501
|
break;
|
|
4502
|
+
case '_name':
|
|
4503
|
+
case '_classID':
|
|
4504
|
+
break;
|
|
3708
4505
|
default:
|
|
3709
4506
|
reportErrors && console.log("Invalid effect key: '".concat(key, "', value:"), val);
|
|
3710
4507
|
}
|
|
@@ -4057,25 +4854,25 @@ function parseColor(color) {
|
|
|
4057
4854
|
exports.parseColor = parseColor;
|
|
4058
4855
|
function serializeColor(color) {
|
|
4059
4856
|
if (!color) {
|
|
4060
|
-
return { 'Rd ': 0, 'Grn ': 0, 'Bl ': 0 };
|
|
4857
|
+
return { _name: '', _classID: 'RGBC', 'Rd ': 0, 'Grn ': 0, 'Bl ': 0 };
|
|
4061
4858
|
}
|
|
4062
4859
|
else if ('r' in color) {
|
|
4063
|
-
return { 'Rd ': color.r || 0, 'Grn ': color.g || 0, 'Bl ': color.b || 0 };
|
|
4860
|
+
return { _name: '', _classID: 'RGBC', 'Rd ': color.r || 0, 'Grn ': color.g || 0, 'Bl ': color.b || 0 };
|
|
4064
4861
|
}
|
|
4065
4862
|
else if ('fr' in color) {
|
|
4066
|
-
return { redFloat: color.fr, greenFloat: color.fg, blueFloat: color.fb };
|
|
4863
|
+
return { _name: '', _classID: 'XXXX', redFloat: color.fr, greenFloat: color.fg, blueFloat: color.fb };
|
|
4067
4864
|
}
|
|
4068
4865
|
else if ('h' in color) {
|
|
4069
|
-
return { 'H ': unitsAngle(color.h * 360), Strt: color.s || 0, Brgh: color.b || 0 };
|
|
4866
|
+
return { _name: '', _classID: 'HSBC', 'H ': unitsAngle(color.h * 360), Strt: color.s || 0, Brgh: color.b || 0 };
|
|
4070
4867
|
}
|
|
4071
4868
|
else if ('c' in color) {
|
|
4072
|
-
return { 'Cyn ': color.c || 0, Mgnt: color.m || 0, 'Ylw ': color.y || 0, Blck: color.k || 0 };
|
|
4869
|
+
return { _name: '', _classID: 'CMYC', 'Cyn ': color.c || 0, Mgnt: color.m || 0, 'Ylw ': color.y || 0, Blck: color.k || 0 };
|
|
4073
4870
|
}
|
|
4074
4871
|
else if ('l' in color) {
|
|
4075
|
-
return { Lmnc: color.l || 0, 'A ': color.a || 0, 'B ': color.b || 0 };
|
|
4872
|
+
return { _name: '', _classID: 'LABC', Lmnc: color.l || 0, 'A ': color.a || 0, 'B ': color.b || 0 };
|
|
4076
4873
|
}
|
|
4077
4874
|
else if ('k' in color) {
|
|
4078
|
-
return { 'Gry ': color.k };
|
|
4875
|
+
return { _name: '', _classID: 'GRYC', 'Gry ': color.k };
|
|
4079
4876
|
}
|
|
4080
4877
|
else {
|
|
4081
4878
|
throw new Error('Invalid color value');
|
|
@@ -4139,6 +4936,10 @@ function unitsPercent(value) {
|
|
|
4139
4936
|
return { units: 'Percent', value: Math.round((value || 0) * 100) };
|
|
4140
4937
|
}
|
|
4141
4938
|
exports.unitsPercent = unitsPercent;
|
|
4939
|
+
function unitsPercentF(value) {
|
|
4940
|
+
return { units: 'Percent', value: (value || 0) * 100 };
|
|
4941
|
+
}
|
|
4942
|
+
exports.unitsPercentF = unitsPercentF;
|
|
4142
4943
|
function unitsValue(x, key) {
|
|
4143
4944
|
if (x == null)
|
|
4144
4945
|
return { units: 'Pixels', value: 0 };
|
|
@@ -4154,6 +4955,11 @@ function unitsValue(x, key) {
|
|
|
4154
4955
|
return { units: units, value: value };
|
|
4155
4956
|
}
|
|
4156
4957
|
exports.unitsValue = unitsValue;
|
|
4958
|
+
function frac(_a) {
|
|
4959
|
+
var numerator = _a.numerator, denominator = _a.denominator;
|
|
4960
|
+
return { numerator: numerator, denominator: denominator };
|
|
4961
|
+
}
|
|
4962
|
+
exports.frac = frac;
|
|
4157
4963
|
exports.textGridding = (0, helpers_1.createEnum)('textGridding', 'none', {
|
|
4158
4964
|
none: 'None',
|
|
4159
4965
|
round: 'Rnd ',
|
|
@@ -4275,6 +5081,7 @@ exports.ClrS = (0, helpers_1.createEnum)('ClrS', 'rgb', {
|
|
|
4275
5081
|
rgb: 'RGBC',
|
|
4276
5082
|
hsb: 'HSBl',
|
|
4277
5083
|
lab: 'LbCl',
|
|
5084
|
+
hsl: 'HSLC',
|
|
4278
5085
|
});
|
|
4279
5086
|
exports.FStl = (0, helpers_1.createEnum)('FStl', 'outside', {
|
|
4280
5087
|
outside: 'OutF',
|
|
@@ -4321,6 +5128,142 @@ exports.strokeStyleLineAlignment = (0, helpers_1.createEnum)('strokeStyleLineAli
|
|
|
4321
5128
|
center: 'strokeStyleAlignCenter',
|
|
4322
5129
|
outside: 'strokeStyleAlignOutside',
|
|
4323
5130
|
});
|
|
5131
|
+
exports.BlrM = (0, helpers_1.createEnum)('BlrM', 'ispinmage', {
|
|
5132
|
+
spin: 'Spn ',
|
|
5133
|
+
zoom: 'Zm ',
|
|
5134
|
+
});
|
|
5135
|
+
exports.BlrQ = (0, helpers_1.createEnum)('BlrQ', 'good', {
|
|
5136
|
+
draft: 'Drft',
|
|
5137
|
+
good: 'Gd ',
|
|
5138
|
+
best: 'Bst ',
|
|
5139
|
+
});
|
|
5140
|
+
exports.SmBM = (0, helpers_1.createEnum)('SmBM', 'normal', {
|
|
5141
|
+
normal: 'SBMN',
|
|
5142
|
+
'edge only': 'SBME',
|
|
5143
|
+
'overlay edge': 'SBMO',
|
|
5144
|
+
});
|
|
5145
|
+
exports.SmBQ = (0, helpers_1.createEnum)('SmBQ', 'medium', {
|
|
5146
|
+
low: 'SBQL',
|
|
5147
|
+
medium: 'SBQM',
|
|
5148
|
+
high: 'SBQH',
|
|
5149
|
+
});
|
|
5150
|
+
exports.DspM = (0, helpers_1.createEnum)('DspM', 'stretch to fit', {
|
|
5151
|
+
'stretch to fit': 'StrF',
|
|
5152
|
+
'tile': 'Tile',
|
|
5153
|
+
});
|
|
5154
|
+
exports.UndA = (0, helpers_1.createEnum)('UndA', 'repeat edge pixels', {
|
|
5155
|
+
'wrap around': 'WrpA',
|
|
5156
|
+
'repeat edge pixels': 'RptE',
|
|
5157
|
+
});
|
|
5158
|
+
exports.Cnvr = (0, helpers_1.createEnum)('Cnvr', 'rectangular to polar', {
|
|
5159
|
+
'rectangular to polar': 'RctP',
|
|
5160
|
+
'polar to rectangular': 'PlrR',
|
|
5161
|
+
});
|
|
5162
|
+
exports.RplS = (0, helpers_1.createEnum)('RplS', 'medium', {
|
|
5163
|
+
small: 'Sml ',
|
|
5164
|
+
medium: 'Mdm ',
|
|
5165
|
+
large: 'Lrg ',
|
|
5166
|
+
});
|
|
5167
|
+
exports.SphM = (0, helpers_1.createEnum)('SphM', 'normal', {
|
|
5168
|
+
'normal': 'Nrml',
|
|
5169
|
+
'horizontal only': 'HrzO',
|
|
5170
|
+
'vertical only': 'VrtO',
|
|
5171
|
+
});
|
|
5172
|
+
exports.Wvtp = (0, helpers_1.createEnum)('Wvtp', 'sine', {
|
|
5173
|
+
sine: 'WvSn',
|
|
5174
|
+
triangle: 'WvTr',
|
|
5175
|
+
square: 'WvSq',
|
|
5176
|
+
});
|
|
5177
|
+
exports.ZZTy = (0, helpers_1.createEnum)('ZZTy', 'pond ripples', {
|
|
5178
|
+
'around center': 'ArnC',
|
|
5179
|
+
'out from center': 'OtFr',
|
|
5180
|
+
'pond ripples': 'PndR',
|
|
5181
|
+
});
|
|
5182
|
+
exports.Dstr = (0, helpers_1.createEnum)('Dstr', 'uniform', {
|
|
5183
|
+
uniform: 'Unfr',
|
|
5184
|
+
gaussian: 'Gsn ',
|
|
5185
|
+
});
|
|
5186
|
+
exports.Chnl = (0, helpers_1.createEnum)('Chnl', 'composite', {
|
|
5187
|
+
red: 'Rd ',
|
|
5188
|
+
green: 'Grn ',
|
|
5189
|
+
blue: 'Bl ',
|
|
5190
|
+
composite: 'Cmps',
|
|
5191
|
+
});
|
|
5192
|
+
exports.MztT = (0, helpers_1.createEnum)('MztT', 'fine dots', {
|
|
5193
|
+
'fine dots': 'FnDt',
|
|
5194
|
+
'medium dots': 'MdmD',
|
|
5195
|
+
'grainy dots': 'GrnD',
|
|
5196
|
+
'coarse dots': 'CrsD',
|
|
5197
|
+
'short lines': 'ShrL',
|
|
5198
|
+
'medium lines': 'MdmL',
|
|
5199
|
+
'long lines': 'LngL',
|
|
5200
|
+
'short strokes': 'ShSt',
|
|
5201
|
+
'medium strokes': 'MdmS',
|
|
5202
|
+
'long strokes': 'LngS',
|
|
5203
|
+
});
|
|
5204
|
+
exports.Lns = (0, helpers_1.createEnum)('Lns ', '50-300mm zoom', {
|
|
5205
|
+
'50-300mm zoom': 'Zm ',
|
|
5206
|
+
'32mm prime': 'Nkn ',
|
|
5207
|
+
'105mm prime': 'Nkn1',
|
|
5208
|
+
'movie prime': 'PnVs',
|
|
5209
|
+
});
|
|
5210
|
+
exports.blurType = (0, helpers_1.createEnum)('blurType', 'gaussian blur', {
|
|
5211
|
+
'gaussian blur': 'GsnB',
|
|
5212
|
+
'lens blur': 'lensBlur',
|
|
5213
|
+
'motion blur': 'MtnB',
|
|
5214
|
+
});
|
|
5215
|
+
exports.DfsM = (0, helpers_1.createEnum)('DfsM', 'normal', {
|
|
5216
|
+
'normal': 'Nrml',
|
|
5217
|
+
'darken only': 'DrkO',
|
|
5218
|
+
'lighten only': 'LghO',
|
|
5219
|
+
'anisotropic': 'anisotropic',
|
|
5220
|
+
});
|
|
5221
|
+
exports.ExtT = (0, helpers_1.createEnum)('ExtT', 'blocks', {
|
|
5222
|
+
blocks: 'Blks',
|
|
5223
|
+
pyramids: 'Pyrm',
|
|
5224
|
+
});
|
|
5225
|
+
exports.ExtR = (0, helpers_1.createEnum)('ExtR', 'random', {
|
|
5226
|
+
random: 'Rndm',
|
|
5227
|
+
'level-based': 'LvlB',
|
|
5228
|
+
});
|
|
5229
|
+
exports.FlCl = (0, helpers_1.createEnum)('FlCl', 'background color', {
|
|
5230
|
+
'background color': 'FlBc',
|
|
5231
|
+
'foreground color': 'FlFr',
|
|
5232
|
+
'inverse image': 'FlIn',
|
|
5233
|
+
'unaltered image': 'FlSm',
|
|
5234
|
+
});
|
|
5235
|
+
exports.CntE = (0, helpers_1.createEnum)('CntE', 'upper', {
|
|
5236
|
+
lower: 'Lwr ',
|
|
5237
|
+
upper: 'Upr ',
|
|
5238
|
+
});
|
|
5239
|
+
exports.WndM = (0, helpers_1.createEnum)('WndM', 'wind', {
|
|
5240
|
+
wind: 'Wnd ',
|
|
5241
|
+
blast: 'Blst',
|
|
5242
|
+
stagger: 'Stgr',
|
|
5243
|
+
});
|
|
5244
|
+
exports.Drct = (0, helpers_1.createEnum)('Drct', 'from the right', {
|
|
5245
|
+
left: 'Left',
|
|
5246
|
+
right: 'Rght',
|
|
5247
|
+
});
|
|
5248
|
+
exports.IntE = (0, helpers_1.createEnum)('IntE', 'odd lines', {
|
|
5249
|
+
'odd lines': 'ElmO',
|
|
5250
|
+
'even lines': 'ElmE',
|
|
5251
|
+
});
|
|
5252
|
+
exports.IntC = (0, helpers_1.createEnum)('IntC', 'interpolation', {
|
|
5253
|
+
duplication: 'CrtD',
|
|
5254
|
+
interpolation: 'CrtI',
|
|
5255
|
+
});
|
|
5256
|
+
exports.FlMd = (0, helpers_1.createEnum)('FlMd', 'wrap around', {
|
|
5257
|
+
'set to transparent': 'Bckg',
|
|
5258
|
+
'repeat edge pixels': 'Rpt ',
|
|
5259
|
+
'wrap around': 'Wrp ',
|
|
5260
|
+
});
|
|
5261
|
+
exports.prjM = (0, helpers_1.createEnum)('prjM', 'fisheye', {
|
|
5262
|
+
'fisheye': 'fisP',
|
|
5263
|
+
'perspective': 'perP',
|
|
5264
|
+
'auto': 'auto',
|
|
5265
|
+
'full spherical': 'fusP',
|
|
5266
|
+
});
|
|
4324
5267
|
|
|
4325
5268
|
},{"./helpers":7,"./psdReader":11,"./psdWriter":12}],5:[function(require,module,exports){
|
|
4326
5269
|
"use strict";
|
|
@@ -5716,15 +6659,14 @@ function (// Timeline Information
|
|
|
5716
6659
|
target) { return target.timelineInformation !== undefined; }, function (reader, target, _, options) {
|
|
5717
6660
|
var _a, _b;
|
|
5718
6661
|
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
5719
|
-
// console.log('1075', require('util').inspect(desc, false, 99, true));
|
|
5720
6662
|
target.timelineInformation = {
|
|
5721
6663
|
enabled: desc.enab,
|
|
5722
|
-
frameStep: desc.frameStep,
|
|
6664
|
+
frameStep: (0, descriptor_1.frac)(desc.frameStep),
|
|
5723
6665
|
frameRate: desc.frameRate,
|
|
5724
|
-
time: desc.time,
|
|
5725
|
-
duration: desc.duration,
|
|
5726
|
-
workInTime: desc.workInTime,
|
|
5727
|
-
workOutTime: desc.workOutTime,
|
|
6666
|
+
time: (0, descriptor_1.frac)(desc.time),
|
|
6667
|
+
duration: (0, descriptor_1.frac)(desc.duration),
|
|
6668
|
+
workInTime: (0, descriptor_1.frac)(desc.workInTime),
|
|
6669
|
+
workOutTime: (0, descriptor_1.frac)(desc.workOutTime),
|
|
5728
6670
|
repeats: desc.LCnt,
|
|
5729
6671
|
hasMotion: desc.hasMotion,
|
|
5730
6672
|
globalTracks: (0, descriptor_1.parseTrackList)(desc.globalTrackList, !!options.logMissingFeatures),
|
|
@@ -5737,10 +6679,10 @@ target) { return target.timelineInformation !== undefined; }, function (reader,
|
|
|
5737
6679
|
var clipID = _a.clipID, timeScope = _a.timeScope, muted = _a.muted, audioLevel = _a.audioLevel, frameReader = _a.frameReader;
|
|
5738
6680
|
return ({
|
|
5739
6681
|
id: clipID,
|
|
5740
|
-
start: timeScope.Strt,
|
|
5741
|
-
duration: timeScope.duration,
|
|
5742
|
-
inTime: timeScope.inTime,
|
|
5743
|
-
outTime: timeScope.outTime,
|
|
6682
|
+
start: (0, descriptor_1.frac)(timeScope.Strt),
|
|
6683
|
+
duration: (0, descriptor_1.frac)(timeScope.duration),
|
|
6684
|
+
inTime: (0, descriptor_1.frac)(timeScope.inTime),
|
|
6685
|
+
outTime: (0, descriptor_1.frac)(timeScope.outTime),
|
|
5744
6686
|
muted: muted,
|
|
5745
6687
|
audioLevel: audioLevel,
|
|
5746
6688
|
frameReader: {
|
|
@@ -5801,14 +6743,12 @@ target) { return target.timelineInformation !== undefined; }, function (reader,
|
|
|
5801
6743
|
},
|
|
5802
6744
|
hasMotion: timeline.hasMotion,
|
|
5803
6745
|
};
|
|
5804
|
-
// console.log('WRITE:1075', require('util').inspect(desc, false, 99, true));
|
|
5805
6746
|
(0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc, 'anim');
|
|
5806
6747
|
});
|
|
5807
6748
|
addHandler(1076, // Sheet Disclosure
|
|
5808
6749
|
function (// Sheet Disclosure
|
|
5809
6750
|
target) { return target.sheetDisclosure !== undefined; }, function (reader, target) {
|
|
5810
6751
|
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
5811
|
-
// console.log('1076', require('util').inspect(desc, false, 99, true));
|
|
5812
6752
|
target.sheetDisclosure = {};
|
|
5813
6753
|
if (desc.sheetTimelineOptions) {
|
|
5814
6754
|
target.sheetDisclosure.sheetTimelineOptions = desc.sheetTimelineOptions.map(function (o) { return ({
|
|
@@ -5926,7 +6866,6 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
|
|
|
5926
6866
|
backgroundColorType: backgroundColorType,
|
|
5927
6867
|
backgroundColor: { r: r, g: g, b: b, a: a },
|
|
5928
6868
|
});
|
|
5929
|
-
// console.log(require('util').inspect(slices[slices.length - 1], false, 99, true));
|
|
5930
6869
|
}
|
|
5931
6870
|
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
5932
6871
|
desc.slices.forEach(function (d) {
|
|
@@ -5938,12 +6877,9 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
|
|
|
5938
6877
|
slice.rightOutset = d.rightOutset;
|
|
5939
6878
|
}
|
|
5940
6879
|
});
|
|
5941
|
-
// console.log(require('util').inspect(desc, false, 99, true));
|
|
5942
|
-
// console.log(require('util').inspect(target.slices, false, 99, true));
|
|
5943
6880
|
}
|
|
5944
6881
|
else if (version == 7 || version == 8) {
|
|
5945
6882
|
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
5946
|
-
// console.log(require('util').inspect(desc, false, 99, true));
|
|
5947
6883
|
if (!target.slices)
|
|
5948
6884
|
target.slices = [];
|
|
5949
6885
|
target.slices.push({
|
|
@@ -6158,7 +7094,6 @@ addHandler(7001, function (target) { return target.imageReadyDataSets !== undefi
|
|
|
6158
7094
|
});
|
|
6159
7095
|
addHandler(1088, function (target) { return target.pathSelectionState !== undefined; }, function (reader, target, _left) {
|
|
6160
7096
|
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
6161
|
-
// console.log(require('util').inspect(desc, false, 99, true));
|
|
6162
7097
|
target.pathSelectionState = desc['null'];
|
|
6163
7098
|
}, function (writer, target) {
|
|
6164
7099
|
var desc = { 'null': target.pathSelectionState };
|
|
@@ -6404,7 +7339,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
6404
7339
|
return __assign.apply(this, arguments);
|
|
6405
7340
|
};
|
|
6406
7341
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6407
|
-
exports.readPattern = exports.readColor = exports.readSection = exports.readDataRLE = exports.readDataZipWithoutPrediction = exports.readPsd = exports.checkSignature = exports.skipBytes = exports.readAsciiString = exports.readUnicodeStringWithLength = exports.readUnicodeString = exports.readPascalString = exports.readSignature = exports.readBytes = exports.readFixedPointPath32 = exports.readFixedPoint32 = exports.readFloat64 = exports.readFloat32 = exports.readUint32 = exports.readInt32LE = exports.readInt32 = exports.readUint16 = exports.readInt16 = exports.peekUint8 = exports.readUint8 = exports.warnOrThrow = exports.createReader = exports.supportedColorModes = void 0;
|
|
7342
|
+
exports.readPattern = exports.readColor = exports.readSection = exports.readDataRLE = exports.readDataZipWithoutPrediction = exports.readPsd = exports.checkSignature = exports.skipBytes = exports.readAsciiString = exports.readUnicodeStringWithLengthLE = exports.readUnicodeStringWithLength = exports.readUnicodeString = exports.readPascalString = exports.readSignature = exports.readBytes = exports.readFixedPointPath32 = exports.readFixedPoint32 = exports.readFloat64 = exports.readFloat32 = exports.readUint32 = exports.readInt32LE = exports.readInt32 = exports.readUint16LE = exports.readUint16 = exports.readInt16 = exports.peekUint8 = exports.readUint8 = exports.warnOrThrow = exports.createReader = exports.supportedColorModes = void 0;
|
|
6408
7343
|
var pako_1 = require("pako");
|
|
6409
7344
|
var helpers_1 = require("./helpers");
|
|
6410
7345
|
var additionalInfo_1 = require("./additionalInfo");
|
|
@@ -6449,6 +7384,11 @@ function readUint16(reader) {
|
|
|
6449
7384
|
return reader.view.getUint16(reader.offset - 2, false);
|
|
6450
7385
|
}
|
|
6451
7386
|
exports.readUint16 = readUint16;
|
|
7387
|
+
function readUint16LE(reader) {
|
|
7388
|
+
reader.offset += 2;
|
|
7389
|
+
return reader.view.getUint16(reader.offset - 2, true);
|
|
7390
|
+
}
|
|
7391
|
+
exports.readUint16LE = readUint16LE;
|
|
6452
7392
|
function readInt32(reader) {
|
|
6453
7393
|
reader.offset += 4;
|
|
6454
7394
|
return reader.view.getInt32(reader.offset - 4, false);
|
|
@@ -6532,6 +7472,17 @@ function readUnicodeStringWithLength(reader, length) {
|
|
|
6532
7472
|
return text;
|
|
6533
7473
|
}
|
|
6534
7474
|
exports.readUnicodeStringWithLength = readUnicodeStringWithLength;
|
|
7475
|
+
function readUnicodeStringWithLengthLE(reader, length) {
|
|
7476
|
+
var text = '';
|
|
7477
|
+
while (length--) {
|
|
7478
|
+
var value = readUint16LE(reader);
|
|
7479
|
+
if (value || length > 0) { // remove trailing \0
|
|
7480
|
+
text += String.fromCharCode(value);
|
|
7481
|
+
}
|
|
7482
|
+
}
|
|
7483
|
+
return text;
|
|
7484
|
+
}
|
|
7485
|
+
exports.readUnicodeStringWithLengthLE = readUnicodeStringWithLengthLE;
|
|
6535
7486
|
function readAsciiString(reader, length) {
|
|
6536
7487
|
var text = '';
|
|
6537
7488
|
while (length--) {
|
|
@@ -6739,14 +7690,14 @@ function readLayerRecord(reader, psd, options) {
|
|
|
6739
7690
|
var channelCount = readUint16(reader);
|
|
6740
7691
|
var channels = [];
|
|
6741
7692
|
for (var i = 0; i < channelCount; i++) {
|
|
6742
|
-
var
|
|
6743
|
-
var
|
|
7693
|
+
var id = readInt16(reader);
|
|
7694
|
+
var length_1 = readUint32(reader);
|
|
6744
7695
|
if (options.large) {
|
|
6745
|
-
if (
|
|
7696
|
+
if (length_1 !== 0)
|
|
6746
7697
|
throw new Error('Sizes larger than 4GB are not supported');
|
|
6747
|
-
|
|
7698
|
+
length_1 = readUint32(reader);
|
|
6748
7699
|
}
|
|
6749
|
-
channels.push({ id:
|
|
7700
|
+
channels.push({ id: id, length: length_1 });
|
|
6750
7701
|
}
|
|
6751
7702
|
checkSignature(reader, '8BIM');
|
|
6752
7703
|
var blendMode = readSignature(reader);
|
|
@@ -6758,11 +7709,12 @@ function readLayerRecord(reader, psd, options) {
|
|
|
6758
7709
|
var flags = readUint8(reader);
|
|
6759
7710
|
layer.transparencyProtected = (flags & 0x01) !== 0;
|
|
6760
7711
|
layer.hidden = (flags & 0x02) !== 0;
|
|
7712
|
+
if (flags & 0x20)
|
|
7713
|
+
layer.effectsOpen = true;
|
|
6761
7714
|
// 0x04 - obsolete
|
|
6762
7715
|
// 0x08 - 1 for Photoshop 5.0 and later, tells if bit 4 has useful information
|
|
6763
7716
|
// 0x10 - pixel data irrelevant to appearance of document
|
|
6764
|
-
// 0x20 -
|
|
6765
|
-
// if (flags & 0x20) (layer as any)._2 = true; // TEMP !!!!
|
|
7717
|
+
// 0x20 - effects/filters panel is expanded
|
|
6766
7718
|
skipBytes(reader, 1);
|
|
6767
7719
|
readSection(reader, 1, function (left) {
|
|
6768
7720
|
var mask = readLayerMaskData(reader, options);
|
|
@@ -7166,9 +8118,9 @@ function readDataRLE(reader, pixelData, _width, height, step, offsets, large) {
|
|
|
7166
8118
|
}
|
|
7167
8119
|
else {
|
|
7168
8120
|
for (var y = 0, p = offset | 0; y < height; y++, li++) {
|
|
7169
|
-
var
|
|
7170
|
-
var buffer = readBytes(reader,
|
|
7171
|
-
for (var i = 0; i <
|
|
8121
|
+
var length_2 = lengths[li];
|
|
8122
|
+
var buffer = readBytes(reader, length_2);
|
|
8123
|
+
for (var i = 0; i < length_2; i++) {
|
|
7172
8124
|
var header = buffer[i];
|
|
7173
8125
|
if (header > 128) {
|
|
7174
8126
|
var value = buffer[++i];
|
|
@@ -7312,7 +8264,7 @@ function readPattern(reader) {
|
|
|
7312
8264
|
var has = readUint32(reader);
|
|
7313
8265
|
if (!has)
|
|
7314
8266
|
continue;
|
|
7315
|
-
var
|
|
8267
|
+
var length_3 = readUint32(reader);
|
|
7316
8268
|
var pixelDepth = readUint32(reader);
|
|
7317
8269
|
var ctop = readUint32(reader);
|
|
7318
8270
|
var cleft = readUint32(reader);
|
|
@@ -7320,7 +8272,7 @@ function readPattern(reader) {
|
|
|
7320
8272
|
var cright = readUint32(reader);
|
|
7321
8273
|
var pixelDepth2 = readUint16(reader);
|
|
7322
8274
|
var compressionMode = readUint8(reader); // 0 - raw, 1 - zip
|
|
7323
|
-
var dataLength =
|
|
8275
|
+
var dataLength = length_3 - (4 + 16 + 2 + 1);
|
|
7324
8276
|
var cdata = readBytes(reader, dataLength);
|
|
7325
8277
|
if (pixelDepth !== 8 || pixelDepth2 !== 8) {
|
|
7326
8278
|
throw new Error('16bit pixel depth not supported for patterns');
|
|
@@ -7391,7 +8343,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
7391
8343
|
return __assign.apply(this, arguments);
|
|
7392
8344
|
};
|
|
7393
8345
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7394
|
-
exports.writeColor = exports.writePsd = exports.writeSection = exports.writeUnicodeStringWithPadding = exports.writeUnicodeString = exports.writePascalString = exports.writeSignature = exports.writeZeros = exports.writeBytes = exports.writeFixedPointPath32 = exports.writeFixedPoint32 = exports.writeFloat64 = exports.writeFloat32 = exports.writeUint32 = exports.writeInt32 = exports.writeUint16 = exports.writeInt16 = exports.writeUint8 = exports.getWriterBufferNoCopy = exports.getWriterBuffer = exports.createWriter = void 0;
|
|
8346
|
+
exports.writeColor = exports.writePsd = exports.writeSection = exports.writeUnicodeStringWithPadding = exports.writeUnicodeString = exports.writeUnicodeStringWithoutLengthLE = exports.writeUnicodeStringWithoutLength = exports.writePascalString = exports.writeSignature = exports.writeZeros = exports.writeBytes = exports.writeFixedPointPath32 = exports.writeFixedPoint32 = exports.writeFloat64 = exports.writeFloat32 = exports.writeUint32 = exports.writeInt32LE = exports.writeInt32 = exports.writeUint16LE = exports.writeUint16 = exports.writeInt16 = exports.writeUint8 = exports.getWriterBufferNoCopy = exports.getWriterBuffer = exports.createWriter = void 0;
|
|
7395
8347
|
var helpers_1 = require("./helpers");
|
|
7396
8348
|
var additionalInfo_1 = require("./additionalInfo");
|
|
7397
8349
|
var imageResources_1 = require("./imageResources");
|
|
@@ -7426,11 +8378,21 @@ function writeUint16(writer, value) {
|
|
|
7426
8378
|
writer.view.setUint16(offset, value, false);
|
|
7427
8379
|
}
|
|
7428
8380
|
exports.writeUint16 = writeUint16;
|
|
8381
|
+
function writeUint16LE(writer, value) {
|
|
8382
|
+
var offset = addSize(writer, 2);
|
|
8383
|
+
writer.view.setUint16(offset, value, true);
|
|
8384
|
+
}
|
|
8385
|
+
exports.writeUint16LE = writeUint16LE;
|
|
7429
8386
|
function writeInt32(writer, value) {
|
|
7430
8387
|
var offset = addSize(writer, 4);
|
|
7431
8388
|
writer.view.setInt32(offset, value, false);
|
|
7432
8389
|
}
|
|
7433
8390
|
exports.writeInt32 = writeInt32;
|
|
8391
|
+
function writeInt32LE(writer, value) {
|
|
8392
|
+
var offset = addSize(writer, 4);
|
|
8393
|
+
writer.view.setInt32(offset, value, true);
|
|
8394
|
+
}
|
|
8395
|
+
exports.writeInt32LE = writeInt32LE;
|
|
7434
8396
|
function writeUint32(writer, value) {
|
|
7435
8397
|
var offset = addSize(writer, 4);
|
|
7436
8398
|
writer.view.setUint32(offset, value, false);
|
|
@@ -7491,12 +8453,22 @@ function writePascalString(writer, text, padTo) {
|
|
|
7491
8453
|
}
|
|
7492
8454
|
}
|
|
7493
8455
|
exports.writePascalString = writePascalString;
|
|
7494
|
-
function
|
|
7495
|
-
writeUint32(writer, text.length);
|
|
8456
|
+
function writeUnicodeStringWithoutLength(writer, text) {
|
|
7496
8457
|
for (var i = 0; i < text.length; i++) {
|
|
7497
8458
|
writeUint16(writer, text.charCodeAt(i));
|
|
7498
8459
|
}
|
|
7499
8460
|
}
|
|
8461
|
+
exports.writeUnicodeStringWithoutLength = writeUnicodeStringWithoutLength;
|
|
8462
|
+
function writeUnicodeStringWithoutLengthLE(writer, text) {
|
|
8463
|
+
for (var i = 0; i < text.length; i++) {
|
|
8464
|
+
writeUint16LE(writer, text.charCodeAt(i));
|
|
8465
|
+
}
|
|
8466
|
+
}
|
|
8467
|
+
exports.writeUnicodeStringWithoutLengthLE = writeUnicodeStringWithoutLengthLE;
|
|
8468
|
+
function writeUnicodeString(writer, text) {
|
|
8469
|
+
writeUint32(writer, text.length);
|
|
8470
|
+
writeUnicodeStringWithoutLength(writer, text);
|
|
8471
|
+
}
|
|
7500
8472
|
exports.writeUnicodeString = writeUnicodeString;
|
|
7501
8473
|
function writeUnicodeStringWithPadding(writer, text) {
|
|
7502
8474
|
writeUint32(writer, text.length + 1);
|
|
@@ -7667,10 +8639,8 @@ function writeLayerInfo(tempBuffer, writer, psd, globalAlpha, options) {
|
|
|
7667
8639
|
if (layer.vectorMask || (layer.sectionDivider && layer.sectionDivider.type !== 0 /* SectionDividerType.Other */)) {
|
|
7668
8640
|
flags |= 0x10; // pixel data irrelevant to appearance of document
|
|
7669
8641
|
}
|
|
7670
|
-
if (layer.
|
|
7671
|
-
flags |= 0x20;
|
|
7672
|
-
}
|
|
7673
|
-
// if ('_2' in layer) flags |= 0x20; // TEMP!!!
|
|
8642
|
+
if (layer.effectsOpen)
|
|
8643
|
+
flags |= 0x20;
|
|
7674
8644
|
writeUint8(writer, flags);
|
|
7675
8645
|
writeUint8(writer, 0); // filler
|
|
7676
8646
|
writeSection(writer, 1, function () {
|
|
@@ -8200,23 +9170,34 @@ var styleKeys = [
|
|
|
8200
9170
|
var antialias = ['none', 'crisp', 'strong', 'smooth', 'sharp'];
|
|
8201
9171
|
var justification = ['left', 'right', 'center'];
|
|
8202
9172
|
function upperFirst(value) {
|
|
8203
|
-
return value.
|
|
9173
|
+
return value.substring(0, 1).toUpperCase() + value.substring(1);
|
|
8204
9174
|
}
|
|
8205
9175
|
function decodeColor(color) {
|
|
8206
9176
|
var c = color.Values;
|
|
8207
|
-
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
9177
|
+
switch (color.Type) {
|
|
9178
|
+
case 0: return { k: c[1] * 255 }; // grayscale (alpha?)
|
|
9179
|
+
case 1: return c[0] === 1 ?
|
|
9180
|
+
{ r: c[1] * 255, g: c[2] * 255, b: c[3] * 255 } : // rgb
|
|
9181
|
+
{ r: c[1] * 255, g: c[2] * 255, b: c[3] * 255, a: c[0] * 255 }; // rgba
|
|
9182
|
+
case 2: return { c: c[1] * 255, m: c[2] * 255, y: c[3] * 255, k: c[4] * 255 }; // cmyk (alpha?)
|
|
9183
|
+
default: throw new Error('Unknown color type in text layer');
|
|
8212
9184
|
}
|
|
8213
9185
|
}
|
|
8214
9186
|
function encodeColor(color) {
|
|
8215
|
-
if (color
|
|
8216
|
-
return
|
|
9187
|
+
if (!color) {
|
|
9188
|
+
return { Type: 1, Values: [0, 0, 0, 0] };
|
|
9189
|
+
}
|
|
9190
|
+
else if ('r' in color) {
|
|
9191
|
+
return { Type: 1, Values: ['a' in color ? color.a / 255 : 1, color.r / 255, color.g / 255, color.b / 255] };
|
|
9192
|
+
}
|
|
9193
|
+
else if ('c' in color) {
|
|
9194
|
+
return { Type: 2, Values: [1, color.c / 255, color.m / 255, color.y / 255, color.k / 255] };
|
|
9195
|
+
}
|
|
9196
|
+
else if ('k' in color) {
|
|
9197
|
+
return { Type: 0, Values: [1, color.k / 255] };
|
|
8217
9198
|
}
|
|
8218
9199
|
else {
|
|
8219
|
-
|
|
9200
|
+
throw new Error('Invalid color type in text layer');
|
|
8220
9201
|
}
|
|
8221
9202
|
}
|
|
8222
9203
|
function arraysEqual(a, b) {
|
|
@@ -8289,7 +9270,7 @@ function encodeObject(obj, keys, fonts) {
|
|
|
8289
9270
|
result[Key] = findOrAddFont(fonts, obj[key]);
|
|
8290
9271
|
}
|
|
8291
9272
|
else if (key === 'fillColor' || key === 'strokeColor') {
|
|
8292
|
-
result[Key] =
|
|
9273
|
+
result[Key] = encodeColor(obj[key]);
|
|
8293
9274
|
}
|
|
8294
9275
|
else {
|
|
8295
9276
|
result[Key] = obj[key];
|
|
@@ -8625,8 +9606,8 @@ function encodeEngineData(data) {
|
|
|
8625
9606
|
ShowGrid: !!gridInfo.show,
|
|
8626
9607
|
GridSize: (_j = gridInfo.size) !== null && _j !== void 0 ? _j : 18,
|
|
8627
9608
|
GridLeading: (_k = gridInfo.leading) !== null && _k !== void 0 ? _k : 22,
|
|
8628
|
-
GridColor:
|
|
8629
|
-
GridLeadingFillColor:
|
|
9609
|
+
GridColor: encodeColor(gridInfo.color),
|
|
9610
|
+
GridLeadingFillColor: encodeColor(gridInfo.color),
|
|
8630
9611
|
AlignLineHeightToGridFlags: !!gridInfo.alignLineHeightToGridFlags,
|
|
8631
9612
|
},
|
|
8632
9613
|
AntiAlias: antialias.indexOf((_l = data.antiAlias) !== null && _l !== void 0 ? _l : 'sharp'),
|