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