ag-psd 32.0.0 → 34.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/.v8-cache/v24.7.0-x64-ef5a0af0/03e19709 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/05135617 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/1130885f +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/226e2801 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/2a19133e +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/4511bacf +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/68416cb2 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/71df9cb3 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/7ea06cea +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/87cf2209 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/932f0770 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/acc36e66 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/b3c2fab7 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/c0b789d2 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/c314aece +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/cfc49f4f +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/cff9434a +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/d13d7610 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/dc86f000 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/e03e2acd +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/e6745c2b +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/e6b99945 +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/eeeebdfe +0 -0
- package/.v8-cache/v24.7.0-x64-ef5a0af0/f6fd8125 +0 -0
- package/CHANGELOG.md +100 -0
- package/LICENSE +5 -0
- package/README.md +4 -7
- package/README_PSD.md +261 -84
- package/TODO.md +13 -84
- package/dist/abr.d.ts +11 -4
- package/dist/abr.js +362 -230
- package/dist/abr.js.map +1 -1
- package/dist/additionalInfo.d.ts +56 -2
- package/dist/additionalInfo.js +828 -361
- package/dist/additionalInfo.js.map +1 -1
- package/dist/ase.d.ts +6 -1
- package/dist/ase.js +61 -61
- package/dist/ase.js.map +1 -1
- package/dist/bundle.js +3321 -1364
- package/dist/descriptor.d.ts +28 -13
- package/dist/descriptor.js +295 -241
- package/dist/descriptor.js.map +1 -1
- package/dist/helpers.d.ts +7 -1
- package/dist/helpers.js +246 -4
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.d.ts +15 -3
- package/dist/imageResources.js +586 -144
- package/dist/imageResources.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/jpeg.js +8 -8
- package/dist/jpeg.js.map +1 -1
- package/dist/psd.d.ts +292 -19
- package/dist/psd.js.map +1 -1
- package/dist/psdReader.d.ts +10 -0
- package/dist/psdReader.js +424 -216
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.d.ts +2 -0
- package/dist/psdWriter.js +373 -113
- package/dist/psdWriter.js.map +1 -1
- package/dist/text.d.ts +32 -1
- package/dist/text.js +75 -6
- package/dist/text.js.map +1 -1
- package/dist/utf8.js +0 -3
- package/dist/utf8.js.map +1 -1
- package/dist-es/abr.d.ts +11 -4
- package/dist-es/abr.js +362 -230
- package/dist-es/abr.js.map +1 -1
- package/dist-es/additionalInfo.d.ts +56 -2
- package/dist-es/additionalInfo.js +828 -361
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/ase.d.ts +6 -1
- package/dist-es/ase.js +61 -61
- package/dist-es/ase.js.map +1 -1
- package/dist-es/descriptor.d.ts +28 -13
- package/dist-es/descriptor.js +295 -241
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/helpers.d.ts +7 -1
- package/dist-es/helpers.js +246 -4
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.d.ts +15 -3
- package/dist-es/imageResources.js +586 -144
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/index.d.ts +1 -0
- package/dist-es/index.js +1 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/jpeg.js +8 -8
- package/dist-es/jpeg.js.map +1 -1
- package/dist-es/psd.d.ts +292 -19
- package/dist-es/psd.js.map +1 -1
- package/dist-es/psdReader.d.ts +10 -0
- package/dist-es/psdReader.js +424 -216
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.d.ts +2 -0
- package/dist-es/psdWriter.js +373 -113
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/text.d.ts +32 -1
- package/dist-es/text.js +75 -6
- package/dist-es/text.js.map +1 -1
- package/dist-es/utf8.js +0 -3
- package/dist-es/utf8.js.map +1 -1
- package/package.json +2 -2
- package/perf.js +312 -9
- package/src/abr.ts +382 -235
- package/src/additionalInfo.ts +1071 -482
- package/src/ase.ts +66 -61
- package/src/descriptor.ts +291 -242
- package/src/helpers.ts +266 -3
- package/src/imageResources.ts +736 -169
- package/src/index.ts +1 -0
- package/src/jpeg.ts +8 -8
- package/src/psd.ts +271 -32
- package/src/psdReader.ts +440 -221
- package/src/psdWriter.ts +402 -110
- package/src/text.ts +93 -7
- package/src/utf8.ts +0 -4
package/src/index.ts
CHANGED
package/src/jpeg.ts
CHANGED
|
@@ -761,7 +761,7 @@ function parse(data: Uint8Array) {
|
|
|
761
761
|
};
|
|
762
762
|
}
|
|
763
763
|
}
|
|
764
|
-
//
|
|
764
|
+
// APP1 - Exif
|
|
765
765
|
if (fileMarker === 0xFFE1) {
|
|
766
766
|
if (appData[0] === 0x45 &&
|
|
767
767
|
appData[1] === 0x78 &&
|
|
@@ -952,11 +952,11 @@ function parse(data: Uint8Array) {
|
|
|
952
952
|
// set each frame's components quantization table
|
|
953
953
|
for (let i = 0; i < frames.length; i++) {
|
|
954
954
|
const cp = frames[i].components;
|
|
955
|
-
for (
|
|
956
|
-
const
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
955
|
+
for (const key of Object.keys(cp)) {
|
|
956
|
+
const component = cp[+key];
|
|
957
|
+
const table = quantizationTables[component.quantizationIdx!];
|
|
958
|
+
if (!table) throw new Error(`Missing quantization table ${component.quantizationIdx}`);
|
|
959
|
+
component.quantizationTable = table;
|
|
960
960
|
}
|
|
961
961
|
}
|
|
962
962
|
|
|
@@ -1021,8 +1021,8 @@ function getData(decoded: Decoded) {
|
|
|
1021
1021
|
break;
|
|
1022
1022
|
}
|
|
1023
1023
|
case 3: {
|
|
1024
|
-
// The default transform for three components is true, the adobe transform marker overrides it
|
|
1025
|
-
colorTransform = decoded.adobe ? !!decoded.adobe.transformCode : true;
|
|
1024
|
+
// The default transform for three components is true, JFIF marker implies YCbCr, otherwise the adobe transform marker overrides it
|
|
1025
|
+
colorTransform = decoded.jfif ? true : decoded.adobe ? !!decoded.adobe.transformCode : true;
|
|
1026
1026
|
|
|
1027
1027
|
const component1 = decoded.components[0];
|
|
1028
1028
|
const component2 = decoded.components[1];
|
package/src/psd.ts
CHANGED
|
@@ -31,7 +31,15 @@ export type HSB = { h: number; s: number; b: number; }; // values from 0 to 1
|
|
|
31
31
|
export type CMYK = { c: number; m: number; y: number; k: number; }; // values from 0 to 255
|
|
32
32
|
export type LAB = { l: number; a: number; b: number; }; // values `l` from 0 to 1; `a` and `b` from -1 to 1
|
|
33
33
|
export type Grayscale = { k: number }; // values from 0 to 255
|
|
34
|
-
export
|
|
34
|
+
export interface ColorBookInfo {
|
|
35
|
+
book: string; // name of the color book (e.g. 'PANTONE+® Solid Coated')
|
|
36
|
+
name: string; // name of the color in the book (e.g. 'PANTONE 688 C')
|
|
37
|
+
bookID: number;
|
|
38
|
+
bookKey: string; // unique key of the color in the book
|
|
39
|
+
}
|
|
40
|
+
// `book` is only present for colors picked from color books (Pantone, etc.) in descriptors, color values are the
|
|
41
|
+
// book color converted to document color space
|
|
42
|
+
export type Color = (RGBA | RGB | FRGB | HSB | CMYK | LAB | Grayscale) & { book?: ColorBookInfo; };
|
|
35
43
|
|
|
36
44
|
export interface EffectContour {
|
|
37
45
|
name: string;
|
|
@@ -40,8 +48,7 @@ export interface EffectContour {
|
|
|
40
48
|
|
|
41
49
|
export interface EffectPattern {
|
|
42
50
|
name: string;
|
|
43
|
-
id: string;
|
|
44
|
-
// TODO: add fields
|
|
51
|
+
id: string; // pattern data is stored in `patterns` field of the document
|
|
45
52
|
}
|
|
46
53
|
|
|
47
54
|
export interface LayerEffectShadow {
|
|
@@ -70,12 +77,15 @@ export interface LayerEffectsOuterGlow {
|
|
|
70
77
|
blendMode?: BlendMode;
|
|
71
78
|
opacity?: number;
|
|
72
79
|
source?: GlowSource;
|
|
80
|
+
technique?: GlowTechnique;
|
|
73
81
|
antialiased?: boolean;
|
|
74
82
|
noise?: number;
|
|
75
83
|
range?: number;
|
|
76
84
|
choke?: UnitsValue;
|
|
77
85
|
jitter?: number;
|
|
78
86
|
contour?: EffectContour;
|
|
87
|
+
gradient?: EffectSolidGradient | EffectNoiseGradient;
|
|
88
|
+
interpolationMethod?: InterpolationMethod;
|
|
79
89
|
}
|
|
80
90
|
|
|
81
91
|
export interface LayerEffectInnerGlow {
|
|
@@ -94,6 +104,8 @@ export interface LayerEffectInnerGlow {
|
|
|
94
104
|
choke?: UnitsValue; // spread
|
|
95
105
|
jitter?: number;
|
|
96
106
|
contour?: EffectContour;
|
|
107
|
+
gradient?: EffectSolidGradient | EffectNoiseGradient;
|
|
108
|
+
interpolationMethod?: InterpolationMethod;
|
|
97
109
|
}
|
|
98
110
|
|
|
99
111
|
export interface LayerEffectBevel {
|
|
@@ -118,7 +130,10 @@ export interface LayerEffectBevel {
|
|
|
118
130
|
useTexture?: boolean;
|
|
119
131
|
useShape?: boolean;
|
|
120
132
|
antialiasGloss?: boolean;
|
|
121
|
-
contour?: EffectContour;
|
|
133
|
+
contour?: EffectContour; // gloss contour
|
|
134
|
+
shapeContour?: EffectContour; // contour of the bevel shape, used when `useShape` is enabled
|
|
135
|
+
range?: number;
|
|
136
|
+
antialiased?: boolean;
|
|
122
137
|
}
|
|
123
138
|
|
|
124
139
|
export interface LayerEffectSolidFill {
|
|
@@ -142,7 +157,7 @@ export interface LayerEffectStroke {
|
|
|
142
157
|
opacity?: number;
|
|
143
158
|
color?: Color;
|
|
144
159
|
gradient?: (EffectSolidGradient | EffectNoiseGradient) & ExtraGradientInfo;
|
|
145
|
-
pattern?: EffectPattern &
|
|
160
|
+
pattern?: EffectPattern & ExtraPatternInfo;
|
|
146
161
|
}
|
|
147
162
|
|
|
148
163
|
export interface LayerEffectSatin {
|
|
@@ -160,7 +175,6 @@ export interface LayerEffectSatin {
|
|
|
160
175
|
contour?: EffectContour;
|
|
161
176
|
}
|
|
162
177
|
|
|
163
|
-
// not supported yet because of `Patt` section not implemented
|
|
164
178
|
export interface LayerEffectPatternOverlay {
|
|
165
179
|
present?: boolean;
|
|
166
180
|
showInDialog?: boolean;
|
|
@@ -168,6 +182,7 @@ export interface LayerEffectPatternOverlay {
|
|
|
168
182
|
blendMode?: BlendMode;
|
|
169
183
|
opacity?: number;
|
|
170
184
|
scale?: number;
|
|
185
|
+
angle?: number;
|
|
171
186
|
pattern?: EffectPattern;
|
|
172
187
|
phase?: { x: number; y: number; };
|
|
173
188
|
align?: boolean;
|
|
@@ -222,7 +237,7 @@ export interface LayerEffectsInfo {
|
|
|
222
237
|
satin?: LayerEffectSatin;
|
|
223
238
|
stroke?: LayerEffectStroke[];
|
|
224
239
|
gradientOverlay?: LayerEffectGradientOverlay[];
|
|
225
|
-
patternOverlay?: LayerEffectPatternOverlay; //
|
|
240
|
+
patternOverlay?: LayerEffectPatternOverlay; // pattern is referenced only by name/id
|
|
226
241
|
}
|
|
227
242
|
|
|
228
243
|
export type PixelArray = Uint8ClampedArray | Uint8Array | Uint16Array | Float32Array;
|
|
@@ -250,7 +265,7 @@ export interface LayerMaskData {
|
|
|
250
265
|
imageData?: PixelData;
|
|
251
266
|
}
|
|
252
267
|
|
|
253
|
-
export type TextGridding = 'none' | 'round';
|
|
268
|
+
export type TextGridding = 'none' | 'round';
|
|
254
269
|
export type Orientation = 'horizontal' | 'vertical';
|
|
255
270
|
export type AntiAlias = 'none' | 'sharp' | 'crisp' | 'strong' | 'smooth' | 'platform' | 'platformLCD';
|
|
256
271
|
export type WarpStyle =
|
|
@@ -497,6 +512,8 @@ export interface ExtraGradientInfo {
|
|
|
497
512
|
export interface ExtraPatternInfo {
|
|
498
513
|
linked?: boolean;
|
|
499
514
|
phase?: { x: number; y: number; };
|
|
515
|
+
scale?: number;
|
|
516
|
+
angle?: number;
|
|
500
517
|
}
|
|
501
518
|
|
|
502
519
|
export type VectorContent = { type: 'color'; color: Color; } |
|
|
@@ -506,7 +523,7 @@ export type VectorContent = { type: 'color'; color: Color; } |
|
|
|
506
523
|
|
|
507
524
|
export type RenderingIntent = 'perceptual' | 'saturation' | 'relative colorimetric' | 'absolute colorimetric';
|
|
508
525
|
|
|
509
|
-
export type Units = 'Pixels' | 'Points' | 'Picas' | 'Millimeters' | 'Centimeters' | 'Inches' | 'None' | 'Density';
|
|
526
|
+
export type Units = 'Pixels' | 'Points' | 'Picas' | 'Millimeters' | 'Centimeters' | 'Inches' | 'None' | 'Density' | 'Distance'; // Distance is in points (1/72 inch)
|
|
510
527
|
|
|
511
528
|
export interface UnitsValue {
|
|
512
529
|
units: Units;
|
|
@@ -538,22 +555,21 @@ export interface PresetInfo {
|
|
|
538
555
|
|
|
539
556
|
export interface LevelsAdjustment extends PresetInfo {
|
|
540
557
|
type: 'levels';
|
|
541
|
-
//
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
green?: LevelsAdjustmentChannel;
|
|
545
|
-
blue?: LevelsAdjustmentChannel;
|
|
558
|
+
// levels for each channel, index 0 is composite channel, followed by document color channels (red, green, blue for RGB,
|
|
559
|
+
// cyan, magenta, yellow, black for CMYK, gray for Grayscale), missing channels use default values (no change)
|
|
560
|
+
channels?: LevelsAdjustmentChannel[];
|
|
546
561
|
}
|
|
547
562
|
|
|
548
563
|
export type CurvesAdjustmentChannel = { input: number; output: number; }[];
|
|
549
564
|
|
|
550
565
|
export interface CurvesAdjustment extends PresetInfo {
|
|
551
566
|
type: 'curves';
|
|
552
|
-
//
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
567
|
+
// curve for each channel, index 0 is composite channel, followed by document color channels (red, green, blue for RGB,
|
|
568
|
+
// cyan, magenta, yellow, black for CMYK, gray for Grayscale), missing or empty curve means no change to the channel
|
|
569
|
+
channels?: CurvesAdjustmentChannel[];
|
|
570
|
+
// curves drawn with pencil tool, lookup table of 256 output values (0-255) for each channel (same indexing as
|
|
571
|
+
// `channels`), missing or empty table means no change to the channel, used instead of `channels` when present
|
|
572
|
+
values?: number[][];
|
|
557
573
|
}
|
|
558
574
|
|
|
559
575
|
export interface ExposureAdjustment extends PresetInfo {
|
|
@@ -581,7 +597,17 @@ export interface HueSaturationAdjustmentChannel {
|
|
|
581
597
|
|
|
582
598
|
export interface HueSaturationAdjustment extends PresetInfo {
|
|
583
599
|
type: 'hue/saturation';
|
|
584
|
-
|
|
600
|
+
colorize?: boolean;
|
|
601
|
+
colorization?: {
|
|
602
|
+
hue: number; // 0..360
|
|
603
|
+
saturation: number; // 0..100
|
|
604
|
+
lightness: number; // -100..100
|
|
605
|
+
};
|
|
606
|
+
master?: {
|
|
607
|
+
hue: number;
|
|
608
|
+
saturation: number;
|
|
609
|
+
lightness: number;
|
|
610
|
+
};
|
|
585
611
|
reds?: HueSaturationAdjustmentChannel;
|
|
586
612
|
yellows?: HueSaturationAdjustmentChannel;
|
|
587
613
|
greens?: HueSaturationAdjustmentChannel;
|
|
@@ -670,6 +696,7 @@ export interface ColorStop {
|
|
|
670
696
|
color: Color;
|
|
671
697
|
location: number;
|
|
672
698
|
midpoint: number;
|
|
699
|
+
type?: 'foreground' | 'background'; // stop uses foreground/background color (`color` is the color at the time of saving)
|
|
673
700
|
}
|
|
674
701
|
|
|
675
702
|
export interface OpacityStop {
|
|
@@ -737,6 +764,15 @@ export type LinkedFile = {
|
|
|
737
764
|
};
|
|
738
765
|
}
|
|
739
766
|
|
|
767
|
+
export interface LevelsFilterAdjustment {
|
|
768
|
+
channels: ('composite' | 'red' | 'green' | 'blue')[];
|
|
769
|
+
shadowInput?: number; // 0..255
|
|
770
|
+
highlightInput?: number; // 0..255
|
|
771
|
+
shadowOutput?: number; // 0..255
|
|
772
|
+
highlightOutput?: number; // 0..255
|
|
773
|
+
midtoneInput?: number; // gamma, 1 by default
|
|
774
|
+
}
|
|
775
|
+
|
|
740
776
|
type FilterVariant = {
|
|
741
777
|
type: 'average' | 'blur' | 'blur more';
|
|
742
778
|
} | {
|
|
@@ -1164,7 +1200,7 @@ type FilterVariant = {
|
|
|
1164
1200
|
} | {
|
|
1165
1201
|
type: 'curves';
|
|
1166
1202
|
filter: {
|
|
1167
|
-
presetKind
|
|
1203
|
+
presetKind?: 'custom' | 'default';
|
|
1168
1204
|
adjustments?: ({
|
|
1169
1205
|
channels: ('composite' | 'red' | 'green' | 'blue')[];
|
|
1170
1206
|
curve: { x: number; y: number; curved?: boolean; }[];
|
|
@@ -1173,6 +1209,12 @@ type FilterVariant = {
|
|
|
1173
1209
|
values: number[];
|
|
1174
1210
|
})[];
|
|
1175
1211
|
};
|
|
1212
|
+
} | {
|
|
1213
|
+
type: 'levels';
|
|
1214
|
+
filter: {
|
|
1215
|
+
presetKind?: 'custom' | 'default';
|
|
1216
|
+
adjustments?: LevelsFilterAdjustment[];
|
|
1217
|
+
};
|
|
1176
1218
|
} | {
|
|
1177
1219
|
type: 'invert';
|
|
1178
1220
|
} | {
|
|
@@ -1182,8 +1224,75 @@ type FilterVariant = {
|
|
|
1182
1224
|
contrast: number;
|
|
1183
1225
|
useLegacy: boolean;
|
|
1184
1226
|
};
|
|
1227
|
+
} | {
|
|
1228
|
+
type: 'camera raw';
|
|
1229
|
+
filter: CameraRawFilterSettings;
|
|
1185
1230
|
};
|
|
1186
1231
|
|
|
1232
|
+
export type CameraRawCurvePoint = { input: number; output: number; };
|
|
1233
|
+
export type CameraRawColors = { red?: number; orange?: number; yellow?: number; green?: number; aqua?: number; blue?: number; purple?: number; magenta?: number; };
|
|
1234
|
+
export type CameraRawColorGradingWheel = { hue?: number; saturation?: number; luminance?: number; };
|
|
1235
|
+
|
|
1236
|
+
// Camera Raw Filter settings (missing values use Camera Raw defaults), settings that are not supported are not preserved
|
|
1237
|
+
export interface CameraRawFilterSettings {
|
|
1238
|
+
version?: string; // Camera Raw version (e.g. '18.4')
|
|
1239
|
+
processVersion?: number;
|
|
1240
|
+
processVersionCode?: number;
|
|
1241
|
+
whiteBalance?: string; // raw white balance value (e.g. 'Cst ' for custom)
|
|
1242
|
+
temperature?: number;
|
|
1243
|
+
tint?: number;
|
|
1244
|
+
exposure?: number;
|
|
1245
|
+
contrast?: number;
|
|
1246
|
+
highlights?: number;
|
|
1247
|
+
shadows?: number;
|
|
1248
|
+
whites?: number;
|
|
1249
|
+
blacks?: number;
|
|
1250
|
+
texture?: number;
|
|
1251
|
+
clarity?: number;
|
|
1252
|
+
dehaze?: number;
|
|
1253
|
+
vibrance?: number;
|
|
1254
|
+
saturation?: number;
|
|
1255
|
+
parametricCurve?: {
|
|
1256
|
+
shadows?: number;
|
|
1257
|
+
darks?: number;
|
|
1258
|
+
lights?: number;
|
|
1259
|
+
highlights?: number;
|
|
1260
|
+
shadowSplit?: number;
|
|
1261
|
+
midtoneSplit?: number;
|
|
1262
|
+
highlightSplit?: number;
|
|
1263
|
+
};
|
|
1264
|
+
pointCurve?: {
|
|
1265
|
+
composite?: CameraRawCurvePoint[];
|
|
1266
|
+
red?: CameraRawCurvePoint[];
|
|
1267
|
+
green?: CameraRawCurvePoint[];
|
|
1268
|
+
blue?: CameraRawCurvePoint[];
|
|
1269
|
+
};
|
|
1270
|
+
hsl?: {
|
|
1271
|
+
hue?: CameraRawColors;
|
|
1272
|
+
saturation?: CameraRawColors;
|
|
1273
|
+
luminance?: CameraRawColors;
|
|
1274
|
+
};
|
|
1275
|
+
colorGrading?: {
|
|
1276
|
+
shadows?: CameraRawColorGradingWheel;
|
|
1277
|
+
midtones?: CameraRawColorGradingWheel;
|
|
1278
|
+
highlights?: CameraRawColorGradingWheel;
|
|
1279
|
+
global?: CameraRawColorGradingWheel;
|
|
1280
|
+
blending?: number;
|
|
1281
|
+
balance?: number;
|
|
1282
|
+
};
|
|
1283
|
+
sharpening?: { amount?: number; radius?: number; detail?: number; masking?: number; };
|
|
1284
|
+
noiseReduction?: {
|
|
1285
|
+
luminance?: number;
|
|
1286
|
+
luminanceDetail?: number;
|
|
1287
|
+
luminanceContrast?: number;
|
|
1288
|
+
color?: number;
|
|
1289
|
+
colorDetail?: number;
|
|
1290
|
+
colorSmoothness?: number;
|
|
1291
|
+
};
|
|
1292
|
+
grain?: { amount?: number; size?: number; roughness?: number; };
|
|
1293
|
+
postCropVignette?: { amount?: number; midpoint?: number; feather?: number; roundness?: number; };
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1187
1296
|
/*
|
|
1188
1297
|
export interface Position3D {
|
|
1189
1298
|
x: number;
|
|
@@ -1234,6 +1343,7 @@ export interface PlacedLayer {
|
|
|
1234
1343
|
id: string; // id of linked image file (psd.linkedFiles), must be in a GUID format (example: 20953ddb-9391-11ec-b4f1-c15674f50bc4)
|
|
1235
1344
|
placed?: string; // unique id
|
|
1236
1345
|
type: PlacedLayerType;
|
|
1346
|
+
external?: boolean; // linked smart object (linked file is stored outside of the document)
|
|
1237
1347
|
pageNumber?: number;
|
|
1238
1348
|
totalPages?: number;
|
|
1239
1349
|
frameStep?: { numerator: number; denominator: number; };
|
|
@@ -1258,11 +1368,12 @@ export type AdjustmentLayer = BrightnessAdjustment | LevelsAdjustment | CurvesAd
|
|
|
1258
1368
|
InvertAdjustment | PosterizeAdjustment | ThresholdAdjustment | GradientMapAdjustment |
|
|
1259
1369
|
SelectiveColorAdjustment;
|
|
1260
1370
|
|
|
1261
|
-
export type LayerColor = 'none' | 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'violet' | 'gray'
|
|
1371
|
+
export type LayerColor = 'none' | 'red' | 'orange' | 'yellow' | 'green' | 'blue' | 'violet' | 'gray' |
|
|
1372
|
+
'seafoam' | 'indigo' | 'magenta' | 'fuchsia';
|
|
1262
1373
|
|
|
1263
1374
|
export interface KeyDescriptorItem {
|
|
1264
1375
|
keyShapeInvalidated?: boolean;
|
|
1265
|
-
keyOriginType?: number;
|
|
1376
|
+
keyOriginType?: number; // shape type: 1 - rectangle, 2 - rounded rectangle, 4 - line, 5 - ellipse, 8 - polygon
|
|
1266
1377
|
keyOriginResolution?: number;
|
|
1267
1378
|
keyOriginRRectRadii?: {
|
|
1268
1379
|
topRight: UnitsValue;
|
|
@@ -1280,10 +1391,7 @@ export interface KeyDescriptorItem {
|
|
|
1280
1391
|
transform?: number[]; // 2d transform matrix [xx, xy, yx, yy, tx, ty]
|
|
1281
1392
|
}
|
|
1282
1393
|
|
|
1283
|
-
export interface
|
|
1284
|
-
invert?: boolean;
|
|
1285
|
-
notLink?: boolean;
|
|
1286
|
-
disable?: boolean;
|
|
1394
|
+
export interface VectorPathData {
|
|
1287
1395
|
fillStartsWithAllPixels?: boolean;
|
|
1288
1396
|
clipboard?: {
|
|
1289
1397
|
top: number;
|
|
@@ -1295,6 +1403,20 @@ export interface LayerVectorMask {
|
|
|
1295
1403
|
paths: BezierPath[];
|
|
1296
1404
|
}
|
|
1297
1405
|
|
|
1406
|
+
export interface LayerVectorMask extends VectorPathData {
|
|
1407
|
+
invert?: boolean;
|
|
1408
|
+
notLink?: boolean;
|
|
1409
|
+
disable?: boolean;
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
export interface SavedPath extends VectorPathData {
|
|
1413
|
+
name: string;
|
|
1414
|
+
symmetryMode?: string; // raw enum value, e.g. 'pathSymmetryModeBasicPath'
|
|
1415
|
+
vectorOrigination?: {
|
|
1416
|
+
keyDescriptorList: KeyDescriptorItem[];
|
|
1417
|
+
};
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1298
1420
|
export interface AnimationFrame {
|
|
1299
1421
|
frames: number[]; // IDs of frames that this modifiers applies to
|
|
1300
1422
|
enable?: boolean;
|
|
@@ -1371,11 +1493,13 @@ export interface LayerAdditionalInfo {
|
|
|
1371
1493
|
blendInteriorElements?: boolean;
|
|
1372
1494
|
knockout?: boolean;
|
|
1373
1495
|
layerMaskAsGlobalMask?: boolean;
|
|
1496
|
+
vectorMaskAsGlobalMask?: boolean;
|
|
1374
1497
|
protected?: {
|
|
1375
1498
|
transparency?: boolean;
|
|
1376
1499
|
composite?: boolean;
|
|
1377
1500
|
position?: boolean;
|
|
1378
1501
|
artboards?: boolean;
|
|
1502
|
+
all?: boolean;
|
|
1379
1503
|
};
|
|
1380
1504
|
layerColor?: LayerColor;
|
|
1381
1505
|
referencePoint?: {
|
|
@@ -1393,7 +1517,7 @@ export interface LayerAdditionalInfo {
|
|
|
1393
1517
|
};
|
|
1394
1518
|
effects?: LayerEffectsInfo;
|
|
1395
1519
|
text?: LayerTextData;
|
|
1396
|
-
patterns?: PatternInfo[];
|
|
1520
|
+
patterns?: PatternInfo[];
|
|
1397
1521
|
vectorFill?: VectorContent;
|
|
1398
1522
|
vectorStroke?: {
|
|
1399
1523
|
strokeEnabled?: boolean;
|
|
@@ -1415,9 +1539,15 @@ export interface LayerAdditionalInfo {
|
|
|
1415
1539
|
vectorMask?: LayerVectorMask;
|
|
1416
1540
|
usingAlignedRendering?: boolean;
|
|
1417
1541
|
timestamp?: number; // seconds
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1542
|
+
generatorSettings?: { // Generator (Export As) settings
|
|
1543
|
+
exportAs?: {
|
|
1544
|
+
exportOption?: string; // JSON string
|
|
1545
|
+
scaleSettings?: string; // JSON string
|
|
1546
|
+
};
|
|
1547
|
+
assets?: string; // JSON string, Generator image assets settings (only on document)
|
|
1548
|
+
layerTime?: number; // seconds
|
|
1549
|
+
crema?: string; // JSON string, Export As document settings (only on document)
|
|
1550
|
+
};
|
|
1421
1551
|
adjustment?: AdjustmentLayer;
|
|
1422
1552
|
placedLayer?: PlacedLayer;
|
|
1423
1553
|
vectorOrigination?: {
|
|
@@ -1492,6 +1622,26 @@ export interface LayerAdditionalInfo {
|
|
|
1492
1622
|
ranges: { sourceRange: number[]; destRange: number[]; }[];
|
|
1493
1623
|
};
|
|
1494
1624
|
vowv?: number; // ???
|
|
1625
|
+
foreignEffectId?: number; // foreign effect ID (Photoshop 6.0)
|
|
1626
|
+
framedGroup?: { // frame tool group (frame layer)
|
|
1627
|
+
rect: { top: number; left: number; bottom: number; right: number; };
|
|
1628
|
+
type: number; // 1 - rectangle, 2 - ellipse
|
|
1629
|
+
lockPPI?: boolean;
|
|
1630
|
+
preferredResolution?: number;
|
|
1631
|
+
savedIteratedName?: string;
|
|
1632
|
+
};
|
|
1633
|
+
animationEffects?: Uint8Array; // animation effects (Photoshop CS6, raw descriptor data)
|
|
1634
|
+
patternData?: { // pattern data (Photoshop 6.0)
|
|
1635
|
+
signature: string;
|
|
1636
|
+
key: string;
|
|
1637
|
+
copyOnSheetDuplication: boolean;
|
|
1638
|
+
patterns: {
|
|
1639
|
+
colorHandling: 'convert' | 'avoid conversion' | 'luminance only';
|
|
1640
|
+
name: string;
|
|
1641
|
+
id: string;
|
|
1642
|
+
}[];
|
|
1643
|
+
}[];
|
|
1644
|
+
pixelSourceData?: Uint8Array[]; // pixel source data of video layers (raw data of each entry)
|
|
1495
1645
|
pixelSource?: {
|
|
1496
1646
|
type: 'vdPS';
|
|
1497
1647
|
origin: { x: number; y: number; };
|
|
@@ -1525,6 +1675,20 @@ export enum LayerCompCapturedInfo {
|
|
|
1525
1675
|
Appearance = 4,
|
|
1526
1676
|
}
|
|
1527
1677
|
|
|
1678
|
+
export interface HalftoneScreen {
|
|
1679
|
+
frequency: number;
|
|
1680
|
+
frequencyUnits: 'lines/inch' | 'lines/cm';
|
|
1681
|
+
angle: number; // degrees
|
|
1682
|
+
shape: 'round' | 'ellipse' | 'line' | 'square' | 'cross' | 'diamond';
|
|
1683
|
+
accurateScreens: boolean;
|
|
1684
|
+
printerDefaultScreens: boolean;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
export interface PrintTransferFunction {
|
|
1688
|
+
curve: number[]; // 13 points, values 0..1000 (0% - 100%), -1 for missing points (first and last point are always set)
|
|
1689
|
+
override: boolean;
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1528
1692
|
export interface ImageResources {
|
|
1529
1693
|
layerState?: number;
|
|
1530
1694
|
layerSelectionIds?: number[];
|
|
@@ -1554,6 +1718,8 @@ export interface ImageResources {
|
|
|
1554
1718
|
guides?: {
|
|
1555
1719
|
location: number;
|
|
1556
1720
|
direction: 'horizontal' | 'vertical';
|
|
1721
|
+
color?: RGB; // Photoshop default is cyan (74, 255, 255)
|
|
1722
|
+
id?: string; // unique id (GUID)
|
|
1557
1723
|
}[];
|
|
1558
1724
|
};
|
|
1559
1725
|
resolutionInfo?: {
|
|
@@ -1578,6 +1744,7 @@ export interface ImageResources {
|
|
|
1578
1744
|
printerManagesColors?: boolean;
|
|
1579
1745
|
printerName?: string;
|
|
1580
1746
|
printerProfile?: string;
|
|
1747
|
+
printerProfileColorSpace?: 'rgb' | 'grayscale'; // color space of printer profile, missing value means 'rgb'
|
|
1581
1748
|
printSixteenBit?: boolean;
|
|
1582
1749
|
renderingIntent?: RenderingIntent;
|
|
1583
1750
|
hardProof?: boolean;
|
|
@@ -1605,7 +1772,76 @@ export interface ImageResources {
|
|
|
1605
1772
|
printFlags?: boolean;
|
|
1606
1773
|
};
|
|
1607
1774
|
iccUntaggedProfile?: boolean;
|
|
1775
|
+
colorSamplers?: {
|
|
1776
|
+
x: number; // pixels
|
|
1777
|
+
y: number; // pixels
|
|
1778
|
+
colorSpace: number; // -1 - actual color, 0 - RGB, 1 - HSB, 2 - CMYK, 7 - Lab, 8 - grayscale, ...
|
|
1779
|
+
depth?: number; // sample size (Photoshop CS3 format), samplers are written in Photoshop 5 format if missing
|
|
1780
|
+
}[];
|
|
1781
|
+
effectsVisible?: boolean; // global flag to show or hide all layer effects
|
|
1782
|
+
iccProfile?: Uint8Array; // raw ICC profile data
|
|
1783
|
+
exifData?: Uint8Array; // raw EXIF data (TIFF format)
|
|
1784
|
+
iptcData?: Uint8Array; // raw IPTC-NAA record
|
|
1785
|
+
windowsDevMode?: Uint8Array; // raw Windows DEVMODE structure (printer settings)
|
|
1786
|
+
outputSettings?: any; // Save for Web output settings (raw descriptor)
|
|
1787
|
+
colorHalftoneScreens?: HalftoneScreen[]; // cyan, magenta, yellow and black
|
|
1788
|
+
grayscaleHalftoneScreens?: HalftoneScreen[];
|
|
1789
|
+
colorTransferFunctions?: PrintTransferFunction[]; // one for each of 4 printing plates
|
|
1790
|
+
grayscaleTransferFunctions?: PrintTransferFunction[];
|
|
1791
|
+
duotoneHalftoneScreens?: HalftoneScreen[];
|
|
1792
|
+
duotoneTransferFunctions?: PrintTransferFunction[];
|
|
1793
|
+
duotoneImageInformation?: Uint8Array; // raw data
|
|
1794
|
+
alternateDuotoneColors?: {
|
|
1795
|
+
colors: Color[];
|
|
1796
|
+
labColors: Uint8Array; // Lab color table (usually 256 colors), 3 bytes for each color (L, a, b)
|
|
1797
|
+
};
|
|
1798
|
+
quickMaskInfo?: {
|
|
1799
|
+
channelId: number;
|
|
1800
|
+
initiallyEmpty: boolean;
|
|
1801
|
+
};
|
|
1802
|
+
measurementScale?: Uint8Array; // raw descriptor data
|
|
1803
|
+
printStyle?: {
|
|
1804
|
+
caption?: boolean;
|
|
1805
|
+
calibrationBars?: boolean;
|
|
1806
|
+
registrationMarks?: boolean;
|
|
1807
|
+
cornerCropMarks?: boolean;
|
|
1808
|
+
centerCropMarks?: boolean;
|
|
1809
|
+
labels?: boolean;
|
|
1810
|
+
negative?: boolean;
|
|
1811
|
+
emulsionDown?: boolean;
|
|
1812
|
+
interpolate?: boolean;
|
|
1813
|
+
backgroundColor?: Color;
|
|
1814
|
+
border?: UnitsValue;
|
|
1815
|
+
bleed?: UnitsValue;
|
|
1816
|
+
resolution?: UnitsValue;
|
|
1817
|
+
vectorData?: boolean;
|
|
1818
|
+
pagePosition?: string; // 'centered' or raw enum value
|
|
1819
|
+
left?: UnitsValue;
|
|
1820
|
+
top?: UnitsValue;
|
|
1821
|
+
scale?: number; // 0..1
|
|
1822
|
+
cropWhenPrinting?: boolean;
|
|
1823
|
+
cropRect?: { top: number; left: number; bottom: number; right: number; };
|
|
1824
|
+
};
|
|
1825
|
+
printFlagsInfo?: {
|
|
1826
|
+
centerCropMarks: boolean;
|
|
1827
|
+
bleedWidth: number;
|
|
1828
|
+
bleedWidthScale: number;
|
|
1829
|
+
};
|
|
1830
|
+
indexedColorCount?: number; // number of used colors in indexed color palette
|
|
1831
|
+
transparencyIndex?: number; // index of transparent color in indexed color palette
|
|
1832
|
+
alphaChannelDisplayInfo?: {
|
|
1833
|
+
color?: Color;
|
|
1834
|
+
rawColor?: { colorSpace: number; values: number[]; }; // color in color space not supported by this library (instead of `color`)
|
|
1835
|
+
opacity: number; // 0..1
|
|
1836
|
+
kind: 'selected' | 'protected' | 'spot'; // color indicates selected areas, protected (masked) areas or spot color
|
|
1837
|
+
}[];
|
|
1608
1838
|
pathSelectionState?: string[];
|
|
1839
|
+
savedPaths?: SavedPath[]; // paths from the paths panel
|
|
1840
|
+
workPath?: VectorPathData;
|
|
1841
|
+
clippingPath?: {
|
|
1842
|
+
name: string; // name of the saved path used as clipping path
|
|
1843
|
+
flatness: number; // device pixels, 0 for printer default
|
|
1844
|
+
};
|
|
1609
1845
|
imageReadyVariables?: string;
|
|
1610
1846
|
imageReadyDataSets?: string;
|
|
1611
1847
|
animations?: Animations;
|
|
@@ -1794,7 +2030,7 @@ export interface Psd extends LayerAdditionalInfo {
|
|
|
1794
2030
|
imageData?: PixelData;
|
|
1795
2031
|
rawCompositeData?: Uint8Array;
|
|
1796
2032
|
/** Information needed to decode `rawCompositeData` (see `getCompositeImageData`) */
|
|
1797
|
-
rawCompositeDataInfo?: { large: boolean; globalAlpha: boolean; };
|
|
2033
|
+
rawCompositeDataInfo?: { large: boolean; globalAlpha: boolean; layersInGlobalInfo?: boolean; };
|
|
1798
2034
|
imageResources?: ImageResources;
|
|
1799
2035
|
linkedFiles?: LinkedFile[]; // used in smart objects
|
|
1800
2036
|
artboards?: {
|
|
@@ -1865,4 +2101,7 @@ export interface WriteOptions {
|
|
|
1865
2101
|
/** Uses zip compression when writing PSD file, will result in smaller file size but may be incompatible
|
|
1866
2102
|
* with some software. It may also be significantly slower. */
|
|
1867
2103
|
compress?: boolean;
|
|
2104
|
+
|
|
2105
|
+
/** Used only for development. */
|
|
2106
|
+
log?: (...args: any[]) => void;
|
|
1868
2107
|
}
|