ag-psd 19.0.1 → 20.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 +5 -0
- package/README_PSD.md +6 -0
- package/TODO +5 -0
- package/dist/abr.js +4 -4
- package/dist/abr.js.map +1 -1
- package/dist/additionalInfo.d.ts +3 -3
- package/dist/additionalInfo.js +99 -10
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +405 -142
- package/dist/descriptor.js +21 -16
- package/dist/descriptor.js.map +1 -1
- package/dist/helpers.d.ts +2 -7
- package/dist/helpers.js +33 -10
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.js +37 -0
- package/dist/imageResources.js.map +1 -1
- package/dist/psd.d.ts +46 -3
- package/dist/psd.js +8 -1
- package/dist/psd.js.map +1 -1
- package/dist/psdReader.d.ts +11 -5
- package/dist/psdReader.js +179 -97
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.js +24 -4
- package/dist/psdWriter.js.map +1 -1
- package/dist-es/abr.js +4 -4
- package/dist-es/abr.js.map +1 -1
- package/dist-es/additionalInfo.d.ts +3 -3
- package/dist-es/additionalInfo.js +102 -13
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/descriptor.js +21 -16
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/helpers.d.ts +2 -7
- package/dist-es/helpers.js +31 -9
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.js +37 -0
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/psd.d.ts +46 -3
- package/dist-es/psd.js +7 -0
- package/dist-es/psd.js.map +1 -1
- package/dist-es/psdReader.d.ts +11 -5
- package/dist-es/psdReader.js +178 -99
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.js +25 -5
- package/dist-es/psdWriter.js.map +1 -1
- package/package.json +1 -1
- package/src/abr.ts +4 -4
- package/src/additionalInfo.ts +142 -49
- package/src/descriptor.ts +14 -9
- package/src/helpers.ts +35 -18
- package/src/imageResources.ts +53 -0
- package/src/psd.ts +41 -5
- package/src/psdReader.ts +170 -126
- package/src/psdWriter.ts +33 -14
|
@@ -12,9 +12,9 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import { fromByteArray, toByteArray } from 'base64-js';
|
|
13
13
|
import { readEffects, writeEffects } from './effectsHelpers';
|
|
14
14
|
import { clamp, createEnum, layerColors, MOCK_HANDLERS } from './helpers';
|
|
15
|
-
import { readSignature, readUnicodeString, skipBytes, readUint32, readUint8, readFloat64, readUint16, readBytes, readInt16, checkSignature, readFloat32, readFixedPointPath32, readSection, readColor, readInt32, readPascalString, readUnicodeStringWithLength, readAsciiString, readPattern, } from './psdReader';
|
|
16
|
-
import { writeZeros, writeSignature, writeBytes, writeUint32, writeUint16, writeFloat64, writeUint8, writeInt16, writeFloat32, writeFixedPointPath32, writeUnicodeString, writeSection, writeUnicodeStringWithPadding, writeColor, writePascalString, writeInt32
|
|
17
|
-
import { Annt, BlnM, parsePercent, parseUnits, parseUnitsOrNumber, strokeStyleLineAlignment, strokeStyleLineCapType, strokeStyleLineJoinType, textGridding, unitsPercent, unitsValue, warpStyle, writeVersionAndDescriptor, readVersionAndDescriptor, Ornt, horzVrtcToXY, xyToHorzVrtc, serializeEffects, parseEffects, parseColor, serializeColor, serializeVectorContent, parseVectorContent, parseTrackList, serializeTrackList, BlrM, BlrQ, SmBQ, SmBM, DspM, UndA, Cnvr, RplS, SphM, Wvtp, ZZTy, Dstr, Chnl, MztT, Lns, blurType, DfsM, ExtT, ExtR, FlCl, CntE, WndM, Drct, IntE, IntC, FlMd, unitsPercentF, frac, ClrS, descBoundsToBounds, boundsToDescBounds
|
|
15
|
+
import { readSignature, readUnicodeString, skipBytes, readUint32, readUint8, readFloat64, readUint16, readBytes, readInt16, checkSignature, readFloat32, readFixedPointPath32, readSection, readColor, readInt32, readPascalString, readUnicodeStringWithLength, readAsciiString, readPattern, readLayerInfo } from './psdReader';
|
|
16
|
+
import { writeZeros, writeSignature, writeBytes, writeUint32, writeUint16, writeFloat64, writeUint8, writeInt16, writeFloat32, writeFixedPointPath32, writeUnicodeString, writeSection, writeUnicodeStringWithPadding, writeColor, writePascalString, writeInt32 } from './psdWriter';
|
|
17
|
+
import { Annt, BlnM, parsePercent, parseUnits, parseUnitsOrNumber, strokeStyleLineAlignment, strokeStyleLineCapType, strokeStyleLineJoinType, textGridding, unitsPercent, unitsValue, warpStyle, writeVersionAndDescriptor, readVersionAndDescriptor, Ornt, horzVrtcToXY, xyToHorzVrtc, serializeEffects, parseEffects, parseColor, serializeColor, serializeVectorContent, parseVectorContent, parseTrackList, serializeTrackList, BlrM, BlrQ, SmBQ, SmBM, DspM, UndA, Cnvr, RplS, SphM, Wvtp, ZZTy, Dstr, Chnl, MztT, Lns, blurType, DfsM, ExtT, ExtR, FlCl, CntE, WndM, Drct, IntE, IntC, FlMd, unitsPercentF, frac, ClrS, descBoundsToBounds, boundsToDescBounds } from './descriptor';
|
|
18
18
|
import { serializeEngineData, parseEngineData } from './engineData';
|
|
19
19
|
import { encodeEngineData, decodeEngineData } from './text';
|
|
20
20
|
var fromAtoZ = 'abcdefghijklmnopqrstuvwxyz';
|
|
@@ -49,9 +49,11 @@ addHandler('TySh', hasKey('text'), function (reader, target, leftBytes) {
|
|
|
49
49
|
if (readInt16(reader) !== 50)
|
|
50
50
|
throw new Error("Invalid TySh text version");
|
|
51
51
|
var text = readVersionAndDescriptor(reader);
|
|
52
|
+
// console.log(require('util').inspect(text, false, 99, false), 'utf8');
|
|
52
53
|
if (readInt16(reader) !== 1)
|
|
53
54
|
throw new Error("Invalid TySh warp version");
|
|
54
55
|
var warp = readVersionAndDescriptor(reader);
|
|
56
|
+
// console.log(require('util').inspect(warp, false, 99, false), 'utf8');
|
|
55
57
|
target.text = {
|
|
56
58
|
transform: transform,
|
|
57
59
|
left: readFloat32(reader),
|
|
@@ -78,6 +80,7 @@ addHandler('TySh', hasKey('text'), function (reader, target, leftBytes) {
|
|
|
78
80
|
if (text.EngineData) {
|
|
79
81
|
var engineData = parseEngineData(text.EngineData);
|
|
80
82
|
var textData = decodeEngineData(engineData);
|
|
83
|
+
// console.log(require('util').inspect(engineData, false, 99, false), 'utf8');
|
|
81
84
|
// require('fs').writeFileSync(`layer-${target.name}.txt`, require('util').inspect(engineData, false, 99, false), 'utf8');
|
|
82
85
|
// const before = parseEngineData(text.EngineData);
|
|
83
86
|
// const after = encodeEngineData(engineData);
|
|
@@ -493,7 +496,7 @@ addHandler('lclr', hasKey('layerColor'), function (reader, target) {
|
|
|
493
496
|
writeZeros(writer, 6);
|
|
494
497
|
});
|
|
495
498
|
addHandler('shmd', function (target) { return target.timestamp !== undefined || target.animationFrames !== undefined ||
|
|
496
|
-
target.animationFrameFlags !== undefined || target.timeline !== undefined; }, function (reader, target, left, _, options) {
|
|
499
|
+
target.animationFrameFlags !== undefined || target.timeline !== undefined || target.comps !== undefined; }, function (reader, target, left, _, options) {
|
|
497
500
|
var count = readUint32(reader);
|
|
498
501
|
var _loop_1 = function (i) {
|
|
499
502
|
checkSignature(reader, '8BIM');
|
|
@@ -557,8 +560,28 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
557
560
|
target.timeline = timeline;
|
|
558
561
|
// console.log('tmln:result', target.name, target.id, require('util').inspect(timeline, false, 99, true));
|
|
559
562
|
}
|
|
563
|
+
else if (key === 'cmls') {
|
|
564
|
+
var desc = readVersionAndDescriptor(reader);
|
|
565
|
+
// console.log('cmls', require('util').inspect(desc, false, 99, true));
|
|
566
|
+
target.comps = {
|
|
567
|
+
settings: [],
|
|
568
|
+
};
|
|
569
|
+
if (desc.origFXRefPoint)
|
|
570
|
+
target.comps.originalEffectsReferencePoint = { x: desc.origFXRefPoint.Hrzn, y: desc.origFXRefPoint.Vrtc };
|
|
571
|
+
for (var _i = 0, _a = desc.layerSettings; _i < _a.length; _i++) {
|
|
572
|
+
var item = _a[_i];
|
|
573
|
+
target.comps.settings.push({ compList: item.compList });
|
|
574
|
+
var t = target.comps.settings[target.comps.settings.length - 1];
|
|
575
|
+
if ('enab' in item)
|
|
576
|
+
t.enabled = item.enab;
|
|
577
|
+
if (item.Ofst)
|
|
578
|
+
t.offset = { x: item.Ofst.Hrzn, y: item.Ofst.Vrtc };
|
|
579
|
+
if (item.FXRefPoint)
|
|
580
|
+
t.effectsReferencePoint = { x: item.FXRefPoint.Hrzn, y: item.FXRefPoint.Vrtc };
|
|
581
|
+
}
|
|
582
|
+
}
|
|
560
583
|
else {
|
|
561
|
-
options.
|
|
584
|
+
options.logMissingFeatures && console.log('Unhandled "shmd" section key', key);
|
|
562
585
|
}
|
|
563
586
|
skipBytes(reader, left());
|
|
564
587
|
});
|
|
@@ -568,7 +591,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
568
591
|
}
|
|
569
592
|
skipBytes(reader, left());
|
|
570
593
|
}, function (writer, target, _, options) {
|
|
571
|
-
var animationFrames = target.animationFrames, animationFrameFlags = target.animationFrameFlags, timestamp = target.timestamp, timeline = target.timeline;
|
|
594
|
+
var animationFrames = target.animationFrames, animationFrameFlags = target.animationFrameFlags, timestamp = target.timestamp, timeline = target.timeline, comps = target.comps;
|
|
572
595
|
var count = 0;
|
|
573
596
|
if (animationFrames)
|
|
574
597
|
count++;
|
|
@@ -578,6 +601,8 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
578
601
|
count++;
|
|
579
602
|
if (timestamp !== undefined)
|
|
580
603
|
count++;
|
|
604
|
+
if (comps)
|
|
605
|
+
count++;
|
|
581
606
|
writeUint32(writer, count);
|
|
582
607
|
if (animationFrames) {
|
|
583
608
|
writeSignature(writer, '8BIM');
|
|
@@ -643,7 +668,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
643
668
|
if (timeline.tracks) {
|
|
644
669
|
desc.trackList = serializeTrackList(timeline.tracks);
|
|
645
670
|
}
|
|
646
|
-
var id = options.layerToId.get(target) || target.id
|
|
671
|
+
var id = options.layerToId.get(target) || target.id;
|
|
647
672
|
if (!id)
|
|
648
673
|
throw new Error('You need to provide layer.id value whan writing document with animations');
|
|
649
674
|
desc.LyrI = id;
|
|
@@ -663,6 +688,37 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
663
688
|
writeVersionAndDescriptor(writer, '', 'metadata', desc);
|
|
664
689
|
}, true);
|
|
665
690
|
}
|
|
691
|
+
if (comps) {
|
|
692
|
+
writeSignature(writer, '8BIM');
|
|
693
|
+
writeSignature(writer, 'cmls');
|
|
694
|
+
writeUint8(writer, 0); // copy (always false)
|
|
695
|
+
writeZeros(writer, 3);
|
|
696
|
+
writeSection(writer, 2, function () {
|
|
697
|
+
var id = options.layerToId.get(target) || target.id;
|
|
698
|
+
if (!id)
|
|
699
|
+
throw new Error('You need to provide layer.id value whan writing document with layer comps');
|
|
700
|
+
var desc = {};
|
|
701
|
+
if (comps.originalEffectsReferencePoint) {
|
|
702
|
+
desc.origFXRefPoint = { Hrzn: comps.originalEffectsReferencePoint.x, Vrtc: comps.originalEffectsReferencePoint.y };
|
|
703
|
+
}
|
|
704
|
+
desc.LyrI = id;
|
|
705
|
+
desc.layerSettings = [];
|
|
706
|
+
for (var _i = 0, _a = comps.settings; _i < _a.length; _i++) {
|
|
707
|
+
var item = _a[_i];
|
|
708
|
+
var t = {};
|
|
709
|
+
if (item.enabled !== undefined)
|
|
710
|
+
t.enab = item.enabled;
|
|
711
|
+
if (item.offset)
|
|
712
|
+
t.Ofst = { Hrzn: item.offset.x, Vrtc: item.offset.y };
|
|
713
|
+
if (item.effectsReferencePoint)
|
|
714
|
+
t.FXRefPoint = { Hrzn: item.effectsReferencePoint.x, Vrtc: item.effectsReferencePoint.y };
|
|
715
|
+
t.compList = item.compList;
|
|
716
|
+
desc.layerSettings.push(t);
|
|
717
|
+
}
|
|
718
|
+
// console.log('cmls', require('util').inspect(desc, false, 99, true));
|
|
719
|
+
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
720
|
+
}, true);
|
|
721
|
+
}
|
|
666
722
|
});
|
|
667
723
|
addHandler('vstk', hasKey('vectorStroke'), function (reader, target, left) {
|
|
668
724
|
var desc = readVersionAndDescriptor(reader);
|
|
@@ -1839,6 +1895,38 @@ addHandler('fxrp', hasKey('referencePoint'), function (reader, target) {
|
|
|
1839
1895
|
writeFloat64(writer, target.referencePoint.x);
|
|
1840
1896
|
writeFloat64(writer, target.referencePoint.y);
|
|
1841
1897
|
});
|
|
1898
|
+
addHandler('Lr16', function () { return false; }, function (reader, _target, _left, psd, options) {
|
|
1899
|
+
readLayerInfo(reader, psd, options);
|
|
1900
|
+
}, function (_writer, _target) {
|
|
1901
|
+
});
|
|
1902
|
+
addHandler('LMsk', hasKey('userMask'), function (reader, target) {
|
|
1903
|
+
target.userMask = {
|
|
1904
|
+
colorSpace: readColor(reader),
|
|
1905
|
+
opacity: readUint16(reader) / 0xff,
|
|
1906
|
+
};
|
|
1907
|
+
var flag = readUint8(reader);
|
|
1908
|
+
if (flag !== 128)
|
|
1909
|
+
throw new Error('Invalid flag value');
|
|
1910
|
+
skipBytes(reader, 1);
|
|
1911
|
+
}, function (writer, target) {
|
|
1912
|
+
var userMask = target.userMask;
|
|
1913
|
+
writeColor(writer, userMask.colorSpace);
|
|
1914
|
+
writeUint16(writer, clamp(userMask.opacity, 0, 1) * 0xff);
|
|
1915
|
+
writeUint8(writer, 128);
|
|
1916
|
+
writeZeros(writer, 1);
|
|
1917
|
+
});
|
|
1918
|
+
if (MOCK_HANDLERS) {
|
|
1919
|
+
addHandler('vowv', // appears with Lr16 section ?
|
|
1920
|
+
function (// appears with Lr16 section ?
|
|
1921
|
+
_) { return false; }, function (reader, target, left) {
|
|
1922
|
+
var value = readUint32(reader); // 2 ????
|
|
1923
|
+
reader;
|
|
1924
|
+
target;
|
|
1925
|
+
console.log('vowv', { value: value }, left());
|
|
1926
|
+
}, function (_writer, _target) {
|
|
1927
|
+
// TODO: write
|
|
1928
|
+
});
|
|
1929
|
+
}
|
|
1842
1930
|
if (MOCK_HANDLERS) {
|
|
1843
1931
|
addHandler('Patt', function (target) { return target._Patt !== undefined; }, function (reader, target, left) {
|
|
1844
1932
|
// console.log('additional info: Patt');
|
|
@@ -2131,15 +2219,16 @@ addHandlerAlias('lnkD', 'lnk2');
|
|
|
2131
2219
|
addHandlerAlias('lnk3', 'lnk2');
|
|
2132
2220
|
addHandlerAlias('lnkE', 'lnk2');
|
|
2133
2221
|
addHandler('pths', hasKey('pathList'), function (reader, target) {
|
|
2134
|
-
var
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2222
|
+
var desc = readVersionAndDescriptor(reader, true);
|
|
2223
|
+
// console.log(require('util').inspect(desc, false, 99, true));
|
|
2224
|
+
// if (options.throwForMissingFeatures && desc?.pathList?.length) throw new Error('non-empty pathList in `pths`');
|
|
2225
|
+
desc;
|
|
2226
|
+
target.pathList = []; // TODO: read paths
|
|
2138
2227
|
}, function (writer, _target) {
|
|
2139
|
-
var
|
|
2228
|
+
var desc = {
|
|
2140
2229
|
pathList: [], // TODO: write paths
|
|
2141
2230
|
};
|
|
2142
|
-
writeVersionAndDescriptor(writer, '', 'pathsDataClass',
|
|
2231
|
+
writeVersionAndDescriptor(writer, '', 'pathsDataClass', desc);
|
|
2143
2232
|
});
|
|
2144
2233
|
addHandler('lyvr', hasKey('version'), function (reader, target) { return target.version = readUint32(reader); }, function (writer, target) { return writeUint32(writer, target.version); });
|
|
2145
2234
|
function adjustmentType(type) {
|