ag-psd 16.0.0 → 17.0.1
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 +933 -247
- package/dist/additionalInfo.js.map +1 -1
- package/dist/bundle.js +1299 -325
- package/dist/descriptor.d.ts +140 -1
- package/dist/descriptor.js +297 -37
- package/dist/descriptor.js.map +1 -1
- package/dist/imageResources.js +13 -21
- package/dist/imageResources.js.map +1 -1
- package/dist/psd.d.ts +445 -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 +26 -7
- package/dist/psdWriter.js.map +1 -1
- package/dist-es/additionalInfo.js +934 -248
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/descriptor.d.ts +140 -1
- package/dist-es/descriptor.js +293 -38
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/imageResources.js +14 -22
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/psd.d.ts +445 -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 +22 -7
- package/dist-es/psdWriter.js.map +1 -1
- package/package.json +1 -1
- package/src/additionalInfo.ts +2014 -289
- package/src/descriptor.ts +329 -39
- package/src/imageResources.ts +18 -23
- package/src/psd.ts +477 -46
- package/src/psdReader.ts +26 -7
- package/src/psdWriter.ts +25 -8
package/dist/psd.d.ts
CHANGED
|
@@ -387,6 +387,12 @@ export interface TextGridInfo {
|
|
|
387
387
|
leadingFillColor?: Color;
|
|
388
388
|
alignLineHeightToGridFlags?: boolean;
|
|
389
389
|
}
|
|
390
|
+
export interface UnitsBounds {
|
|
391
|
+
top: UnitsValue;
|
|
392
|
+
left: UnitsValue;
|
|
393
|
+
right: UnitsValue;
|
|
394
|
+
bottom: UnitsValue;
|
|
395
|
+
}
|
|
390
396
|
export interface LayerTextData {
|
|
391
397
|
text: string;
|
|
392
398
|
transform?: number[];
|
|
@@ -413,6 +419,8 @@ export interface LayerTextData {
|
|
|
413
419
|
shapeType?: 'point' | 'box';
|
|
414
420
|
pointBase?: number[];
|
|
415
421
|
boxBounds?: number[];
|
|
422
|
+
bounds?: UnitsBounds;
|
|
423
|
+
boundingBox?: UnitsBounds;
|
|
416
424
|
}
|
|
417
425
|
export interface PatternInfo {
|
|
418
426
|
name: string;
|
|
@@ -659,86 +667,444 @@ export interface LinkedFile {
|
|
|
659
667
|
assetModTime?: number;
|
|
660
668
|
assetLockedState?: number;
|
|
661
669
|
}
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
670
|
+
type FilterVariant = {
|
|
671
|
+
type: 'average' | 'blur' | 'blur more';
|
|
672
|
+
} | {
|
|
673
|
+
type: 'box blur';
|
|
674
|
+
filter: {
|
|
675
|
+
radius: UnitsValue;
|
|
676
|
+
};
|
|
677
|
+
} | {
|
|
678
|
+
type: 'gaussian blur';
|
|
679
|
+
filter: {
|
|
680
|
+
radius: UnitsValue;
|
|
681
|
+
};
|
|
682
|
+
} | {
|
|
683
|
+
type: 'motion blur';
|
|
684
|
+
filter: {
|
|
685
|
+
angle: number;
|
|
686
|
+
distance: UnitsValue;
|
|
687
|
+
};
|
|
688
|
+
} | {
|
|
689
|
+
type: 'radial blur';
|
|
690
|
+
filter: {
|
|
691
|
+
amount: number;
|
|
692
|
+
method: 'spin' | 'zoom';
|
|
693
|
+
quality: 'draft' | 'good' | 'best';
|
|
694
|
+
};
|
|
695
|
+
} | {
|
|
696
|
+
type: 'shape blur';
|
|
697
|
+
filter: {
|
|
698
|
+
radius: UnitsValue;
|
|
699
|
+
customShape: {
|
|
700
|
+
name: string;
|
|
701
|
+
id: string;
|
|
702
|
+
};
|
|
703
|
+
};
|
|
704
|
+
} | {
|
|
705
|
+
type: 'smart blur';
|
|
706
|
+
filter: {
|
|
707
|
+
radius: number;
|
|
708
|
+
threshold: number;
|
|
709
|
+
quality: 'low' | 'medium' | 'high';
|
|
710
|
+
mode: 'normal' | 'edge only' | 'overlay edge';
|
|
711
|
+
};
|
|
712
|
+
} | {
|
|
713
|
+
type: 'surface blur';
|
|
714
|
+
filter: {
|
|
715
|
+
radius: UnitsValue;
|
|
716
|
+
threshold: number;
|
|
717
|
+
};
|
|
718
|
+
} | {
|
|
719
|
+
type: 'displace';
|
|
720
|
+
filter: {
|
|
721
|
+
horizontalScale: number;
|
|
722
|
+
verticalScale: number;
|
|
723
|
+
displacementMap: 'stretch to fit' | 'tile';
|
|
724
|
+
undefinedAreas: 'wrap around' | 'repeat edge pixels';
|
|
725
|
+
displacementFile: {
|
|
726
|
+
signature: string;
|
|
727
|
+
path: string;
|
|
728
|
+
};
|
|
729
|
+
};
|
|
730
|
+
} | {
|
|
731
|
+
type: 'pinch';
|
|
732
|
+
filter: {
|
|
733
|
+
amount: number;
|
|
734
|
+
};
|
|
735
|
+
} | {
|
|
736
|
+
type: 'polar coordinates';
|
|
737
|
+
filter: {
|
|
738
|
+
conversion: 'rectangular to polar' | 'polar to rectangular';
|
|
739
|
+
};
|
|
740
|
+
} | {
|
|
741
|
+
type: 'ripple';
|
|
742
|
+
filter: {
|
|
743
|
+
amount: number;
|
|
744
|
+
size: 'small' | 'medium' | 'large';
|
|
745
|
+
};
|
|
746
|
+
} | {
|
|
747
|
+
type: 'shear';
|
|
748
|
+
filter: {
|
|
749
|
+
shearPoints: {
|
|
675
750
|
x: number;
|
|
676
751
|
y: number;
|
|
677
752
|
}[];
|
|
678
|
-
|
|
679
|
-
|
|
753
|
+
shearStart: number;
|
|
754
|
+
shearEnd: number;
|
|
755
|
+
undefinedAreas: 'wrap around' | 'repeat edge pixels';
|
|
756
|
+
};
|
|
757
|
+
} | {
|
|
758
|
+
type: 'spherize';
|
|
759
|
+
filter: {
|
|
760
|
+
amount: number;
|
|
761
|
+
mode: 'normal' | 'horizontal only' | 'vertical only';
|
|
762
|
+
};
|
|
763
|
+
} | {
|
|
764
|
+
type: 'twirl';
|
|
765
|
+
filter: {
|
|
766
|
+
angle: number;
|
|
767
|
+
};
|
|
768
|
+
} | {
|
|
769
|
+
type: 'wave';
|
|
770
|
+
filter: {
|
|
771
|
+
numberOfGenerators: number;
|
|
772
|
+
type: 'sine' | 'triangle' | 'square';
|
|
773
|
+
wavelength: {
|
|
774
|
+
min: number;
|
|
775
|
+
max: number;
|
|
776
|
+
};
|
|
777
|
+
amplitude: {
|
|
778
|
+
min: number;
|
|
779
|
+
max: number;
|
|
780
|
+
};
|
|
781
|
+
scale: {
|
|
680
782
|
x: number;
|
|
681
783
|
y: number;
|
|
784
|
+
};
|
|
785
|
+
randomSeed: number;
|
|
786
|
+
undefinedAreas: 'wrap around' | 'repeat edge pixels';
|
|
787
|
+
};
|
|
788
|
+
} | {
|
|
789
|
+
type: 'zigzag';
|
|
790
|
+
filter: {
|
|
791
|
+
amount: number;
|
|
792
|
+
ridges: number;
|
|
793
|
+
style: 'around center' | 'out from center' | 'pond ripples';
|
|
794
|
+
};
|
|
795
|
+
} | {
|
|
796
|
+
type: 'add noise';
|
|
797
|
+
filter: {
|
|
798
|
+
amount: number;
|
|
799
|
+
distribution: 'uniform' | 'gaussian';
|
|
800
|
+
monochromatic: boolean;
|
|
801
|
+
randomSeed: number;
|
|
802
|
+
};
|
|
803
|
+
} | {
|
|
804
|
+
type: 'despeckle';
|
|
805
|
+
} | {
|
|
806
|
+
type: 'dust and scratches';
|
|
807
|
+
filter: {
|
|
808
|
+
radius: number;
|
|
809
|
+
threshold: number;
|
|
810
|
+
};
|
|
811
|
+
} | {
|
|
812
|
+
type: 'median';
|
|
813
|
+
filter: {
|
|
814
|
+
radius: UnitsValue;
|
|
815
|
+
};
|
|
816
|
+
} | {
|
|
817
|
+
type: 'reduce noise';
|
|
818
|
+
filter: {
|
|
819
|
+
preset: string;
|
|
820
|
+
removeJpegArtifact: boolean;
|
|
821
|
+
reduceColorNoise: number;
|
|
822
|
+
sharpenDetails: number;
|
|
823
|
+
channelDenoise: {
|
|
824
|
+
channels: ('red' | 'green' | 'blue' | 'composite')[];
|
|
825
|
+
amount: number;
|
|
826
|
+
preserveDetails?: number;
|
|
682
827
|
}[];
|
|
683
|
-
|
|
828
|
+
};
|
|
829
|
+
} | {
|
|
830
|
+
type: 'color halftone';
|
|
831
|
+
filter: {
|
|
832
|
+
radius: number;
|
|
833
|
+
angle1: number;
|
|
834
|
+
angle2: number;
|
|
835
|
+
angle3: number;
|
|
836
|
+
angle4: number;
|
|
837
|
+
};
|
|
838
|
+
} | {
|
|
839
|
+
type: 'crystallize';
|
|
840
|
+
filter: {
|
|
841
|
+
cellSize: number;
|
|
842
|
+
randomSeed: number;
|
|
843
|
+
};
|
|
844
|
+
} | {
|
|
845
|
+
type: 'facet' | 'fragment';
|
|
846
|
+
} | {
|
|
847
|
+
type: 'mezzotint';
|
|
848
|
+
filter: {
|
|
849
|
+
type: 'fine dots' | 'medium dots' | 'grainy dots' | 'coarse dots' | 'short lines' | 'medium lines' | 'long lines' | 'short strokes' | 'medium strokes' | 'long strokes';
|
|
850
|
+
randomSeed: number;
|
|
851
|
+
};
|
|
852
|
+
} | {
|
|
853
|
+
type: 'mosaic';
|
|
854
|
+
filter: {
|
|
855
|
+
cellSize: UnitsValue;
|
|
856
|
+
};
|
|
857
|
+
} | {
|
|
858
|
+
type: 'pointillize';
|
|
859
|
+
filter: {
|
|
860
|
+
cellSize: number;
|
|
861
|
+
randomSeed: number;
|
|
862
|
+
};
|
|
863
|
+
} | {
|
|
864
|
+
type: 'clouds';
|
|
865
|
+
filter: {
|
|
866
|
+
randomSeed: number;
|
|
867
|
+
};
|
|
868
|
+
} | {
|
|
869
|
+
type: 'difference clouds';
|
|
870
|
+
filter: {
|
|
871
|
+
randomSeed: number;
|
|
872
|
+
};
|
|
873
|
+
} | {
|
|
874
|
+
type: 'fibers';
|
|
875
|
+
filter: {
|
|
876
|
+
variance: number;
|
|
877
|
+
strength: number;
|
|
878
|
+
randomSeed: number;
|
|
879
|
+
};
|
|
880
|
+
} | {
|
|
881
|
+
type: 'lens flare';
|
|
882
|
+
filter: {
|
|
883
|
+
brightness: number;
|
|
884
|
+
position: {
|
|
684
885
|
x: number;
|
|
685
886
|
y: number;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
887
|
+
};
|
|
888
|
+
lensType: '50-300mm zoom' | '32mm prime' | '105mm prime' | 'movie prime';
|
|
889
|
+
};
|
|
890
|
+
} | {
|
|
891
|
+
type: 'sharpen' | 'sharpen edges' | 'sharpen more';
|
|
892
|
+
} | {
|
|
893
|
+
type: 'smart sharpen';
|
|
894
|
+
filter: {
|
|
895
|
+
amount: number;
|
|
896
|
+
radius: UnitsValue;
|
|
897
|
+
threshold: number;
|
|
898
|
+
angle: number;
|
|
899
|
+
moreAccurate: boolean;
|
|
900
|
+
blur: 'gaussian blur' | 'lens blur' | 'motion blur';
|
|
901
|
+
preset: string;
|
|
902
|
+
shadow: {
|
|
903
|
+
fadeAmount: number;
|
|
904
|
+
tonalWidth: number;
|
|
905
|
+
radius: number;
|
|
906
|
+
};
|
|
907
|
+
highlight: {
|
|
908
|
+
fadeAmount: number;
|
|
909
|
+
tonalWidth: number;
|
|
910
|
+
radius: number;
|
|
911
|
+
};
|
|
912
|
+
};
|
|
913
|
+
} | {
|
|
914
|
+
type: 'unsharp mask';
|
|
915
|
+
filter: {
|
|
916
|
+
amount: number;
|
|
917
|
+
radius: UnitsValue;
|
|
918
|
+
threshold: number;
|
|
919
|
+
};
|
|
920
|
+
} | {
|
|
921
|
+
type: 'diffuse';
|
|
922
|
+
filter: {
|
|
923
|
+
mode: 'normal' | 'darken only' | 'lighten only' | 'anisotropic';
|
|
924
|
+
randomSeed: number;
|
|
925
|
+
};
|
|
926
|
+
} | {
|
|
927
|
+
type: 'emboss';
|
|
928
|
+
filter: {
|
|
929
|
+
angle: number;
|
|
930
|
+
height: number;
|
|
931
|
+
amount: number;
|
|
932
|
+
};
|
|
933
|
+
} | {
|
|
934
|
+
type: 'extrude';
|
|
935
|
+
filter: {
|
|
936
|
+
type: 'blocks' | 'pyramids';
|
|
937
|
+
size: number;
|
|
938
|
+
depth: number;
|
|
939
|
+
depthMode: 'random' | 'level-based';
|
|
940
|
+
randomSeed: number;
|
|
941
|
+
solidFrontFaces: boolean;
|
|
942
|
+
maskIncompleteBlocks: boolean;
|
|
943
|
+
};
|
|
944
|
+
} | {
|
|
945
|
+
type: 'find edges' | 'solarize';
|
|
946
|
+
} | {
|
|
947
|
+
type: 'tiles';
|
|
948
|
+
filter: {
|
|
949
|
+
numberOfTiles: number;
|
|
950
|
+
maximumOffset: number;
|
|
951
|
+
fillEmptyAreaWith: 'background color' | 'foreground color' | 'inverse image' | 'unaltered image';
|
|
952
|
+
randomSeed: number;
|
|
953
|
+
};
|
|
954
|
+
} | {
|
|
955
|
+
type: 'trace contour';
|
|
956
|
+
filter: {
|
|
957
|
+
level: number;
|
|
958
|
+
edge: 'lower' | 'upper';
|
|
959
|
+
};
|
|
960
|
+
} | {
|
|
961
|
+
type: 'wind';
|
|
962
|
+
filter: {
|
|
963
|
+
method: 'wind' | 'blast' | 'stagger';
|
|
964
|
+
direction: 'left' | 'right';
|
|
965
|
+
};
|
|
966
|
+
} | {
|
|
967
|
+
type: 'de-interlace';
|
|
968
|
+
filter: {
|
|
969
|
+
eliminate: 'odd lines' | 'even lines';
|
|
970
|
+
newFieldsBy: 'duplication' | 'interpolation';
|
|
971
|
+
};
|
|
972
|
+
} | {
|
|
973
|
+
type: 'ntsc colors';
|
|
974
|
+
} | {
|
|
975
|
+
type: 'custom';
|
|
976
|
+
filter: {
|
|
977
|
+
scale: number;
|
|
978
|
+
offset: number;
|
|
979
|
+
matrix: number[];
|
|
980
|
+
};
|
|
981
|
+
} | {
|
|
982
|
+
type: 'high pass' | 'maximum' | 'minimum';
|
|
983
|
+
filter: {
|
|
984
|
+
radius: UnitsValue;
|
|
985
|
+
};
|
|
986
|
+
} | {
|
|
987
|
+
type: 'offset';
|
|
988
|
+
filter: {
|
|
989
|
+
horizontal: number;
|
|
990
|
+
vertical: number;
|
|
991
|
+
undefinedAreas: 'set to transparent' | 'repeat edge pixels' | 'wrap around';
|
|
992
|
+
};
|
|
993
|
+
} | {
|
|
994
|
+
type: 'puppet';
|
|
995
|
+
filter: {
|
|
996
|
+
rigidType: boolean;
|
|
997
|
+
bounds: {
|
|
690
998
|
x: number;
|
|
691
999
|
y: number;
|
|
692
1000
|
}[];
|
|
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
|
-
|
|
1001
|
+
puppetShapeList: {
|
|
1002
|
+
rigidType: boolean;
|
|
1003
|
+
originalVertexArray: {
|
|
1004
|
+
x: number;
|
|
1005
|
+
y: number;
|
|
1006
|
+
}[];
|
|
1007
|
+
deformedVertexArray: {
|
|
1008
|
+
x: number;
|
|
1009
|
+
y: number;
|
|
1010
|
+
}[];
|
|
1011
|
+
indexArray: number[];
|
|
1012
|
+
pinOffsets: {
|
|
1013
|
+
x: number;
|
|
1014
|
+
y: number;
|
|
1015
|
+
}[];
|
|
1016
|
+
posFinalPins: {
|
|
1017
|
+
x: number;
|
|
1018
|
+
y: number;
|
|
1019
|
+
}[];
|
|
1020
|
+
pinVertexIndices: number[];
|
|
1021
|
+
selectedPin: number[];
|
|
1022
|
+
pinPosition: {
|
|
1023
|
+
x: number;
|
|
1024
|
+
y: number;
|
|
1025
|
+
}[];
|
|
1026
|
+
pinRotation: number[];
|
|
1027
|
+
pinOverlay: boolean[];
|
|
1028
|
+
pinDepth: number[];
|
|
1029
|
+
meshQuality: number;
|
|
1030
|
+
meshExpansion: number;
|
|
1031
|
+
meshRigidity: number;
|
|
1032
|
+
imageResolution: number;
|
|
1033
|
+
meshBoundaryPath: {
|
|
1034
|
+
pathComponents: {
|
|
1035
|
+
shapeOperation: string;
|
|
1036
|
+
paths: {
|
|
1037
|
+
closed: boolean;
|
|
1038
|
+
points: {
|
|
1039
|
+
anchor: {
|
|
1040
|
+
x: UnitsValue;
|
|
1041
|
+
y: UnitsValue;
|
|
1042
|
+
};
|
|
1043
|
+
forward: {
|
|
1044
|
+
x: UnitsValue;
|
|
1045
|
+
y: UnitsValue;
|
|
1046
|
+
};
|
|
1047
|
+
backward: {
|
|
1048
|
+
x: UnitsValue;
|
|
1049
|
+
y: UnitsValue;
|
|
1050
|
+
};
|
|
1051
|
+
smooth: boolean;
|
|
1052
|
+
}[];
|
|
719
1053
|
}[];
|
|
720
1054
|
}[];
|
|
721
|
-
}
|
|
722
|
-
};
|
|
723
|
-
}
|
|
724
|
-
}
|
|
1055
|
+
};
|
|
1056
|
+
}[];
|
|
1057
|
+
};
|
|
1058
|
+
} | {
|
|
1059
|
+
type: 'oil paint plugin';
|
|
1060
|
+
filter: {
|
|
1061
|
+
name: string;
|
|
1062
|
+
gpu: boolean;
|
|
1063
|
+
lighting: boolean;
|
|
1064
|
+
parameters: {
|
|
1065
|
+
name: string;
|
|
1066
|
+
value: number;
|
|
1067
|
+
}[];
|
|
1068
|
+
};
|
|
1069
|
+
} | {
|
|
1070
|
+
type: 'hsb/hsl';
|
|
1071
|
+
filter: {
|
|
1072
|
+
inputMode: 'rgb' | 'hsb' | 'hsl';
|
|
1073
|
+
rowOrder: 'rgb' | 'hsb' | 'hsl';
|
|
1074
|
+
};
|
|
1075
|
+
} | {
|
|
1076
|
+
type: 'oil paint';
|
|
1077
|
+
filter: {
|
|
1078
|
+
lightingOn: boolean;
|
|
1079
|
+
stylization: number;
|
|
1080
|
+
cleanliness: number;
|
|
1081
|
+
brushScale: number;
|
|
1082
|
+
microBrush: number;
|
|
1083
|
+
lightDirection: number;
|
|
1084
|
+
specularity: number;
|
|
1085
|
+
};
|
|
1086
|
+
} | {
|
|
1087
|
+
type: 'liquify';
|
|
1088
|
+
filter: {
|
|
1089
|
+
liquifyMesh: Uint8Array;
|
|
1090
|
+
};
|
|
1091
|
+
};
|
|
1092
|
+
export type Filter = FilterVariant & {
|
|
1093
|
+
name: string;
|
|
1094
|
+
opacity: number;
|
|
1095
|
+
blendMode: BlendMode;
|
|
1096
|
+
enabled: boolean;
|
|
1097
|
+
hasOptions: boolean;
|
|
1098
|
+
foregroundColor: Color;
|
|
1099
|
+
backgroundColor: Color;
|
|
1100
|
+
};
|
|
725
1101
|
export interface PlacedLayerFilter {
|
|
726
1102
|
enabled: boolean;
|
|
727
1103
|
validAtPosition: boolean;
|
|
728
1104
|
maskEnabled: boolean;
|
|
729
1105
|
maskLinked: boolean;
|
|
730
1106
|
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
|
-
}[];
|
|
1107
|
+
list: Filter[];
|
|
742
1108
|
}
|
|
743
1109
|
export type PlacedLayerType = 'unknown' | 'vector' | 'raster' | 'image stack';
|
|
744
1110
|
export interface PlacedLayer {
|
|
@@ -973,7 +1339,22 @@ export interface LayerAdditionalInfo {
|
|
|
973
1339
|
unifyLayerVisibility?: boolean;
|
|
974
1340
|
};
|
|
975
1341
|
timeline?: Timeline;
|
|
976
|
-
|
|
1342
|
+
filterEffectsMasks?: {
|
|
1343
|
+
id: string;
|
|
1344
|
+
top: number;
|
|
1345
|
+
left: number;
|
|
1346
|
+
bottom: number;
|
|
1347
|
+
right: number;
|
|
1348
|
+
depth: number;
|
|
1349
|
+
channels: ({
|
|
1350
|
+
compressionMode: number;
|
|
1351
|
+
data: Uint8Array;
|
|
1352
|
+
} | undefined)[];
|
|
1353
|
+
extra?: {
|
|
1354
|
+
compressionMode: number;
|
|
1355
|
+
data: Uint8Array;
|
|
1356
|
+
};
|
|
1357
|
+
}[];
|
|
977
1358
|
engineData?: string;
|
|
978
1359
|
}
|
|
979
1360
|
export interface ImageResources {
|
|
@@ -1205,6 +1586,7 @@ export interface Layer extends LayerAdditionalInfo {
|
|
|
1205
1586
|
blendMode?: BlendMode;
|
|
1206
1587
|
opacity?: number;
|
|
1207
1588
|
transparencyProtected?: boolean;
|
|
1589
|
+
effectsOpen?: boolean;
|
|
1208
1590
|
hidden?: boolean;
|
|
1209
1591
|
clipping?: boolean;
|
|
1210
1592
|
canvas?: HTMLCanvasElement;
|
|
@@ -1286,3 +1668,4 @@ export interface WriteOptions {
|
|
|
1286
1668
|
* with some software. It may also be significantly slower. */
|
|
1287
1669
|
compress?: boolean;
|
|
1288
1670
|
}
|
|
1671
|
+
export {};
|
package/dist/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/psdReader.js
CHANGED
|
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
11
11
|
return __assign.apply(this, arguments);
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.readPattern = exports.readColor = exports.readSection = exports.readDataRLE = exports.readDataZipWithoutPrediction = exports.readPsd = exports.checkSignature = exports.skipBytes = exports.readAsciiString = exports.readUnicodeStringWithLength = exports.readUnicodeString = exports.readPascalString = exports.readSignature = exports.readBytes = exports.readFixedPointPath32 = exports.readFixedPoint32 = exports.readFloat64 = exports.readFloat32 = exports.readUint32 = exports.readInt32LE = exports.readInt32 = exports.readUint16 = exports.readInt16 = exports.peekUint8 = exports.readUint8 = exports.warnOrThrow = exports.createReader = exports.supportedColorModes = void 0;
|
|
14
|
+
exports.readPattern = exports.readColor = exports.readSection = exports.readDataRLE = exports.readDataZipWithoutPrediction = exports.readPsd = exports.checkSignature = exports.skipBytes = exports.readAsciiString = exports.readUnicodeStringWithLengthLE = exports.readUnicodeStringWithLength = exports.readUnicodeString = exports.readPascalString = exports.readSignature = exports.readBytes = exports.readFixedPointPath32 = exports.readFixedPoint32 = exports.readFloat64 = exports.readFloat32 = exports.readUint32 = exports.readInt32LE = exports.readInt32 = exports.readUint16LE = exports.readUint16 = exports.readInt16 = exports.peekUint8 = exports.readUint8 = exports.warnOrThrow = exports.createReader = exports.supportedColorModes = void 0;
|
|
15
15
|
var pako_1 = require("pako");
|
|
16
16
|
var helpers_1 = require("./helpers");
|
|
17
17
|
var additionalInfo_1 = require("./additionalInfo");
|
|
@@ -56,6 +56,11 @@ function readUint16(reader) {
|
|
|
56
56
|
return reader.view.getUint16(reader.offset - 2, false);
|
|
57
57
|
}
|
|
58
58
|
exports.readUint16 = readUint16;
|
|
59
|
+
function readUint16LE(reader) {
|
|
60
|
+
reader.offset += 2;
|
|
61
|
+
return reader.view.getUint16(reader.offset - 2, true);
|
|
62
|
+
}
|
|
63
|
+
exports.readUint16LE = readUint16LE;
|
|
59
64
|
function readInt32(reader) {
|
|
60
65
|
reader.offset += 4;
|
|
61
66
|
return reader.view.getInt32(reader.offset - 4, false);
|
|
@@ -139,6 +144,17 @@ function readUnicodeStringWithLength(reader, length) {
|
|
|
139
144
|
return text;
|
|
140
145
|
}
|
|
141
146
|
exports.readUnicodeStringWithLength = readUnicodeStringWithLength;
|
|
147
|
+
function readUnicodeStringWithLengthLE(reader, length) {
|
|
148
|
+
var text = '';
|
|
149
|
+
while (length--) {
|
|
150
|
+
var value = readUint16LE(reader);
|
|
151
|
+
if (value || length > 0) { // remove trailing \0
|
|
152
|
+
text += String.fromCharCode(value);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return text;
|
|
156
|
+
}
|
|
157
|
+
exports.readUnicodeStringWithLengthLE = readUnicodeStringWithLengthLE;
|
|
142
158
|
function readAsciiString(reader, length) {
|
|
143
159
|
var text = '';
|
|
144
160
|
while (length--) {
|
|
@@ -346,14 +362,14 @@ function readLayerRecord(reader, psd, options) {
|
|
|
346
362
|
var channelCount = readUint16(reader);
|
|
347
363
|
var channels = [];
|
|
348
364
|
for (var i = 0; i < channelCount; i++) {
|
|
349
|
-
var
|
|
350
|
-
var
|
|
365
|
+
var id = readInt16(reader);
|
|
366
|
+
var length_1 = readUint32(reader);
|
|
351
367
|
if (options.large) {
|
|
352
|
-
if (
|
|
368
|
+
if (length_1 !== 0)
|
|
353
369
|
throw new Error('Sizes larger than 4GB are not supported');
|
|
354
|
-
|
|
370
|
+
length_1 = readUint32(reader);
|
|
355
371
|
}
|
|
356
|
-
channels.push({ id:
|
|
372
|
+
channels.push({ id: id, length: length_1 });
|
|
357
373
|
}
|
|
358
374
|
checkSignature(reader, '8BIM');
|
|
359
375
|
var blendMode = readSignature(reader);
|
|
@@ -365,11 +381,12 @@ function readLayerRecord(reader, psd, options) {
|
|
|
365
381
|
var flags = readUint8(reader);
|
|
366
382
|
layer.transparencyProtected = (flags & 0x01) !== 0;
|
|
367
383
|
layer.hidden = (flags & 0x02) !== 0;
|
|
384
|
+
if (flags & 0x20)
|
|
385
|
+
layer.effectsOpen = true;
|
|
368
386
|
// 0x04 - obsolete
|
|
369
387
|
// 0x08 - 1 for Photoshop 5.0 and later, tells if bit 4 has useful information
|
|
370
388
|
// 0x10 - pixel data irrelevant to appearance of document
|
|
371
|
-
// 0x20 -
|
|
372
|
-
// if (flags & 0x20) (layer as any)._2 = true; // TEMP !!!!
|
|
389
|
+
// 0x20 - effects/filters panel is expanded
|
|
373
390
|
skipBytes(reader, 1);
|
|
374
391
|
readSection(reader, 1, function (left) {
|
|
375
392
|
var mask = readLayerMaskData(reader, options);
|
|
@@ -773,9 +790,9 @@ function readDataRLE(reader, pixelData, _width, height, step, offsets, large) {
|
|
|
773
790
|
}
|
|
774
791
|
else {
|
|
775
792
|
for (var y = 0, p = offset | 0; y < height; y++, li++) {
|
|
776
|
-
var
|
|
777
|
-
var buffer = readBytes(reader,
|
|
778
|
-
for (var i = 0; i <
|
|
793
|
+
var length_2 = lengths[li];
|
|
794
|
+
var buffer = readBytes(reader, length_2);
|
|
795
|
+
for (var i = 0; i < length_2; i++) {
|
|
779
796
|
var header = buffer[i];
|
|
780
797
|
if (header > 128) {
|
|
781
798
|
var value = buffer[++i];
|
|
@@ -919,7 +936,7 @@ function readPattern(reader) {
|
|
|
919
936
|
var has = readUint32(reader);
|
|
920
937
|
if (!has)
|
|
921
938
|
continue;
|
|
922
|
-
var
|
|
939
|
+
var length_3 = readUint32(reader);
|
|
923
940
|
var pixelDepth = readUint32(reader);
|
|
924
941
|
var ctop = readUint32(reader);
|
|
925
942
|
var cleft = readUint32(reader);
|
|
@@ -927,7 +944,7 @@ function readPattern(reader) {
|
|
|
927
944
|
var cright = readUint32(reader);
|
|
928
945
|
var pixelDepth2 = readUint16(reader);
|
|
929
946
|
var compressionMode = readUint8(reader); // 0 - raw, 1 - zip
|
|
930
|
-
var dataLength =
|
|
947
|
+
var dataLength = length_3 - (4 + 16 + 2 + 1);
|
|
931
948
|
var cdata = readBytes(reader, dataLength);
|
|
932
949
|
if (pixelDepth !== 8 || pixelDepth2 !== 8) {
|
|
933
950
|
throw new Error('16bit pixel depth not supported for patterns');
|