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/bundle.js
CHANGED
|
@@ -482,13 +482,13 @@ function readVectorMask(reader, vectorMask, width, height, size) {
|
|
|
482
482
|
var boolOp = (0, psdReader_1.readInt16)(reader);
|
|
483
483
|
var flags = (0, psdReader_1.readUint16)(reader); // bit 1 always 1 ?
|
|
484
484
|
(0, psdReader_1.skipBytes)(reader, 18);
|
|
485
|
-
// TODO: 'combine' here might be wrong
|
|
486
485
|
path = {
|
|
487
486
|
open: selector === 3,
|
|
488
|
-
operation: boolOp === -1 ? 'combine' : exports.booleanOperations[boolOp],
|
|
489
487
|
knots: [],
|
|
490
488
|
fillRule: flags === 2 ? 'non-zero' : 'even-odd',
|
|
491
489
|
};
|
|
490
|
+
if (boolOp !== -1)
|
|
491
|
+
path.operation = exports.booleanOperations[boolOp];
|
|
492
492
|
paths.push(path);
|
|
493
493
|
break;
|
|
494
494
|
}
|
|
@@ -565,7 +565,7 @@ addHandler('vmsk', hasKey('vectorMask'), function (reader, target, left, _a) {
|
|
|
565
565
|
var path = _b[_i];
|
|
566
566
|
(0, psdWriter_1.writeUint16)(writer, path.open ? 3 : 0);
|
|
567
567
|
(0, psdWriter_1.writeUint16)(writer, path.knots.length);
|
|
568
|
-
(0, psdWriter_1.writeUint16)(writer,
|
|
568
|
+
(0, psdWriter_1.writeUint16)(writer, path.operation ? exports.booleanOperations.indexOf(path.operation) : -1); // -1 for undefined
|
|
569
569
|
(0, psdWriter_1.writeUint16)(writer, path.fillRule === 'non-zero' ? 2 : 1);
|
|
570
570
|
(0, psdWriter_1.writeZeros)(writer, 18); // TODO: these are sometimes non-zero
|
|
571
571
|
var linkedKnot = path.open ? 4 : 1;
|
|
@@ -1272,7 +1272,7 @@ function pointToHrznVrtc(point) {
|
|
|
1272
1272
|
Vrtc: (0, descriptor_1.unitsValue)(point.y, 'y'),
|
|
1273
1273
|
};
|
|
1274
1274
|
}
|
|
1275
|
-
function parseFilterFXItem(f) {
|
|
1275
|
+
function parseFilterFXItem(f, options) {
|
|
1276
1276
|
var base = {
|
|
1277
1277
|
name: f['Nm '],
|
|
1278
1278
|
opacity: (0, descriptor_1.parsePercent)(f.blendOptions.Opct),
|
|
@@ -1282,341 +1282,353 @@ function parseFilterFXItem(f) {
|
|
|
1282
1282
|
foregroundColor: (0, descriptor_1.parseColor)(f.FrgC),
|
|
1283
1283
|
backgroundColor: (0, descriptor_1.parseColor)(f.BckC),
|
|
1284
1284
|
};
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
}
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
}
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
imageResolution: p.imageResolution,
|
|
1539
|
-
meshBoundaryPath: {
|
|
1540
|
-
pathComponents: p.meshBoundaryPath.pathComponents.map(function (c) { return ({
|
|
1541
|
-
shapeOperation: c.shapeOperation.split('.')[1],
|
|
1542
|
-
paths: c.SbpL.map(function (t) { return ({
|
|
1543
|
-
closed: t.Clsp,
|
|
1544
|
-
points: t['Pts '].map(function (pt) { return ({
|
|
1545
|
-
anchor: hrznVrtcToPoint(pt.Anch),
|
|
1546
|
-
forward: hrznVrtcToPoint(pt['Fwd ']),
|
|
1547
|
-
backward: hrznVrtcToPoint(pt['Bwd ']),
|
|
1548
|
-
smooth: pt.Smoo,
|
|
1285
|
+
if ('Fltr' in f) {
|
|
1286
|
+
switch (f.Fltr._classID) {
|
|
1287
|
+
case 'boxblur': return __assign(__assign({}, base), { type: 'box blur', filter: {
|
|
1288
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1289
|
+
} });
|
|
1290
|
+
case 'GsnB': return __assign(__assign({}, base), { type: 'gaussian blur', filter: {
|
|
1291
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1292
|
+
} });
|
|
1293
|
+
case 'MtnB': return __assign(__assign({}, base), { type: 'motion blur', filter: {
|
|
1294
|
+
angle: f.Fltr.Angl,
|
|
1295
|
+
distance: (0, descriptor_1.parseUnits)(f.Fltr.Dstn),
|
|
1296
|
+
} });
|
|
1297
|
+
case 'RdlB': return __assign(__assign({}, base), { type: 'radial blur', filter: {
|
|
1298
|
+
amount: f.Fltr.Amnt,
|
|
1299
|
+
method: descriptor_1.BlrM.decode(f.Fltr.BlrM),
|
|
1300
|
+
quality: descriptor_1.BlrQ.decode(f.Fltr.BlrQ),
|
|
1301
|
+
} });
|
|
1302
|
+
case 'shapeBlur': return __assign(__assign({}, base), { type: 'shape blur', filter: {
|
|
1303
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1304
|
+
customShape: { name: f.Fltr.customShape['Nm '], id: f.Fltr.customShape.Idnt },
|
|
1305
|
+
} });
|
|
1306
|
+
case 'SmrB': return __assign(__assign({}, base), { type: 'smart blur', filter: {
|
|
1307
|
+
radius: f.Fltr['Rds '],
|
|
1308
|
+
threshold: f.Fltr.Thsh,
|
|
1309
|
+
quality: descriptor_1.SmBQ.decode(f.Fltr.SmBQ),
|
|
1310
|
+
mode: descriptor_1.SmBM.decode(f.Fltr.SmBM),
|
|
1311
|
+
} });
|
|
1312
|
+
case 'surfaceBlur': return __assign(__assign({}, base), { type: 'surface blur', filter: {
|
|
1313
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1314
|
+
threshold: f.Fltr.Thsh,
|
|
1315
|
+
} });
|
|
1316
|
+
case 'Dspl': return __assign(__assign({}, base), { type: 'displace', filter: {
|
|
1317
|
+
horizontalScale: f.Fltr.HrzS,
|
|
1318
|
+
verticalScale: f.Fltr.VrtS,
|
|
1319
|
+
displacementMap: descriptor_1.DspM.decode(f.Fltr.DspM),
|
|
1320
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1321
|
+
displacementFile: {
|
|
1322
|
+
signature: f.Fltr.DspF.sig,
|
|
1323
|
+
path: f.Fltr.DspF.path, // TODO: this is decoded incorrectly ???
|
|
1324
|
+
},
|
|
1325
|
+
} });
|
|
1326
|
+
case 'Pnch': return __assign(__assign({}, base), { type: 'pinch', filter: {
|
|
1327
|
+
amount: f.Fltr.Amnt,
|
|
1328
|
+
} });
|
|
1329
|
+
case 'Plr ': return __assign(__assign({}, base), { type: 'polar coordinates', filter: {
|
|
1330
|
+
conversion: descriptor_1.Cnvr.decode(f.Fltr.Cnvr),
|
|
1331
|
+
} });
|
|
1332
|
+
case 'Rple': return __assign(__assign({}, base), { type: 'ripple', filter: {
|
|
1333
|
+
amount: f.Fltr.Amnt,
|
|
1334
|
+
size: descriptor_1.RplS.decode(f.Fltr.RplS),
|
|
1335
|
+
} });
|
|
1336
|
+
case 'Shr ': return __assign(__assign({}, base), { type: 'shear', filter: {
|
|
1337
|
+
shearPoints: f.Fltr.ShrP.map(function (p) { return ({ x: p.Hrzn, y: p.Vrtc }); }),
|
|
1338
|
+
shearStart: f.Fltr.ShrS,
|
|
1339
|
+
shearEnd: f.Fltr.ShrE,
|
|
1340
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1341
|
+
} });
|
|
1342
|
+
case 'Sphr': return __assign(__assign({}, base), { type: 'spherize', filter: {
|
|
1343
|
+
amount: f.Fltr.Amnt,
|
|
1344
|
+
mode: descriptor_1.SphM.decode(f.Fltr.SphM),
|
|
1345
|
+
} });
|
|
1346
|
+
case 'Twrl': return __assign(__assign({}, base), { type: 'twirl', filter: {
|
|
1347
|
+
angle: f.Fltr.Angl,
|
|
1348
|
+
} });
|
|
1349
|
+
case 'Wave': return __assign(__assign({}, base), { type: 'wave', filter: {
|
|
1350
|
+
numberOfGenerators: f.Fltr.NmbG,
|
|
1351
|
+
type: descriptor_1.Wvtp.decode(f.Fltr.Wvtp),
|
|
1352
|
+
wavelength: { min: f.Fltr.WLMn, max: f.Fltr.WLMx },
|
|
1353
|
+
amplitude: { min: f.Fltr.AmMn, max: f.Fltr.AmMx },
|
|
1354
|
+
scale: { x: f.Fltr.SclH, y: f.Fltr.SclV },
|
|
1355
|
+
randomSeed: f.Fltr.RndS,
|
|
1356
|
+
undefinedAreas: descriptor_1.UndA.decode(f.Fltr.UndA),
|
|
1357
|
+
} });
|
|
1358
|
+
case 'ZgZg': return __assign(__assign({}, base), { type: 'zigzag', filter: {
|
|
1359
|
+
amount: f.Fltr.Amnt,
|
|
1360
|
+
ridges: f.Fltr.NmbR,
|
|
1361
|
+
style: descriptor_1.ZZTy.decode(f.Fltr.ZZTy),
|
|
1362
|
+
} });
|
|
1363
|
+
case 'AdNs': return __assign(__assign({}, base), { type: 'add noise', filter: {
|
|
1364
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Nose),
|
|
1365
|
+
distribution: descriptor_1.Dstr.decode(f.Fltr.Dstr),
|
|
1366
|
+
monochromatic: f.Fltr.Mnch,
|
|
1367
|
+
randomSeed: f.Fltr.FlRs,
|
|
1368
|
+
} });
|
|
1369
|
+
case 'DstS': return __assign(__assign({}, base), { type: 'dust and scratches', filter: {
|
|
1370
|
+
radius: f.Fltr['Rds '],
|
|
1371
|
+
threshold: f.Fltr.Thsh,
|
|
1372
|
+
} });
|
|
1373
|
+
case 'Mdn ': return __assign(__assign({}, base), { type: 'median', filter: {
|
|
1374
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1375
|
+
} });
|
|
1376
|
+
case 'denoise': return __assign(__assign({}, base), { type: 'reduce noise', filter: {
|
|
1377
|
+
preset: f.Fltr.preset,
|
|
1378
|
+
removeJpegArtifact: f.Fltr.removeJPEGArtifact,
|
|
1379
|
+
reduceColorNoise: (0, descriptor_1.parsePercent)(f.Fltr.ClNs),
|
|
1380
|
+
sharpenDetails: (0, descriptor_1.parsePercent)(f.Fltr.Shrp),
|
|
1381
|
+
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 } : {}))); }),
|
|
1382
|
+
} });
|
|
1383
|
+
case 'ClrH': return __assign(__assign({}, base), { type: 'color halftone', filter: {
|
|
1384
|
+
radius: f.Fltr['Rds '],
|
|
1385
|
+
angle1: f.Fltr.Ang1,
|
|
1386
|
+
angle2: f.Fltr.Ang2,
|
|
1387
|
+
angle3: f.Fltr.Ang3,
|
|
1388
|
+
angle4: f.Fltr.Ang4,
|
|
1389
|
+
} });
|
|
1390
|
+
case 'Crst': return __assign(__assign({}, base), { type: 'crystallize', filter: {
|
|
1391
|
+
cellSize: f.Fltr.ClSz,
|
|
1392
|
+
randomSeed: f.Fltr.FlRs,
|
|
1393
|
+
} });
|
|
1394
|
+
case 'Mztn': return __assign(__assign({}, base), { type: 'mezzotint', filter: {
|
|
1395
|
+
type: descriptor_1.MztT.decode(f.Fltr.MztT),
|
|
1396
|
+
randomSeed: f.Fltr.FlRs,
|
|
1397
|
+
} });
|
|
1398
|
+
case 'Msc ': return __assign(__assign({}, base), { type: 'mosaic', filter: {
|
|
1399
|
+
cellSize: (0, descriptor_1.parseUnits)(f.Fltr.ClSz),
|
|
1400
|
+
} });
|
|
1401
|
+
case 'Pntl': return __assign(__assign({}, base), { type: 'pointillize', filter: {
|
|
1402
|
+
cellSize: f.Fltr.ClSz,
|
|
1403
|
+
randomSeed: f.Fltr.FlRs,
|
|
1404
|
+
} });
|
|
1405
|
+
case 'Clds': return __assign(__assign({}, base), { type: 'clouds', filter: {
|
|
1406
|
+
randomSeed: f.Fltr.FlRs,
|
|
1407
|
+
} });
|
|
1408
|
+
case 'DfrC': return __assign(__assign({}, base), { type: 'difference clouds', filter: {
|
|
1409
|
+
randomSeed: f.Fltr.FlRs,
|
|
1410
|
+
} });
|
|
1411
|
+
case 'Fbrs': return __assign(__assign({}, base), { type: 'fibers', filter: {
|
|
1412
|
+
variance: f.Fltr.Vrnc,
|
|
1413
|
+
strength: f.Fltr.Strg,
|
|
1414
|
+
randomSeed: f.Fltr.RndS,
|
|
1415
|
+
} });
|
|
1416
|
+
case 'LnsF': return __assign(__assign({}, base), { type: 'lens flare', filter: {
|
|
1417
|
+
brightness: f.Fltr.Brgh,
|
|
1418
|
+
position: { x: f.Fltr.FlrC.Hrzn, y: f.Fltr.FlrC.Vrtc },
|
|
1419
|
+
lensType: descriptor_1.Lns.decode(f.Fltr['Lns ']),
|
|
1420
|
+
} });
|
|
1421
|
+
case 'smartSharpen': return __assign(__assign({}, base), { type: 'smart sharpen', filter: {
|
|
1422
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Amnt),
|
|
1423
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1424
|
+
threshold: f.Fltr.Thsh,
|
|
1425
|
+
angle: f.Fltr.Angl,
|
|
1426
|
+
moreAccurate: f.Fltr.moreAccurate,
|
|
1427
|
+
blur: descriptor_1.blurType.decode(f.Fltr.blur),
|
|
1428
|
+
preset: f.Fltr.preset,
|
|
1429
|
+
shadow: {
|
|
1430
|
+
fadeAmount: (0, descriptor_1.parsePercent)(f.Fltr.sdwM.Amnt),
|
|
1431
|
+
tonalWidth: (0, descriptor_1.parsePercent)(f.Fltr.sdwM.Wdth),
|
|
1432
|
+
radius: f.Fltr.sdwM['Rds '],
|
|
1433
|
+
},
|
|
1434
|
+
highlight: {
|
|
1435
|
+
fadeAmount: (0, descriptor_1.parsePercent)(f.Fltr.hglM.Amnt),
|
|
1436
|
+
tonalWidth: (0, descriptor_1.parsePercent)(f.Fltr.hglM.Wdth),
|
|
1437
|
+
radius: f.Fltr.hglM['Rds '],
|
|
1438
|
+
},
|
|
1439
|
+
} });
|
|
1440
|
+
case 'UnsM': return __assign(__assign({}, base), { type: 'unsharp mask', filter: {
|
|
1441
|
+
amount: (0, descriptor_1.parsePercent)(f.Fltr.Amnt),
|
|
1442
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1443
|
+
threshold: f.Fltr.Thsh,
|
|
1444
|
+
} });
|
|
1445
|
+
case 'Dfs ': return __assign(__assign({}, base), { type: 'diffuse', filter: {
|
|
1446
|
+
mode: descriptor_1.DfsM.decode(f.Fltr['Md ']),
|
|
1447
|
+
randomSeed: f.Fltr.FlRs,
|
|
1448
|
+
} });
|
|
1449
|
+
case 'Embs': return __assign(__assign({}, base), { type: 'emboss', filter: {
|
|
1450
|
+
angle: f.Fltr.Angl,
|
|
1451
|
+
height: f.Fltr.Hght,
|
|
1452
|
+
amount: f.Fltr.Amnt,
|
|
1453
|
+
} });
|
|
1454
|
+
case 'Extr': return __assign(__assign({}, base), { type: 'extrude', filter: {
|
|
1455
|
+
type: descriptor_1.ExtT.decode(f.Fltr.ExtT),
|
|
1456
|
+
size: f.Fltr.ExtS,
|
|
1457
|
+
depth: f.Fltr.ExtD,
|
|
1458
|
+
depthMode: descriptor_1.ExtR.decode(f.Fltr.ExtR),
|
|
1459
|
+
randomSeed: f.Fltr.FlRs,
|
|
1460
|
+
solidFrontFaces: f.Fltr.ExtF,
|
|
1461
|
+
maskIncompleteBlocks: f.Fltr.ExtM,
|
|
1462
|
+
} });
|
|
1463
|
+
case 'Tls ': return __assign(__assign({}, base), { type: 'tiles', filter: {
|
|
1464
|
+
numberOfTiles: f.Fltr.TlNm,
|
|
1465
|
+
maximumOffset: f.Fltr.TlOf,
|
|
1466
|
+
fillEmptyAreaWith: descriptor_1.FlCl.decode(f.Fltr.FlCl),
|
|
1467
|
+
randomSeed: f.Fltr.FlRs,
|
|
1468
|
+
} });
|
|
1469
|
+
case 'TrcC': return __assign(__assign({}, base), { type: 'trace contour', filter: {
|
|
1470
|
+
level: f.Fltr['Lvl '],
|
|
1471
|
+
edge: descriptor_1.CntE.decode(f.Fltr['Edg ']),
|
|
1472
|
+
} });
|
|
1473
|
+
case 'Wnd ': return __assign(__assign({}, base), { type: 'wind', filter: {
|
|
1474
|
+
method: descriptor_1.WndM.decode(f.Fltr.WndM),
|
|
1475
|
+
direction: descriptor_1.Drct.decode(f.Fltr.Drct),
|
|
1476
|
+
} });
|
|
1477
|
+
case 'Dntr': return __assign(__assign({}, base), { type: 'de-interlace', filter: {
|
|
1478
|
+
eliminate: descriptor_1.IntE.decode(f.Fltr.IntE),
|
|
1479
|
+
newFieldsBy: descriptor_1.IntC.decode(f.Fltr.IntC),
|
|
1480
|
+
} });
|
|
1481
|
+
case 'Cstm': return __assign(__assign({}, base), { type: 'custom', filter: {
|
|
1482
|
+
scale: f.Fltr['Scl '],
|
|
1483
|
+
offset: f.Fltr.Ofst,
|
|
1484
|
+
matrix: f.Fltr.Mtrx,
|
|
1485
|
+
} });
|
|
1486
|
+
case 'HghP': return __assign(__assign({}, base), { type: 'high pass', filter: {
|
|
1487
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1488
|
+
} });
|
|
1489
|
+
case 'Mxm ': return __assign(__assign({}, base), { type: 'maximum', filter: {
|
|
1490
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1491
|
+
} });
|
|
1492
|
+
case 'Mnm ': return __assign(__assign({}, base), { type: 'minimum', filter: {
|
|
1493
|
+
radius: (0, descriptor_1.parseUnits)(f.Fltr['Rds ']),
|
|
1494
|
+
} });
|
|
1495
|
+
case 'Ofst': return __assign(__assign({}, base), { type: 'offset', filter: {
|
|
1496
|
+
horizontal: f.Fltr.Hrzn,
|
|
1497
|
+
vertical: f.Fltr.Vrtc,
|
|
1498
|
+
undefinedAreas: descriptor_1.FlMd.decode(f.Fltr['Fl ']),
|
|
1499
|
+
} });
|
|
1500
|
+
case 'rigidTransform': return __assign(__assign({}, base), { type: 'puppet', filter: {
|
|
1501
|
+
rigidType: f.Fltr.rigidType,
|
|
1502
|
+
bounds: [
|
|
1503
|
+
{ x: f.Fltr.PuX0, y: f.Fltr.PuY0, },
|
|
1504
|
+
{ x: f.Fltr.PuX1, y: f.Fltr.PuY1, },
|
|
1505
|
+
{ x: f.Fltr.PuX2, y: f.Fltr.PuY2, },
|
|
1506
|
+
{ x: f.Fltr.PuX3, y: f.Fltr.PuY3, },
|
|
1507
|
+
],
|
|
1508
|
+
puppetShapeList: f.Fltr.puppetShapeList.map(function (p) { return ({
|
|
1509
|
+
rigidType: p.rigidType,
|
|
1510
|
+
// TODO: VrsM
|
|
1511
|
+
// TODO: VrsN
|
|
1512
|
+
originalVertexArray: uint8ToPoints(p.originalVertexArray),
|
|
1513
|
+
deformedVertexArray: uint8ToPoints(p.deformedVertexArray),
|
|
1514
|
+
indexArray: Array.from(uint8ToUint32(p.indexArray)),
|
|
1515
|
+
pinOffsets: arrayToPoints(p.pinOffsets),
|
|
1516
|
+
posFinalPins: arrayToPoints(p.posFinalPins),
|
|
1517
|
+
pinVertexIndices: p.pinVertexIndices,
|
|
1518
|
+
selectedPin: p.selectedPin,
|
|
1519
|
+
pinPosition: arrayToPoints(p.PinP),
|
|
1520
|
+
pinRotation: p.PnRt,
|
|
1521
|
+
pinOverlay: p.PnOv,
|
|
1522
|
+
pinDepth: p.PnDp,
|
|
1523
|
+
meshQuality: p.meshQuality,
|
|
1524
|
+
meshExpansion: p.meshExpansion,
|
|
1525
|
+
meshRigidity: p.meshRigidity,
|
|
1526
|
+
imageResolution: p.imageResolution,
|
|
1527
|
+
meshBoundaryPath: {
|
|
1528
|
+
pathComponents: p.meshBoundaryPath.pathComponents.map(function (c) { return ({
|
|
1529
|
+
shapeOperation: c.shapeOperation.split('.')[1],
|
|
1530
|
+
paths: c.SbpL.map(function (t) { return ({
|
|
1531
|
+
closed: t.Clsp,
|
|
1532
|
+
points: t['Pts '].map(function (pt) { return ({
|
|
1533
|
+
anchor: hrznVrtcToPoint(pt.Anch),
|
|
1534
|
+
forward: hrznVrtcToPoint(pt['Fwd ']),
|
|
1535
|
+
backward: hrznVrtcToPoint(pt['Bwd ']),
|
|
1536
|
+
smooth: pt.Smoo,
|
|
1537
|
+
}); }),
|
|
1549
1538
|
}); }),
|
|
1550
1539
|
}); }),
|
|
1551
|
-
}
|
|
1552
|
-
},
|
|
1553
|
-
}
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
if (!Flrt["PN".concat(fromAtoZ[i], "a")])
|
|
1560
|
-
break;
|
|
1561
|
-
for (var j = 0; j < fromAtoZ.length; j++) {
|
|
1562
|
-
if (!Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])])
|
|
1540
|
+
},
|
|
1541
|
+
}); }),
|
|
1542
|
+
} });
|
|
1543
|
+
case 'PbPl': {
|
|
1544
|
+
var parameters = [];
|
|
1545
|
+
var Flrt = f.Fltr;
|
|
1546
|
+
for (var i = 0; i < fromAtoZ.length; i++) {
|
|
1547
|
+
if (!Flrt["PN".concat(fromAtoZ[i], "a")])
|
|
1563
1548
|
break;
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1549
|
+
for (var j = 0; j < fromAtoZ.length; j++) {
|
|
1550
|
+
if (!Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])])
|
|
1551
|
+
break;
|
|
1552
|
+
parameters.push({
|
|
1553
|
+
name: Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])],
|
|
1554
|
+
value: Flrt["PF".concat(fromAtoZ[i]).concat(fromAtoZ[j])]
|
|
1555
|
+
});
|
|
1556
|
+
}
|
|
1568
1557
|
}
|
|
1558
|
+
return __assign(__assign({}, base), { type: 'oil paint plugin', filter: {
|
|
1559
|
+
name: f.Fltr.KnNm,
|
|
1560
|
+
gpu: f.Fltr.GpuY,
|
|
1561
|
+
lighting: f.Fltr.LIWy,
|
|
1562
|
+
parameters: parameters,
|
|
1563
|
+
} });
|
|
1569
1564
|
}
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1565
|
+
// case 2089: return {
|
|
1566
|
+
// ...base,
|
|
1567
|
+
// type: 'adaptive wide angle',
|
|
1568
|
+
// params: {
|
|
1569
|
+
// correction: prjM.decode(f.Fltr.prjM),
|
|
1570
|
+
// focalLength: f.Fltr.focL,
|
|
1571
|
+
// cropFactor: f.Fltr.CrpF,
|
|
1572
|
+
// imageScale: f.Fltr.imgS,
|
|
1573
|
+
// imageX: f.Fltr.imgX,
|
|
1574
|
+
// imageY: f.Fltr.imgY,
|
|
1575
|
+
// },
|
|
1576
|
+
// };
|
|
1577
|
+
case 'HsbP': return __assign(__assign({}, base), { type: 'hsb/hsl', filter: {
|
|
1578
|
+
inputMode: descriptor_1.ClrS.decode(f.Fltr.Inpt),
|
|
1579
|
+
rowOrder: descriptor_1.ClrS.decode(f.Fltr.Otpt),
|
|
1575
1580
|
} });
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
// imageScale: f.Fltr.imgS,
|
|
1585
|
-
// imageX: f.Fltr.imgX,
|
|
1586
|
-
// imageY: f.Fltr.imgY,
|
|
1587
|
-
// },
|
|
1588
|
-
// };
|
|
1589
|
-
case 1215521360: return __assign(__assign({}, base), { type: 'hsb/hsl', filter: {
|
|
1590
|
-
inputMode: descriptor_1.ClrS.decode(f.Fltr.Inpt),
|
|
1591
|
-
rowOrder: descriptor_1.ClrS.decode(f.Fltr.Otpt),
|
|
1592
|
-
} });
|
|
1593
|
-
case 1122: return __assign(__assign({}, base), { type: 'oil paint', filter: {
|
|
1594
|
-
lightingOn: f.Fltr.lightingOn,
|
|
1595
|
-
stylization: f.Fltr.stylization,
|
|
1596
|
-
cleanliness: f.Fltr.cleanliness,
|
|
1597
|
-
brushScale: f.Fltr.brushScale,
|
|
1598
|
-
microBrush: f.Fltr.microBrush,
|
|
1599
|
-
lightDirection: f.Fltr.LghD,
|
|
1600
|
-
specularity: f.Fltr.specularity,
|
|
1601
|
-
} });
|
|
1602
|
-
case 1282492025: {
|
|
1603
|
-
return __assign(__assign({}, base), { type: 'liquify', filter: {
|
|
1604
|
-
liquifyMesh: f.Fltr.LqMe,
|
|
1581
|
+
case 'oilPaint': return __assign(__assign({}, base), { type: 'oil paint', filter: {
|
|
1582
|
+
lightingOn: f.Fltr.lightingOn,
|
|
1583
|
+
stylization: f.Fltr.stylization,
|
|
1584
|
+
cleanliness: f.Fltr.cleanliness,
|
|
1585
|
+
brushScale: f.Fltr.brushScale,
|
|
1586
|
+
microBrush: f.Fltr.microBrush,
|
|
1587
|
+
lightDirection: f.Fltr.LghD,
|
|
1588
|
+
specularity: f.Fltr.specularity,
|
|
1605
1589
|
} });
|
|
1590
|
+
case 'LqFy': {
|
|
1591
|
+
return __assign(__assign({}, base), { type: 'liquify', filter: {
|
|
1592
|
+
liquifyMesh: f.Fltr.LqMe,
|
|
1593
|
+
} });
|
|
1594
|
+
}
|
|
1595
|
+
default:
|
|
1596
|
+
if (options.throwForMissingFeatures) {
|
|
1597
|
+
throw new Error("Unknown filter classId: ".concat(f.Fltr._classID));
|
|
1598
|
+
}
|
|
1599
|
+
return undefined;
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
else {
|
|
1603
|
+
switch (f.filterID) {
|
|
1604
|
+
case 1098281575: return __assign(__assign({}, base), { type: 'average' });
|
|
1605
|
+
case 1114403360: return __assign(__assign({}, base), { type: 'blur' });
|
|
1606
|
+
case 1114403405: return __assign(__assign({}, base), { type: 'blur more' });
|
|
1607
|
+
case 1148416099: return __assign(__assign({}, base), { type: 'despeckle' });
|
|
1608
|
+
case 1180922912: return __assign(__assign({}, base), { type: 'facet' });
|
|
1609
|
+
case 1181902701: return __assign(__assign({}, base), { type: 'fragment' });
|
|
1610
|
+
case 1399353968: return __assign(__assign({}, base), { type: 'sharpen' });
|
|
1611
|
+
case 1399353925: return __assign(__assign({}, base), { type: 'sharpen edges' });
|
|
1612
|
+
case 1399353933: return __assign(__assign({}, base), { type: 'sharpen more' });
|
|
1613
|
+
case 1181639749: return __assign(__assign({}, base), { type: 'find edges' });
|
|
1614
|
+
case 1399616122: return __assign(__assign({}, base), { type: 'solarize' });
|
|
1615
|
+
case 1314149187: return __assign(__assign({}, base), { type: 'ntsc colors' });
|
|
1616
|
+
default:
|
|
1617
|
+
if (options.throwForMissingFeatures) {
|
|
1618
|
+
// console.log('FILTER', require('util').inspect(f, false, 99, true));
|
|
1619
|
+
throw new Error("Unknown filterID: ".concat(f.filterID));
|
|
1620
|
+
}
|
|
1606
1621
|
}
|
|
1607
|
-
default:
|
|
1608
|
-
// console.log('FILTER', require('util').inspect(f, false, 99, true));
|
|
1609
|
-
throw new Error("Unknown filterID: ".concat(f.filterID));
|
|
1610
1622
|
}
|
|
1611
1623
|
}
|
|
1612
|
-
function parseFilterFX(desc) {
|
|
1624
|
+
function parseFilterFX(desc, options) {
|
|
1613
1625
|
return {
|
|
1614
1626
|
enabled: desc.enab,
|
|
1615
1627
|
validAtPosition: desc.validAtPosition,
|
|
1616
1628
|
maskEnabled: desc.filterMaskEnable,
|
|
1617
1629
|
maskLinked: desc.filterMaskLinked,
|
|
1618
1630
|
maskExtendWithWhite: desc.filterMaskExtendWithWhite,
|
|
1619
|
-
list: desc.filterFXList.map(parseFilterFXItem),
|
|
1631
|
+
list: desc.filterFXList.map(function (x) { return parseFilterFXItem(x, options); }).filter(function (x) { return !!x; }),
|
|
1620
1632
|
};
|
|
1621
1633
|
}
|
|
1622
1634
|
function uvRadius(t) {
|
|
@@ -2089,13 +2101,13 @@ function getWarpFromPlacedLayer(placed) {
|
|
|
2089
2101
|
},
|
|
2090
2102
|
};
|
|
2091
2103
|
}
|
|
2092
|
-
addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
2104
|
+
addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left, _, options) {
|
|
2093
2105
|
if ((0, psdReader_1.readSignature)(reader) !== 'soLD')
|
|
2094
2106
|
throw new Error("Invalid SoLd type");
|
|
2095
2107
|
var version = (0, psdReader_1.readInt32)(reader);
|
|
2096
2108
|
if (version !== 4 && version !== 5)
|
|
2097
2109
|
throw new Error("Invalid SoLd version");
|
|
2098
|
-
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
|
|
2110
|
+
var desc = (0, descriptor_1.readVersionAndDescriptor)(reader, true);
|
|
2099
2111
|
// console.log('SoLd', require('util').inspect(desc, false, 99, true));
|
|
2100
2112
|
// console.log('SoLd.warp', require('util').inspect(desc.warp, false, 99, true));
|
|
2101
2113
|
// console.log('SoLd.quiltWarp', require('util').inspect(desc.quiltWarp, false, 99, true));
|
|
@@ -2132,7 +2144,7 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
2132
2144
|
};
|
|
2133
2145
|
}
|
|
2134
2146
|
if (desc.filterFX)
|
|
2135
|
-
target.placedLayer.filter = parseFilterFX(desc.filterFX);
|
|
2147
|
+
target.placedLayer.filter = parseFilterFX(desc.filterFX, options);
|
|
2136
2148
|
// console.log('filter', require('util').inspect(target.placedLayer.filter, false, 99, true));
|
|
2137
2149
|
(0, psdReader_1.skipBytes)(reader, left()); // HACK
|
|
2138
2150
|
}, function (writer, target) {
|