ag-psd 15.3.1 → 17.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 +9 -0
- package/README.md +1 -0
- package/dist/additionalInfo.js +864 -157
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +1223 -242
- package/dist/descriptor.d.ts +129 -0
- package/dist/descriptor.js +272 -36
- package/dist/descriptor.js.map +1 -1
- package/dist/imageResources.js +9 -17
- package/dist/imageResources.js.map +1 -1
- package/dist/psd.d.ts +450 -74
- package/dist/psdReader.d.ts +2 -0
- package/dist/psdReader.js +30 -13
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.d.ts +4 -0
- package/dist/psdWriter.js +25 -7
- package/dist/psdWriter.js.map +1 -1
- package/dist/text.js +23 -12
- package/dist/text.js.map +1 -1
- package/dist-es/additionalInfo.js +865 -158
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/descriptor.d.ts +129 -0
- package/dist-es/descriptor.js +270 -37
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/imageResources.js +10 -18
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/psd.d.ts +450 -74
- package/dist-es/psdReader.d.ts +2 -0
- package/dist-es/psdReader.js +27 -12
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.d.ts +4 -0
- package/dist-es/psdWriter.js +21 -7
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/text.js +23 -12
- package/dist-es/text.js.map +1 -1
- package/package.json +1 -1
- package/src/additionalInfo.ts +1956 -212
- package/src/descriptor.ts +297 -37
- package/src/imageResources.ts +14 -19
- package/src/psd.ts +472 -49
- package/src/psdReader.ts +26 -7
- package/src/psdWriter.ts +24 -8
- package/src/text.ts +22 -14
|
@@ -14,9 +14,10 @@ import { readEffects, writeEffects } from './effectsHelpers';
|
|
|
14
14
|
import { clamp, createEnum, layerColors, MOCK_HANDLERS } from './helpers';
|
|
15
15
|
import { readSignature, readUnicodeString, skipBytes, readUint32, readUint8, readFloat64, readUint16, readBytes, readInt16, checkSignature, readFloat32, readFixedPointPath32, readSection, readColor, readInt32, readPascalString, readUnicodeStringWithLength, readAsciiString, readPattern, } from './psdReader';
|
|
16
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, } from './descriptor';
|
|
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, } from './descriptor';
|
|
18
18
|
import { serializeEngineData, parseEngineData } from './engineData';
|
|
19
19
|
import { encodeEngineData, decodeEngineData } from './text';
|
|
20
|
+
var fromAtoZ = 'abcdefghijklmnopqrstuvwxyz';
|
|
20
21
|
export var infoHandlers = [];
|
|
21
22
|
export var infoHandlersMap = {};
|
|
22
23
|
function addHandler(key, has, read, write) {
|
|
@@ -541,10 +542,10 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
|
|
|
541
542
|
var timeScope = desc.timeScope;
|
|
542
543
|
// console.log('tmln', target.name, target.id, require('util').inspect(desc, false, 99, true));
|
|
543
544
|
var timeline = {
|
|
544
|
-
start: timeScope.Strt,
|
|
545
|
-
duration: timeScope.duration,
|
|
546
|
-
inTime: timeScope.inTime,
|
|
547
|
-
outTime: timeScope.outTime,
|
|
545
|
+
start: frac(timeScope.Strt),
|
|
546
|
+
duration: frac(timeScope.duration),
|
|
547
|
+
inTime: frac(timeScope.inTime),
|
|
548
|
+
outTime: frac(timeScope.outTime),
|
|
548
549
|
autoScope: desc.autoScope,
|
|
549
550
|
audioLevel: desc.audioLevel,
|
|
550
551
|
};
|
|
@@ -685,7 +686,7 @@ addHandler('vstk', hasKey('vectorStroke'), function (reader, target, left) {
|
|
|
685
686
|
}, function (writer, target) {
|
|
686
687
|
var _a, _b, _c;
|
|
687
688
|
var stroke = target.vectorStroke;
|
|
688
|
-
var
|
|
689
|
+
var desc = {
|
|
689
690
|
strokeStyleVersion: 2,
|
|
690
691
|
strokeEnabled: !!stroke.strokeEnabled,
|
|
691
692
|
fillEnabled: !!stroke.fillEnabled,
|
|
@@ -703,7 +704,7 @@ addHandler('vstk', hasKey('vectorStroke'), function (reader, target, left) {
|
|
|
703
704
|
strokeStyleContent: serializeVectorContent(stroke.content || { type: 'color', color: { r: 0, g: 0, b: 0 } }).descriptor,
|
|
704
705
|
strokeStyleResolution: (_c = stroke.resolution) !== null && _c !== void 0 ? _c : 72,
|
|
705
706
|
};
|
|
706
|
-
writeVersionAndDescriptor(writer, '', 'strokeStyle',
|
|
707
|
+
writeVersionAndDescriptor(writer, '', 'strokeStyle', desc);
|
|
707
708
|
});
|
|
708
709
|
addHandler('artb', // per-layer arboard info
|
|
709
710
|
hasKey('artboard'), function (reader, target, left) {
|
|
@@ -768,7 +769,7 @@ function isQuiltWarp(warp) {
|
|
|
768
769
|
}
|
|
769
770
|
function encodeWarp(warp) {
|
|
770
771
|
var bounds = warp.bounds;
|
|
771
|
-
var desc = __assign(__assign({ warpStyle: warpStyle.encode(warp.style) }, (warp.values ? { warpValues: warp.values } : { warpValue: warp.value })), { warpPerspective: warp.perspective || 0, warpPerspectiveOther: warp.perspectiveOther || 0, warpRotate: Ornt.encode(warp.rotate), bounds: {
|
|
772
|
+
var desc = __assign(__assign({ warpStyle: warpStyle.encode(warp.style) }, (warp.values ? { warpValues: warp.values } : { warpValue: warp.value || 0 })), { warpPerspective: warp.perspective || 0, warpPerspectiveOther: warp.perspectiveOther || 0, warpRotate: Ornt.encode(warp.rotate), bounds: {
|
|
772
773
|
'Top ': unitsValue(bounds && bounds.top || { units: 'Pixels', value: 0 }, 'bounds.top'),
|
|
773
774
|
Left: unitsValue(bounds && bounds.left || { units: 'Pixels', value: 0 }, 'bounds.left'),
|
|
774
775
|
Btom: unitsValue(bounds && bounds.bottom || { units: 'Pixels', value: 0 }, 'bounds.bottom'),
|
|
@@ -786,6 +787,8 @@ function encodeWarp(warp) {
|
|
|
786
787
|
if (isQuilt) {
|
|
787
788
|
var desc2 = desc;
|
|
788
789
|
desc2.customEnvelopeWarp = {
|
|
790
|
+
_name: '',
|
|
791
|
+
_classID: 'customEnvelopeWarp',
|
|
789
792
|
quiltSliceX: [{
|
|
790
793
|
type: 'quiltSliceX',
|
|
791
794
|
values: customEnvelopeWarp.quiltSliceX || [],
|
|
@@ -802,6 +805,8 @@ function encodeWarp(warp) {
|
|
|
802
805
|
}
|
|
803
806
|
else {
|
|
804
807
|
desc.customEnvelopeWarp = {
|
|
808
|
+
_name: '',
|
|
809
|
+
_classID: 'customEnvelopeWarp',
|
|
805
810
|
meshPoints: [
|
|
806
811
|
{ type: 'Hrzn', values: meshPoints.map(function (p) { return p.x; }) },
|
|
807
812
|
{ type: 'Vrtc', values: meshPoints.map(function (p) { return p.y; }) },
|
|
@@ -882,7 +887,7 @@ function pointsToArray(points) {
|
|
|
882
887
|
}
|
|
883
888
|
return array;
|
|
884
889
|
}
|
|
885
|
-
function
|
|
890
|
+
function uint8ToPoints(array) {
|
|
886
891
|
return arrayToPoints(uint8ToFloat32(array));
|
|
887
892
|
}
|
|
888
893
|
function hrznVrtcToPoint(desc) {
|
|
@@ -893,27 +898,249 @@ function hrznVrtcToPoint(desc) {
|
|
|
893
898
|
}
|
|
894
899
|
function pointToHrznVrtc(point) {
|
|
895
900
|
return {
|
|
901
|
+
_name: '',
|
|
902
|
+
_classID: 'Pnt ',
|
|
896
903
|
Hrzn: unitsValue(point.x, 'x'),
|
|
897
904
|
Vrtc: unitsValue(point.y, 'y'),
|
|
898
905
|
};
|
|
899
906
|
}
|
|
900
|
-
function
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
907
|
+
function parseFilterFXItem(f) {
|
|
908
|
+
var base = {
|
|
909
|
+
name: f['Nm '],
|
|
910
|
+
opacity: parsePercent(f.blendOptions.Opct),
|
|
911
|
+
blendMode: BlnM.decode(f.blendOptions['Md ']),
|
|
912
|
+
enabled: f.enab,
|
|
913
|
+
hasOptions: f.hasoptions,
|
|
914
|
+
foregroundColor: parseColor(f.FrgC),
|
|
915
|
+
backgroundColor: parseColor(f.BckC),
|
|
916
|
+
};
|
|
917
|
+
switch (f.filterID) {
|
|
918
|
+
case 1098281575: return __assign(__assign({}, base), { type: 'average' });
|
|
919
|
+
case 1114403360: return __assign(__assign({}, base), { type: 'blur' });
|
|
920
|
+
case 1114403405: return __assign(__assign({}, base), { type: 'blur more' });
|
|
921
|
+
case 697: return __assign(__assign({}, base), { type: 'box blur', filter: {
|
|
922
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
923
|
+
} });
|
|
924
|
+
case 1198747202: return __assign(__assign({}, base), { type: 'gaussian blur', filter: {
|
|
925
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
926
|
+
} });
|
|
927
|
+
case 1299476034: return __assign(__assign({}, base), { type: 'motion blur', filter: {
|
|
928
|
+
angle: f.Fltr.Angl,
|
|
929
|
+
distance: parseUnits(f.Fltr.Dstn),
|
|
930
|
+
} });
|
|
931
|
+
case 1382313026: return __assign(__assign({}, base), { type: 'radial blur', filter: {
|
|
932
|
+
amount: f.Fltr.Amnt,
|
|
933
|
+
method: BlrM.decode(f.Fltr.BlrM),
|
|
934
|
+
quality: BlrQ.decode(f.Fltr.BlrQ),
|
|
935
|
+
} });
|
|
936
|
+
case 702: return __assign(__assign({}, base), { type: 'shape blur', filter: {
|
|
937
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
938
|
+
customShape: { name: f.Fltr.customShape['Nm '], id: f.Fltr.customShape.Idnt },
|
|
939
|
+
} });
|
|
940
|
+
case 1399681602: return __assign(__assign({}, base), { type: 'smart blur', filter: {
|
|
941
|
+
radius: f.Fltr['Rds '],
|
|
942
|
+
threshold: f.Fltr.Thsh,
|
|
943
|
+
quality: SmBQ.decode(f.Fltr.SmBQ),
|
|
944
|
+
mode: SmBM.decode(f.Fltr.SmBM),
|
|
945
|
+
} });
|
|
946
|
+
case 701: return __assign(__assign({}, base), { type: 'surface blur', filter: {
|
|
947
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
948
|
+
threshold: f.Fltr.Thsh,
|
|
949
|
+
} });
|
|
950
|
+
case 1148416108: return __assign(__assign({}, base), { type: 'displace', filter: {
|
|
951
|
+
horizontalScale: f.Fltr.HrzS,
|
|
952
|
+
verticalScale: f.Fltr.VrtS,
|
|
953
|
+
displacementMap: DspM.decode(f.Fltr.DspM),
|
|
954
|
+
undefinedAreas: UndA.decode(f.Fltr.UndA),
|
|
955
|
+
displacementFile: {
|
|
956
|
+
signature: f.Fltr.DspF.sig,
|
|
957
|
+
path: f.Fltr.DspF.path, // TODO: this is decoded incorrectly ???
|
|
958
|
+
},
|
|
959
|
+
} });
|
|
960
|
+
case 1349411688: return __assign(__assign({}, base), { type: 'pinch', filter: {
|
|
961
|
+
amount: f.Fltr.Amnt,
|
|
962
|
+
} });
|
|
963
|
+
case 1349284384: return __assign(__assign({}, base), { type: 'polar coordinates', filter: {
|
|
964
|
+
conversion: Cnvr.decode(f.Fltr.Cnvr),
|
|
965
|
+
} });
|
|
966
|
+
case 1383099493: return __assign(__assign({}, base), { type: 'ripple', filter: {
|
|
967
|
+
amount: f.Fltr.Amnt,
|
|
968
|
+
size: RplS.decode(f.Fltr.RplS),
|
|
969
|
+
} });
|
|
970
|
+
case 1399353888: return __assign(__assign({}, base), { type: 'shear', filter: {
|
|
971
|
+
shearPoints: f.Fltr.ShrP.map(function (p) { return ({ x: p.Hrzn, y: p.Vrtc }); }),
|
|
972
|
+
shearStart: f.Fltr.ShrS,
|
|
973
|
+
shearEnd: f.Fltr.ShrE,
|
|
974
|
+
undefinedAreas: UndA.decode(f.Fltr.UndA),
|
|
975
|
+
} });
|
|
976
|
+
case 1399875698: return __assign(__assign({}, base), { type: 'spherize', filter: {
|
|
977
|
+
amount: f.Fltr.Amnt,
|
|
978
|
+
mode: SphM.decode(f.Fltr.SphM),
|
|
979
|
+
} });
|
|
980
|
+
case 1417114220: return __assign(__assign({}, base), { type: 'twirl', filter: {
|
|
981
|
+
angle: f.Fltr.Angl,
|
|
982
|
+
} });
|
|
983
|
+
case 1466005093: return __assign(__assign({}, base), { type: 'wave', filter: {
|
|
984
|
+
numberOfGenerators: f.Fltr.NmbG,
|
|
985
|
+
type: Wvtp.decode(f.Fltr.Wvtp),
|
|
986
|
+
wavelength: { min: f.Fltr.WLMn, max: f.Fltr.WLMx },
|
|
987
|
+
amplitude: { min: f.Fltr.AmMn, max: f.Fltr.AmMx },
|
|
988
|
+
scale: { x: f.Fltr.SclH, y: f.Fltr.SclV },
|
|
989
|
+
randomSeed: f.Fltr.RndS,
|
|
990
|
+
undefinedAreas: UndA.decode(f.Fltr.UndA),
|
|
991
|
+
} });
|
|
992
|
+
case 1516722791: return __assign(__assign({}, base), { type: 'zigzag', filter: {
|
|
993
|
+
amount: f.Fltr.Amnt,
|
|
994
|
+
ridges: f.Fltr.NmbR,
|
|
995
|
+
style: ZZTy.decode(f.Fltr.ZZTy),
|
|
996
|
+
} });
|
|
997
|
+
case 1097092723: return __assign(__assign({}, base), { type: 'add noise', filter: {
|
|
998
|
+
amount: parsePercent(f.Fltr.Nose),
|
|
999
|
+
distribution: Dstr.decode(f.Fltr.Dstr),
|
|
1000
|
+
monochromatic: f.Fltr.Mnch,
|
|
1001
|
+
randomSeed: f.Fltr.FlRs,
|
|
1002
|
+
} });
|
|
1003
|
+
case 1148416099: return __assign(__assign({}, base), { type: 'despeckle' });
|
|
1004
|
+
case 1148417107: return __assign(__assign({}, base), { type: 'dust and scratches', filter: {
|
|
1005
|
+
radius: f.Fltr['Rds '],
|
|
1006
|
+
threshold: f.Fltr.Thsh,
|
|
1007
|
+
} });
|
|
1008
|
+
case 1298427424: return __assign(__assign({}, base), { type: 'median', filter: {
|
|
1009
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
1010
|
+
} });
|
|
1011
|
+
case 633: return __assign(__assign({}, base), { type: 'reduce noise', filter: {
|
|
1012
|
+
preset: f.Fltr.preset,
|
|
1013
|
+
removeJpegArtifact: f.Fltr.removeJPEGArtifact,
|
|
1014
|
+
reduceColorNoise: parsePercent(f.Fltr.ClNs),
|
|
1015
|
+
sharpenDetails: parsePercent(f.Fltr.Shrp),
|
|
1016
|
+
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 } : {}))); }),
|
|
1017
|
+
} });
|
|
1018
|
+
case 1131180616: return __assign(__assign({}, base), { type: 'color halftone', filter: {
|
|
1019
|
+
radius: f.Fltr['Rds '],
|
|
1020
|
+
angle1: f.Fltr.Ang1,
|
|
1021
|
+
angle2: f.Fltr.Ang2,
|
|
1022
|
+
angle3: f.Fltr.Ang3,
|
|
1023
|
+
angle4: f.Fltr.Ang4,
|
|
1024
|
+
} });
|
|
1025
|
+
case 1131574132: return __assign(__assign({}, base), { type: 'crystallize', filter: {
|
|
1026
|
+
cellSize: f.Fltr.ClSz,
|
|
1027
|
+
randomSeed: f.Fltr.FlRs,
|
|
1028
|
+
} });
|
|
1029
|
+
case 1180922912: return __assign(__assign({}, base), { type: 'facet' });
|
|
1030
|
+
case 1181902701: return __assign(__assign({}, base), { type: 'fragment' });
|
|
1031
|
+
case 1299870830: return __assign(__assign({}, base), { type: 'mezzotint', filter: {
|
|
1032
|
+
type: MztT.decode(f.Fltr.MztT),
|
|
1033
|
+
randomSeed: f.Fltr.FlRs,
|
|
1034
|
+
} });
|
|
1035
|
+
case 1299407648: return __assign(__assign({}, base), { type: 'mosaic', filter: {
|
|
1036
|
+
cellSize: parseUnits(f.Fltr.ClSz),
|
|
1037
|
+
} });
|
|
1038
|
+
case 1349416044: return __assign(__assign({}, base), { type: 'pointillize', filter: {
|
|
1039
|
+
cellSize: f.Fltr.ClSz,
|
|
1040
|
+
randomSeed: f.Fltr.FlRs,
|
|
1041
|
+
} });
|
|
1042
|
+
case 1131177075: return __assign(__assign({}, base), { type: 'clouds', filter: {
|
|
1043
|
+
randomSeed: f.Fltr.FlRs,
|
|
1044
|
+
} });
|
|
1045
|
+
case 1147564611: return __assign(__assign({}, base), { type: 'difference clouds', filter: {
|
|
1046
|
+
randomSeed: f.Fltr.FlRs,
|
|
1047
|
+
} });
|
|
1048
|
+
case 1180856947: return __assign(__assign({}, base), { type: 'fibers', filter: {
|
|
1049
|
+
variance: f.Fltr.Vrnc,
|
|
1050
|
+
strength: f.Fltr.Strg,
|
|
1051
|
+
randomSeed: f.Fltr.RndS,
|
|
1052
|
+
} });
|
|
1053
|
+
case 1282306886: return __assign(__assign({}, base), { type: 'lens flare', filter: {
|
|
1054
|
+
brightness: f.Fltr.Brgh,
|
|
1055
|
+
position: { x: f.Fltr.FlrC.Hrzn, y: f.Fltr.FlrC.Vrtc },
|
|
1056
|
+
lensType: Lns.decode(f.Fltr['Lns ']),
|
|
1057
|
+
} });
|
|
1058
|
+
case 1399353968: return __assign(__assign({}, base), { type: 'sharpen' });
|
|
1059
|
+
case 1399353925: return __assign(__assign({}, base), { type: 'sharpen edges' });
|
|
1060
|
+
case 1399353933: return __assign(__assign({}, base), { type: 'sharpen more' });
|
|
1061
|
+
case 698: return __assign(__assign({}, base), { type: 'smart sharpen', filter: {
|
|
1062
|
+
amount: parsePercent(f.Fltr.Amnt),
|
|
1063
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
1064
|
+
threshold: f.Fltr.Thsh,
|
|
1065
|
+
angle: f.Fltr.Angl,
|
|
1066
|
+
moreAccurate: f.Fltr.moreAccurate,
|
|
1067
|
+
blur: blurType.decode(f.Fltr.blur),
|
|
1068
|
+
preset: f.Fltr.preset,
|
|
1069
|
+
shadow: {
|
|
1070
|
+
fadeAmount: parsePercent(f.Fltr.sdwM.Amnt),
|
|
1071
|
+
tonalWidth: parsePercent(f.Fltr.sdwM.Wdth),
|
|
1072
|
+
radius: f.Fltr.sdwM['Rds '],
|
|
1073
|
+
},
|
|
1074
|
+
highlight: {
|
|
1075
|
+
fadeAmount: parsePercent(f.Fltr.hglM.Amnt),
|
|
1076
|
+
tonalWidth: parsePercent(f.Fltr.hglM.Wdth),
|
|
1077
|
+
radius: f.Fltr.hglM['Rds '],
|
|
1078
|
+
},
|
|
1079
|
+
} });
|
|
1080
|
+
case 1433301837: return __assign(__assign({}, base), { type: 'unsharp mask', filter: {
|
|
1081
|
+
amount: parsePercent(f.Fltr.Amnt),
|
|
1082
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
1083
|
+
threshold: f.Fltr.Thsh,
|
|
1084
|
+
} });
|
|
1085
|
+
case 1147564832: return __assign(__assign({}, base), { type: 'diffuse', filter: {
|
|
1086
|
+
mode: DfsM.decode(f.Fltr['Md ']),
|
|
1087
|
+
randomSeed: f.Fltr.FlRs,
|
|
1088
|
+
} });
|
|
1089
|
+
case 1164796531: return __assign(__assign({}, base), { type: 'emboss', filter: {
|
|
1090
|
+
angle: f.Fltr.Angl,
|
|
1091
|
+
height: f.Fltr.Hght,
|
|
1092
|
+
amount: f.Fltr.Amnt,
|
|
1093
|
+
} });
|
|
1094
|
+
case 1165522034: return __assign(__assign({}, base), { type: 'extrude', filter: {
|
|
1095
|
+
type: ExtT.decode(f.Fltr.ExtT),
|
|
1096
|
+
size: f.Fltr.ExtS,
|
|
1097
|
+
depth: f.Fltr.ExtD,
|
|
1098
|
+
depthMode: ExtR.decode(f.Fltr.ExtR),
|
|
1099
|
+
randomSeed: f.Fltr.FlRs,
|
|
1100
|
+
solidFrontFaces: f.Fltr.ExtF,
|
|
1101
|
+
maskIncompleteBlocks: f.Fltr.ExtM,
|
|
1102
|
+
} });
|
|
1103
|
+
case 1181639749: return __assign(__assign({}, base), { type: 'find edges' });
|
|
1104
|
+
case 1399616122: return __assign(__assign({}, base), { type: 'solarize' });
|
|
1105
|
+
case 1416393504: return __assign(__assign({}, base), { type: 'tiles', filter: {
|
|
1106
|
+
numberOfTiles: f.Fltr.TlNm,
|
|
1107
|
+
maximumOffset: f.Fltr.TlOf,
|
|
1108
|
+
fillEmptyAreaWith: FlCl.decode(f.Fltr.FlCl),
|
|
1109
|
+
randomSeed: f.Fltr.FlRs,
|
|
1110
|
+
} });
|
|
1111
|
+
case 1416782659: return __assign(__assign({}, base), { type: 'trace contour', filter: {
|
|
1112
|
+
level: f.Fltr['Lvl '],
|
|
1113
|
+
edge: CntE.decode(f.Fltr['Edg ']),
|
|
1114
|
+
} });
|
|
1115
|
+
case 1466852384: return __assign(__assign({}, base), { type: 'wind', filter: {
|
|
1116
|
+
method: WndM.decode(f.Fltr.WndM),
|
|
1117
|
+
direction: Drct.decode(f.Fltr.Drct),
|
|
1118
|
+
} });
|
|
1119
|
+
case 1148089458: return __assign(__assign({}, base), { type: 'de-interlace', filter: {
|
|
1120
|
+
eliminate: IntE.decode(f.Fltr.IntE),
|
|
1121
|
+
newFieldsBy: IntC.decode(f.Fltr.IntC),
|
|
1122
|
+
} });
|
|
1123
|
+
case 1314149187: return __assign(__assign({}, base), { type: 'ntsc colors' });
|
|
1124
|
+
case 1131639917: return __assign(__assign({}, base), { type: 'custom', filter: {
|
|
1125
|
+
scale: f.Fltr['Scl '],
|
|
1126
|
+
offset: f.Fltr.Ofst,
|
|
1127
|
+
matrix: f.Fltr.Mtrx,
|
|
1128
|
+
} });
|
|
1129
|
+
case 1214736464: return __assign(__assign({}, base), { type: 'high pass', filter: {
|
|
1130
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
1131
|
+
} });
|
|
1132
|
+
case 1299737888: return __assign(__assign({}, base), { type: 'maximum', filter: {
|
|
1133
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
1134
|
+
} });
|
|
1135
|
+
case 1299082528: return __assign(__assign({}, base), { type: 'minimum', filter: {
|
|
1136
|
+
radius: parseUnits(f.Fltr['Rds ']),
|
|
1137
|
+
} });
|
|
1138
|
+
case 1332114292: return __assign(__assign({}, base), { type: 'offset', filter: {
|
|
1139
|
+
horizontal: f.Fltr.Hrzn,
|
|
1140
|
+
vertical: f.Fltr.Vrtc,
|
|
1141
|
+
undefinedAreas: FlMd.decode(f.Fltr['Fl ']),
|
|
1142
|
+
} });
|
|
1143
|
+
case 991: return __assign(__assign({}, base), { type: 'puppet', filter: {
|
|
917
1144
|
rigidType: f.Fltr.rigidType,
|
|
918
1145
|
bounds: [
|
|
919
1146
|
{ x: f.Fltr.PuX0, y: f.Fltr.PuY0, },
|
|
@@ -925,8 +1152,8 @@ function parseFilterFX(desc) {
|
|
|
925
1152
|
rigidType: p.rigidType,
|
|
926
1153
|
// TODO: VrsM
|
|
927
1154
|
// TODO: VrsN
|
|
928
|
-
originalVertexArray:
|
|
929
|
-
deformedVertexArray:
|
|
1155
|
+
originalVertexArray: uint8ToPoints(p.originalVertexArray),
|
|
1156
|
+
deformedVertexArray: uint8ToPoints(p.deformedVertexArray),
|
|
930
1157
|
indexArray: Array.from(uint8ToUint32(p.indexArray)),
|
|
931
1158
|
pinOffsets: arrayToPoints(p.pinOffsets),
|
|
932
1159
|
posFinalPins: arrayToPoints(p.posFinalPins),
|
|
@@ -955,31 +1182,429 @@ function parseFilterFX(desc) {
|
|
|
955
1182
|
}); }),
|
|
956
1183
|
},
|
|
957
1184
|
}); }),
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
|
|
1185
|
+
} });
|
|
1186
|
+
case 1348620396: {
|
|
1187
|
+
var parameters = [];
|
|
1188
|
+
var Flrt = f.Fltr;
|
|
1189
|
+
for (var i = 0; i < fromAtoZ.length; i++) {
|
|
1190
|
+
if (!Flrt["PN".concat(fromAtoZ[i], "a")])
|
|
1191
|
+
break;
|
|
1192
|
+
for (var j = 0; j < fromAtoZ.length; j++) {
|
|
1193
|
+
if (!Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])])
|
|
1194
|
+
break;
|
|
1195
|
+
parameters.push({
|
|
1196
|
+
name: Flrt["PN".concat(fromAtoZ[i]).concat(fromAtoZ[j])],
|
|
1197
|
+
value: Flrt["PF".concat(fromAtoZ[i]).concat(fromAtoZ[j])]
|
|
1198
|
+
});
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
return __assign(__assign({}, base), { type: 'oil paint plugin', filter: {
|
|
1202
|
+
name: f.Fltr.KnNm,
|
|
1203
|
+
gpu: f.Fltr.GpuY,
|
|
1204
|
+
lighting: f.Fltr.LIWy,
|
|
1205
|
+
parameters: parameters,
|
|
1206
|
+
} });
|
|
1207
|
+
}
|
|
1208
|
+
// case 2089: return {
|
|
1209
|
+
// ...base,
|
|
1210
|
+
// type: 'adaptive wide angle',
|
|
1211
|
+
// params: {
|
|
1212
|
+
// correction: prjM.decode(f.Fltr.prjM),
|
|
1213
|
+
// focalLength: f.Fltr.focL,
|
|
1214
|
+
// cropFactor: f.Fltr.CrpF,
|
|
1215
|
+
// imageScale: f.Fltr.imgS,
|
|
1216
|
+
// imageX: f.Fltr.imgX,
|
|
1217
|
+
// imageY: f.Fltr.imgY,
|
|
1218
|
+
// },
|
|
1219
|
+
// };
|
|
1220
|
+
case 1215521360: return __assign(__assign({}, base), { type: 'hsb/hsl', filter: {
|
|
1221
|
+
inputMode: ClrS.decode(f.Fltr.Inpt),
|
|
1222
|
+
rowOrder: ClrS.decode(f.Fltr.Otpt),
|
|
1223
|
+
} });
|
|
1224
|
+
case 1122: return __assign(__assign({}, base), { type: 'oil paint', filter: {
|
|
1225
|
+
lightingOn: f.Fltr.lightingOn,
|
|
1226
|
+
stylization: f.Fltr.stylization,
|
|
1227
|
+
cleanliness: f.Fltr.cleanliness,
|
|
1228
|
+
brushScale: f.Fltr.brushScale,
|
|
1229
|
+
microBrush: f.Fltr.microBrush,
|
|
1230
|
+
lightDirection: f.Fltr.LghD,
|
|
1231
|
+
specularity: f.Fltr.specularity,
|
|
1232
|
+
} });
|
|
1233
|
+
case 1282492025: {
|
|
1234
|
+
return __assign(__assign({}, base), { type: 'liquify', filter: {
|
|
1235
|
+
liquifyMesh: f.Fltr.LqMe,
|
|
1236
|
+
} });
|
|
1237
|
+
}
|
|
1238
|
+
default:
|
|
1239
|
+
throw new Error("Unknown filterID: ".concat(f.filterID));
|
|
1240
|
+
}
|
|
961
1241
|
}
|
|
962
|
-
function
|
|
1242
|
+
function parseFilterFX(desc) {
|
|
963
1243
|
return {
|
|
964
|
-
|
|
965
|
-
validAtPosition:
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
1244
|
+
enabled: desc.enab,
|
|
1245
|
+
validAtPosition: desc.validAtPosition,
|
|
1246
|
+
maskEnabled: desc.filterMaskEnable,
|
|
1247
|
+
maskLinked: desc.filterMaskLinked,
|
|
1248
|
+
maskExtendWithWhite: desc.filterMaskExtendWithWhite,
|
|
1249
|
+
list: desc.filterFXList.map(parseFilterFXItem),
|
|
1250
|
+
};
|
|
1251
|
+
}
|
|
1252
|
+
function uvRadius(t) {
|
|
1253
|
+
return unitsValue(t.radius, 'radius');
|
|
1254
|
+
}
|
|
1255
|
+
function serializeFilterFXItem(f) {
|
|
1256
|
+
var base = {
|
|
1257
|
+
_name: '',
|
|
1258
|
+
_classID: 'filterFX',
|
|
1259
|
+
'Nm ': f.name,
|
|
1260
|
+
blendOptions: {
|
|
1261
|
+
_name: '',
|
|
1262
|
+
_classID: 'blendOptions',
|
|
1263
|
+
Opct: unitsPercentF(f.opacity),
|
|
1264
|
+
'Md ': BlnM.encode(f.blendMode),
|
|
1265
|
+
},
|
|
1266
|
+
enab: f.enabled,
|
|
1267
|
+
hasoptions: f.hasOptions,
|
|
1268
|
+
FrgC: serializeColor(f.foregroundColor),
|
|
1269
|
+
BckC: serializeColor(f.backgroundColor),
|
|
1270
|
+
};
|
|
1271
|
+
switch (f.type) {
|
|
1272
|
+
case 'average': return __assign(__assign({}, base), { filterID: 1098281575 });
|
|
1273
|
+
case 'blur': return __assign(__assign({}, base), { filterID: 1114403360 });
|
|
1274
|
+
case 'blur more': return __assign(__assign({}, base), { filterID: 1114403405 });
|
|
1275
|
+
case 'box blur': return __assign(__assign({}, base), { Fltr: {
|
|
1276
|
+
_name: 'Box Blur',
|
|
1277
|
+
_classID: 'boxblur',
|
|
1278
|
+
'Rds ': uvRadius(f.filter),
|
|
1279
|
+
}, filterID: 697 });
|
|
1280
|
+
case 'gaussian blur': return __assign(__assign({}, base), { Fltr: {
|
|
1281
|
+
_name: 'Gaussian Blur',
|
|
1282
|
+
_classID: 'GsnB',
|
|
1283
|
+
'Rds ': uvRadius(f.filter),
|
|
1284
|
+
}, filterID: 1198747202 });
|
|
1285
|
+
case 'motion blur': return __assign(__assign({}, base), { Fltr: {
|
|
1286
|
+
_name: 'Motion Blur',
|
|
1287
|
+
_classID: 'MtnB',
|
|
1288
|
+
Angl: f.filter.angle,
|
|
1289
|
+
Dstn: unitsValue(f.filter.distance, 'distance'),
|
|
1290
|
+
}, filterID: 1299476034 });
|
|
1291
|
+
case 'radial blur': return __assign(__assign({}, base), { Fltr: {
|
|
1292
|
+
_name: 'Radial Blur',
|
|
1293
|
+
_classID: 'RdlB',
|
|
1294
|
+
Amnt: f.filter.amount,
|
|
1295
|
+
BlrM: BlrM.encode(f.filter.method),
|
|
1296
|
+
BlrQ: BlrQ.encode(f.filter.quality),
|
|
1297
|
+
}, filterID: 1382313026 });
|
|
1298
|
+
case 'shape blur': return __assign(__assign({}, base), { Fltr: {
|
|
1299
|
+
_name: 'Shape Blur',
|
|
1300
|
+
_classID: 'shapeBlur',
|
|
1301
|
+
'Rds ': uvRadius(f.filter),
|
|
1302
|
+
customShape: {
|
|
1303
|
+
_name: '',
|
|
1304
|
+
_classID: 'customShape',
|
|
1305
|
+
'Nm ': f.filter.customShape.name,
|
|
1306
|
+
Idnt: f.filter.customShape.id,
|
|
1307
|
+
}
|
|
1308
|
+
}, filterID: 702 });
|
|
1309
|
+
case 'smart blur': return __assign(__assign({}, base), { Fltr: {
|
|
1310
|
+
_name: 'Smart Blur',
|
|
1311
|
+
_classID: 'SmrB',
|
|
1312
|
+
'Rds ': f.filter.radius,
|
|
1313
|
+
Thsh: f.filter.threshold,
|
|
1314
|
+
SmBQ: SmBQ.encode(f.filter.quality),
|
|
1315
|
+
SmBM: SmBM.encode(f.filter.mode),
|
|
1316
|
+
}, filterID: 1399681602 });
|
|
1317
|
+
case 'surface blur': return __assign(__assign({}, base), { Fltr: {
|
|
1318
|
+
_name: 'Surface Blur',
|
|
1319
|
+
_classID: 'surfaceBlur',
|
|
1320
|
+
'Rds ': uvRadius(f.filter),
|
|
1321
|
+
Thsh: f.filter.threshold,
|
|
1322
|
+
}, filterID: 701 });
|
|
1323
|
+
case 'displace': return __assign(__assign({}, base), { Fltr: {
|
|
1324
|
+
_name: 'Displace',
|
|
1325
|
+
_classID: 'Dspl',
|
|
1326
|
+
HrzS: f.filter.horizontalScale,
|
|
1327
|
+
VrtS: f.filter.verticalScale,
|
|
1328
|
+
DspM: DspM.encode(f.filter.displacementMap),
|
|
1329
|
+
UndA: UndA.encode(f.filter.undefinedAreas),
|
|
1330
|
+
DspF: {
|
|
1331
|
+
sig: f.filter.displacementFile.signature,
|
|
1332
|
+
path: f.filter.displacementFile.path,
|
|
1333
|
+
},
|
|
1334
|
+
}, filterID: 1148416108 });
|
|
1335
|
+
case 'pinch': return __assign(__assign({}, base), { Fltr: {
|
|
1336
|
+
_name: 'Pinch',
|
|
1337
|
+
_classID: 'Pnch',
|
|
1338
|
+
Amnt: f.filter.amount,
|
|
1339
|
+
}, filterID: 1349411688 });
|
|
1340
|
+
case 'polar coordinates': return __assign(__assign({}, base), { Fltr: {
|
|
1341
|
+
_name: 'Polar Coordinates',
|
|
1342
|
+
_classID: 'Plr ',
|
|
1343
|
+
Cnvr: Cnvr.encode(f.filter.conversion),
|
|
1344
|
+
}, filterID: 1349284384 });
|
|
1345
|
+
case 'ripple': return __assign(__assign({}, base), { Fltr: {
|
|
1346
|
+
_name: 'Ripple',
|
|
1347
|
+
_classID: 'Rple',
|
|
1348
|
+
Amnt: f.filter.amount,
|
|
1349
|
+
RplS: RplS.encode(f.filter.size),
|
|
1350
|
+
}, filterID: 1383099493 });
|
|
1351
|
+
case 'shear': return __assign(__assign({}, base), { Fltr: {
|
|
1352
|
+
_name: 'Shear',
|
|
1353
|
+
_classID: 'Shr ',
|
|
1354
|
+
ShrP: f.filter.shearPoints.map(function (p) { return ({ _name: '', _classID: 'Pnt ', Hrzn: p.x, Vrtc: p.y }); }),
|
|
1355
|
+
UndA: UndA.encode(f.filter.undefinedAreas),
|
|
1356
|
+
ShrS: f.filter.shearStart,
|
|
1357
|
+
ShrE: f.filter.shearEnd,
|
|
1358
|
+
}, filterID: 1399353888 });
|
|
1359
|
+
case 'spherize': return __assign(__assign({}, base), { Fltr: {
|
|
1360
|
+
_name: 'Spherize',
|
|
1361
|
+
_classID: 'Sphr',
|
|
1362
|
+
Amnt: f.filter.amount,
|
|
1363
|
+
SphM: SphM.encode(f.filter.mode),
|
|
1364
|
+
}, filterID: 1399875698 });
|
|
1365
|
+
case 'twirl': return __assign(__assign({}, base), { Fltr: {
|
|
1366
|
+
_name: 'Twirl',
|
|
1367
|
+
_classID: 'Twrl',
|
|
1368
|
+
Angl: f.filter.angle,
|
|
1369
|
+
}, filterID: 1417114220 });
|
|
1370
|
+
case 'wave': return __assign(__assign({}, base), { Fltr: {
|
|
1371
|
+
_name: 'Wave',
|
|
1372
|
+
_classID: 'Wave',
|
|
1373
|
+
Wvtp: Wvtp.encode(f.filter.type),
|
|
1374
|
+
NmbG: f.filter.numberOfGenerators,
|
|
1375
|
+
WLMn: f.filter.wavelength.min,
|
|
1376
|
+
WLMx: f.filter.wavelength.max,
|
|
1377
|
+
AmMn: f.filter.amplitude.min,
|
|
1378
|
+
AmMx: f.filter.amplitude.max,
|
|
1379
|
+
SclH: f.filter.scale.x,
|
|
1380
|
+
SclV: f.filter.scale.y,
|
|
1381
|
+
UndA: UndA.encode(f.filter.undefinedAreas),
|
|
1382
|
+
RndS: f.filter.randomSeed,
|
|
1383
|
+
}, filterID: 1466005093 });
|
|
1384
|
+
case 'zigzag': return __assign(__assign({}, base), { Fltr: {
|
|
1385
|
+
_name: 'ZigZag',
|
|
1386
|
+
_classID: 'ZgZg',
|
|
1387
|
+
Amnt: f.filter.amount,
|
|
1388
|
+
NmbR: f.filter.ridges,
|
|
1389
|
+
ZZTy: ZZTy.encode(f.filter.style),
|
|
1390
|
+
}, filterID: 1516722791 });
|
|
1391
|
+
case 'add noise': return __assign(__assign({}, base), { Fltr: {
|
|
1392
|
+
_name: 'Add Noise',
|
|
1393
|
+
_classID: 'AdNs',
|
|
1394
|
+
Dstr: Dstr.encode(f.filter.distribution),
|
|
1395
|
+
Nose: unitsPercentF(f.filter.amount),
|
|
1396
|
+
Mnch: f.filter.monochromatic,
|
|
1397
|
+
FlRs: f.filter.randomSeed,
|
|
1398
|
+
}, filterID: 1097092723 });
|
|
1399
|
+
case 'despeckle': return __assign(__assign({}, base), { filterID: 1148416099 });
|
|
1400
|
+
case 'dust and scratches': return __assign(__assign({}, base), { Fltr: {
|
|
1401
|
+
_name: 'Dust & Scratches',
|
|
1402
|
+
_classID: 'DstS',
|
|
1403
|
+
'Rds ': f.filter.radius,
|
|
1404
|
+
Thsh: f.filter.threshold,
|
|
1405
|
+
}, filterID: 1148417107 });
|
|
1406
|
+
case 'median': return __assign(__assign({}, base), { Fltr: {
|
|
1407
|
+
_name: 'Median',
|
|
1408
|
+
_classID: 'Mdn ',
|
|
1409
|
+
'Rds ': uvRadius(f.filter),
|
|
1410
|
+
}, filterID: 1298427424 });
|
|
1411
|
+
case 'reduce noise': return __assign(__assign({}, base), { Fltr: {
|
|
1412
|
+
_name: 'Reduce Noise',
|
|
1413
|
+
_classID: 'denoise',
|
|
1414
|
+
ClNs: unitsPercentF(f.filter.reduceColorNoise),
|
|
1415
|
+
Shrp: unitsPercentF(f.filter.sharpenDetails),
|
|
1416
|
+
removeJPEGArtifact: f.filter.removeJpegArtifact,
|
|
1417
|
+
channelDenoise: f.filter.channelDenoise.map(function (c) { return (__assign({ _name: '', _classID: 'channelDenoiseParams', Chnl: c.channels.map(function (i) { return Chnl.encode(i); }), Amnt: c.amount }, (c.preserveDetails ? { EdgF: c.preserveDetails } : {}))); }),
|
|
1418
|
+
preset: f.filter.preset,
|
|
1419
|
+
}, filterID: 633 });
|
|
1420
|
+
case 'color halftone': return __assign(__assign({}, base), { Fltr: {
|
|
1421
|
+
_name: 'Color Halftone',
|
|
1422
|
+
_classID: 'ClrH',
|
|
1423
|
+
'Rds ': f.filter.radius,
|
|
1424
|
+
Ang1: f.filter.angle1,
|
|
1425
|
+
Ang2: f.filter.angle2,
|
|
1426
|
+
Ang3: f.filter.angle3,
|
|
1427
|
+
Ang4: f.filter.angle4,
|
|
1428
|
+
}, filterID: 1131180616 });
|
|
1429
|
+
case 'crystallize': return __assign(__assign({}, base), { Fltr: {
|
|
1430
|
+
_name: 'Crystallize',
|
|
1431
|
+
_classID: 'Crst',
|
|
1432
|
+
ClSz: f.filter.cellSize,
|
|
1433
|
+
FlRs: f.filter.randomSeed,
|
|
1434
|
+
}, filterID: 1131574132 });
|
|
1435
|
+
case 'facet': return __assign(__assign({}, base), { filterID: 1180922912 });
|
|
1436
|
+
case 'fragment': return __assign(__assign({}, base), { filterID: 1181902701 });
|
|
1437
|
+
case 'mezzotint': return __assign(__assign({}, base), { Fltr: {
|
|
1438
|
+
_name: 'Mezzotint',
|
|
1439
|
+
_classID: 'Mztn',
|
|
1440
|
+
MztT: MztT.encode(f.filter.type),
|
|
1441
|
+
FlRs: f.filter.randomSeed,
|
|
1442
|
+
}, filterID: 1299870830 });
|
|
1443
|
+
case 'mosaic': return __assign(__assign({}, base), { Fltr: {
|
|
1444
|
+
_name: 'Mosaic',
|
|
1445
|
+
_classID: 'Msc ',
|
|
1446
|
+
ClSz: unitsValue(f.filter.cellSize, 'cellSize'),
|
|
1447
|
+
}, filterID: 1299407648 });
|
|
1448
|
+
case 'pointillize': return __assign(__assign({}, base), { Fltr: {
|
|
1449
|
+
_name: 'Pointillize',
|
|
1450
|
+
_classID: 'Pntl',
|
|
1451
|
+
ClSz: f.filter.cellSize,
|
|
1452
|
+
FlRs: f.filter.randomSeed,
|
|
1453
|
+
}, filterID: 1349416044 });
|
|
1454
|
+
case 'clouds': return __assign(__assign({}, base), { Fltr: {
|
|
1455
|
+
_name: 'Clouds',
|
|
1456
|
+
_classID: 'Clds',
|
|
1457
|
+
FlRs: f.filter.randomSeed,
|
|
1458
|
+
}, filterID: 1131177075 });
|
|
1459
|
+
case 'difference clouds': return __assign(__assign({}, base), { Fltr: {
|
|
1460
|
+
_name: 'Difference Clouds',
|
|
1461
|
+
_classID: 'DfrC',
|
|
1462
|
+
FlRs: f.filter.randomSeed,
|
|
1463
|
+
}, filterID: 1147564611 });
|
|
1464
|
+
case 'fibers': return __assign(__assign({}, base), { Fltr: {
|
|
1465
|
+
_name: 'Fibers',
|
|
1466
|
+
_classID: 'Fbrs',
|
|
1467
|
+
Vrnc: f.filter.variance,
|
|
1468
|
+
Strg: f.filter.strength,
|
|
1469
|
+
RndS: f.filter.randomSeed,
|
|
1470
|
+
}, filterID: 1180856947 });
|
|
1471
|
+
case 'lens flare': return __assign(__assign({}, base), { Fltr: {
|
|
1472
|
+
_name: 'Lens Flare',
|
|
1473
|
+
_classID: 'LnsF',
|
|
1474
|
+
Brgh: f.filter.brightness,
|
|
1475
|
+
FlrC: {
|
|
1476
|
+
_name: '',
|
|
1477
|
+
_classID: 'Pnt ',
|
|
1478
|
+
Hrzn: f.filter.position.x,
|
|
1479
|
+
Vrtc: f.filter.position.y,
|
|
1480
|
+
},
|
|
1481
|
+
'Lns ': Lns.encode(f.filter.lensType),
|
|
1482
|
+
}, filterID: 1282306886 });
|
|
1483
|
+
case 'sharpen': return __assign(__assign({}, base), { filterID: 1399353968 });
|
|
1484
|
+
case 'sharpen edges': return __assign(__assign({}, base), { filterID: 1399353925 });
|
|
1485
|
+
case 'sharpen more': return __assign(__assign({}, base), { filterID: 1399353933 });
|
|
1486
|
+
case 'smart sharpen': return __assign(__assign({}, base), { Fltr: {
|
|
1487
|
+
_name: 'Smart Sharpen',
|
|
1488
|
+
_classID: 'smartSharpen',
|
|
1489
|
+
Amnt: unitsPercentF(f.filter.amount),
|
|
1490
|
+
'Rds ': uvRadius(f.filter),
|
|
1491
|
+
Thsh: f.filter.threshold,
|
|
1492
|
+
Angl: f.filter.angle,
|
|
1493
|
+
moreAccurate: f.filter.moreAccurate,
|
|
1494
|
+
blur: blurType.encode(f.filter.blur),
|
|
1495
|
+
preset: f.filter.preset,
|
|
1496
|
+
sdwM: {
|
|
1497
|
+
_name: 'Parameters',
|
|
1498
|
+
_classID: 'adaptCorrectTones',
|
|
1499
|
+
Amnt: unitsPercentF(f.filter.shadow.fadeAmount),
|
|
1500
|
+
Wdth: unitsPercentF(f.filter.shadow.tonalWidth),
|
|
1501
|
+
'Rds ': f.filter.shadow.radius,
|
|
1502
|
+
},
|
|
1503
|
+
hglM: {
|
|
1504
|
+
_name: 'Parameters',
|
|
1505
|
+
_classID: 'adaptCorrectTones',
|
|
1506
|
+
Amnt: unitsPercentF(f.filter.highlight.fadeAmount),
|
|
1507
|
+
Wdth: unitsPercentF(f.filter.highlight.tonalWidth),
|
|
1508
|
+
'Rds ': f.filter.highlight.radius,
|
|
1509
|
+
},
|
|
1510
|
+
}, filterID: 698 });
|
|
1511
|
+
case 'unsharp mask': return __assign(__assign({}, base), { Fltr: {
|
|
1512
|
+
_name: 'Unsharp Mask',
|
|
1513
|
+
_classID: 'UnsM',
|
|
1514
|
+
Amnt: unitsPercentF(f.filter.amount),
|
|
1515
|
+
'Rds ': uvRadius(f.filter),
|
|
1516
|
+
Thsh: f.filter.threshold,
|
|
1517
|
+
}, filterID: 1433301837 });
|
|
1518
|
+
case 'diffuse': return __assign(__assign({}, base), { Fltr: {
|
|
1519
|
+
_name: 'Diffuse',
|
|
1520
|
+
_classID: 'Dfs ',
|
|
1521
|
+
'Md ': DfsM.encode(f.filter.mode),
|
|
1522
|
+
FlRs: f.filter.randomSeed,
|
|
1523
|
+
}, filterID: 1147564832 });
|
|
1524
|
+
case 'emboss': return __assign(__assign({}, base), { Fltr: {
|
|
1525
|
+
_name: 'Emboss',
|
|
1526
|
+
_classID: 'Embs',
|
|
1527
|
+
Angl: f.filter.angle,
|
|
1528
|
+
Hght: f.filter.height,
|
|
1529
|
+
Amnt: f.filter.amount,
|
|
1530
|
+
}, filterID: 1164796531 });
|
|
1531
|
+
case 'extrude': return __assign(__assign({}, base), { Fltr: {
|
|
1532
|
+
_name: 'Extrude',
|
|
1533
|
+
_classID: 'Extr',
|
|
1534
|
+
ExtS: f.filter.size,
|
|
1535
|
+
ExtD: f.filter.depth,
|
|
1536
|
+
ExtF: f.filter.solidFrontFaces,
|
|
1537
|
+
ExtM: f.filter.maskIncompleteBlocks,
|
|
1538
|
+
ExtT: ExtT.encode(f.filter.type),
|
|
1539
|
+
ExtR: ExtR.encode(f.filter.depthMode),
|
|
1540
|
+
FlRs: f.filter.randomSeed,
|
|
1541
|
+
}, filterID: 1165522034 });
|
|
1542
|
+
case 'find edges': return __assign(__assign({}, base), { filterID: 1181639749 });
|
|
1543
|
+
case 'solarize': return __assign(__assign({}, base), { filterID: 1399616122 });
|
|
1544
|
+
case 'tiles': return __assign(__assign({}, base), { Fltr: {
|
|
1545
|
+
_name: 'Tiles',
|
|
1546
|
+
_classID: 'Tls ',
|
|
1547
|
+
TlNm: f.filter.numberOfTiles,
|
|
1548
|
+
TlOf: f.filter.maximumOffset,
|
|
1549
|
+
FlCl: FlCl.encode(f.filter.fillEmptyAreaWith),
|
|
1550
|
+
FlRs: f.filter.randomSeed,
|
|
1551
|
+
}, filterID: 1416393504 });
|
|
1552
|
+
case 'trace contour': return __assign(__assign({}, base), { Fltr: {
|
|
1553
|
+
_name: 'Trace Contour',
|
|
1554
|
+
_classID: 'TrcC',
|
|
1555
|
+
'Lvl ': f.filter.level,
|
|
1556
|
+
'Edg ': CntE.encode(f.filter.edge),
|
|
1557
|
+
}, filterID: 1416782659 });
|
|
1558
|
+
case 'wind': return __assign(__assign({}, base), { Fltr: {
|
|
1559
|
+
_name: 'Wind',
|
|
1560
|
+
_classID: 'Wnd ',
|
|
1561
|
+
WndM: WndM.encode(f.filter.method),
|
|
1562
|
+
Drct: Drct.encode(f.filter.direction),
|
|
1563
|
+
}, filterID: 1466852384 });
|
|
1564
|
+
case 'de-interlace': return __assign(__assign({}, base), { Fltr: {
|
|
1565
|
+
_name: 'De-Interlace',
|
|
1566
|
+
_classID: 'Dntr',
|
|
1567
|
+
IntE: IntE.encode(f.filter.eliminate),
|
|
1568
|
+
IntC: IntC.encode(f.filter.newFieldsBy),
|
|
1569
|
+
}, filterID: 1148089458 });
|
|
1570
|
+
case 'ntsc colors': return __assign(__assign({}, base), { filterID: 1314149187 });
|
|
1571
|
+
case 'custom': return __assign(__assign({}, base), { Fltr: {
|
|
1572
|
+
_name: 'Custom',
|
|
1573
|
+
_classID: 'Cstm',
|
|
1574
|
+
'Scl ': f.filter.scale,
|
|
1575
|
+
Ofst: f.filter.offset,
|
|
1576
|
+
Mtrx: f.filter.matrix,
|
|
1577
|
+
}, filterID: 1131639917 });
|
|
1578
|
+
case 'high pass': return __assign(__assign({}, base), { Fltr: {
|
|
1579
|
+
_name: 'High Pass',
|
|
1580
|
+
_classID: 'HghP',
|
|
1581
|
+
'Rds ': uvRadius(f.filter),
|
|
1582
|
+
}, filterID: 1214736464 });
|
|
1583
|
+
case 'maximum': return __assign(__assign({}, base), { Fltr: {
|
|
1584
|
+
_name: 'Maximum',
|
|
1585
|
+
_classID: 'Mxm ',
|
|
1586
|
+
'Rds ': uvRadius(f.filter),
|
|
1587
|
+
}, filterID: 1299737888 });
|
|
1588
|
+
case 'minimum': return __assign(__assign({}, base), { Fltr: {
|
|
1589
|
+
_name: 'Minimum',
|
|
1590
|
+
_classID: 'Mnm ',
|
|
1591
|
+
'Rds ': uvRadius(f.filter),
|
|
1592
|
+
}, filterID: 1299082528 });
|
|
1593
|
+
case 'offset': return __assign(__assign({}, base), { Fltr: {
|
|
1594
|
+
_name: 'Offset',
|
|
1595
|
+
_classID: 'Ofst',
|
|
1596
|
+
Hrzn: f.filter.horizontal,
|
|
1597
|
+
Vrtc: f.filter.vertical,
|
|
1598
|
+
'Fl ': FlMd.encode(f.filter.undefinedAreas),
|
|
1599
|
+
}, filterID: 1332114292 });
|
|
1600
|
+
case 'puppet': return __assign(__assign({}, base), { Fltr: {
|
|
1601
|
+
_name: 'Rigid Transform',
|
|
1602
|
+
_classID: 'rigidTransform',
|
|
980
1603
|
'null': ['Ordn.Trgt'],
|
|
981
1604
|
rigidType: f.filter.rigidType,
|
|
982
|
-
puppetShapeList:
|
|
1605
|
+
puppetShapeList: f.filter.puppetShapeList.map(function (p) { return ({
|
|
1606
|
+
_name: '',
|
|
1607
|
+
_classID: 'puppetShape',
|
|
983
1608
|
rigidType: p.rigidType,
|
|
984
1609
|
VrsM: 1,
|
|
985
1610
|
VrsN: 0,
|
|
@@ -988,7 +1613,6 @@ function serializeFilterFX(filter) {
|
|
|
988
1613
|
indexArray: toUint8(new Uint32Array(p.indexArray)),
|
|
989
1614
|
pinOffsets: pointsToArray(p.pinOffsets),
|
|
990
1615
|
posFinalPins: pointsToArray(p.posFinalPins),
|
|
991
|
-
selectedPin: p.selectedPin,
|
|
992
1616
|
pinVertexIndices: p.pinVertexIndices,
|
|
993
1617
|
PinP: pointsToArray(p.pinPosition),
|
|
994
1618
|
PnRt: p.pinRotation,
|
|
@@ -999,11 +1623,19 @@ function serializeFilterFX(filter) {
|
|
|
999
1623
|
meshRigidity: p.meshRigidity,
|
|
1000
1624
|
imageResolution: p.imageResolution,
|
|
1001
1625
|
meshBoundaryPath: {
|
|
1002
|
-
|
|
1626
|
+
_name: '',
|
|
1627
|
+
_classID: 'pathClass',
|
|
1628
|
+
pathComponents: p.meshBoundaryPath.pathComponents.map(function (c) { return ({
|
|
1629
|
+
_name: '',
|
|
1630
|
+
_classID: 'PaCm',
|
|
1003
1631
|
shapeOperation: "shapeOperation.".concat(c.shapeOperation),
|
|
1004
|
-
SbpL:
|
|
1632
|
+
SbpL: c.paths.map(function (path) { return ({
|
|
1633
|
+
_name: '',
|
|
1634
|
+
_classID: 'Sbpl',
|
|
1005
1635
|
Clsp: path.closed,
|
|
1006
|
-
'Pts ':
|
|
1636
|
+
'Pts ': path.points.map(function (pt) { return ({
|
|
1637
|
+
_name: '',
|
|
1638
|
+
_classID: 'Pthp',
|
|
1007
1639
|
Anch: pointToHrznVrtc(pt.anchor),
|
|
1008
1640
|
'Fwd ': pointToHrznVrtc(pt.forward),
|
|
1009
1641
|
'Bwd ': pointToHrznVrtc(pt.backward),
|
|
@@ -1012,6 +1644,7 @@ function serializeFilterFX(filter) {
|
|
|
1012
1644
|
}); }),
|
|
1013
1645
|
}); }),
|
|
1014
1646
|
},
|
|
1647
|
+
selectedPin: p.selectedPin,
|
|
1015
1648
|
}); }),
|
|
1016
1649
|
PuX0: f.filter.bounds[0].x,
|
|
1017
1650
|
PuX1: f.filter.bounds[1].x,
|
|
@@ -1021,11 +1654,38 @@ function serializeFilterFX(filter) {
|
|
|
1021
1654
|
PuY1: f.filter.bounds[1].y,
|
|
1022
1655
|
PuY2: f.filter.bounds[2].y,
|
|
1023
1656
|
PuY3: f.filter.bounds[3].y,
|
|
1024
|
-
},
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1657
|
+
}, filterID: 991 });
|
|
1658
|
+
case 'oil paint plugin': {
|
|
1659
|
+
var params = {};
|
|
1660
|
+
for (var i = 0; i < f.filter.parameters.length; i++) {
|
|
1661
|
+
var _a = f.filter.parameters[i], name_1 = _a.name, value = _a.value;
|
|
1662
|
+
var suffix = "".concat(fromAtoZ[Math.floor(i / fromAtoZ.length)]).concat(fromAtoZ[i % fromAtoZ.length]);
|
|
1663
|
+
params["PN".concat(suffix)] = name_1;
|
|
1664
|
+
params["PT".concat(suffix)] = 0;
|
|
1665
|
+
params["PF".concat(suffix)] = value;
|
|
1666
|
+
}
|
|
1667
|
+
return __assign(__assign({}, base), { Fltr: __assign({ _name: 'Oil Paint Plugin', _classID: 'PbPl', KnNm: f.filter.name, GpuY: f.filter.gpu, LIWy: f.filter.lighting, FPth: '1' }, params), filterID: 1348620396 });
|
|
1668
|
+
}
|
|
1669
|
+
case 'oil paint': return __assign(__assign({}, base), { Fltr: {
|
|
1670
|
+
_name: 'Oil Paint',
|
|
1671
|
+
_classID: 'oilPaint',
|
|
1672
|
+
lightingOn: f.filter.lightingOn,
|
|
1673
|
+
stylization: f.filter.stylization,
|
|
1674
|
+
cleanliness: f.filter.cleanliness,
|
|
1675
|
+
brushScale: f.filter.brushScale,
|
|
1676
|
+
microBrush: f.filter.microBrush,
|
|
1677
|
+
LghD: f.filter.lightDirection,
|
|
1678
|
+
specularity: f.filter.specularity,
|
|
1679
|
+
}, filterID: 1122 });
|
|
1680
|
+
case 'liquify': return __assign(__assign({}, base), { Fltr: {
|
|
1681
|
+
_name: 'Liquify',
|
|
1682
|
+
_classID: 'LqFy',
|
|
1683
|
+
LqMe: f.filter.liquifyMesh,
|
|
1684
|
+
}, filterID: 1282492025 });
|
|
1685
|
+
default: throw new Error("Unknow filter type: ".concat(f.type));
|
|
1686
|
+
}
|
|
1028
1687
|
}
|
|
1688
|
+
// let t: any;
|
|
1029
1689
|
addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
1030
1690
|
if (readSignature(reader) !== 'soLD')
|
|
1031
1691
|
throw new Error("Invalid SoLd type");
|
|
@@ -1037,15 +1697,17 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
1037
1697
|
// console.log('SoLd.warp', require('util').inspect(desc.warp, false, 99, true));
|
|
1038
1698
|
// console.log('SoLd.quiltWarp', require('util').inspect(desc.quiltWarp, false, 99, true));
|
|
1039
1699
|
// desc.filterFX!.filterFXList[0].Fltr.puppetShapeList[0].meshBoundaryPath.pathComponents[0].SbpL[0]['Pts '] = [];
|
|
1040
|
-
// console.log('
|
|
1700
|
+
// console.log('read', require('util').inspect(desc.filterFX, false, 99, true));
|
|
1701
|
+
// console.log('filterFXList[0]', require('util').inspect((desc as any).filterFX.filterFXList[0], false, 99, true));
|
|
1702
|
+
// t = desc;
|
|
1041
1703
|
target.placedLayer = {
|
|
1042
1704
|
id: desc.Idnt,
|
|
1043
1705
|
placed: desc.placed,
|
|
1044
1706
|
type: placedLayerTypes[desc.Type],
|
|
1045
1707
|
pageNumber: desc.PgNm,
|
|
1046
1708
|
totalPages: desc.totalPages,
|
|
1047
|
-
frameStep: desc.frameStep,
|
|
1048
|
-
duration: desc.duration,
|
|
1709
|
+
frameStep: frac(desc.frameStep),
|
|
1710
|
+
duration: frac(desc.duration),
|
|
1049
1711
|
frameCount: desc.frameCount,
|
|
1050
1712
|
transform: desc.Trnf,
|
|
1051
1713
|
width: desc['Sz '].Wdth,
|
|
@@ -1060,22 +1722,48 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
|
|
|
1060
1722
|
target.placedLayer.crop = desc.Crop;
|
|
1061
1723
|
if (desc.comp)
|
|
1062
1724
|
target.placedLayer.comp = desc.comp;
|
|
1063
|
-
if (desc.compInfo)
|
|
1064
|
-
target.placedLayer.compInfo =
|
|
1725
|
+
if (desc.compInfo) {
|
|
1726
|
+
target.placedLayer.compInfo = {
|
|
1727
|
+
compID: desc.compInfo.compID,
|
|
1728
|
+
originalCompID: desc.compInfo.originalCompID,
|
|
1729
|
+
};
|
|
1730
|
+
}
|
|
1065
1731
|
if (desc.filterFX)
|
|
1066
1732
|
target.placedLayer.filter = parseFilterFX(desc.filterFX);
|
|
1733
|
+
// console.log('filter', require('util').inspect(target.placedLayer.filter, false, 99, true));
|
|
1067
1734
|
skipBytes(reader, left()); // HACK
|
|
1068
1735
|
}, function (writer, target) {
|
|
1069
1736
|
var _a, _b;
|
|
1070
1737
|
writeSignature(writer, 'soLD');
|
|
1071
1738
|
writeInt32(writer, 4); // version
|
|
1072
1739
|
var placed = target.placedLayer;
|
|
1073
|
-
var desc = __assign(__assign({ Idnt: placed.id, placed: (_a = placed.placed) !== null && _a !== void 0 ? _a : placed.id, PgNm: placed.pageNumber || 1, totalPages: placed.totalPages || 1 }, (placed.crop ? { Crop: placed.crop } : {})), { frameStep: placed.frameStep || { numerator: 0, denominator: 600 }, duration: placed.duration || { numerator: 0, denominator: 600 }, frameCount: placed.frameCount || 0, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform,
|
|
1740
|
+
var desc = __assign(__assign({ Idnt: placed.id, placed: (_a = placed.placed) !== null && _a !== void 0 ? _a : placed.id, PgNm: placed.pageNumber || 1, totalPages: placed.totalPages || 1 }, (placed.crop ? { Crop: placed.crop } : {})), { frameStep: placed.frameStep || { numerator: 0, denominator: 600 }, duration: placed.duration || { numerator: 0, denominator: 600 }, frameCount: placed.frameCount || 0, Annt: 16, Type: placedLayerTypes.indexOf(placed.type), Trnf: placed.transform, nonAffineTransform: (_b = placed.nonAffineTransform) !== null && _b !== void 0 ? _b : placed.transform,
|
|
1741
|
+
// quiltWarp: {} as any,
|
|
1742
|
+
warp: encodeWarp(placed.warp || {}), 'Sz ': {
|
|
1743
|
+
_name: '',
|
|
1744
|
+
_classID: 'Pnt ',
|
|
1074
1745
|
Wdth: placed.width || 0,
|
|
1075
1746
|
Hght: placed.height || 0, // TODO: find size ?
|
|
1076
1747
|
}, Rslt: placed.resolution ? unitsValue(placed.resolution, 'resolution') : { units: 'Density', value: 72 } });
|
|
1077
|
-
if (placed.filter)
|
|
1078
|
-
desc.filterFX =
|
|
1748
|
+
if (placed.filter) {
|
|
1749
|
+
desc.filterFX = {
|
|
1750
|
+
_name: '',
|
|
1751
|
+
_classID: 'filterFXStyle',
|
|
1752
|
+
enab: placed.filter.enabled,
|
|
1753
|
+
validAtPosition: placed.filter.validAtPosition,
|
|
1754
|
+
filterMaskEnable: placed.filter.maskEnabled,
|
|
1755
|
+
filterMaskLinked: placed.filter.maskLinked,
|
|
1756
|
+
filterMaskExtendWithWhite: placed.filter.maskExtendWithWhite,
|
|
1757
|
+
filterFXList: placed.filter.list.map(function (f) { return serializeFilterFXItem(f); }),
|
|
1758
|
+
};
|
|
1759
|
+
}
|
|
1760
|
+
// console.log('write', require('util').inspect(desc.filterFX, false, 99, true)); ///
|
|
1761
|
+
// if (JSON.stringify(t) !== JSON.stringify(desc)) {
|
|
1762
|
+
// console.log('read', require('util').inspect(t, false, 99, true));
|
|
1763
|
+
// console.log('write', require('util').inspect(desc, false, 99, true));
|
|
1764
|
+
// console.error('DIFFERENT');
|
|
1765
|
+
// // throw new Error('DIFFERENT');
|
|
1766
|
+
// }
|
|
1079
1767
|
if (placed.warp && isQuiltWarp(placed.warp)) {
|
|
1080
1768
|
var quiltWarp = encodeWarp(placed.warp);
|
|
1081
1769
|
desc.quiltWarp = quiltWarp;
|
|
@@ -1161,7 +1849,7 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
|
|
|
1161
1849
|
var popupLocation = readRect(reader);
|
|
1162
1850
|
var color = readColor(reader);
|
|
1163
1851
|
var author = readPascalString(reader, 2);
|
|
1164
|
-
var
|
|
1852
|
+
var name_2 = readPascalString(reader, 2);
|
|
1165
1853
|
var date = readPascalString(reader, 2);
|
|
1166
1854
|
/*const contentLength =*/ readUint32(reader);
|
|
1167
1855
|
/*const dataType =*/ readSignature(reader);
|
|
@@ -1190,7 +1878,7 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
|
|
|
1190
1878
|
popupLocation: popupLocation,
|
|
1191
1879
|
color: color,
|
|
1192
1880
|
author: author,
|
|
1193
|
-
name:
|
|
1881
|
+
name: name_2,
|
|
1194
1882
|
date: date,
|
|
1195
1883
|
data: data,
|
|
1196
1884
|
});
|
|
@@ -1249,20 +1937,26 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
|
|
|
1249
1937
|
var type = readSignature(reader);
|
|
1250
1938
|
var version = readInt32(reader);
|
|
1251
1939
|
var id = readPascalString(reader, 1);
|
|
1252
|
-
var
|
|
1940
|
+
var name_3 = readUnicodeString(reader);
|
|
1253
1941
|
var fileType = readSignature(reader).trim(); // ' ' if empty
|
|
1254
1942
|
var fileCreator = readSignature(reader).trim(); // ' ' or '\0\0\0\0' if empty
|
|
1255
1943
|
var dataSize = readLength64(reader);
|
|
1256
1944
|
var hasFileOpenDescriptor = readUint8(reader);
|
|
1257
1945
|
var fileOpenDescriptor = hasFileOpenDescriptor ? readVersionAndDescriptor(reader) : undefined;
|
|
1258
1946
|
var linkedFileDescriptor = type === 'liFE' ? readVersionAndDescriptor(reader) : undefined;
|
|
1259
|
-
var file = { id: id, name:
|
|
1947
|
+
var file = { id: id, name: name_3, data: undefined };
|
|
1260
1948
|
if (fileType)
|
|
1261
1949
|
file.type = fileType;
|
|
1262
1950
|
if (fileCreator)
|
|
1263
1951
|
file.creator = fileCreator;
|
|
1264
|
-
if (fileOpenDescriptor)
|
|
1265
|
-
file.descriptor =
|
|
1952
|
+
if (fileOpenDescriptor) {
|
|
1953
|
+
file.descriptor = {
|
|
1954
|
+
compInfo: {
|
|
1955
|
+
compID: fileOpenDescriptor.compInfo.compID,
|
|
1956
|
+
originalCompID: fileOpenDescriptor.compInfo.originalCompID,
|
|
1957
|
+
}
|
|
1958
|
+
};
|
|
1959
|
+
}
|
|
1266
1960
|
if (type === 'liFE' && version > 3) {
|
|
1267
1961
|
var year = readInt32(reader);
|
|
1268
1962
|
var month = readUint8(reader);
|
|
@@ -1320,7 +2014,10 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
|
|
|
1320
2014
|
writeLength64(writer, file.data ? file.data.byteLength : 0);
|
|
1321
2015
|
if (file.descriptor && file.descriptor.compInfo) {
|
|
1322
2016
|
var desc = {
|
|
1323
|
-
compInfo:
|
|
2017
|
+
compInfo: {
|
|
2018
|
+
compID: file.descriptor.compInfo.compID,
|
|
2019
|
+
originalCompID: file.descriptor.compInfo.originalCompID,
|
|
2020
|
+
}
|
|
1324
2021
|
};
|
|
1325
2022
|
writeUint8(writer, 1);
|
|
1326
2023
|
writeVersionAndDescriptor(writer, '', 'null', desc);
|
|
@@ -2060,6 +2757,94 @@ addHandler('Txt2', hasKey('engineData'), function (reader, target, left) {
|
|
|
2060
2757
|
var buffer = toByteArray(target.engineData);
|
|
2061
2758
|
writeBytes(writer, buffer);
|
|
2062
2759
|
});
|
|
2760
|
+
addHandler('FEid', hasKey('filterEffectsMasks'), function (reader, target, leftBytes) {
|
|
2761
|
+
var version = readInt32(reader);
|
|
2762
|
+
if (version < 1 || version > 3)
|
|
2763
|
+
throw new Error("Invalid filterEffects version ".concat(version));
|
|
2764
|
+
if (readUint32(reader))
|
|
2765
|
+
throw new Error('filterEffects: 64 bit length is not supported');
|
|
2766
|
+
var length = readUint32(reader);
|
|
2767
|
+
var end = reader.offset + length;
|
|
2768
|
+
target.filterEffectsMasks = [];
|
|
2769
|
+
while (reader.offset < end) {
|
|
2770
|
+
var id = readPascalString(reader, 1);
|
|
2771
|
+
var effectVersion = readInt32(reader);
|
|
2772
|
+
if (effectVersion !== 1)
|
|
2773
|
+
throw new Error("Invalid filterEffect version ".concat(effectVersion));
|
|
2774
|
+
if (readUint32(reader))
|
|
2775
|
+
throw new Error('filterEffect: 64 bit length is not supported');
|
|
2776
|
+
/*const effectLength =*/ readUint32(reader);
|
|
2777
|
+
// const endOfEffect = reader.offset + effectLength;
|
|
2778
|
+
var top_2 = readInt32(reader);
|
|
2779
|
+
var left = readInt32(reader);
|
|
2780
|
+
var bottom = readInt32(reader);
|
|
2781
|
+
var right = readInt32(reader);
|
|
2782
|
+
var depth = readInt32(reader);
|
|
2783
|
+
var maxChannels = readInt32(reader);
|
|
2784
|
+
var channels = [];
|
|
2785
|
+
// 0 -> R, 1 -> G, 2 -> B, 25 -> A
|
|
2786
|
+
for (var i = 0; i < (maxChannels + 2); i++) {
|
|
2787
|
+
var exists = readInt32(reader);
|
|
2788
|
+
if (exists) {
|
|
2789
|
+
if (readUint32(reader))
|
|
2790
|
+
throw new Error('filterEffect: 64 bit length is not supported');
|
|
2791
|
+
var channelLength = readUint32(reader);
|
|
2792
|
+
var compressionMode = readUint16(reader);
|
|
2793
|
+
var data = readBytes(reader, channelLength - 2);
|
|
2794
|
+
channels.push({ compressionMode: compressionMode, data: data });
|
|
2795
|
+
}
|
|
2796
|
+
else {
|
|
2797
|
+
channels.push(undefined);
|
|
2798
|
+
}
|
|
2799
|
+
}
|
|
2800
|
+
target.filterEffectsMasks.push({ id: id, top: top_2, left: left, bottom: bottom, right: right, depth: depth, channels: channels });
|
|
2801
|
+
if (leftBytes() && readUint8(reader)) {
|
|
2802
|
+
var compressionMode = readUint16(reader);
|
|
2803
|
+
var data = readBytes(reader, leftBytes());
|
|
2804
|
+
target.filterEffectsMasks[target.filterEffectsMasks.length - 1].extra = { compressionMode: compressionMode, data: data };
|
|
2805
|
+
}
|
|
2806
|
+
}
|
|
2807
|
+
}, function (writer, target) {
|
|
2808
|
+
var _a;
|
|
2809
|
+
writeInt32(writer, 3);
|
|
2810
|
+
writeUint32(writer, 0);
|
|
2811
|
+
writeUint32(writer, 0);
|
|
2812
|
+
var lengthOffset = writer.offset;
|
|
2813
|
+
for (var _i = 0, _b = target.filterEffectsMasks; _i < _b.length; _i++) {
|
|
2814
|
+
var mask = _b[_i];
|
|
2815
|
+
writePascalString(writer, mask.id, 1);
|
|
2816
|
+
writeInt32(writer, 1);
|
|
2817
|
+
writeUint32(writer, 0);
|
|
2818
|
+
writeUint32(writer, 0);
|
|
2819
|
+
var length2Offset = writer.offset;
|
|
2820
|
+
writeInt32(writer, mask.top);
|
|
2821
|
+
writeInt32(writer, mask.left);
|
|
2822
|
+
writeInt32(writer, mask.bottom);
|
|
2823
|
+
writeInt32(writer, mask.right);
|
|
2824
|
+
writeInt32(writer, mask.depth);
|
|
2825
|
+
var maxChannels = Math.max(0, mask.channels.length - 2);
|
|
2826
|
+
writeInt32(writer, maxChannels);
|
|
2827
|
+
for (var i = 0; i < (maxChannels + 2); i++) {
|
|
2828
|
+
var channel = mask.channels[i];
|
|
2829
|
+
writeInt32(writer, channel ? 1 : 0);
|
|
2830
|
+
if (channel) {
|
|
2831
|
+
writeUint32(writer, 0);
|
|
2832
|
+
writeUint32(writer, channel.data.length + 2);
|
|
2833
|
+
writeUint16(writer, channel.compressionMode);
|
|
2834
|
+
writeBytes(writer, channel.data);
|
|
2835
|
+
}
|
|
2836
|
+
}
|
|
2837
|
+
writer.view.setUint32(length2Offset - 4, writer.offset - length2Offset, false);
|
|
2838
|
+
}
|
|
2839
|
+
var extra = (_a = target.filterEffectsMasks[target.filterEffectsMasks.length - 1]) === null || _a === void 0 ? void 0 : _a.extra;
|
|
2840
|
+
if (extra) {
|
|
2841
|
+
writeUint8(writer, 1);
|
|
2842
|
+
writeUint16(writer, extra.compressionMode);
|
|
2843
|
+
writeBytes(writer, extra.data);
|
|
2844
|
+
}
|
|
2845
|
+
writer.view.setUint32(lengthOffset - 4, writer.offset - lengthOffset, false);
|
|
2846
|
+
});
|
|
2847
|
+
addHandlerAlias('FXid', 'FEid');
|
|
2063
2848
|
addHandler('FMsk', hasKey('filterMask'), function (reader, target) {
|
|
2064
2849
|
target.filterMask = {
|
|
2065
2850
|
colorSpace: readColor(reader),
|
|
@@ -2124,14 +2909,17 @@ addHandler('lfx2', function (target) { return target.effects !== undefined && !h
|
|
|
2124
2909
|
addHandler('cinf', hasKey('compositorUsed'), function (reader, target, left) {
|
|
2125
2910
|
var desc = readVersionAndDescriptor(reader);
|
|
2126
2911
|
// console.log(require('util').inspect(desc, false, 99, true));
|
|
2912
|
+
function enumValue(desc) {
|
|
2913
|
+
return desc.split('.')[1];
|
|
2914
|
+
}
|
|
2127
2915
|
target.compositorUsed = {
|
|
2128
2916
|
description: desc.description,
|
|
2129
2917
|
reason: desc.reason,
|
|
2130
|
-
engine: desc.Engn
|
|
2131
|
-
enableCompCore: desc.enableCompCore
|
|
2132
|
-
enableCompCoreGPU: desc.enableCompCoreGPU
|
|
2133
|
-
compCoreSupport: desc.compCoreSupport
|
|
2134
|
-
compCoreGPUSupport: desc.compCoreGPUSupport
|
|
2918
|
+
engine: enumValue(desc.Engn),
|
|
2919
|
+
enableCompCore: enumValue(desc.enableCompCore),
|
|
2920
|
+
enableCompCoreGPU: enumValue(desc.enableCompCoreGPU),
|
|
2921
|
+
compCoreSupport: enumValue(desc.compCoreSupport),
|
|
2922
|
+
compCoreGPUSupport: enumValue(desc.compCoreGPUSupport),
|
|
2135
2923
|
};
|
|
2136
2924
|
skipBytes(reader, left());
|
|
2137
2925
|
}, function (writer, target) {
|
|
@@ -2186,85 +2974,4 @@ addHandler('tsly', hasKey('transparencyShapesLayer'), function (reader, target)
|
|
|
2186
2974
|
writeUint8(writer, target.transparencyShapesLayer ? 1 : 0);
|
|
2187
2975
|
writeZeros(writer, 3);
|
|
2188
2976
|
});
|
|
2189
|
-
/*addHandler(
|
|
2190
|
-
'FEid',
|
|
2191
|
-
hasKey('filterEffects'),
|
|
2192
|
-
(reader, _target) => {
|
|
2193
|
-
const version = readInt32(reader);
|
|
2194
|
-
if (version < 1 || version > 3) throw new Error(`Invalid filterEffects version ${version}`);
|
|
2195
|
-
|
|
2196
|
-
if (readUint32(reader)) throw new Error('filterEffects: 64 bit length is not supported');
|
|
2197
|
-
const length = readUint32(reader);
|
|
2198
|
-
const end = reader.offset + length;
|
|
2199
|
-
|
|
2200
|
-
while (reader.offset < end) {
|
|
2201
|
-
console.log('bytes to go', end - reader.offset, 'at', reader.offset.toString(16));
|
|
2202
|
-
//
|
|
2203
|
-
const id = readPascalString(reader, 1);
|
|
2204
|
-
const effectVersion = readInt32(reader);
|
|
2205
|
-
if (effectVersion !== 1) throw new Error(`Invalid filterEffect version ${effectVersion}`);
|
|
2206
|
-
if (readUint32(reader)) throw new Error('filterEffect: 64 bit length is not supported');
|
|
2207
|
-
const effectLength = readUint32(reader);
|
|
2208
|
-
const endOfEffect = reader.offset + effectLength;
|
|
2209
|
-
const top = readInt32(reader);
|
|
2210
|
-
const left = readInt32(reader);
|
|
2211
|
-
const bottom = readInt32(reader);
|
|
2212
|
-
const right = readInt32(reader);
|
|
2213
|
-
const depth = readInt32(reader);
|
|
2214
|
-
const maxChannels = readInt32(reader);
|
|
2215
|
-
const channels: any[] = [];
|
|
2216
|
-
|
|
2217
|
-
for (let i = 0; i < (maxChannels + 2); i++) {
|
|
2218
|
-
const exists = readInt32(reader);
|
|
2219
|
-
if (exists) {
|
|
2220
|
-
if (readUint32(reader)) throw new Error('filterEffect: 64 bit length is not supported');
|
|
2221
|
-
const channelLength = readUint32(reader);
|
|
2222
|
-
const compressionMode = readUint16(reader);
|
|
2223
|
-
const data = readBytes(reader, channelLength - 2);
|
|
2224
|
-
channels.push({ channelLength, compressionMode, data: data?.length + ' bytes' });
|
|
2225
|
-
// if (c < 3 || c == 25) e_ = _F.Cn(!0, rL, m, b.rect.F, b.rect.V, X, rp);
|
|
2226
|
-
// if (c == 0) _c.S = e_;
|
|
2227
|
-
// if (c == 1) _c.v = e_;
|
|
2228
|
-
// if (c == 2) _c.e = e_;
|
|
2229
|
-
// if (c == 25) _c.w = e_;
|
|
2230
|
-
} else {
|
|
2231
|
-
channels.push(undefined);
|
|
2232
|
-
}
|
|
2233
|
-
}
|
|
2234
|
-
|
|
2235
|
-
console.log('left at the end', endOfEffect - reader.offset);
|
|
2236
|
-
if (endOfEffect > reader.offset) {
|
|
2237
|
-
if (readUint8(reader)) {
|
|
2238
|
-
const compressionMode = readUint16(reader);
|
|
2239
|
-
const data = endOfEffect > reader.offset ? readBytes(reader, endOfEffect - reader.offset) : undefined;
|
|
2240
|
-
console.log('extra data', { compressionMode, data: data?.length + ' bytes' });
|
|
2241
|
-
} else {
|
|
2242
|
-
console.log('no extra');
|
|
2243
|
-
}
|
|
2244
|
-
}
|
|
2245
|
-
|
|
2246
|
-
console.log('effect', {
|
|
2247
|
-
id,
|
|
2248
|
-
effectVersion,
|
|
2249
|
-
effectLength,
|
|
2250
|
-
top,
|
|
2251
|
-
left,
|
|
2252
|
-
bottom,
|
|
2253
|
-
right,
|
|
2254
|
-
depth,
|
|
2255
|
-
maxChannels,
|
|
2256
|
-
channels,
|
|
2257
|
-
});
|
|
2258
|
-
|
|
2259
|
-
console.log('bytes left after effect', endOfEffect - reader.offset);
|
|
2260
|
-
// if (length % 4) skipBytes(reader, 4 - length % 4);
|
|
2261
|
-
}
|
|
2262
|
-
|
|
2263
|
-
console.log({ version, length });
|
|
2264
|
-
},
|
|
2265
|
-
(_writer, _target) => {
|
|
2266
|
-
},
|
|
2267
|
-
);
|
|
2268
|
-
|
|
2269
|
-
addHandlerAlias('FXid', 'FEid');*/
|
|
2270
2977
|
//# sourceMappingURL=additionalInfo.js.map
|