ag-psd 20.2.2 → 21.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 +3 -0
- package/dist/additionalInfo.js +338 -326
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +338 -326
- package/dist/psd.d.ts +1 -1
- package/dist-es/additionalInfo.js +338 -326
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/psd.d.ts +1 -1
- package/package.json +1 -1
- package/src/additionalInfo.ts +525 -515
- package/src/psd.ts +1 -1
package/dist/additionalInfo.js
CHANGED
|
@@ -181,13 +181,13 @@ function readVectorMask(reader, vectorMask, width, height, size) {
|
|
|
181
181
|
var boolOp = (0, psdReader_1.readInt16)(reader);
|
|
182
182
|
var flags = (0, psdReader_1.readUint16)(reader); // bit 1 always 1 ?
|
|
183
183
|
(0, psdReader_1.skipBytes)(reader, 18);
|
|
184
|
-
// TODO: 'combine' here might be wrong
|
|
185
184
|
path = {
|
|
186
185
|
open: selector === 3,
|
|
187
|
-
operation: boolOp === -1 ? 'combine' : exports.booleanOperations[boolOp],
|
|
188
186
|
knots: [],
|
|
189
187
|
fillRule: flags === 2 ? 'non-zero' : 'even-odd',
|
|
190
188
|
};
|
|
189
|
+
if (boolOp !== -1)
|
|
190
|
+
path.operation = exports.booleanOperations[boolOp];
|
|
191
191
|
paths.push(path);
|
|
192
192
|
break;
|
|
193
193
|
}
|
|
@@ -264,7 +264,7 @@ addHandler('vmsk', hasKey('vectorMask'), function (reader, target, left, _a) {
|
|
|
264
264
|
var path = _b[_i];
|
|
265
265
|
(0, psdWriter_1.writeUint16)(writer, path.open ? 3 : 0);
|
|
266
266
|
(0, psdWriter_1.writeUint16)(writer, path.knots.length);
|
|
267
|
-
(0, psdWriter_1.writeUint16)(writer,
|
|
267
|
+
(0, psdWriter_1.writeUint16)(writer, path.operation ? exports.booleanOperations.indexOf(path.operation) : -1); // -1 for undefined
|
|
268
268
|
(0, psdWriter_1.writeUint16)(writer, path.fillRule === 'non-zero' ? 2 : 1);
|
|
269
269
|
(0, psdWriter_1.writeZeros)(writer, 18); // TODO: these are sometimes non-zero
|
|
270
270
|
var linkedKnot = path.open ? 4 : 1;
|
|
@@ -971,7 +971,7 @@ function pointToHrznVrtc(point) {
|
|
|
971
971
|
Vrtc: (0, descriptor_1.unitsValue)(point.y, 'y'),
|
|
972
972
|
};
|
|
973
973
|
}
|
|
974
|
-
function parseFilterFXItem(f) {
|
|
974
|
+
function parseFilterFXItem(f, options) {
|
|
975
975
|
var base = {
|
|
976
976
|
name: f['Nm '],
|
|
977
977
|
opacity: (0, descriptor_1.parsePercent)(f.blendOptions.Opct),
|
|
@@ -981,341 +981,353 @@ function parseFilterFXItem(f) {
|
|
|
981
981
|
foregroundColor: (0, descriptor_1.parseColor)(f.FrgC),
|
|
982
982
|
backgroundColor: (0, descriptor_1.parseColor)(f.BckC),
|
|
983
983
|
};
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
}
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
}
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
imageResolution: p.imageResolution,
|
|
1238
|
-
meshBoundaryPath: {
|
|
1239
|
-
pathComponents: p.meshBoundaryPath.pathComponents.map(function (c) { return ({
|
|
1240
|
-
shapeOperation: c.shapeOperation.split('.')[1],
|
|
1241
|
-
paths: c.SbpL.map(function (t) { return ({
|
|
1242
|
-
closed: t.Clsp,
|
|
1243
|
-
points: t['Pts '].map(function (pt) { return ({
|
|
1244
|
-
anchor: hrznVrtcToPoint(pt.Anch),
|
|
1245
|
-
forward: hrznVrtcToPoint(pt['Fwd ']),
|
|
1246
|
-
backward: hrznVrtcToPoint(pt['Bwd ']),
|
|
1247
|
-
smooth: pt.Smoo,
|
|
984
|
+
if ('Fltr' in f) {
|
|
985
|
+
switch (f.Fltr._classID) {
|
|
986
|
+
case 'boxblur': return __assign(__assign({}, base), { type: 'box blur', filter: {
|
|
987
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
988
|
+
} });
|
|
989
|
+
case 'GsnB': return __assign(__assign({}, base), { type: 'gaussian blur', filter: {
|
|
990
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
991
|
+
} });
|
|
992
|
+
case 'MtnB': return __assign(__assign({}, base), { type: 'motion blur', filter: {
|
|
993
|
+
angle: f.Fltr.Angl,
|
|
994
|
+
distance: (0, descriptor_1.parseUnits)(f.Fltr.Dstn),
|
|
995
|
+
} });
|
|
996
|
+
case 'RdlB': return __assign(__assign({}, base), { type: 'radial blur', filter: {
|
|
997
|
+
amount: f.Fltr.Amnt,
|
|
998
|
+
method: descriptor_1.BlrM.decode(f.Fltr.BlrM),
|
|
999
|
+
quality: descriptor_1.BlrQ.decode(f.Fltr.BlrQ),
|
|
1000
|
+
} });
|
|
1001
|
+
case 'shapeBlur': return __assign(__assign({}, base), { type: 'shape blur', filter: {
|
|
1002
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1003
|
+
customShape: { name: f.Fltr.customShape['Nm '], id: f.Fltr.customShape.Idnt },
|
|
1004
|
+
} });
|
|
1005
|
+
case 'SmrB': return __assign(__assign({}, base), { type: 'smart blur', filter: {
|
|
1006
|
+
radius: f.Fltr['Rds '],
|
|
1007
|
+
threshold: f.Fltr.Thsh,
|
|
1008
|
+
quality: descriptor_1.SmBQ.decode(f.Fltr.SmBQ),
|
|
1009
|
+
mode: descriptor_1.SmBM.decode(f.Fltr.SmBM),
|
|
1010
|
+
} });
|
|
1011
|
+
case 'surfaceBlur': return __assign(__assign({}, base), { type: 'surface blur', filter: {
|
|
1012
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1013
|
+
threshold: f.Fltr.Thsh,
|
|
1014
|
+
} });
|
|
1015
|
+
case 'Dspl': return __assign(__assign({}, base), { type: 'displace', filter: {
|
|
1016
|
+
horizontalScale: f.Fltr.HrzS,
|
|
1017
|
+
verticalScale: f.Fltr.VrtS,
|
|
1018
|
+
displacementMap: descriptor_1.DspM.decode(f.Fltr.DspM),
|
|
1019
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1020
|
+
displacementFile: {
|
|
1021
|
+
signature: f.Fltr.DspF.sig,
|
|
1022
|
+
path: f.Fltr.DspF.path, // TODO: this is decoded incorrectly ???
|
|
1023
|
+
},
|
|
1024
|
+
} });
|
|
1025
|
+
case 'Pnch': return __assign(__assign({}, base), { type: 'pinch', filter: {
|
|
1026
|
+
amount: f.Fltr.Amnt,
|
|
1027
|
+
} });
|
|
1028
|
+
case 'Plr ': return __assign(__assign({}, base), { type: 'polar coordinates', filter: {
|
|
1029
|
+
conversion: descriptor_1.Cnvr.decode(f.Fltr.Cnvr),
|
|
1030
|
+
} });
|
|
1031
|
+
case 'Rple': return __assign(__assign({}, base), { type: 'ripple', filter: {
|
|
1032
|
+
amount: f.Fltr.Amnt,
|
|
1033
|
+
size: descriptor_1.RplS.decode(f.Fltr.RplS),
|
|
1034
|
+
} });
|
|
1035
|
+
case 'Shr ': return __assign(__assign({}, base), { type: 'shear', filter: {
|
|
1036
|
+
shearPoints: f.Fltr.ShrP.map(function (p) { return ({ x: p.Hrzn, y: p.Vrtc }); }),
|
|
1037
|
+
shearStart: f.Fltr.ShrS,
|
|
1038
|
+
shearEnd: f.Fltr.ShrE,
|
|
1039
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1040
|
+
} });
|
|
1041
|
+
case 'Sphr': return __assign(__assign({}, base), { type: 'spherize', filter: {
|
|
1042
|
+
amount: f.Fltr.Amnt,
|
|
1043
|
+
mode: descriptor_1.SphM.decode(f.Fltr.SphM),
|
|
1044
|
+
} });
|
|
1045
|
+
case 'Twrl': return __assign(__assign({}, base), { type: 'twirl', filter: {
|
|
1046
|
+
angle: f.Fltr.Angl,
|
|
1047
|
+
} });
|
|
1048
|
+
case 'Wave': return __assign(__assign({}, base), { type: 'wave', filter: {
|
|
1049
|
+
numberOfGenerators: f.Fltr.NmbG,
|
|
1050
|
+
type: descriptor_1.Wvtp.decode(f.Fltr.Wvtp),
|
|
1051
|
+
wavelength: { min: f.Fltr.WLMn, max: f.Fltr.WLMx },
|
|
1052
|
+
amplitude: { min: f.Fltr.AmMn, max: f.Fltr.AmMx },
|
|
1053
|
+
scale: { x: f.Fltr.SclH, y: f.Fltr.SclV },
|
|
1054
|
+
randomSeed: f.Fltr.RndS,
|
|
1055
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1056
|
+
} });
|
|
1057
|
+
case 'ZgZg': return __assign(__assign({}, base), { type: 'zigzag', filter: {
|
|
1058
|
+
amount: f.Fltr.Amnt,
|
|
1059
|
+
ridges: f.Fltr.NmbR,
|
|
1060
|
+
style: descriptor_1.ZZTy.decode(f.Fltr.ZZTy),
|
|
1061
|
+
} });
|
|
1062
|
+
case 'AdNs': return __assign(__assign({}, base), { type: 'add noise', filter: {
|
|
1063
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Nose),
|
|
1064
|
+
distribution: descriptor_1.Dstr.decode(f.Fltr.Dstr),
|
|
1065
|
+
monochromatic: f.Fltr.Mnch,
|
|
1066
|
+
randomSeed: f.Fltr.FlRs,
|
|
1067
|
+
} });
|
|
1068
|
+
case 'DstS': return __assign(__assign({}, base), { type: 'dust and scratches', filter: {
|
|
1069
|
+
radius: f.Fltr['Rds '],
|
|
1070
|
+
threshold: f.Fltr.Thsh,
|
|
1071
|
+
} });
|
|
1072
|
+
case 'Mdn ': return __assign(__assign({}, base), { type: 'median', filter: {
|
|
1073
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1074
|
+
} });
|
|
1075
|
+
case 'denoise': return __assign(__assign({}, base), { type: 'reduce noise', filter: {
|
|
1076
|
+
preset: f.Fltr.preset,
|
|
1077
|
+
removeJpegArtifact: f.Fltr.removeJPEGArtifact,
|
|
1078
|
+
reduceColorNoise: (0, descriptor_1.parsePercent)(f.Fltr.ClNs),
|
|
1079
|
+
sharpenDetails: (0, descriptor_1.parsePercent)(f.Fltr.Shrp),
|
|
1080
|
+
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 } : {}))); }),
|
|
1081
|
+
} });
|
|
1082
|
+
case 'ClrH': return __assign(__assign({}, base), { type: 'color halftone', filter: {
|
|
1083
|
+
radius: f.Fltr['Rds '],
|
|
1084
|
+
angle1: f.Fltr.Ang1,
|
|
1085
|
+
angle2: f.Fltr.Ang2,
|
|
1086
|
+
angle3: f.Fltr.Ang3,
|
|
1087
|
+
angle4: f.Fltr.Ang4,
|
|
1088
|
+
} });
|
|
1089
|
+
case 'Crst': return __assign(__assign({}, base), { type: 'crystallize', filter: {
|
|
1090
|
+
cellSize: f.Fltr.ClSz,
|
|
1091
|
+
randomSeed: f.Fltr.FlRs,
|
|
1092
|
+
} });
|
|
1093
|
+
case 'Mztn': return __assign(__assign({}, base), { type: 'mezzotint', filter: {
|
|
1094
|
+
type: descriptor_1.MztT.decode(f.Fltr.MztT),
|
|
1095
|
+
randomSeed: f.Fltr.FlRs,
|
|
1096
|
+
} });
|
|
1097
|
+
case 'Msc ': return __assign(__assign({}, base), { type: 'mosaic', filter: {
|
|
1098
|
+
cellSize: (0, descriptor_1.parseUnits)(f.Fltr.ClSz),
|
|
1099
|
+
} });
|
|
1100
|
+
case 'Pntl': return __assign(__assign({}, base), { type: 'pointillize', filter: {
|
|
1101
|
+
cellSize: f.Fltr.ClSz,
|
|
1102
|
+
randomSeed: f.Fltr.FlRs,
|
|
1103
|
+
} });
|
|
1104
|
+
case 'Clds': return __assign(__assign({}, base), { type: 'clouds', filter: {
|
|
1105
|
+
randomSeed: f.Fltr.FlRs,
|
|
1106
|
+
} });
|
|
1107
|
+
case 'DfrC': return __assign(__assign({}, base), { type: 'difference clouds', filter: {
|
|
1108
|
+
randomSeed: f.Fltr.FlRs,
|
|
1109
|
+
} });
|
|
1110
|
+
case 'Fbrs': return __assign(__assign({}, base), { type: 'fibers', filter: {
|
|
1111
|
+
variance: f.Fltr.Vrnc,
|
|
1112
|
+
strength: f.Fltr.Strg,
|
|
1113
|
+
randomSeed: f.Fltr.RndS,
|
|
1114
|
+
} });
|
|
1115
|
+
case 'LnsF': return __assign(__assign({}, base), { type: 'lens flare', filter: {
|
|
1116
|
+
brightness: f.Fltr.Brgh,
|
|
1117
|
+
position: { x: f.Fltr.FlrC.Hrzn, y: f.Fltr.FlrC.Vrtc },
|
|
1118
|
+
lensType: descriptor_1.Lns.decode(f.Fltr['Lns ']),
|
|
1119
|
+
} });
|
|
1120
|
+
case 'smartSharpen': return __assign(__assign({}, base), { type: 'smart sharpen', filter: {
|
|
1121
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Amnt),
|
|
1122
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1123
|
+
threshold: f.Fltr.Thsh,
|
|
1124
|
+
angle: f.Fltr.Angl,
|
|
1125
|
+
moreAccurate: f.Fltr.moreAccurate,
|
|
1126
|
+
blur: descriptor_1.blurType.decode(f.Fltr.blur),
|
|
1127
|
+
preset: f.Fltr.preset,
|
|
1128
|
+
shadow: {
|
|
1129
|
+
fadeAmount: (0, descriptor_1.parsePercent)(f.Fltr.sdwM.Amnt),
|
|
1130
|
+
tonalWidth: (0, descriptor_1.parsePercent)(f.Fltr.sdwM.Wdth),
|
|
1131
|
+
radius: f.Fltr.sdwM['Rds '],
|
|
1132
|
+
},
|
|
1133
|
+
highlight: {
|
|
1134
|
+
fadeAmount: (0, descriptor_1.parsePercent)(f.Fltr.hglM.Amnt),
|
|
1135
|
+
tonalWidth: (0, descriptor_1.parsePercent)(f.Fltr.hglM.Wdth),
|
|
1136
|
+
radius: f.Fltr.hglM['Rds '],
|
|
1137
|
+
},
|
|
1138
|
+
} });
|
|
1139
|
+
case 'UnsM': return __assign(__assign({}, base), { type: 'unsharp mask', filter: {
|
|
1140
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Amnt),
|
|
1141
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1142
|
+
threshold: f.Fltr.Thsh,
|
|
1143
|
+
} });
|
|
1144
|
+
case 'Dfs ': return __assign(__assign({}, base), { type: 'diffuse', filter: {
|
|
1145
|
+
mode: descriptor_1.DfsM.decode(f.Fltr['Md ']),
|
|
1146
|
+
randomSeed: f.Fltr.FlRs,
|
|
1147
|
+
} });
|
|
1148
|
+
case 'Embs': return __assign(__assign({}, base), { type: 'emboss', filter: {
|
|
1149
|
+
angle: f.Fltr.Angl,
|
|
1150
|
+
height: f.Fltr.Hght,
|
|
1151
|
+
amount: f.Fltr.Amnt,
|
|
1152
|
+
} });
|
|
1153
|
+
case 'Extr': return __assign(__assign({}, base), { type: 'extrude', filter: {
|
|
1154
|
+
type: descriptor_1.ExtT.decode(f.Fltr.ExtT),
|
|
1155
|
+
size: f.Fltr.ExtS,
|
|
1156
|
+
depth: f.Fltr.ExtD,
|
|
1157
|
+
depthMode: descriptor_1.ExtR.decode(f.Fltr.ExtR),
|
|
1158
|
+
randomSeed: f.Fltr.FlRs,
|
|
1159
|
+
solidFrontFaces: f.Fltr.ExtF,
|
|
1160
|
+
maskIncompleteBlocks: f.Fltr.ExtM,
|
|
1161
|
+
} });
|
|
1162
|
+
case 'Tls ': return __assign(__assign({}, base), { type: 'tiles', filter: {
|
|
1163
|
+
numberOfTiles: f.Fltr.TlNm,
|
|
1164
|
+
maximumOffset: f.Fltr.TlOf,
|
|
1165
|
+
fillEmptyAreaWith: descriptor_1.FlCl.decode(f.Fltr.FlCl),
|
|
1166
|
+
randomSeed: f.Fltr.FlRs,
|
|
1167
|
+
} });
|
|
1168
|
+
case 'TrcC': return __assign(__assign({}, base), { type: 'trace contour', filter: {
|
|
1169
|
+
level: f.Fltr['Lvl '],
|
|
1170
|
+
edge: descriptor_1.CntE.decode(f.Fltr['Edg ']),
|
|
1171
|
+
} });
|
|
1172
|
+
case 'Wnd ': return __assign(__assign({}, base), { type: 'wind', filter: {
|
|
1173
|
+
method: descriptor_1.WndM.decode(f.Fltr.WndM),
|
|
1174
|
+
direction: descriptor_1.Drct.decode(f.Fltr.Drct),
|
|
1175
|
+
} });
|
|
1176
|
+
case 'Dntr': return __assign(__assign({}, base), { type: 'de-interlace', filter: {
|
|
1177
|
+
eliminate: descriptor_1.IntE.decode(f.Fltr.IntE),
|
|
1178
|
+
newFieldsBy: descriptor_1.IntC.decode(f.Fltr.IntC),
|
|
1179
|
+
} });
|
|
1180
|
+
case 'Cstm': return __assign(__assign({}, base), { type: 'custom', filter: {
|
|
1181
|
+
scale: f.Fltr['Scl '],
|
|
1182
|
+
offset: f.Fltr.Ofst,
|
|
1183
|
+
matrix: f.Fltr.Mtrx,
|
|
1184
|
+
} });
|
|
1185
|
+
case 'HghP': return __assign(__assign({}, base), { type: 'high pass', filter: {
|
|
1186
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1187
|
+
} });
|
|
1188
|
+
case 'Mxm ': return __assign(__assign({}, base), { type: 'maximum', filter: {
|
|
1189
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1190
|
+
} });
|
|
1191
|
+
case 'Mnm ': return __assign(__assign({}, base), { type: 'minimum', filter: {
|
|
1192
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1193
|
+
} });
|
|
1194
|
+
case 'Ofst': return __assign(__assign({}, base), { type: 'offset', filter: {
|
|
1195
|
+
horizontal: f.Fltr.Hrzn,
|
|
1196
|
+
vertical: f.Fltr.Vrtc,
|
|
1197
|
+
undefinedAreas: descriptor_1.FlMd.decode(f.Fltr['Fl ']),
|
|
1198
|
+
} });
|
|
1199
|
+
case 'rigidTransform': return __assign(__assign({}, base), { type: 'puppet', filter: {
|
|
1200
|
+
rigidType: f.Fltr.rigidType,
|
|
1201
|
+
bounds: [
|
|
1202
|
+
{ x: f.Fltr.PuX0, y: f.Fltr.PuY0, },
|
|
1203
|
+
{ x: f.Fltr.PuX1, y: f.Fltr.PuY1, },
|
|
1204
|
+
{ x: f.Fltr.PuX2, y: f.Fltr.PuY2, },
|
|
1205
|
+
{ x: f.Fltr.PuX3, y: f.Fltr.PuY3, },
|
|
1206
|
+
],
|
|
1207
|
+
puppetShapeList: f.Fltr.puppetShapeList.map(function (p) { return ({
|
|
1208
|
+
rigidType: p.rigidType,
|
|
1209
|
+
// TODO: VrsM
|
|
1210
|
+
// TODO: VrsN
|
|
1211
|
+
originalVertexArray: uint8ToPoints(p.originalVertexArray),
|
|
1212
|
+
deformedVertexArray: uint8ToPoints(p.deformedVertexArray),
|
|
1213
|
+
indexArray: Array.from(uint8ToUint32(p.indexArray)),
|
|
1214
|
+
pinOffsets: arrayToPoints(p.pinOffsets),
|
|
1215
|
+
posFinalPins: arrayToPoints(p.posFinalPins),
|
|
1216
|
+
pinVertexIndices: p.pinVertexIndices,
|
|
1217
|
+
selectedPin: p.selectedPin,
|
|
1218
|
+
pinPosition: arrayToPoints(p.PinP),
|
|
1219
|
+
pinRotation: p.PnRt,
|
|
1220
|
+
pinOverlay: p.PnOv,
|
|
1221
|
+
pinDepth: p.PnDp,
|
|
1222
|
+
meshQuality: p.meshQuality,
|
|
1223
|
+
meshExpansion: p.meshExpansion,
|
|
1224
|
+
meshRigidity: p.meshRigidity,
|
|
1225
|
+
imageResolution: p.imageResolution,
|
|
1226
|
+
meshBoundaryPath: {
|
|
1227
|
+
pathComponents: p.meshBoundaryPath.pathComponents.map(function (c) { return ({
|
|
1228
|
+
shapeOperation: c.shapeOperation.split('.')[1],
|
|
1229
|
+
paths: c.SbpL.map(function (t) { return ({
|
|
1230
|
+
closed: t.Clsp,
|
|
1231
|
+
points: t['Pts '].map(function (pt) { return ({
|
|
1232
|
+
anchor: hrznVrtcToPoint(pt.Anch),
|
|
1233
|
+
forward: hrznVrtcToPoint(pt['Fwd ']),
|
|
1234
|
+
backward: hrznVrtcToPoint(pt['Bwd ']),
|
|
1235
|
+
smooth: pt.Smoo,
|
|
1236
|
+
}); }),
|
|
1248
1237
|
}); }),
|
|
1249
1238
|
}); }),
|
|
1250
|
-
}
|
|
1251
|
-
},
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
if (!Flrt["PN".concat(fromAtoZ[i], "a")])
|
|
1259
|
-
break;
|
|
1260
|
-
for (var j = 0; j < fromAtoZ.length; j++) {
|
|
1261
|
-
if (!Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])])
|
|
1239
|
+
},
|
|
1240
|
+
}); }),
|
|
1241
|
+
} });
|
|
1242
|
+
case 'PbPl': {
|
|
1243
|
+
var parameters = [];
|
|
1244
|
+
var Flrt = f.Fltr;
|
|
1245
|
+
for (var i = 0; i < fromAtoZ.length; i++) {
|
|
1246
|
+
if (!Flrt["PN".concat(fromAtoZ[i], "a")])
|
|
1262
1247
|
break;
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1248
|
+
for (var j = 0; j < fromAtoZ.length; j++) {
|
|
1249
|
+
if (!Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])])
|
|
1250
|
+
break;
|
|
1251
|
+
parameters.push({
|
|
1252
|
+
name: Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])],
|
|
1253
|
+
value: Flrt["PF".concat(fromAtoZ[i]).concat(fromAtoZ[j])]
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1267
1256
|
}
|
|
1257
|
+
return __assign(__assign({}, base), { type: 'oil paint plugin', filter: {
|
|
1258
|
+
name: f.Fltr.KnNm,
|
|
1259
|
+
gpu: f.Fltr.GpuY,
|
|
1260
|
+
lighting: f.Fltr.LIWy,
|
|
1261
|
+
parameters: parameters,
|
|
1262
|
+
} });
|
|
1268
1263
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1264
|
+
// case 2089: return {
|
|
1265
|
+
// ...base,
|
|
1266
|
+
// type: 'adaptive wide angle',
|
|
1267
|
+
// params: {
|
|
1268
|
+
// correction: prjM.decode(f.Fltr.prjM),
|
|
1269
|
+
// focalLength: f.Fltr.focL,
|
|
1270
|
+
// cropFactor: f.Fltr.CrpF,
|
|
1271
|
+
// imageScale: f.Fltr.imgS,
|
|
1272
|
+
// imageX: f.Fltr.imgX,
|
|
1273
|
+
// imageY: f.Fltr.imgY,
|
|
1274
|
+
// },
|
|
1275
|
+
// };
|
|
1276
|
+
case 'HsbP': return __assign(__assign({}, base), { type: 'hsb/hsl', filter: {
|
|
1277
|
+
inputMode: descriptor_1.ClrS.decode(f.Fltr.Inpt),
|
|
1278
|
+
rowOrder: descriptor_1.ClrS.decode(f.Fltr.Otpt),
|
|
1274
1279
|
} });
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
// imageScale: f.Fltr.imgS,
|
|
1284
|
-
// imageX: f.Fltr.imgX,
|
|
1285
|
-
// imageY: f.Fltr.imgY,
|
|
1286
|
-
// },
|
|
1287
|
-
// };
|
|
1288
|
-
case 1215521360: return __assign(__assign({}, base), { type: 'hsb/hsl', filter: {
|
|
1289
|
-
inputMode: descriptor_1.ClrS.decode(f.Fltr.Inpt),
|
|
1290
|
-
rowOrder: descriptor_1.ClrS.decode(f.Fltr.Otpt),
|
|
1291
|
-
} });
|
|
1292
|
-
case 1122: return __assign(__assign({}, base), { type: 'oil paint', filter: {
|
|
1293
|
-
lightingOn: f.Fltr.lightingOn,
|
|
1294
|
-
stylization: f.Fltr.stylization,
|
|
1295
|
-
cleanliness: f.Fltr.cleanliness,
|
|
1296
|
-
brushScale: f.Fltr.brushScale,
|
|
1297
|
-
microBrush: f.Fltr.microBrush,
|
|
1298
|
-
lightDirection: f.Fltr.LghD,
|
|
1299
|
-
specularity: f.Fltr.specularity,
|
|
1300
|
-
} });
|
|
1301
|
-
case 1282492025: {
|
|
1302
|
-
return __assign(__assign({}, base), { type: 'liquify', filter: {
|
|
1303
|
-
liquifyMesh: f.Fltr.LqMe,
|
|
1280
|
+
case 'oilPaint': return __assign(__assign({}, base), { type: 'oil paint', filter: {
|
|
1281
|
+
lightingOn: f.Fltr.lightingOn,
|
|
1282
|
+
stylization: f.Fltr.stylization,
|
|
1283
|
+
cleanliness: f.Fltr.cleanliness,
|
|
1284
|
+
brushScale: f.Fltr.brushScale,
|
|
1285
|
+
microBrush: f.Fltr.microBrush,
|
|
1286
|
+
lightDirection: f.Fltr.LghD,
|
|
1287
|
+
specularity: f.Fltr.specularity,
|
|
1304
1288
|
} });
|
|
1289
|
+
case 'LqFy': {
|
|
1290
|
+
return __assign(__assign({}, base), { type: 'liquify', filter: {
|
|
1291
|
+
liquifyMesh: f.Fltr.LqMe,
|
|
1292
|
+
} });
|
|
1293
|
+
}
|
|
1294
|
+
default:
|
|
1295
|
+
if (options.throwForMissingFeatures) {
|
|
1296
|
+
throw new Error("Unknown filter classId: ".concat(f.Fltr._classID));
|
|
1297
|
+
}
|
|
1298
|
+
return undefined;
|
|
1299
|
+
}
|
|
1300
|
+
}
|
|
1301
|
+
else {
|
|
1302
|
+
switch (f.filterID) {
|
|
1303
|
+
case 1098281575: return __assign(__assign({}, base), { type: 'average' });
|
|
1304
|
+
case 1114403360: return __assign(__assign({}, base), { type: 'blur' });
|
|
1305
|
+
case 1114403405: return __assign(__assign({}, base), { type: 'blur more' });
|
|
1306
|
+
case 1148416099: return __assign(__assign({}, base), { type: 'despeckle' });
|
|
1307
|
+
case 1180922912: return __assign(__assign({}, base), { type: 'facet' });
|
|
1308
|
+
case 1181902701: return __assign(__assign({}, base), { type: 'fragment' });
|
|
1309
|
+
case 1399353968: return __assign(__assign({}, base), { type: 'sharpen' });
|
|
1310
|
+
case 1399353925: return __assign(__assign({}, base), { type: 'sharpen edges' });
|
|
1311
|
+
case 1399353933: return __assign(__assign({}, base), { type: 'sharpen more' });
|
|
1312
|
+
case 1181639749: return __assign(__assign({}, base), { type: 'find edges' });
|
|
1313
|
+
case 1399616122: return __assign(__assign({}, base), { type: 'solarize' });
|
|
1314
|
+
case 1314149187: return __assign(__assign({}, base), { type: 'ntsc colors' });
|
|
1315
|
+
default:
|
|
1316
|
+
if (options.throwForMissingFeatures) {
|
|
1317
|
+
// console.log('FILTER', require('util').inspect(f, false, 99, true));
|
|
1318
|
+
throw new Error("Unknown filterID: ".concat(f.filterID));
|
|
1319
|
+
}
|
|
1305
1320
|
}
|
|
1306
|
-
default:
|
|
1307
|
-
// console.log('FILTER', require('util').inspect(f, false, 99, true));
|
|
1308
|
-
throw new Error("Unknown filterID: ".concat(f.filterID));
|
|
1309
1321
|
}
|
|
1310
1322
|
}
|
|
1311
|
-
function parseFilterFX(desc) {
|
|
1323
|
+
function parseFilterFX(desc, options) {
|
|
1312
1324
|
return {
|
|
1313
1325
|
enabled: desc.enab,
|
|
1314
1326
|
validAtPosition: desc.validAtPosition,
|
|
1315
1327
|
maskEnabled: desc.filterMaskEnable,
|
|
1316
1328
|
maskLinked: desc.filterMaskLinked,
|
|
1317
1329
|
maskExtendWithWhite: desc.filterMaskExtendWithWhite,
|
|
1318
|
-
list: desc.filterFXList.map(parseFilterFXItem),
|
|
1330
|
+
list: desc.filterFXList.map(function (x) { return parseFilterFXItem(x, options); }).filter(function (x) { return !!x; }),
|
|
1319
1331
|
};
|
|
1320
1332
|
}
|
|
1321
1333
|
function uvRadius(t) {
|
|
@@ -1788,13 +1800,13 @@ function getWarpFromPlacedLayer(placed) {
|
|
|
1788
1800
|
},
|
|
1789
1801
|
};
|
|
1790
1802
|
}
|
|
1791
|
-
addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
1803
|
+
addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left, _, options) {
|
|
1792
1804
|
if ((0, psdReader_1.readSignature)(reader) !== 'soLD')
|
|
1793
1805
|
throw new Error("Invalid SoLd type");
|
|
1794
1806
|
var version = (0, psdReader_1.readInt32)(reader);
|
|
1795
1807
|
if (version !== 4 && version !== 5)
|
|
1796
1808
|
throw new Error("Invalid SoLd version");
|
|
1797
|
-
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
1809
|
+
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader, true);
|
|
1798
1810
|
// console.log('SoLd', require('util').inspect(desc, false, 99, true));
|
|
1799
1811
|
// console.log('SoLd.warp', require('util').inspect(desc.warp, false, 99, true));
|
|
1800
1812
|
// console.log('SoLd.quiltWarp', require('util').inspect(desc.quiltWarp, false, 99, true));
|
|
@@ -1831,7 +1843,7 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
1831
1843
|
};
|
|
1832
1844
|
}
|
|
1833
1845
|
if (desc.filterFX)
|
|
1834
|
-
target.placedLayer.filter = parseFilterFX(desc.filterFX);
|
|
1846
|
+
target.placedLayer.filter = parseFilterFX(desc.filterFX, options);
|
|
1835
1847
|
// console.log('filter', require('util').inspect(target.placedLayer.filter, false, 99, true));
|
|
1836
1848
|
(0, psdReader_1.skipBytes)(reader, left()); // HACK
|
|
1837
1849
|
}, function (writer, target) {
|