ag-psd 16.0.0 → 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 +5 -0
- package/README.md +1 -0
- package/dist/additionalInfo.js +927 -238
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +1263 -311
- 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 +437 -62
- 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-es/additionalInfo.js +928 -239
- 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 +437 -62
- 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/package.json +1 -1
- package/src/additionalInfo.ts +2008 -288
- package/src/descriptor.ts +297 -37
- package/src/imageResources.ts +14 -19
- package/src/psd.ts +467 -46
- package/src/psdReader.ts +26 -7
- package/src/psdWriter.ts +24 -8
package/dist-es/psd.d.ts
CHANGED
|
@@ -659,86 +659,444 @@ export interface LinkedFile {
|
|
|
659
659
|
assetModTime?: number;
|
|
660
660
|
assetLockedState?: number;
|
|
661
661
|
}
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
662
|
+
type FilterVariant = {
|
|
663
|
+
type: 'average' | 'blur' | 'blur more';
|
|
664
|
+
} | {
|
|
665
|
+
type: 'box blur';
|
|
666
|
+
filter: {
|
|
667
|
+
radius: UnitsValue;
|
|
668
|
+
};
|
|
669
|
+
} | {
|
|
670
|
+
type: 'gaussian blur';
|
|
671
|
+
filter: {
|
|
672
|
+
radius: UnitsValue;
|
|
673
|
+
};
|
|
674
|
+
} | {
|
|
675
|
+
type: 'motion blur';
|
|
676
|
+
filter: {
|
|
677
|
+
angle: number;
|
|
678
|
+
distance: UnitsValue;
|
|
679
|
+
};
|
|
680
|
+
} | {
|
|
681
|
+
type: 'radial blur';
|
|
682
|
+
filter: {
|
|
683
|
+
amount: number;
|
|
684
|
+
method: 'spin' | 'zoom';
|
|
685
|
+
quality: 'draft' | 'good' | 'best';
|
|
686
|
+
};
|
|
687
|
+
} | {
|
|
688
|
+
type: 'shape blur';
|
|
689
|
+
filter: {
|
|
690
|
+
radius: UnitsValue;
|
|
691
|
+
customShape: {
|
|
692
|
+
name: string;
|
|
693
|
+
id: string;
|
|
694
|
+
};
|
|
695
|
+
};
|
|
696
|
+
} | {
|
|
697
|
+
type: 'smart blur';
|
|
698
|
+
filter: {
|
|
699
|
+
radius: number;
|
|
700
|
+
threshold: number;
|
|
701
|
+
quality: 'low' | 'medium' | 'high';
|
|
702
|
+
mode: 'normal' | 'edge only' | 'overlay edge';
|
|
703
|
+
};
|
|
704
|
+
} | {
|
|
705
|
+
type: 'surface blur';
|
|
706
|
+
filter: {
|
|
707
|
+
radius: UnitsValue;
|
|
708
|
+
threshold: number;
|
|
709
|
+
};
|
|
710
|
+
} | {
|
|
711
|
+
type: 'displace';
|
|
712
|
+
filter: {
|
|
713
|
+
horizontalScale: number;
|
|
714
|
+
verticalScale: number;
|
|
715
|
+
displacementMap: 'stretch to fit' | 'tile';
|
|
716
|
+
undefinedAreas: 'wrap around' | 'repeat edge pixels';
|
|
717
|
+
displacementFile: {
|
|
718
|
+
signature: string;
|
|
719
|
+
path: string;
|
|
720
|
+
};
|
|
721
|
+
};
|
|
722
|
+
} | {
|
|
723
|
+
type: 'pinch';
|
|
724
|
+
filter: {
|
|
725
|
+
amount: number;
|
|
726
|
+
};
|
|
727
|
+
} | {
|
|
728
|
+
type: 'polar coordinates';
|
|
729
|
+
filter: {
|
|
730
|
+
conversion: 'rectangular to polar' | 'polar to rectangular';
|
|
731
|
+
};
|
|
732
|
+
} | {
|
|
733
|
+
type: 'ripple';
|
|
734
|
+
filter: {
|
|
735
|
+
amount: number;
|
|
736
|
+
size: 'small' | 'medium' | 'large';
|
|
737
|
+
};
|
|
738
|
+
} | {
|
|
739
|
+
type: 'shear';
|
|
740
|
+
filter: {
|
|
741
|
+
shearPoints: {
|
|
675
742
|
x: number;
|
|
676
743
|
y: number;
|
|
677
744
|
}[];
|
|
678
|
-
|
|
679
|
-
|
|
745
|
+
shearStart: number;
|
|
746
|
+
shearEnd: number;
|
|
747
|
+
undefinedAreas: 'wrap around' | 'repeat edge pixels';
|
|
748
|
+
};
|
|
749
|
+
} | {
|
|
750
|
+
type: 'spherize';
|
|
751
|
+
filter: {
|
|
752
|
+
amount: number;
|
|
753
|
+
mode: 'normal' | 'horizontal only' | 'vertical only';
|
|
754
|
+
};
|
|
755
|
+
} | {
|
|
756
|
+
type: 'twirl';
|
|
757
|
+
filter: {
|
|
758
|
+
angle: number;
|
|
759
|
+
};
|
|
760
|
+
} | {
|
|
761
|
+
type: 'wave';
|
|
762
|
+
filter: {
|
|
763
|
+
numberOfGenerators: number;
|
|
764
|
+
type: 'sine' | 'triangle' | 'square';
|
|
765
|
+
wavelength: {
|
|
766
|
+
min: number;
|
|
767
|
+
max: number;
|
|
768
|
+
};
|
|
769
|
+
amplitude: {
|
|
770
|
+
min: number;
|
|
771
|
+
max: number;
|
|
772
|
+
};
|
|
773
|
+
scale: {
|
|
680
774
|
x: number;
|
|
681
775
|
y: number;
|
|
776
|
+
};
|
|
777
|
+
randomSeed: number;
|
|
778
|
+
undefinedAreas: 'wrap around' | 'repeat edge pixels';
|
|
779
|
+
};
|
|
780
|
+
} | {
|
|
781
|
+
type: 'zigzag';
|
|
782
|
+
filter: {
|
|
783
|
+
amount: number;
|
|
784
|
+
ridges: number;
|
|
785
|
+
style: 'around center' | 'out from center' | 'pond ripples';
|
|
786
|
+
};
|
|
787
|
+
} | {
|
|
788
|
+
type: 'add noise';
|
|
789
|
+
filter: {
|
|
790
|
+
amount: number;
|
|
791
|
+
distribution: 'uniform' | 'gaussian';
|
|
792
|
+
monochromatic: boolean;
|
|
793
|
+
randomSeed: number;
|
|
794
|
+
};
|
|
795
|
+
} | {
|
|
796
|
+
type: 'despeckle';
|
|
797
|
+
} | {
|
|
798
|
+
type: 'dust and scratches';
|
|
799
|
+
filter: {
|
|
800
|
+
radius: number;
|
|
801
|
+
threshold: number;
|
|
802
|
+
};
|
|
803
|
+
} | {
|
|
804
|
+
type: 'median';
|
|
805
|
+
filter: {
|
|
806
|
+
radius: UnitsValue;
|
|
807
|
+
};
|
|
808
|
+
} | {
|
|
809
|
+
type: 'reduce noise';
|
|
810
|
+
filter: {
|
|
811
|
+
preset: string;
|
|
812
|
+
removeJpegArtifact: boolean;
|
|
813
|
+
reduceColorNoise: number;
|
|
814
|
+
sharpenDetails: number;
|
|
815
|
+
channelDenoise: {
|
|
816
|
+
channels: ('red' | 'green' | 'blue' | 'composite')[];
|
|
817
|
+
amount: number;
|
|
818
|
+
preserveDetails?: number;
|
|
682
819
|
}[];
|
|
683
|
-
|
|
820
|
+
};
|
|
821
|
+
} | {
|
|
822
|
+
type: 'color halftone';
|
|
823
|
+
filter: {
|
|
824
|
+
radius: number;
|
|
825
|
+
angle1: number;
|
|
826
|
+
angle2: number;
|
|
827
|
+
angle3: number;
|
|
828
|
+
angle4: number;
|
|
829
|
+
};
|
|
830
|
+
} | {
|
|
831
|
+
type: 'crystallize';
|
|
832
|
+
filter: {
|
|
833
|
+
cellSize: number;
|
|
834
|
+
randomSeed: number;
|
|
835
|
+
};
|
|
836
|
+
} | {
|
|
837
|
+
type: 'facet' | 'fragment';
|
|
838
|
+
} | {
|
|
839
|
+
type: 'mezzotint';
|
|
840
|
+
filter: {
|
|
841
|
+
type: 'fine dots' | 'medium dots' | 'grainy dots' | 'coarse dots' | 'short lines' | 'medium lines' | 'long lines' | 'short strokes' | 'medium strokes' | 'long strokes';
|
|
842
|
+
randomSeed: number;
|
|
843
|
+
};
|
|
844
|
+
} | {
|
|
845
|
+
type: 'mosaic';
|
|
846
|
+
filter: {
|
|
847
|
+
cellSize: UnitsValue;
|
|
848
|
+
};
|
|
849
|
+
} | {
|
|
850
|
+
type: 'pointillize';
|
|
851
|
+
filter: {
|
|
852
|
+
cellSize: number;
|
|
853
|
+
randomSeed: number;
|
|
854
|
+
};
|
|
855
|
+
} | {
|
|
856
|
+
type: 'clouds';
|
|
857
|
+
filter: {
|
|
858
|
+
randomSeed: number;
|
|
859
|
+
};
|
|
860
|
+
} | {
|
|
861
|
+
type: 'difference clouds';
|
|
862
|
+
filter: {
|
|
863
|
+
randomSeed: number;
|
|
864
|
+
};
|
|
865
|
+
} | {
|
|
866
|
+
type: 'fibers';
|
|
867
|
+
filter: {
|
|
868
|
+
variance: number;
|
|
869
|
+
strength: number;
|
|
870
|
+
randomSeed: number;
|
|
871
|
+
};
|
|
872
|
+
} | {
|
|
873
|
+
type: 'lens flare';
|
|
874
|
+
filter: {
|
|
875
|
+
brightness: number;
|
|
876
|
+
position: {
|
|
684
877
|
x: number;
|
|
685
878
|
y: number;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
879
|
+
};
|
|
880
|
+
lensType: '50-300mm zoom' | '32mm prime' | '105mm prime' | 'movie prime';
|
|
881
|
+
};
|
|
882
|
+
} | {
|
|
883
|
+
type: 'sharpen' | 'sharpen edges' | 'sharpen more';
|
|
884
|
+
} | {
|
|
885
|
+
type: 'smart sharpen';
|
|
886
|
+
filter: {
|
|
887
|
+
amount: number;
|
|
888
|
+
radius: UnitsValue;
|
|
889
|
+
threshold: number;
|
|
890
|
+
angle: number;
|
|
891
|
+
moreAccurate: boolean;
|
|
892
|
+
blur: 'gaussian blur' | 'lens blur' | 'motion blur';
|
|
893
|
+
preset: string;
|
|
894
|
+
shadow: {
|
|
895
|
+
fadeAmount: number;
|
|
896
|
+
tonalWidth: number;
|
|
897
|
+
radius: number;
|
|
898
|
+
};
|
|
899
|
+
highlight: {
|
|
900
|
+
fadeAmount: number;
|
|
901
|
+
tonalWidth: number;
|
|
902
|
+
radius: number;
|
|
903
|
+
};
|
|
904
|
+
};
|
|
905
|
+
} | {
|
|
906
|
+
type: 'unsharp mask';
|
|
907
|
+
filter: {
|
|
908
|
+
amount: number;
|
|
909
|
+
radius: UnitsValue;
|
|
910
|
+
threshold: number;
|
|
911
|
+
};
|
|
912
|
+
} | {
|
|
913
|
+
type: 'diffuse';
|
|
914
|
+
filter: {
|
|
915
|
+
mode: 'normal' | 'darken only' | 'lighten only' | 'anisotropic';
|
|
916
|
+
randomSeed: number;
|
|
917
|
+
};
|
|
918
|
+
} | {
|
|
919
|
+
type: 'emboss';
|
|
920
|
+
filter: {
|
|
921
|
+
angle: number;
|
|
922
|
+
height: number;
|
|
923
|
+
amount: number;
|
|
924
|
+
};
|
|
925
|
+
} | {
|
|
926
|
+
type: 'extrude';
|
|
927
|
+
filter: {
|
|
928
|
+
type: 'blocks' | 'pyramids';
|
|
929
|
+
size: number;
|
|
930
|
+
depth: number;
|
|
931
|
+
depthMode: 'random' | 'level-based';
|
|
932
|
+
randomSeed: number;
|
|
933
|
+
solidFrontFaces: boolean;
|
|
934
|
+
maskIncompleteBlocks: boolean;
|
|
935
|
+
};
|
|
936
|
+
} | {
|
|
937
|
+
type: 'find edges' | 'solarize';
|
|
938
|
+
} | {
|
|
939
|
+
type: 'tiles';
|
|
940
|
+
filter: {
|
|
941
|
+
numberOfTiles: number;
|
|
942
|
+
maximumOffset: number;
|
|
943
|
+
fillEmptyAreaWith: 'background color' | 'foreground color' | 'inverse image' | 'unaltered image';
|
|
944
|
+
randomSeed: number;
|
|
945
|
+
};
|
|
946
|
+
} | {
|
|
947
|
+
type: 'trace contour';
|
|
948
|
+
filter: {
|
|
949
|
+
level: number;
|
|
950
|
+
edge: 'lower' | 'upper';
|
|
951
|
+
};
|
|
952
|
+
} | {
|
|
953
|
+
type: 'wind';
|
|
954
|
+
filter: {
|
|
955
|
+
method: 'wind' | 'blast' | 'stagger';
|
|
956
|
+
direction: 'left' | 'right';
|
|
957
|
+
};
|
|
958
|
+
} | {
|
|
959
|
+
type: 'de-interlace';
|
|
960
|
+
filter: {
|
|
961
|
+
eliminate: 'odd lines' | 'even lines';
|
|
962
|
+
newFieldsBy: 'duplication' | 'interpolation';
|
|
963
|
+
};
|
|
964
|
+
} | {
|
|
965
|
+
type: 'ntsc colors';
|
|
966
|
+
} | {
|
|
967
|
+
type: 'custom';
|
|
968
|
+
filter: {
|
|
969
|
+
scale: number;
|
|
970
|
+
offset: number;
|
|
971
|
+
matrix: number[];
|
|
972
|
+
};
|
|
973
|
+
} | {
|
|
974
|
+
type: 'high pass' | 'maximum' | 'minimum';
|
|
975
|
+
filter: {
|
|
976
|
+
radius: UnitsValue;
|
|
977
|
+
};
|
|
978
|
+
} | {
|
|
979
|
+
type: 'offset';
|
|
980
|
+
filter: {
|
|
981
|
+
horizontal: number;
|
|
982
|
+
vertical: number;
|
|
983
|
+
undefinedAreas: 'set to transparent' | 'repeat edge pixels' | 'wrap around';
|
|
984
|
+
};
|
|
985
|
+
} | {
|
|
986
|
+
type: 'puppet';
|
|
987
|
+
filter: {
|
|
988
|
+
rigidType: boolean;
|
|
989
|
+
bounds: {
|
|
690
990
|
x: number;
|
|
691
991
|
y: number;
|
|
692
992
|
}[];
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
993
|
+
puppetShapeList: {
|
|
994
|
+
rigidType: boolean;
|
|
995
|
+
originalVertexArray: {
|
|
996
|
+
x: number;
|
|
997
|
+
y: number;
|
|
998
|
+
}[];
|
|
999
|
+
deformedVertexArray: {
|
|
1000
|
+
x: number;
|
|
1001
|
+
y: number;
|
|
1002
|
+
}[];
|
|
1003
|
+
indexArray: number[];
|
|
1004
|
+
pinOffsets: {
|
|
1005
|
+
x: number;
|
|
1006
|
+
y: number;
|
|
1007
|
+
}[];
|
|
1008
|
+
posFinalPins: {
|
|
1009
|
+
x: number;
|
|
1010
|
+
y: number;
|
|
1011
|
+
}[];
|
|
1012
|
+
pinVertexIndices: number[];
|
|
1013
|
+
selectedPin: number[];
|
|
1014
|
+
pinPosition: {
|
|
1015
|
+
x: number;
|
|
1016
|
+
y: number;
|
|
1017
|
+
}[];
|
|
1018
|
+
pinRotation: number[];
|
|
1019
|
+
pinOverlay: boolean[];
|
|
1020
|
+
pinDepth: number[];
|
|
1021
|
+
meshQuality: number;
|
|
1022
|
+
meshExpansion: number;
|
|
1023
|
+
meshRigidity: number;
|
|
1024
|
+
imageResolution: number;
|
|
1025
|
+
meshBoundaryPath: {
|
|
1026
|
+
pathComponents: {
|
|
1027
|
+
shapeOperation: string;
|
|
1028
|
+
paths: {
|
|
1029
|
+
closed: boolean;
|
|
1030
|
+
points: {
|
|
1031
|
+
anchor: {
|
|
1032
|
+
x: UnitsValue;
|
|
1033
|
+
y: UnitsValue;
|
|
1034
|
+
};
|
|
1035
|
+
forward: {
|
|
1036
|
+
x: UnitsValue;
|
|
1037
|
+
y: UnitsValue;
|
|
1038
|
+
};
|
|
1039
|
+
backward: {
|
|
1040
|
+
x: UnitsValue;
|
|
1041
|
+
y: UnitsValue;
|
|
1042
|
+
};
|
|
1043
|
+
smooth: boolean;
|
|
1044
|
+
}[];
|
|
719
1045
|
}[];
|
|
720
1046
|
}[];
|
|
721
|
-
}
|
|
722
|
-
};
|
|
723
|
-
}
|
|
724
|
-
}
|
|
1047
|
+
};
|
|
1048
|
+
}[];
|
|
1049
|
+
};
|
|
1050
|
+
} | {
|
|
1051
|
+
type: 'oil paint plugin';
|
|
1052
|
+
filter: {
|
|
1053
|
+
name: string;
|
|
1054
|
+
gpu: boolean;
|
|
1055
|
+
lighting: boolean;
|
|
1056
|
+
parameters: {
|
|
1057
|
+
name: string;
|
|
1058
|
+
value: number;
|
|
1059
|
+
}[];
|
|
1060
|
+
};
|
|
1061
|
+
} | {
|
|
1062
|
+
type: 'hsb/hsl';
|
|
1063
|
+
filter: {
|
|
1064
|
+
inputMode: 'rgb' | 'hsb' | 'hsl';
|
|
1065
|
+
rowOrder: 'rgb' | 'hsb' | 'hsl';
|
|
1066
|
+
};
|
|
1067
|
+
} | {
|
|
1068
|
+
type: 'oil paint';
|
|
1069
|
+
filter: {
|
|
1070
|
+
lightingOn: boolean;
|
|
1071
|
+
stylization: number;
|
|
1072
|
+
cleanliness: number;
|
|
1073
|
+
brushScale: number;
|
|
1074
|
+
microBrush: number;
|
|
1075
|
+
lightDirection: number;
|
|
1076
|
+
specularity: number;
|
|
1077
|
+
};
|
|
1078
|
+
} | {
|
|
1079
|
+
type: 'liquify';
|
|
1080
|
+
filter: {
|
|
1081
|
+
liquifyMesh: Uint8Array;
|
|
1082
|
+
};
|
|
1083
|
+
};
|
|
1084
|
+
export type Filter = FilterVariant & {
|
|
1085
|
+
name: string;
|
|
1086
|
+
opacity: number;
|
|
1087
|
+
blendMode: BlendMode;
|
|
1088
|
+
enabled: boolean;
|
|
1089
|
+
hasOptions: boolean;
|
|
1090
|
+
foregroundColor: Color;
|
|
1091
|
+
backgroundColor: Color;
|
|
1092
|
+
};
|
|
725
1093
|
export interface PlacedLayerFilter {
|
|
726
1094
|
enabled: boolean;
|
|
727
1095
|
validAtPosition: boolean;
|
|
728
1096
|
maskEnabled: boolean;
|
|
729
1097
|
maskLinked: boolean;
|
|
730
1098
|
maskExtendWithWhite: boolean;
|
|
731
|
-
list:
|
|
732
|
-
id: number;
|
|
733
|
-
name: string;
|
|
734
|
-
opacity: number;
|
|
735
|
-
blendMode: BlendMode;
|
|
736
|
-
enabled: boolean;
|
|
737
|
-
hasOptions: boolean;
|
|
738
|
-
foregroundColor: Color;
|
|
739
|
-
backgroundColor: Color;
|
|
740
|
-
filter: PlacedLayerPuppetFilter | {};
|
|
741
|
-
}[];
|
|
1099
|
+
list: Filter[];
|
|
742
1100
|
}
|
|
743
1101
|
export type PlacedLayerType = 'unknown' | 'vector' | 'raster' | 'image stack';
|
|
744
1102
|
export interface PlacedLayer {
|
|
@@ -973,7 +1331,22 @@ export interface LayerAdditionalInfo {
|
|
|
973
1331
|
unifyLayerVisibility?: boolean;
|
|
974
1332
|
};
|
|
975
1333
|
timeline?: Timeline;
|
|
976
|
-
|
|
1334
|
+
filterEffectsMasks?: {
|
|
1335
|
+
id: string;
|
|
1336
|
+
top: number;
|
|
1337
|
+
left: number;
|
|
1338
|
+
bottom: number;
|
|
1339
|
+
right: number;
|
|
1340
|
+
depth: number;
|
|
1341
|
+
channels: ({
|
|
1342
|
+
compressionMode: number;
|
|
1343
|
+
data: Uint8Array;
|
|
1344
|
+
} | undefined)[];
|
|
1345
|
+
extra?: {
|
|
1346
|
+
compressionMode: number;
|
|
1347
|
+
data: Uint8Array;
|
|
1348
|
+
};
|
|
1349
|
+
}[];
|
|
977
1350
|
engineData?: string;
|
|
978
1351
|
}
|
|
979
1352
|
export interface ImageResources {
|
|
@@ -1205,6 +1578,7 @@ export interface Layer extends LayerAdditionalInfo {
|
|
|
1205
1578
|
blendMode?: BlendMode;
|
|
1206
1579
|
opacity?: number;
|
|
1207
1580
|
transparencyProtected?: boolean;
|
|
1581
|
+
effectsOpen?: boolean;
|
|
1208
1582
|
hidden?: boolean;
|
|
1209
1583
|
clipping?: boolean;
|
|
1210
1584
|
canvas?: HTMLCanvasElement;
|
|
@@ -1286,3 +1660,4 @@ export interface WriteOptions {
|
|
|
1286
1660
|
* with some software. It may also be significantly slower. */
|
|
1287
1661
|
compress?: boolean;
|
|
1288
1662
|
}
|
|
1663
|
+
export {};
|
package/dist-es/psdReader.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare function readUint8(reader: PsdReader): number;
|
|
|
13
13
|
export declare function peekUint8(reader: PsdReader): number;
|
|
14
14
|
export declare function readInt16(reader: PsdReader): number;
|
|
15
15
|
export declare function readUint16(reader: PsdReader): number;
|
|
16
|
+
export declare function readUint16LE(reader: PsdReader): number;
|
|
16
17
|
export declare function readInt32(reader: PsdReader): number;
|
|
17
18
|
export declare function readInt32LE(reader: PsdReader): number;
|
|
18
19
|
export declare function readUint32(reader: PsdReader): number;
|
|
@@ -25,6 +26,7 @@ export declare function readSignature(reader: PsdReader): string;
|
|
|
25
26
|
export declare function readPascalString(reader: PsdReader, padTo: number): string;
|
|
26
27
|
export declare function readUnicodeString(reader: PsdReader): string;
|
|
27
28
|
export declare function readUnicodeStringWithLength(reader: PsdReader, length: number): string;
|
|
29
|
+
export declare function readUnicodeStringWithLengthLE(reader: PsdReader, length: number): string;
|
|
28
30
|
export declare function readAsciiString(reader: PsdReader, length: number): string;
|
|
29
31
|
export declare function skipBytes(reader: PsdReader, count: number): void;
|
|
30
32
|
export declare function checkSignature(reader: PsdReader, a: string, b?: string): void;
|
package/dist-es/psdReader.js
CHANGED
|
@@ -47,6 +47,10 @@ export function readUint16(reader) {
|
|
|
47
47
|
reader.offset += 2;
|
|
48
48
|
return reader.view.getUint16(reader.offset - 2, false);
|
|
49
49
|
}
|
|
50
|
+
export function readUint16LE(reader) {
|
|
51
|
+
reader.offset += 2;
|
|
52
|
+
return reader.view.getUint16(reader.offset - 2, true);
|
|
53
|
+
}
|
|
50
54
|
export function readInt32(reader) {
|
|
51
55
|
reader.offset += 4;
|
|
52
56
|
return reader.view.getInt32(reader.offset - 4, false);
|
|
@@ -118,6 +122,16 @@ export function readUnicodeStringWithLength(reader, length) {
|
|
|
118
122
|
}
|
|
119
123
|
return text;
|
|
120
124
|
}
|
|
125
|
+
export function readUnicodeStringWithLengthLE(reader, length) {
|
|
126
|
+
var text = '';
|
|
127
|
+
while (length--) {
|
|
128
|
+
var value = readUint16LE(reader);
|
|
129
|
+
if (value || length > 0) { // remove trailing \0
|
|
130
|
+
text += String.fromCharCode(value);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return text;
|
|
134
|
+
}
|
|
121
135
|
export function readAsciiString(reader, length) {
|
|
122
136
|
var text = '';
|
|
123
137
|
while (length--) {
|
|
@@ -321,14 +335,14 @@ function readLayerRecord(reader, psd, options) {
|
|
|
321
335
|
var channelCount = readUint16(reader);
|
|
322
336
|
var channels = [];
|
|
323
337
|
for (var i = 0; i < channelCount; i++) {
|
|
324
|
-
var
|
|
325
|
-
var
|
|
338
|
+
var id = readInt16(reader);
|
|
339
|
+
var length_1 = readUint32(reader);
|
|
326
340
|
if (options.large) {
|
|
327
|
-
if (
|
|
341
|
+
if (length_1 !== 0)
|
|
328
342
|
throw new Error('Sizes larger than 4GB are not supported');
|
|
329
|
-
|
|
343
|
+
length_1 = readUint32(reader);
|
|
330
344
|
}
|
|
331
|
-
channels.push({ id:
|
|
345
|
+
channels.push({ id: id, length: length_1 });
|
|
332
346
|
}
|
|
333
347
|
checkSignature(reader, '8BIM');
|
|
334
348
|
var blendMode = readSignature(reader);
|
|
@@ -340,11 +354,12 @@ function readLayerRecord(reader, psd, options) {
|
|
|
340
354
|
var flags = readUint8(reader);
|
|
341
355
|
layer.transparencyProtected = (flags & 0x01) !== 0;
|
|
342
356
|
layer.hidden = (flags & 0x02) !== 0;
|
|
357
|
+
if (flags & 0x20)
|
|
358
|
+
layer.effectsOpen = true;
|
|
343
359
|
// 0x04 - obsolete
|
|
344
360
|
// 0x08 - 1 for Photoshop 5.0 and later, tells if bit 4 has useful information
|
|
345
361
|
// 0x10 - pixel data irrelevant to appearance of document
|
|
346
|
-
// 0x20 -
|
|
347
|
-
// if (flags & 0x20) (layer as any)._2 = true; // TEMP !!!!
|
|
362
|
+
// 0x20 - effects/filters panel is expanded
|
|
348
363
|
skipBytes(reader, 1);
|
|
349
364
|
readSection(reader, 1, function (left) {
|
|
350
365
|
var mask = readLayerMaskData(reader, options);
|
|
@@ -747,9 +762,9 @@ export function readDataRLE(reader, pixelData, _width, height, step, offsets, la
|
|
|
747
762
|
}
|
|
748
763
|
else {
|
|
749
764
|
for (var y = 0, p = offset | 0; y < height; y++, li++) {
|
|
750
|
-
var
|
|
751
|
-
var buffer = readBytes(reader,
|
|
752
|
-
for (var i = 0; i <
|
|
765
|
+
var length_2 = lengths[li];
|
|
766
|
+
var buffer = readBytes(reader, length_2);
|
|
767
|
+
for (var i = 0; i < length_2; i++) {
|
|
753
768
|
var header = buffer[i];
|
|
754
769
|
if (header > 128) {
|
|
755
770
|
var value = buffer[++i];
|
|
@@ -890,7 +905,7 @@ export function readPattern(reader) {
|
|
|
890
905
|
var has = readUint32(reader);
|
|
891
906
|
if (!has)
|
|
892
907
|
continue;
|
|
893
|
-
var
|
|
908
|
+
var length_3 = readUint32(reader);
|
|
894
909
|
var pixelDepth = readUint32(reader);
|
|
895
910
|
var ctop = readUint32(reader);
|
|
896
911
|
var cleft = readUint32(reader);
|
|
@@ -898,7 +913,7 @@ export function readPattern(reader) {
|
|
|
898
913
|
var cright = readUint32(reader);
|
|
899
914
|
var pixelDepth2 = readUint16(reader);
|
|
900
915
|
var compressionMode = readUint8(reader); // 0 - raw, 1 - zip
|
|
901
|
-
var dataLength =
|
|
916
|
+
var dataLength = length_3 - (4 + 16 + 2 + 1);
|
|
902
917
|
var cdata = readBytes(reader, dataLength);
|
|
903
918
|
if (pixelDepth !== 8 || pixelDepth2 !== 8) {
|
|
904
919
|
throw new Error('16bit pixel depth not supported for patterns');
|