ag-psd 26.0.0 → 28.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.
Files changed (56) hide show
  1. package/.v8-cache/v22.13.1-x64-00250a7c/a7e80865 +0 -0
  2. package/.v8-cache/v22.13.1-x64-00250a7c/b3c2fab7 +0 -0
  3. package/.v8-cache/v22.13.1-x64-00250a7c/c314aece +0 -0
  4. package/.v8-cache/v22.13.1-x64-00250a7c/cfc49f4f +0 -0
  5. package/.v8-cache/v22.13.1-x64-00250a7c/d02dd6f7 +0 -0
  6. package/.v8-cache/v22.13.1-x64-00250a7c/e03e2acd +0 -0
  7. package/CHANGELOG.md +6 -0
  8. package/README_PSD.md +3 -0
  9. package/dist/additionalInfo.d.ts +2 -1
  10. package/dist/additionalInfo.js +35 -7
  11. package/dist/additionalInfo.js.map +1 -1
  12. package/dist/bundle.js +521 -59
  13. package/dist/engineData.js +1 -0
  14. package/dist/engineData.js.map +1 -1
  15. package/dist/engineData2.d.ts +2 -1
  16. package/dist/engineData2.js +59 -3
  17. package/dist/engineData2.js.map +1 -1
  18. package/dist/imageResources.d.ts +7 -3
  19. package/dist/imageResources.js.map +1 -1
  20. package/dist/psd.d.ts +27 -2
  21. package/dist/psd.js.map +1 -1
  22. package/dist/psdReader.d.ts +3 -2
  23. package/dist/psdReader.js +30 -12
  24. package/dist/psdReader.js.map +1 -1
  25. package/dist/psdWriter.js +10 -8
  26. package/dist/psdWriter.js.map +1 -1
  27. package/dist/text.d.ts +13 -2
  28. package/dist/text.js.map +1 -1
  29. package/dist-es/additionalInfo.d.ts +2 -1
  30. package/dist-es/additionalInfo.js +35 -7
  31. package/dist-es/additionalInfo.js.map +1 -1
  32. package/dist-es/engineData.js +1 -0
  33. package/dist-es/engineData.js.map +1 -1
  34. package/dist-es/engineData2.d.ts +2 -1
  35. package/dist-es/engineData2.js +59 -3
  36. package/dist-es/engineData2.js.map +1 -1
  37. package/dist-es/imageResources.d.ts +7 -3
  38. package/dist-es/imageResources.js.map +1 -1
  39. package/dist-es/psd.d.ts +27 -2
  40. package/dist-es/psd.js.map +1 -1
  41. package/dist-es/psdReader.d.ts +3 -2
  42. package/dist-es/psdReader.js +30 -12
  43. package/dist-es/psdReader.js.map +1 -1
  44. package/dist-es/psdWriter.js +10 -8
  45. package/dist-es/psdWriter.js.map +1 -1
  46. package/dist-es/text.d.ts +13 -2
  47. package/dist-es/text.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/additionalInfo.ts +42 -9
  50. package/src/engineData.ts +1 -0
  51. package/src/engineData2.ts +62 -4
  52. package/src/imageResources.ts +11 -6
  53. package/src/psd.ts +31 -2
  54. package/src/psdReader.ts +23 -14
  55. package/src/psdWriter.ts +14 -12
  56. package/src/text.ts +16 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v28.0.0
4
+ - **BREAKING CHANGE:** Removed `layersGroup` and `layerGroupsEnabledId` properties from `imageResources` and instead added `linkGroup` and `linkGroupEnabled` fields to layers.
5
+
6
+ ## v27.0.0
7
+ - Added support for read-only field `text.textPath` with text path information for text layers. This field is extracted from psd.engineData, which is not fully supported yet.
8
+
3
9
  ## v26.0.0
4
10
  - Added support for `realMask` section
5
11
 
package/README_PSD.md CHANGED
@@ -467,6 +467,9 @@ Example layer structure:
467
467
  - `blendClippendElements` "Blend Clipped Layers as Group" value
468
468
  - `blendInteriorElements` "Blend Interior Effects as Group" value
469
469
  - `transparencyShapesLayer` "Transparency Shapes Layer" value
470
+ - `linkGroup` and `linkGroupEnabled` Layers with the same `linkGroup` value are linked together for moving/transforming. `0` value means no linking is active.
471
+
472
+ ![](/files/linked-layers.png)
470
473
 
471
474
  - `engineData` internal text information
472
475
 
@@ -1,12 +1,13 @@
1
1
  import { LayerAdditionalInfo, BezierPath, Psd, WriteOptions, BooleanOperation, LayerEffectsInfo, LayerVectorMask } from './psd';
2
2
  import { PsdReader } from './psdReader';
3
3
  import { PsdWriter } from './psdWriter';
