ag-psd 21.0.1 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## v22.0.0
4
+ - Fixed parsing path `smooth` gradient interpolation method
5
+ - Changed `PsdReader` type
6
+
3
7
  ## v21.0.0
4
8
  - Fixed parsing path `operation` field to handle empty value
5
9
 
@@ -1,12 +1,12 @@
1
1
  import { LayerAdditionalInfo, BezierPath, Psd, WriteOptions, BooleanOperation, LayerEffectsInfo, LayerVectorMask } from './psd';
2
- import { PsdReader, ReadOptionsExt } from './psdReader';
2
+ import { PsdReader } from './psdReader';
3
3
  import { PsdWriter } from './psdWriter';
4
4
  export interface ExtendedWriteOptions extends WriteOptions {
5
5
  layerIds: Set<number>;
6
6
  layerToId: Map<any, number>;
7
7
  }
8
8
  type HasMethod = (target: LayerAdditionalInfo) => boolean;
9
- type ReadMethod = (reader: PsdReader, target: LayerAdditionalInfo, left: () => number, psd: Psd, options: ReadOptionsExt) => void;
9
+ type ReadMethod = (reader: PsdReader, target: LayerAdditionalInfo, left: () => number, psd: Psd) => void;
10
10
  type WriteMethod = (writer: PsdWriter, target: LayerAdditionalInfo, psd: Psd, options: ExtendedWriteOptions) => void;
11
11
  export interface InfoHandler {
12
12
  key: string;
@@ -388,14 +388,14 @@ addHandler('vogk', hasKey('vectorOrigination'), function (reader, target, left)
388
388
  (0, psdWriter_1.writeInt32)(writer, 1); // version
389
389
  (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc);
390
390
  });
