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.
Files changed (134) hide show
  1. package/.v8-cache/v24.13.1-x64-cf738c9d/017325ac +0 -0
  2. package/.v8-cache/v24.13.1-x64-cf738c9d/043c7b90 +0 -0
  3. package/.v8-cache/v24.13.1-x64-cf738c9d/05135617 +0 -0
  4. package/.v8-cache/v24.13.1-x64-cf738c9d/059f8558 +0 -0
  5. package/.v8-cache/v24.13.1-x64-cf738c9d/0706ecb8 +0 -0
  6. package/.v8-cache/v24.13.1-x64-cf738c9d/0db754a7 +0 -0
  7. package/.v8-cache/v24.13.1-x64-cf738c9d/1130885f +0 -0
  8. package/.v8-cache/v24.13.1-x64-cf738c9d/15f0e479 +0 -0
  9. package/.v8-cache/v24.13.1-x64-cf738c9d/20477c23 +0 -0
  10. package/.v8-cache/v24.13.1-x64-cf738c9d/20dfa422 +0 -0
  11. package/.v8-cache/v24.13.1-x64-cf738c9d/2a19133e +0 -0
  12. package/.v8-cache/v24.13.1-x64-cf738c9d/2b069ee0 +0 -0
  13. package/.v8-cache/v24.13.1-x64-cf738c9d/2de09439 +0 -0
  14. package/.v8-cache/v24.13.1-x64-cf738c9d/2e44f5f0 +0 -0
  15. package/.v8-cache/v24.13.1-x64-cf738c9d/2fb229a9 +0 -0
  16. package/.v8-cache/v24.13.1-x64-cf738c9d/3144b401 +0 -0
  17. package/.v8-cache/v24.13.1-x64-cf738c9d/37481985 +0 -0
  18. package/.v8-cache/v24.13.1-x64-cf738c9d/4511bacf +0 -0
  19. package/.v8-cache/v24.13.1-x64-cf738c9d/49d22b79 +0 -0
  20. package/.v8-cache/v24.13.1-x64-cf738c9d/4f5702bd +0 -0
  21. package/.v8-cache/v24.13.1-x64-cf738c9d/514cc428 +0 -0
  22. package/.v8-cache/v24.13.1-x64-cf738c9d/57d3380b +0 -0
  23. package/.v8-cache/v24.13.1-x64-cf738c9d/6024ce3f +0 -0
  24. package/.v8-cache/v24.13.1-x64-cf738c9d/61735b23 +0 -0
  25. package/.v8-cache/v24.13.1-x64-cf738c9d/63dbdb75 +0 -0
  26. package/.v8-cache/v24.13.1-x64-cf738c9d/6cbfc0ec +0 -0
  27. package/.v8-cache/v24.13.1-x64-cf738c9d/6f08372c +0 -0
  28. package/.v8-cache/v24.13.1-x64-cf738c9d/7100ee08 +0 -0
  29. package/.v8-cache/v24.13.1-x64-cf738c9d/71df9cb3 +0 -0
  30. package/.v8-cache/v24.13.1-x64-cf738c9d/75e41e43 +0 -0
  31. package/.v8-cache/v24.13.1-x64-cf738c9d/7ea06cea +0 -0
  32. package/.v8-cache/v24.13.1-x64-cf738c9d/8568576b +0 -0
  33. package/.v8-cache/v24.13.1-x64-cf738c9d/87372817 +0 -0
  34. package/.v8-cache/v24.13.1-x64-cf738c9d/87cf2209 +0 -0
  35. package/.v8-cache/v24.13.1-x64-cf738c9d/932f0770 +0 -0
  36. package/.v8-cache/v24.13.1-x64-cf738c9d/a79a40bb +0 -0
  37. package/.v8-cache/v24.13.1-x64-cf738c9d/a7e80865 +0 -0
  38. package/.v8-cache/v24.13.1-x64-cf738c9d/acc36e66 +0 -0
  39. package/.v8-cache/v24.13.1-x64-cf738c9d/b3c2fab7 +0 -0
  40. package/.v8-cache/v24.13.1-x64-cf738c9d/b69ed3a3 +0 -0
  41. package/.v8-cache/v24.13.1-x64-cf738c9d/bdff1628 +0 -0
  42. package/.v8-cache/v24.13.1-x64-cf738c9d/c0b789d2 +0 -0
  43. package/.v8-cache/v24.13.1-x64-cf738c9d/c314aece +0 -0
  44. package/.v8-cache/v24.13.1-x64-cf738c9d/cfc49f4f +0 -0
  45. package/.v8-cache/v24.13.1-x64-cf738c9d/cff9434a +0 -0
  46. package/.v8-cache/v24.13.1-x64-cf738c9d/d02dd6f7 +0 -0
  47. package/.v8-cache/v24.13.1-x64-cf738c9d/dc86f000 +0 -0
  48. package/.v8-cache/v24.13.1-x64-cf738c9d/de74e659 +0 -0
  49. package/.v8-cache/v24.13.1-x64-cf738c9d/e03e2acd +0 -0
  50. package/.v8-cache/v24.13.1-x64-cf738c9d/e158d332 +0 -0
  51. package/.v8-cache/v24.13.1-x64-cf738c9d/e6735171 +0 -0
  52. package/.v8-cache/v24.13.1-x64-cf738c9d/e6745c2b +0 -0
  53. package/.v8-cache/v24.13.1-x64-cf738c9d/e6b99945 +0 -0
  54. package/.v8-cache/v24.13.1-x64-cf738c9d/eeeebdfe +0 -0
  55. package/.v8-cache/v24.13.1-x64-cf738c9d/fbca6276 +0 -0
  56. package/.v8-cache/v24.13.1-x64-cf738c9d/fc97d72d +0 -0
  57. package/.v8-cache/v24.13.1-x64-cf738c9d/fd0a2987 +0 -0
  58. package/CHANGELOG.md +3 -0
  59. package/README.md +1 -1
  60. package/README_PSD.md +1 -1
  61. package/dist/abr.js +43 -56
  62. package/dist/abr.js.map +1 -1
  63. package/dist/additionalInfo.js +770 -808
  64. package/dist/additionalInfo.js.map +1 -1
  65. package/dist/ase.js +21 -21
  66. package/dist/ase.js.map +1 -1
  67. package/dist/bundle.js +2592 -2778
  68. package/dist/csh.js +18 -29
  69. package/dist/csh.js.map +1 -1
  70. package/dist/descriptor.js +234 -269
  71. package/dist/descriptor.js.map +1 -1
  72. package/dist/effectsHelpers.js +91 -112
  73. package/dist/effectsHelpers.js.map +1 -1
  74. package/dist/engineData.js +45 -51
  75. package/dist/engineData.js.map +1 -1
  76. package/dist/engineData2.js +8 -9
  77. package/dist/engineData2.js.map +1 -1
  78. package/dist/helpers.js +75 -81
  79. package/dist/helpers.js.map +1 -1
  80. package/dist/imageResources.js +342 -381
  81. package/dist/imageResources.js.map +1 -1
  82. package/dist/index.js +6 -6
  83. package/dist/index.js.map +1 -1
  84. package/dist/initializeCanvas.js +2 -2
  85. package/dist/initializeCanvas.js.map +1 -1
  86. package/dist/jpeg.js +279 -279
  87. package/dist/jpeg.js.map +1 -1
  88. package/dist/psdReader.js +336 -347
  89. package/dist/psdReader.js.map +1 -1
  90. package/dist/psdWriter.d.ts +2 -1
  91. package/dist/psdWriter.js +225 -206
  92. package/dist/psdWriter.js.map +1 -1
  93. package/dist/text.js +98 -122
  94. package/dist/text.js.map +1 -1
  95. package/dist/utf8.js +22 -22
  96. package/dist/utf8.js.map +1 -1
  97. package/dist-es/abr.js +41 -54
  98. package/dist-es/abr.js.map +1 -1
  99. package/dist-es/additionalInfo.js +765 -803
  100. package/dist-es/additionalInfo.js.map +1 -1
  101. package/dist-es/ase.js +20 -20
  102. package/dist-es/ase.js.map +1 -1
  103. package/dist-es/csh.js +16 -27
  104. package/dist-es/csh.js.map +1 -1
  105. package/dist-es/descriptor.js +284 -319
  106. package/dist-es/descriptor.js.map +1 -1
  107. package/dist-es/effectsHelpers.js +88 -109
  108. package/dist-es/effectsHelpers.js.map +1 -1
  109. package/dist-es/engineData.js +45 -51
  110. package/dist-es/engineData.js.map +1 -1
  111. package/dist-es/engineData2.js +8 -9
  112. package/dist-es/engineData2.js.map +1 -1
  113. package/dist-es/helpers.js +79 -85
  114. package/dist-es/helpers.js.map +1 -1
  115. package/dist-es/imageResources.js +338 -377
  116. package/dist-es/imageResources.js.map +1 -1
  117. package/dist-es/index.js +4 -4
  118. package/dist-es/index.js.map +1 -1
  119. package/dist-es/jpeg.js +279 -279
  120. package/dist-es/jpeg.js.map +1 -1
  121. package/dist-es/psdReader.js +333 -344
  122. package/dist-es/psdReader.js.map +1 -1
  123. package/dist-es/psdWriter.d.ts +2 -1
  124. package/dist-es/psdWriter.js +220 -202
  125. package/dist-es/psdWriter.js.map +1 -1
  126. package/dist-es/text.js +98 -122
  127. package/dist-es/text.js.map +1 -1
  128. package/dist-es/utf8.js +22 -22
  129. package/dist-es/utf8.js.map +1 -1
  130. package/package.json +1 -1
  131. package/publish.js +24 -0
  132. package/src/additionalInfo.ts +15 -11
  133. package/src/psdWriter.ts +76 -1
  134. 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
