ag-psd 30.1.1 → 30.2.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.13.1-x64-cf738c9d/017325ac +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/043c7b90 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/05135617 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/059f8558 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0706ecb8 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/0db754a7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/1130885f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/15f0e479 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/20477c23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/20dfa422 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2a19133e +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2b069ee0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2de09439 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2e44f5f0 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/2fb229a9 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/3144b401 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/37481985 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4511bacf +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/49d22b79 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/4f5702bd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/514cc428 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/57d3380b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6024ce3f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/61735b23 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/63dbdb75 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6cbfc0ec +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/6f08372c +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7100ee08 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/71df9cb3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/75e41e43 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/7ea06cea +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/8568576b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87372817 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/87cf2209 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/932f0770 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a79a40bb +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/a7e80865 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/acc36e66 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b3c2fab7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/b69ed3a3 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/bdff1628 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c0b789d2 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/c314aece +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cfc49f4f +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/cff9434a +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/d02dd6f7 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/dc86f000 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/de74e659 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e03e2acd +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e158d332 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6735171 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6745c2b +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/e6b99945 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/eeeebdfe +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fbca6276 +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fc97d72d +0 -0
- package/.v8-cache/v24.13.1-x64-cf738c9d/fd0a2987 +0 -0
- package/CHANGELOG.md +3 -0
- package/README.md +1 -1
- package/README_PSD.md +1 -1
- package/dist/abr.js +43 -56
- package/dist/abr.js.map +1 -1
- package/dist/additionalInfo.js +770 -808
- package/dist/additionalInfo.js.map +1 -1
- package/dist/ase.js +21 -21
- package/dist/ase.js.map +1 -1
- package/dist/bundle.js +2592 -2778
- package/dist/csh.js +18 -29
- package/dist/csh.js.map +1 -1
- package/dist/descriptor.js +234 -269
- package/dist/descriptor.js.map +1 -1
- package/dist/effectsHelpers.js +91 -112
- package/dist/effectsHelpers.js.map +1 -1
- package/dist/engineData.js +45 -51
- package/dist/engineData.js.map +1 -1
- package/dist/engineData2.js +8 -9
- package/dist/engineData2.js.map +1 -1
- package/dist/helpers.js +75 -81
- package/dist/helpers.js.map +1 -1
- package/dist/imageResources.js +342 -381
- package/dist/imageResources.js.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/initializeCanvas.js +2 -2
- package/dist/initializeCanvas.js.map +1 -1
- package/dist/jpeg.js +279 -279
- package/dist/jpeg.js.map +1 -1
- package/dist/psdReader.js +336 -347
- package/dist/psdReader.js.map +1 -1
- package/dist/psdWriter.d.ts +2 -1
- package/dist/psdWriter.js +225 -206
- package/dist/psdWriter.js.map +1 -1
- package/dist/text.js +98 -122
- package/dist/text.js.map +1 -1
- package/dist/utf8.js +22 -22
- package/dist/utf8.js.map +1 -1
- package/dist-es/abr.js +41 -54
- package/dist-es/abr.js.map +1 -1
- package/dist-es/additionalInfo.js +765 -803
- package/dist-es/additionalInfo.js.map +1 -1
- package/dist-es/ase.js +20 -20
- package/dist-es/ase.js.map +1 -1
- package/dist-es/csh.js +16 -27
- package/dist-es/csh.js.map +1 -1
- package/dist-es/descriptor.js +284 -319
- package/dist-es/descriptor.js.map +1 -1
- package/dist-es/effectsHelpers.js +88 -109
- package/dist-es/effectsHelpers.js.map +1 -1
- package/dist-es/engineData.js +45 -51
- package/dist-es/engineData.js.map +1 -1
- package/dist-es/engineData2.js +8 -9
- package/dist-es/engineData2.js.map +1 -1
- package/dist-es/helpers.js +79 -85
- package/dist-es/helpers.js.map +1 -1
- package/dist-es/imageResources.js +338 -377
- package/dist-es/imageResources.js.map +1 -1
- package/dist-es/index.js +4 -4
- package/dist-es/index.js.map +1 -1
- package/dist-es/jpeg.js +279 -279
- package/dist-es/jpeg.js.map +1 -1
- package/dist-es/psdReader.js +333 -344
- package/dist-es/psdReader.js.map +1 -1
- package/dist-es/psdWriter.d.ts +2 -1
- package/dist-es/psdWriter.js +220 -202
- package/dist-es/psdWriter.js.map +1 -1
- package/dist-es/text.js +98 -122
- package/dist-es/text.js.map +1 -1
- package/dist-es/utf8.js +22 -22
- package/dist-es/utf8.js.map +1 -1
- package/package.json +1 -1
- package/publish.js +24 -0
- package/src/additionalInfo.ts +15 -11
- package/src/psdWriter.ts +76 -1
- package/tsconfig.json +4 -3
package/dist-es/utf8.js
CHANGED
|
@@ -13,13 +13,13 @@ function charLengthInBytes(code) {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
export function stringLengthInBytes(value) {
|
|
16
|
-
|
|
17
|
-
for (
|
|
18
|
-
|
|
16
|
+
let result = 0;
|
|
17
|
+
for (let i = 0; i < value.length; i++) {
|
|
18
|
+
const code = value.charCodeAt(i);
|
|
19
19
|
// high surrogate
|
|
20
20
|
if (code >= 0xd800 && code <= 0xdbff) {
|
|
21
21
|
if ((i + 1) < value.length) {
|
|
22
|
-
|
|
22
|
+
const extra = value.charCodeAt(i + 1);
|
|
23
23
|
// low surrogate
|
|
24
24
|
if ((extra & 0xfc00) === 0xdc00) {
|
|
25
25
|
i++;
|
|
@@ -34,7 +34,7 @@ export function stringLengthInBytes(value) {
|
|
|
34
34
|
return result;
|
|
35
35
|
}
|
|
36
36
|
function writeCharacter(buffer, offset, code) {
|
|
37
|
-
|
|
37
|
+
const length = charLengthInBytes(code);
|
|
38
38
|
switch (length) {
|
|
39
39
|
case 1:
|
|
40
40
|
buffer[offset] = code;
|
|
@@ -58,16 +58,16 @@ function writeCharacter(buffer, offset, code) {
|
|
|
58
58
|
return length;
|
|
59
59
|
}
|
|
60
60
|
export function encodeStringTo(buffer, offset, value) {
|
|
61
|
-
for (
|
|
62
|
-
|
|
61
|
+
for (let i = 0; i < value.length; i++) {
|
|
62
|
+
const code = value.charCodeAt(i);
|
|
63
63
|
// high surrogate
|
|
64
64
|
if (code >= 0xd800 && code <= 0xdbff) {
|
|
65
65
|
if ((i + 1) < value.length) {
|
|
66
|
-
|
|
66
|
+
const extra = value.charCodeAt(i + 1);
|
|
67
67
|
// low surrogate
|
|
68
68
|
if ((extra & 0xfc00) === 0xdc00) {
|
|
69
69
|
i++;
|
|
70
|
-
|
|
70
|
+
const fullCode = ((code & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;
|
|
71
71
|
offset += writeCharacter(buffer, offset, fullCode);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -82,7 +82,7 @@ export function encodeString(value) {
|
|
|
82
82
|
if (value.length > 1000 && typeof TextEncoder !== 'undefined') {
|
|
83
83
|
return (new TextEncoder()).encode(value);
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
const buffer = new Uint8Array(stringLengthInBytes(value));
|
|
86
86
|
encodeStringTo(buffer, 0, value);
|
|
87
87
|
return buffer;
|
|
88
88
|
}
|
|
@@ -90,7 +90,7 @@ function continuationByte(buffer, index) {
|
|
|
90
90
|
if (index >= buffer.length) {
|
|
91
91
|
throw Error('Invalid byte index');
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
const continuationByte = buffer[index];
|
|
94
94
|
if ((continuationByte & 0xC0) === 0x80) {
|
|
95
95
|
return continuationByte & 0x3F;
|
|
96
96
|
}
|
|
@@ -102,35 +102,35 @@ export function decodeString(value) {
|
|
|
102
102
|
if (value.byteLength > 1000 && typeof TextDecoder !== 'undefined') {
|
|
103
103
|
return (new TextDecoder()).decode(value);
|
|
104
104
|
}
|
|
105
|
-
|
|
106
|
-
for (
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
let result = [];
|
|
106
|
+
for (let i = 0; i < value.length;) {
|
|
107
|
+
const byte1 = value[i++];
|
|
108
|
+
let code;
|
|
109
109
|
if ((byte1 & 0x80) === 0) {
|
|
110
110
|
code = byte1;
|
|
111
111
|
}
|
|
112
112
|
else if ((byte1 & 0xe0) === 0xc0) {
|
|
113
|
-
|
|
113
|
+
const byte2 = continuationByte(value, i++);
|
|
114
114
|
code = ((byte1 & 0x1f) << 6) | byte2;
|
|
115
115
|
if (code < 0x80) {
|
|
116
116
|
throw Error('Invalid continuation byte');
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
else if ((byte1 & 0xf0) === 0xe0) {
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
const byte2 = continuationByte(value, i++);
|
|
121
|
+
const byte3 = continuationByte(value, i++);
|
|
122
122
|
code = ((byte1 & 0x0f) << 12) | (byte2 << 6) | byte3;
|
|
123
123
|
if (code < 0x0800) {
|
|
124
124
|
throw Error('Invalid continuation byte');
|
|
125
125
|
}
|
|
126
126
|
if (code >= 0xd800 && code <= 0xdfff) {
|
|
127
|
-
throw Error(
|
|
127
|
+
throw Error(`Lone surrogate U+${code.toString(16).toUpperCase()} is not a scalar value`);
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
else if ((byte1 & 0xf8) === 0xf0) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
const byte2 = continuationByte(value, i++);
|
|
132
|
+
const byte3 = continuationByte(value, i++);
|
|
133
|
+
const byte4 = continuationByte(value, i++);
|
|
134
134
|
code = ((byte1 & 0x0f) << 0x12) | (byte2 << 0x0c) | (byte3 << 0x06) | byte4;
|
|
135
135
|
if (code < 0x010000 || code > 0x10ffff) {
|
|
136
136
|
throw Error('Invalid continuation byte');
|
package/dist-es/utf8.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utf8.js","sourceRoot":"../src/","sources":["utf8.ts"],"names":[],"mappings":"AAAA,SAAS,iBAAiB,CAAC,IAAY;IACtC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE;QAC9B,OAAO,CAAC,CAAC;KACT;SAAM,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE;QACrC,OAAO,CAAC,CAAC;KACT;SAAM,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE;QACrC,OAAO,CAAC,CAAC;KACT;SAAM;QACN,OAAO,CAAC,CAAC;KACT;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAChD,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,
|
|
1
|
+
{"version":3,"file":"utf8.js","sourceRoot":"../src/","sources":["utf8.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/publish.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const { execSync } = require('child_process');
|
|
2
|
+
const { version } = require('./package.json');
|
|
3
|
+
|
|
4
|
+
try {
|
|
5
|
+
execSync(`git rev-parse ${version}`, { stdio: 'ignore' });
|
|
6
|
+
console.error(`Error: git tag ${version} already exists`);
|
|
7
|
+
process.exit(1);
|
|
8
|
+
} catch {
|
|
9
|
+
// Tag does not exist, continue
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
try {
|
|
13
|
+
execSync('npm whoami', { stdio: 'ignore' });
|
|
14
|
+
} catch {
|
|
15
|
+
console.log('Not logged in to npm, logging in...');
|
|
16
|
+
execSync('npm login', { stdio: 'inherit' });
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
execSync(`git tag ${version}`, { stdio: 'inherit' });
|
|
20
|
+
execSync(`git push origin ${version}`, { stdio: 'inherit' });
|
|
21
|
+
|
|
22
|
+
execSync('npm publish', { stdio: 'inherit' });
|
|
23
|
+
|
|
24
|
+
console.log(`Published ${version}`);
|
package/src/additionalInfo.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { readEffects, writeEffects } from './effectsHelpers';
|
|
|
3
3
|
import { clamp, createEnum, layerColors, MOCK_HANDLERS } from './helpers';
|
|
4
4
|
import { LayerAdditionalInfo, BezierPath, Psd, BrightnessAdjustment, ExposureAdjustment, VibranceAdjustment, ColorBalanceAdjustment, BlackAndWhiteAdjustment, PhotoFilterAdjustment, ChannelMixerChannel, ChannelMixerAdjustment, PosterizeAdjustment, ThresholdAdjustment, GradientMapAdjustment, CMYK, SelectiveColorAdjustment, ColorLookupAdjustment, LevelsAdjustmentChannel, LevelsAdjustment, CurvesAdjustment, CurvesAdjustmentChannel, HueSaturationAdjustment, HueSaturationAdjustmentChannel, PresetInfo, Color, ColorBalanceValues, WriteOptions, LinkedFile, PlacedLayerType, Warp, KeyDescriptorItem, BooleanOperation, LayerEffectsInfo, Annotation, LayerVectorMask, AnimationFrame, Timeline, PlacedLayerFilter, UnitsValue, Filter, PlacedLayer, ReadOptions, Layer } from './psd';
|
|
5
5
|
import { PsdReader, readSignature, readUnicodeString, skipBytes, readUint32, readUint8, readFloat64, readUint16, readBytes, readInt16, checkSignature, readFloat32, readFixedPointPath32, readSection, readColor, readInt32, readPascalString, readUnicodeStringWithLength, readAsciiString, readPattern, readLayerInfo } from './psdReader';
|
|
6
|
-
import { PsdWriter, writeZeros, writeSignature, writeBytes, writeUint32, writeUint16, writeFloat64, writeUint8, writeInt16, writeFloat32, writeFixedPointPath32, writeUnicodeString, writeSection, writeUnicodeStringWithPadding, writeColor, writePascalString, writeInt32 } from './psdWriter';
|
|
6
|
+
import { PsdWriter, writeZeros, writeSignature, writeBytes, writeUint32, writeUint16, writeFloat64, writeUint8, writeInt16, writeFloat32, writeFixedPointPath32, writeUnicodeString, writeSection, writeUnicodeStringWithPadding, writeColor, writePascalString, writeInt32, writePattern } from './psdWriter';
|
|
7
7
|
import { Annt, BlnM, DescriptorColor, DescriptorUnitsValue, parsePercent, parseUnits, parseUnitsOrNumber, QuiltWarpDescriptor, strokeStyleLineAlignment, strokeStyleLineCapType, strokeStyleLineJoinType, TextDescriptor, textGridding, unitsPercent, unitsValue, WarpDescriptor, warpStyle, writeVersionAndDescriptor, readVersionAndDescriptor, StrokeDescriptor, Ornt, horzVrtcToXY, LmfxDescriptor, Lfx2Descriptor, FrameListDescriptor, TimelineDescriptor, FrameDescriptor, xyToHorzVrtc, serializeEffects, parseEffects, parseColor, serializeColor, serializeVectorContent, parseVectorContent, parseTrackList, serializeTrackList, FractionDescriptor, BlrM, BlrQ, SmBQ, SmBM, DspM, UndA, Cnvr, RplS, SphM, Wvtp, ZZTy, Dstr, Chnl, MztT, Lns, blurType, DfsM, ExtT, ExtR, FlCl, CntE, WndM, Drct, IntE, IntC, FlMd, unitsPercentF, frac, ClrS, descBoundsToBounds, boundsToDescBounds, presetKindType, gradientInterpolationMethodType, PxScDescriptor } from './descriptor';
|
|
8
8
|
import { serializeEngineData, parseEngineData } from './engineData';
|
|
9
9
|
import { encodeEngineData, decodeEngineData } from './text';
|
|
@@ -3679,22 +3679,26 @@ if (MOCK_HANDLERS) {
|
|
|
3679
3679
|
} else {
|
|
3680
3680
|
addHandler(
|
|
3681
3681
|
'Patt', // TODO: handle also Pat2 & Pat3
|
|
3682
|
-
target =>
|
|
3682
|
+
target => !!(target.patterns && target.patterns.length > 0),
|
|
3683
3683
|
(reader, target, left) => {
|
|
3684
|
-
|
|
3685
|
-
|
|
3686
|
-
|
|
3687
|
-
|
|
3688
|
-
|
|
3689
|
-
// if (!target.patterns) target.patterns = [];
|
|
3690
|
-
// target.patterns.push(readPattern(reader));
|
|
3691
|
-
// skipBytes(reader, left());
|
|
3684
|
+
while (left() > 0) {
|
|
3685
|
+
const pattern = readPattern(reader);
|
|
3686
|
+
if (target.patterns === undefined) target.patterns = [];
|
|
3687
|
+
target.patterns.push(pattern);
|
|
3688
|
+
}
|
|
3692
3689
|
},
|
|
3693
|
-
(
|
|
3690
|
+
(writer, target, _, _options) => {
|
|
3691
|
+
const patterns = target.patterns || [];
|
|
3692
|
+
for (const pattern of patterns) {
|
|
3693
|
+
writePattern(writer, pattern);
|
|
3694
|
+
}
|
|
3694
3695
|
},
|
|
3695
3696
|
);
|
|
3696
3697
|
}
|
|
3697
3698
|
|
|
3699
|
+
addHandlerAlias('Pat2', 'Patt');
|
|
3700
|
+
addHandlerAlias('Pat3', 'Patt');
|
|
3701
|
+
|
|
3698
3702
|
/*
|
|
3699
3703
|
interface CAIDesc {
|
|
3700
3704
|
_name: '';
|
package/src/psdWriter.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Psd, Layer, LayerAdditionalInfo, ColorMode, SectionDividerType, WriteOptions, Color, GlobalLayerMaskInfo, PixelData, LayerMaskData, Compression, ChannelID } from './psd';
|
|
1
|
+
import { Psd, Layer, LayerAdditionalInfo, ColorMode, SectionDividerType, WriteOptions, Color, GlobalLayerMaskInfo, PixelData, LayerMaskData, Compression, ChannelID, PatternInfo } from './psd';
|
|
2
2
|
import { hasAlpha, createCanvas, writeDataRLE, LayerChannelData, ChannelData, offsetForChannel, createImageData, fromBlendMode, clamp, LayerMaskFlags, MaskParams, ColorSpace, Bounds, largeAdditionalInfoKeys, RAW_IMAGE_DATA, writeDataZipWithoutPrediction, imageDataToCanvas } from './helpers';
|
|
3
3
|
import { ExtendedWriteOptions, infoHandlers } from './additionalInfo';
|
|
4
4
|
import { InternalImageResources, resourceHandlers } from './imageResources';
|
|
@@ -835,3 +835,78 @@ export function writeColor(writer: PsdWriter, color: Color | undefined) {
|
|
|
835
835
|
writeZeros(writer, 6);
|
|
836
836
|
}
|
|
837
837
|
}
|
|
838
|
+
|
|
839
|
+
// ponytail: only round-trips RGB 8-bit patterns; source colorMode (16-bit/Indexed) is not preserved,
|
|
840
|
+
// since readPattern already converted everything to RGBA. Upgrade if pattern colorMode must survive write.
|
|
841
|
+
export function writePattern(writer: PsdWriter, pattern: PatternInfo) {
|
|
842
|
+
const width = pattern.bounds.w;
|
|
843
|
+
const height = pattern.bounds.h;
|
|
844
|
+
const pixelData: PixelData = { width, height, data: pattern.data };
|
|
845
|
+
|
|
846
|
+
writeUint32(writer, 0); // length, fixed up below
|
|
847
|
+
const pattsOffset = writer.offset;
|
|
848
|
+
|
|
849
|
+
writeUint32(writer, 1); // version
|
|
850
|
+
writeUint32(writer, ColorMode.RGB); // color mode - rgb only
|
|
851
|
+
|
|
852
|
+
writeInt16(writer, pattern.x);
|
|
853
|
+
writeInt16(writer, pattern.y);
|
|
854
|
+
|
|
855
|
+
writeUnicodeString(writer, pattern.name + '\0'); // name
|
|
856
|
+
writePascalString(writer, pattern.id, 1); // id
|
|
857
|
+
|
|
858
|
+
// virtual memory array list
|
|
859
|
+
writeUint32(writer, 3); // version
|
|
860
|
+
writeUint32(writer, 0); // length, fixed up below
|
|
861
|
+
const vlOffset = writer.offset;
|
|
862
|
+
|
|
863
|
+
const top = pattern.bounds.y;
|
|
864
|
+
const left = pattern.bounds.x;
|
|
865
|
+
const bottom = top + height;
|
|
866
|
+
const right = left + width;
|
|
867
|
+
|
|
868
|
+
writeUint32(writer, top);
|
|
869
|
+
writeUint32(writer, left);
|
|
870
|
+
writeUint32(writer, bottom);
|
|
871
|
+
writeUint32(writer, right);
|
|
872
|
+
|
|
873
|
+
writeUint32(writer, 24); // channels count
|
|
874
|
+
|
|
875
|
+
// channels: RGB at indices 0,1,2 and alpha at index 25
|
|
876
|
+
for (let i = 0; i < 24 + 2; i++) {
|
|
877
|
+
const offset = i < 3 ? i : (i === 25 ? 3 : -1);
|
|
878
|
+
|
|
879
|
+
if (offset < 0) {
|
|
880
|
+
writeUint32(writer, 0); // has
|
|
881
|
+
continue;
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
// worst-case RLE size for a single channel: width + 1 per scanline, plus scanline length headers
|
|
885
|
+
const buffer = new Uint8Array(width * height + 2 * height + 2 * width + 16);
|
|
886
|
+
// ponytail: pattern channels always use small (2-byte) RLE scanline headers, matching
|
|
887
|
+
// readPattern which reads them as non-large; `large` here only affects the header width.
|
|
888
|
+
const data = writeDataRLE(buffer, pixelData, [offset], false)!;
|
|
889
|
+
|
|
890
|
+
writeUint32(writer, 1); // has
|
|
891
|
+
writeUint32(writer, data.length + 4 + 16 + 2 + 1); // length
|
|
892
|
+
writeUint32(writer, 8); // pixelDepth
|
|
893
|
+
writeUint32(writer, top);
|
|
894
|
+
writeUint32(writer, left);
|
|
895
|
+
writeUint32(writer, bottom);
|
|
896
|
+
writeUint32(writer, right);
|
|
897
|
+
writeUint16(writer, 8); // pixelDepth2
|
|
898
|
+
writeUint8(writer, 1); // compressionMode - rle
|
|
899
|
+
writeBytes(writer, data);
|
|
900
|
+
}
|
|
901
|
+
|
|
902
|
+
const vlLength = writer.offset - vlOffset;
|
|
903
|
+
let pattsLength = writer.offset - pattsOffset;
|
|
904
|
+
|
|
905
|
+
while (pattsLength % 4) {
|
|
906
|
+
writeZeros(writer, 1);
|
|
907
|
+
pattsLength++;
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
writer.view.setUint32(vlOffset - 4, vlLength, false);
|
|
911
|
+
writer.view.setUint32(pattsOffset - 4, pattsLength, false);
|
|
912
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
|
-
"moduleResolution": "
|
|
4
|
-
"target": "
|
|
5
|
-
"module": "
|
|
3
|
+
"moduleResolution": "node16",
|
|
4
|
+
"target": "es2016",
|
|
5
|
+
"module": "node16",
|
|
6
6
|
"lib": ["es2016", "dom"],
|
|
7
7
|
"noUnusedLocals": true,
|
|
8
8
|
"noUnusedParameters": true,
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"strict": true,
|
|
13
13
|
"sourceMap": true,
|
|
14
14
|
"sourceRoot": "../src",
|
|
15
|
+
"rootDir": "src",
|
|
15
16
|
"outDir": "dist"
|
|
16
17
|
},
|
|
17
18
|
"include": [
|