391
- addHandler('lmfx', function (target) { return target.effects !== undefined && hasMultiEffects(target.effects); }, function (reader, target, left, _, options) {
391
+ addHandler('lmfx', function (target) { return target.effects !== undefined && hasMultiEffects(target.effects); }, function (reader, target, left) {
392
392
  var version = (0, psdReader_1.readUint32)(reader);
393
393
  if (version !== 0)
394
394
  throw new Error('Invalid lmfx version');
395
395
  var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
396
396
  // console.log(require('util').inspect(info, false, 99, true));
397
397
  // discard if read in 'lrFX' or 'lfx2' section
398
- target.effects = (0, descriptor_1.parseEffects)(desc, !!options.logMissingFeatures);
398
+ target.effects = (0, descriptor_1.parseEffects)(desc, !!reader.logMissingFeatures);
399
399
  (0, psdReader_1.skipBytes)(reader, left());
400
400
  }, function (writer, target, _, options) {
401
401
  var desc = (0, descriptor_1.serializeEffects)(target.effects, !!options.logMissingFeatures, true);
@@ -410,7 +410,20 @@ addHandler('lrFX', hasKey('effects'), function (reader, target, left) {
410
410
  (0, effectsHelpers_1.writeEffects)(writer, target.effects);
411
411
  });
412
412
  addHandler('luni', hasKey('name'), function (reader, target, left) {
413
- target.name = (0, psdReader_1.readUnicodeString)(reader);
413
+ if (left() > 4) {
414
+ var length_1 = (0, psdReader_1.readUint32)(reader);
415
+ if (left() >= (length_1 * 2)) {
416
+ target.name = (0, psdReader_1.readUnicodeStringWithLength)(reader, length_1);
417
+ }
418
+ else {
419
+ if (reader.logDevFeatures)
420
+ reader.log('name in luni section is too long');
421
+ }
422
+ }
423
+ else {
424
+ if (reader.logDevFeatures)
425
+ reader.log('empty luni section');
426
+ }
414
427
  (0, psdReader_1.skipBytes)(reader, left());
415
428
  }, function (writer, target) {
416
429
  (0, psdWriter_1.writeUnicodeString)(writer, target.name);
@@ -501,7 +514,7 @@ addHandler('lclr', hasKey('layerColor'), function (reader, target) {
501
514
  (0, psdWriter_1.writeZeros)(writer, 6);
502
515
  });
503
516
  addHandler('shmd', function (target) { return target.timestamp !== undefined || target.animationFrames !== undefined ||
504
- target.animationFrameFlags !== undefined || target.timeline !== undefined || target.comps !== undefined; }, function (reader, target, left, _, options) {
517
+ target.animationFrameFlags !== undefined || target.timeline !== undefined || target.comps !== undefined; }, function (reader, target, left) {
505
518
  var count = (0, psdReader_1.readUint32)(reader);
506
519
  var _loop_1 = function (i) {
507
520
  (0, psdReader_1.checkSignature)(reader, '8BIM');
@@ -529,7 +542,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
529
542
  if (f.FXRf)
530
543
  frame.referencePoint = (0, descriptor_1.horzVrtcToXY)(f.FXRf);
531
544
  if (f.Lefx)
532
- frame.effects = (0, descriptor_1.parseEffects)(f.Lefx, !!options.logMissingFeatures);
545
+ frame.effects = (0, descriptor_1.parseEffects)(f.Lefx, !!reader.logMissingFeatures);
533
546
  if (f.blendOptions && f.blendOptions.Opct)
534
547
  frame.opacity = (0, descriptor_1.parsePercent)(f.blendOptions.Opct);
535
548
  target.animationFrames.push(frame);
@@ -560,7 +573,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
560
573
  audioLevel: desc.audioLevel,
561
574
  };
562
575
  if (desc.trackList) {
563
- timeline.tracks = (0, descriptor_1.parseTrackList)(desc.trackList, !!options.logMissingFeatures);
576
+ timeline.tracks = (0, descriptor_1.parseTrackList)(desc.trackList, !!reader.logMissingFeatures);
564
577
  }
565
578
  target.timeline = timeline;
566
579
  // console.log('tmln:result', target.name, target.id, require('util').inspect(timeline, false, 99, true));
@@ -586,7 +599,7 @@ addHandler('shmd', function (target) { return target.timestamp !== undefined ||
586
599
  }
587
600
  }
588
601
  else {
589
- options.logMissingFeatures && console.log('Unhandled "shmd" section key', key);
602
+ reader.logMissingFeatures && reader.log('Unhandled "shmd" section key', key);
590
603
  }
591
604
  (0, psdReader_1.skipBytes)(reader, left());
592
605
  });
@@ -1800,7 +1813,7 @@ function getWarpFromPlacedLayer(placed) {
1800
1813
  },
1801
1814
  };
1802
1815
  }
1803
- addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left, _, options) {
1816
+ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left) {
1804
1817
  if ((0, psdReader_1.readSignature)(reader) !== 'soLD')
1805
1818
  throw new Error("Invalid SoLd type");
1806
1819
  var version = (0, psdReader_1.readInt32)(reader);
@@ -1843,7 +1856,7 @@ addHandler('SoLd', hasKey('placedLayer'), function (reader, target, left, _, opt
1843
1856
  };
1844
1857
  }
1845
1858
  if (desc.filterFX)
1846
- target.placedLayer.filter = parseFilterFX(desc.filterFX, options);
1859
+ target.placedLayer.filter = parseFilterFX(desc.filterFX, reader);
1847
1860
  // console.log('filter', require('util').inspect(target.placedLayer.filter, false, 99, true));
1848
1861
  (0, psdReader_1.skipBytes)(reader, left()); // HACK
1849
1862
  }, function (writer, target) {
@@ -1914,12 +1927,12 @@ addHandler('fxrp', hasKey('referencePoint'), function (reader, target) {
1914
1927
  (0, psdWriter_1.writeFloat64)(writer, target.referencePoint.x);
1915
1928
  (0, psdWriter_1.writeFloat64)(writer, target.referencePoint.y);
1916
1929
  });
1917
- addHandler('Lr16', function () { return false; }, function (reader, _target, _left, psd, options) {
1918
- (0, psdReader_1.readLayerInfo)(reader, psd, options);
1930
+ addHandler('Lr16', function () { return false; }, function (reader, _target, _left, psd) {
1931
+ (0, psdReader_1.readLayerInfo)(reader, psd);
1919
1932
  }, function (_writer, _target) {
1920
1933
  });
1921
- addHandler('Lr32', function () { return false; }, function (reader, _target, _left, psd, options) {
1922
- (0, psdReader_1.readLayerInfo)(reader, psd, options);
1934
+ addHandler('Lr32', function () { return false; }, function (reader, _target, _left, psd) {
1935
+ (0, psdReader_1.readLayerInfo)(reader, psd);
1923
1936
  }, function (_writer, _target) {
1924
1937
  });
1925
1938
  addHandler('LMsk', hasKey('userMask'), function (reader, target) {
@@ -2117,7 +2130,7 @@ addHandler('Anno', function (target) { return target.annotations !== undefined;
2117
2130
  writer.view.setUint32(dataOffset - 4, writer.offset - dataOffset, false);
2118
2131
  }
2119
2132
  });
2120
- addHandler('lnk2', function (target) { return !!target.linkedFiles && target.linkedFiles.length > 0; }, function (reader, target, left, _, options) {
2133
+ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.linkedFiles.length > 0; }, function (reader, target, left) {
2121
2134
  var psd = target;
2122
2135
  psd.linkedFiles = psd.linkedFiles || [];
2123
2136
  while (left() > 8) {
@@ -2173,7 +2186,7 @@ addHandler('lnk2', function (target) { return !!target.linkedFiles && target.lin
2173
2186
  file.assetLockedState = (0, psdReader_1.readUint8)(reader);
2174
2187
  if (type === 'liFE' && version === 2)
2175
2188
  file.data = (0, psdReader_1.readBytes)(reader, fileSize);
2176
- if (options.skipLinkedFilesData)
2189
+ if (reader.skipLinkedFilesData)
2177
2190
  file.data = undefined;
2178
2191
  psd.linkedFiles.push(file);
2179
2192
  linkedFileDescriptor;
@@ -3089,7 +3102,7 @@ function hasMultiEffects(effects) {
3089
3102
  return Object.keys(effects).map(function (key) { return effects[key]; }).some(function (v) { return Array.isArray(v) && v.length > 1; });
3090
3103
  }
3091
3104
  exports.hasMultiEffects = hasMultiEffects;
3092
- addHandler('lfx2', function (target) { return target.effects !== undefined && !hasMultiEffects(target.effects); }, function (reader, target, left, _, options) {
3105
+ addHandler('lfx2', function (target) { return target.effects !== undefined && !hasMultiEffects(target.effects); }, function (reader, target, left) {
3093
3106
  var version = (0, psdReader_1.readUint32)(reader);
3094
3107
  if (version !== 0)
3095
3108
  throw new Error("Invalid lfx2 version");
@@ -3097,7 +3110,7 @@ addHandler('lfx2', function (target) { return target.effects !== undefined && !h
3097
3110
  // console.log('READ', require('util').inspect(desc, false, 99, true));
3098
3111
  // TODO: don't discard if we got it from lmfx
3099
3112
  // discard if read in 'lrFX' section
3100
- target.effects = (0, descriptor_1.parseEffects)(desc, !!options.logMissingFeatures);
3113
+ target.effects = (0, descriptor_1.parseEffects)(desc, !!reader.logMissingFeatures);
3101
3114
  (0, psdReader_1.skipBytes)(reader, left());
3102
3115
  }, function (writer, target, _, options) {
3103
3116
  var desc = (0, descriptor_1.serializeEffects)(target.effects, !!options.logMissingFeatures, true);