- var result = 0;
17
- for (var i = 0; i < value.length; i++) {
18
- var code = value.charCodeAt(i);
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
- var extra = value.charCodeAt(i + 1);
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
- var length = charLengthInBytes(code);
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 (var i = 0; i < value.length; i++) {
62
- var code = value.charCodeAt(i);
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
- var extra = value.charCodeAt(i + 1);
66
+ const extra = value.charCodeAt(i + 1);
67
67
  // low surrogate
68
68
  if ((extra & 0xfc00) === 0xdc00) {
69
69
  i++;
70
- var fullCode = ((code & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;
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
- var buffer = new Uint8Array(stringLengthInBytes(value));
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
- var continuationByte = buffer[index];
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
- var result = [];
106
- for (var i = 0; i < value.length;) {
107
- var byte1 = value[i++];
108
- var code = void 0;
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
- var byte2 = continuationByte(value, i++);
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
- var byte2 = continuationByte(value, i++);
121
- var byte3 = continuationByte(value, i++);
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("Lone surrogate U+".concat(code.toString(16).toUpperCase(), " is not a scalar value"));
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
- var byte2 = continuationByte(value, i++);
132
- var byte3 = continuationByte(value, i++);
133
- var byte4 = continuationByte(value, i++);
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');
@@ -1 +1 @@
1
- {"version":3,"file":"utf8.js","sourceRoot":"../src/","sources":["utf8.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utf8.js","sourceRoot":"../src/","sources":["utf8.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ag-psd",
3
- "version": "30.1.1",
3
+ "version": "30.2.0",
4
4
  "description": "Library for reading and writing PSD files",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist-es/index.js",
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}`);
@@ -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 => !target,
3682
+ target => !!(target.patterns && target.patterns.length > 0),
3683
3683
  (reader, target, left) => {
3684
- if (!left()) return;
3685
-
3686
- skipBytes(reader, left()); return; // not supported yet
3687
- target; readPattern;
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
- (_writer, _target) => {
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": "node",
4
- "target": "es5",
5
- "module": "commonjs",
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": [