4
+ import type { InternalImageResources } from './imageResources';
4
5
  export interface ExtendedWriteOptions extends WriteOptions {
5
6
  layerIds: Set<number>;
6
7
  layerToId: Map<any, number>;
7
8
  }
8
9
  type HasMethod = (target: LayerAdditionalInfo) => boolean;
9
- type ReadMethod = (reader: PsdReader, target: LayerAdditionalInfo, left: () => number, psd: Psd) => void;
10
+ type ReadMethod = (reader: PsdReader, target: LayerAdditionalInfo, left: () => number, psd: Psd, imageResources: InternalImageResources) => void;
10
11
  type WriteMethod = (writer: PsdWriter, target: LayerAdditionalInfo, psd: Psd, options: ExtendedWriteOptions) => void;
11
12
  export interface InfoHandler {
12
13
  key: string;
@@ -20,6 +20,7 @@ var psdWriter_1 = require("./psdWriter");
20
20
  var descriptor_1 = require("./descriptor");
21
21
  var engineData_1 = require("./engineData");
22
22
  var text_1 = require("./text");
23
+ var engineData2_1 = require("./engineData2");
23
24
  var fromAtoZ = 'abcdefghijklmnopqrstuvwxyz';
24
25
  exports.infoHandlers = [];
25
26
  exports.infoHandlersMap = {};
@@ -2019,12 +2020,12 @@ addHandler('fxrp', hasKey('referencePoint'), function (reader, target) {
2019
2020
  (0, psdWriter_1.writeFloat64)(writer, target.referencePoint.x);
2020
2021
  (0, psdWriter_1.writeFloat64)(writer, target.referencePoint.y);
2021
2022
  });
2022
- addHandler('Lr16', function () { return false; }, function (reader, _target, _left, psd) {
2023
- (0, psdReader_1.readLayerInfo)(reader, psd);
2023
+ addHandler('Lr16', function () { return false; }, function (reader, _target, _left, psd, imageResources) {
2024
+ (0, psdReader_1.readLayerInfo)(reader, psd, imageResources);
2024
2025
  }, function (_writer, _target) {
2025
2026
  });
2026
- addHandler('Lr32', function () { return false; }, function (reader, _target, _left, psd) {
2027
- (0, psdReader_1.readLayerInfo)(reader, psd);
2027
+ addHandler('Lr32', function () { return false; }, function (reader, _target, _left, psd, imageResources) {
2028
+ (0, psdReader_1.readLayerInfo)(reader, psd, imageResources);
2028
2029
  }, function (_writer, _target) {
2029
2030
  });
2030
2031
  addHandler('LMsk', hasKey('userMask'), function (reader, target) {
@@ -3089,11 +3090,38 @@ addHandler('CgEd', function (target) {
3089
3090
  throw new Error('Unhandled CgEd case');
3090
3091
  }
3091
3092
  });
3092
- addHandler('Txt2', hasKey('engineData'), function (reader, target, left) {
3093
+ function getTextLayersSortedByIndex(psd) {
3094
+ var layers = [];
3095
+ function collect(layer) {
3096
+ var _a;
3097
+ if (layer.children) {
3098
+ for (var _i = 0, _b = layer.children; _i < _b.length; _i++) {
3099
+ var child = _b[_i];
3100
+ if (((_a = child.text) === null || _a === void 0 ? void 0 : _a.index) !== undefined) {
3101
+ layers[child.text.index] = child;
3102
+ }
3103
+ collect(child);
3104
+ }
3105
+ }
3106
+ }
3107
+ collect(psd);
3108
+ return layers;
3109
+ }
3110
+ addHandler('Txt2', hasKey('engineData'), function (reader, target, left, psd) {
3093
3111
  var data = (0, psdReader_1.readBytes)(reader, left());
3094
3112
  target.engineData = (0, base64_js_1.fromByteArray)(data);
3095
- // const engineData = parseEngineData(data);
3096
- // const engineData2 = decodeEngineData2(engineData);
3113
+ var layersByIndex = getTextLayersSortedByIndex(psd);
3114
+ var engineData = (0, engineData_1.parseEngineData)(data);
3115
+ var engineData2 = (0, engineData2_1.decodeEngineData2)(engineData);
3116
+ var TextFrameSet = engineData2.ResourceDict.TextFrameSet;
3117
+ if (TextFrameSet) {
3118
+ for (var i = 0; i < TextFrameSet.length; i++) {
3119
+ var layer = layersByIndex[i];
3120
+ if (TextFrameSet[i].path && (layer === null || layer === void 0 ? void 0 : layer.text)) {
3121
+ layer.text.textPath = TextFrameSet[i].path;
3122
+ }
3123
+ }
3124
+ }
3097
3125
  // console.log(require('util').inspect(engineData, false, 99, true));
3098
3126
  // require('fs').writeFileSync('test_data.bin', data);
3099
3127
  // require('fs').writeFileSync('test_data.txt', require('util').inspect(engineData, false, 99, false), 'utf8');