ag-psd 19.0.1 → 20.1.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 +10 -0
- package/README_PSD.md +20 -2
- package/TODO +7 -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 +107 -12
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +15305 -7643
- package/dist/descriptor.js +21 -16
- package/dist/descriptor.js.map +1 -1
- package/dist/engineData2.d.ts +1 -0
- package/dist/engineData2.js +349 -0
- package/dist/engineData2.js.map +1 -0
- package/dist/helpers.d.ts +2 -7
- package/dist/helpers.js +45 -12
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.js +42 -1
- 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 +213 -100
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.js +24 -4
- package/dist/psdWriter.js.map +1 -1
- package/dist/utf8.js +10 -4
- package/dist/utf8.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 +110 -15
- 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/engineData2.d.ts +1 -0
- package/dist-es/engineData2.js +345 -0
- package/dist-es/engineData2.js.map +1 -0
- package/dist-es/helpers.d.ts +2 -7
- package/dist-es/helpers.js +43 -11
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.js +42 -1
- 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 +212 -102
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.js +25 -5
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/utf8.js +10 -4
- package/dist-es/utf8.js.map +1 -1
- package/package.json +6 -7
- package/src/abr.ts +4 -4
- package/src/additionalInfo.ts +156 -51
- package/src/descriptor.ts +14 -9
- package/src/engineData2.ts +367 -0
- package/src/helpers.ts +47 -20
- package/src/imageResources.ts +59 -2
- package/src/psd.ts +41 -5
- package/src/psdReader.ts +210 -128
- package/src/psdWriter.ts +33 -14
- package/src/utf8.ts +12 -4
|
@@ -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,42 @@ 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('Lr32', function () { return false; }, function (reader, _target, _left, psd, options) {
|
|
1903
|
+
readLayerInfo(reader, psd, options);
|
|
1904
|
+
}, function (_writer, _target) {
|
|
1905
|
+
});
|
|
1906
|
+
addHandler('LMsk', hasKey('userMask'), function (reader, target) {
|
|
1907
|
+
target.userMask = {
|
|
1908
|
+
colorSpace: readColor(reader),
|
|
1909
|
+
opacity: readUint16(reader) / 0xff,
|
|
1910
|
+
};
|
|
1911
|
+
var flag = readUint8(reader);
|
|
1912
|
+
if (flag !== 128)
|
|
1913
|
+
throw new Error('Invalid flag value');
|
|
1914
|
+
skipBytes(reader, 1);
|
|
1915
|
+
}, function (writer, target) {
|
|
1916
|
+
var userMask = target.userMask;
|
|
1917
|
+
writeColor(writer, userMask.colorSpace);
|
|
1918
|
+
writeUint16(writer, clamp(userMask.opacity, 0, 1) * 0xff);
|
|
1919
|
+
writeUint8(writer, 128);
|
|
1920
|
+
writeZeros(writer, 1);
|
|
1921
|
+
});
|
|
1922
|
+
if (MOCK_HANDLERS) {
|
|
1923
|
+
addHandler('vowv', // appears with Lr16 section ?
|
|
1924
|
+
function (// appears with Lr16 section ?
|
|
1925
|
+
_) { return false; }, function (reader, target, left) {
|
|
1926
|
+
var value = readUint32(reader); // 2 ????
|
|
1927
|
+
reader;
|
|
1928
|
+
target;
|
|
1929
|
+
console.log('vowv', { value: value }, left());
|
|
1930
|
+
}, function (_writer, _target) {
|
|
1931
|
+
// TODO: write
|
|
1932
|
+
});
|
|
1933
|
+
}
|
|
1842
1934
|
if (MOCK_HANDLERS) {
|
|
1843
1935
|
addHandler('Patt', function (target) { return target._Patt !== undefined; }, function (reader, target, left) {
|
|
1844
1936
|
// console.log('additional info: Patt');
|
|
@@ -2131,15 +2223,16 @@ addHandlerAlias('lnkD', 'lnk2');
|
|
|
2131
2223
|
addHandlerAlias('lnk3', 'lnk2');
|
|
2132
2224
|
addHandlerAlias('lnkE', 'lnk2');
|
|
2133
2225
|
addHandler('pths', hasKey('pathList'), function (reader, target) {
|
|
2134
|
-
var
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2226
|
+
var desc = readVersionAndDescriptor(reader, true);
|
|
2227
|
+
// console.log(require('util').inspect(desc, false, 99, true));
|
|
2228
|
+
// if (options.throwForMissingFeatures && desc?.pathList?.length) throw new Error('non-empty pathList in `pths`');
|
|
2229
|
+
desc;
|
|
2230
|
+
target.pathList = []; // TODO: read paths
|
|
2138
2231
|
}, function (writer, _target) {
|
|
2139
|
-
var
|
|
2232
|
+
var desc = {
|
|
2140
2233
|
pathList: [], // TODO: write paths
|
|
2141
2234
|
};
|
|
2142
|
-
writeVersionAndDescriptor(writer, '', 'pathsDataClass',
|
|
2235
|
+
writeVersionAndDescriptor(writer, '', 'pathsDataClass', desc);
|
|
2143
2236
|
});
|
|
2144
2237
|
addHandler('lyvr', hasKey('version'), function (reader, target) { return target.version = readUint32(reader); }, function (writer, target) { return writeUint32(writer, target.version); });
|
|
2145
2238
|
function adjustmentType(type) {
|
|
@@ -2834,9 +2927,11 @@ addHandler('Txt2', hasKey('engineData'), function (reader, target, left) {
|
|
|
2834
2927
|
var data = readBytes(reader, left());
|
|
2835
2928
|
target.engineData = fromByteArray(data);
|
|
2836
2929
|
// const engineData = parseEngineData(data);
|
|
2930
|
+
// const engineData2 = decodeEngineData2(engineData);
|
|
2837
2931
|
// console.log(require('util').inspect(engineData, false, 99, true));
|
|
2838
|
-
// require('fs').writeFileSync('
|
|
2839
|
-
// require('fs').writeFileSync('test_data.
|
|
2932
|
+
// require('fs').writeFileSync('test_data.bin', data);
|
|
2933
|
+
// require('fs').writeFileSync('test_data.txt', require('util').inspect(engineData, false, 99, false), 'utf8');
|
|
2934
|
+
// require('fs').writeFileSync('test_data.json', JSON.stringify(engineData2, null, 2), 'utf8');
|
|
2840
2935
|
}, function (writer, target) {
|
|
2841
2936
|
var buffer = toByteArray(target.engineData);
|
|
2842
2937
|
writeBytes(writer, buffer);
|