ag-psd 17.0.0 → 17.0.2

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/dist/bundle.js CHANGED
@@ -346,6 +346,10 @@ addHandler('TySh', hasKey('text'), function (reader, target, leftBytes) {
346
346
  rotate: descriptor_1.Ornt.decode(warp.warpRotate),
347
347
  },
348
348
  };
349
+ if (text.bounds)
350
+ target.text.bounds = (0, descriptor_1.descBoundsToBounds)(text.bounds);
351
+ if (text.boundingBox)
352
+ target.text.boundingBox = (0, descriptor_1.descBoundsToBounds)(text.boundingBox);
349
353
  if (text.EngineData) {
350
354
  var engineData = (0, engineData_1.parseEngineData)(text.EngineData);
351
355
  var textData = (0, text_1.decodeEngineData)(engineData);
@@ -363,20 +367,13 @@ addHandler('TySh', hasKey('text'), function (reader, target, leftBytes) {
363
367
  var text = target.text;
364
368
  var warp = text.warp || {};
365
369
  var transform = text.transform || [1, 0, 0, 1, 0, 0];
366
- var textDescriptor = {
367
- 'Txt ': (text.text || '').replace(/\r?\n/g, '\r'),
368
- textGridding: descriptor_1.textGridding.encode(text.gridding),
369
- Ornt: descriptor_1.Ornt.encode(text.orientation),
370
- AntA: descriptor_1.Annt.encode(text.antiAlias),
371
- TextIndex: text.index || 0,
372
- EngineData: (0, engineData_1.serializeEngineData)((0, text_1.encodeEngineData)(text)),
373
- };
370
+ var textDescriptor = __assign(__assign(__assign({ 'Txt ': (text.text || '').replace(/\r?\n/g, '\r'), textGridding: descriptor_1.textGridding.encode(text.gridding), Ornt: descriptor_1.Ornt.encode(text.orientation), AntA: descriptor_1.Annt.encode(text.antiAlias) }, (text.bounds ? { bounds: (0, descriptor_1.boundsToDescBounds)(text.bounds) } : {})), (text.boundingBox ? { boundingBox: (0, descriptor_1.boundsToDescBounds)(text.boundingBox) } : {})), { TextIndex: text.index || 0, EngineData: (0, engineData_1.serializeEngineData)((0, text_1.encodeEngineData)(text)) });
374
371
  (0, psdWriter_1.writeInt16)(writer, 1); // version
375
372
  for (var i = 0; i < 6; i++) {
376
373
  (0, psdWriter_1.writeFloat64)(writer, transform[i]);
377
374
  }
378
375
  (0, psdWriter_1.writeInt16)(writer, 50); // text version
379
- (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'TxLr', textDescriptor);
376
+ (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'TxLr', textDescriptor, 'text');
380
377
  (0, psdWriter_1.writeInt16)(writer, 1); // warp version
381
378
  (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'warp', encodeWarp(warp));
382
379
  (0, psdWriter_1.writeFloat32)(writer, text.left);
@@ -3173,14 +3170,14 @@ addHandler('lfx2', function (target) { return target.effects !== undefined && !h
3173
3170
  if (version !== 0)
3174
3171
  throw new Error("Invalid lfx2 version");
3175
3172
  var desc = (0, descriptor_1.readVersionAndDescriptor)(reader);
3176
- // console.log(require('util').inspect(desc, false, 99, true));
3173
+ // console.log('READ', require('util').inspect(desc, false, 99, true));
3177
3174
  // TODO: don't discard if we got it from lmfx
3178
3175
  // discard if read in 'lrFX' section
3179
3176
  target.effects = (0, descriptor_1.parseEffects)(desc, !!options.logMissingFeatures);
3180
3177
  (0, psdReader_1.skipBytes)(reader, left());
3181
3178
  }, function (writer, target, _, options) {
3182
- var desc = (0, descriptor_1.serializeEffects)(target.effects, !!options.logMissingFeatures, false);
3183
- // console.log(require('util').inspect(desc, false, 99, true));
3179
+ var desc = (0, descriptor_1.serializeEffects)(target.effects, !!options.logMissingFeatures, true);
3180
+ // console.log('WRITE', require('util').inspect(desc, false, 99, true));
3184
3181
  (0, psdWriter_1.writeUint32)(writer, 0); // version
3185
3182
  (0, descriptor_1.writeVersionAndDescriptor)(writer, '', 'null', desc);
3186
3183
  });
@@ -3316,8 +3313,8 @@ var __assign = (this && this.__assign) || function () {
3316
3313
  return __assign.apply(this, arguments);
3317
3314
  };
3318
3315
  Object.defineProperty(exports, "__esModule", { value: true });
3319
- exports.strokeStyleLineCapType = exports.ESliceBGColorType = exports.ESliceOrigin = exports.ESliceVertAlign = exports.ESliceHorzAlign = exports.ESliceType = exports.FrFl = exports.FStl = exports.ClrS = exports.gradientInterpolationMethodType = exports.stdTrackID = exports.animInterpStyleEnum = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.frac = exports.unitsValue = exports.unitsPercentF = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.serializeColor = exports.parseColor = exports.serializeVectorContent = exports.parseVectorContent = exports.serializeTrackList = exports.parseTrackList = exports.parseEffects = exports.serializeEffects = exports.xyToHorzVrtc = exports.horzVrtcToXY = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
3320
- exports.prjM = exports.FlMd = exports.IntC = exports.IntE = exports.Drct = exports.WndM = exports.CntE = exports.FlCl = exports.ExtR = exports.ExtT = exports.DfsM = exports.blurType = exports.Lns = exports.MztT = exports.Chnl = exports.Dstr = exports.ZZTy = exports.Wvtp = exports.SphM = exports.RplS = exports.Cnvr = exports.UndA = exports.DspM = exports.SmBQ = exports.SmBM = exports.BlrQ = exports.BlrM = exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = void 0;
3316
+ exports.ESliceOrigin = exports.ESliceVertAlign = exports.ESliceHorzAlign = exports.ESliceType = exports.FrFl = exports.FStl = exports.ClrS = exports.gradientInterpolationMethodType = exports.stdTrackID = exports.animInterpStyleEnum = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.frac = exports.unitsValue = exports.unitsPercentF = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.serializeColor = exports.parseColor = exports.serializeVectorContent = exports.parseVectorContent = exports.serializeTrackList = exports.parseTrackList = exports.parseEffects = exports.serializeEffects = exports.boundsToDescBounds = exports.descBoundsToBounds = exports.xyToHorzVrtc = exports.horzVrtcToXY = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
3317
+ exports.prjM = exports.FlMd = exports.IntC = exports.IntE = exports.Drct = exports.WndM = exports.CntE = exports.FlCl = exports.ExtR = exports.ExtT = exports.DfsM = exports.blurType = exports.Lns = exports.MztT = exports.Chnl = exports.Dstr = exports.ZZTy = exports.Wvtp = exports.SphM = exports.RplS = exports.Cnvr = exports.UndA = exports.DspM = exports.SmBQ = exports.SmBM = exports.BlrQ = exports.BlrM = exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = exports.strokeStyleLineCapType = exports.ESliceBGColorType = void 0;
3321
3318
  var helpers_1 = require("./helpers");
3322
3319
  var psdReader_1 = require("./psdReader");
3323
3320
  var psdWriter_1 = require("./psdWriter");
@@ -3412,6 +3409,7 @@ var fieldToExtType = {
3412
3409
  sheetStyle: nullType,
3413
3410
  translation: nullType,
3414
3411
  Skew: nullType,
3412
+ boundingBox: makeType('', 'boundingBox'),
3415
3413
  'Lnk ': makeType('', 'ExternalFileLink'),
3416
3414
  frameReader: makeType('', 'FrameReader'),
3417
3415
  effectParams: makeType('', 'motionTrackEffectParams'),
@@ -3684,7 +3682,10 @@ function writeDescriptorStructure(writer, name, classId, value, root) {
3684
3682
  continue;
3685
3683
  var type = getTypeByKey(key, value[key], root, value);
3686
3684
  var extType = fieldToExtType[key];
3687
- if (key === 'origin') {
3685
+ if (key === 'bounds' && root === 'text') {
3686
+ extType = makeType('', 'bounds');
3687
+ }
3688
+ else if (key === 'origin') {
3688
3689
  type = root === 'slices' ? 'enum' : 'Objc';
3689
3690
  }
3690
3691
  else if ((key === 'Cyn ' || key === 'Mgnt' || key === 'Ylw ' || key === 'Blck') && value._classID === 'CMYC') {
@@ -4099,6 +4100,26 @@ function xyToHorzVrtc(xy) {
4099
4100
  return { Hrzn: xy.x, Vrtc: xy.y };
4100
4101
  }
4101
4102
  exports.xyToHorzVrtc = xyToHorzVrtc;
4103
+ function descBoundsToBounds(desc) {
4104
+ return {
4105
+ top: parseUnits(desc['Top ']),
4106
+ left: parseUnits(desc.Left),
4107
+ right: parseUnits(desc.Rght),
4108
+ bottom: parseUnits(desc.Btom),
4109
+ };
4110
+ }
4111
+ exports.descBoundsToBounds = descBoundsToBounds;
4112
+ function boundsToDescBounds(bounds) {
4113
+ var _a;
4114
+ return _a = {
4115
+ Left: unitsValue(bounds.left, 'bounds.left')
4116
+ },
4117
+ _a['Top '] = unitsValue(bounds.top, 'bounds.top'),
4118
+ _a.Rght = unitsValue(bounds.right, 'bounds.right'),
4119
+ _a.Btom = unitsValue(bounds.bottom, 'bounds.bottom'),
4120
+ _a;
4121
+ }
4122
+ exports.boundsToDescBounds = boundsToDescBounds;
4102
4123
  function parseFxObject(fx) {
4103
4124
  var stroke = {
4104
4125
  enabled: !!fx.enab,
@@ -4147,11 +4168,11 @@ function serializeFxObject(stroke) {
4147
4168
  function serializeEffects(e, log, multi) {
4148
4169
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
4149
4170
  var info = multi ? {
4150
- 'Scl ': unitsPercent((_a = e.scale) !== null && _a !== void 0 ? _a : 1),
4171
+ 'Scl ': unitsPercentF((_a = e.scale) !== null && _a !== void 0 ? _a : 1),
4151
4172
  masterFXSwitch: !e.disabled,
4152
4173
  } : {
4153
4174
  masterFXSwitch: !e.disabled,
4154
- 'Scl ': unitsPercent((_b = e.scale) !== null && _b !== void 0 ? _b : 1),
4175
+ 'Scl ': unitsPercentF((_b = e.scale) !== null && _b !== void 0 ? _b : 1),
4155
4176
  };
4156
4177
  var arrayKeys = ['dropShadow', 'innerShadow', 'solidFill', 'gradientOverlay', 'stroke'];
4157
4178
  for (var _i = 0, arrayKeys_1 = arrayKeys; _i < arrayKeys_1.length; _i++) {
@@ -4201,6 +4222,9 @@ function serializeEffects(e, log, multi) {
4201
4222
  info.numModifyingFX++;
4202
4223
  }
4203
4224
  }
4225
+ else if (value.enabled) {
4226
+ info.numModifyingFX++;
4227
+ }
4204
4228
  }
4205
4229
  }
4206
4230
  return info;
@@ -4590,7 +4614,7 @@ function serializeEffectObject(obj, objName, reportErrors) {
4590
4614
  result.sdwO = unitsPercent(val);
4591
4615
  break;
4592
4616
  case 'angle':
4593
- if (objName === 'gradientOverlay') {
4617
+ if (objName === 'gradientOverlay' || objName === 'patternFill') {
4594
4618
  result.Angl = unitsAngle(val);
4595
4619
  }
4596
4620
  else {
@@ -4860,7 +4884,7 @@ function serializeColor(color) {
4860
4884
  return { _name: '', _classID: 'RGBC', 'Rd ': color.r || 0, 'Grn ': color.g || 0, 'Bl ': color.b || 0 };
4861
4885
  }
4862
4886
  else if ('fr' in color) {
4863
- return { _name: '', _classID: 'XXXX', redFloat: color.fr, greenFloat: color.fg, blueFloat: color.fb };
4887
+ return { _name: '', _classID: 'RGBC', redFloat: color.fr, greenFloat: color.fg, blueFloat: color.fb };
4864
4888
  }
4865
4889
  else if ('h' in color) {
4866
4890
  return { _name: '', _classID: 'HSBC', 'H ': unitsAngle(color.h * 360), Strt: color.s || 0, Brgh: color.b || 0 };
@@ -6620,6 +6644,15 @@ addHandler(1032, function (target) { return target.gridAndGuidesInformation !==
6620
6644
  (0, psdWriter_1.writeUint8)(writer, g.direction === 'horizontal' ? 1 : 0);
6621
6645
  }
6622
6646
  });
6647
+ helpers_1.MOCK_HANDLERS && addHandler(1092, // ???
6648
+ function (// ???
6649
+ target) { return target._ir1092 !== undefined; }, function (reader, target, left) {
6650
+ LOG_MOCK_HANDLERS && console.log('image resource 1092', left());
6651
+ // 16 bytes, seems to be 4 integers
6652
+ target._ir1092 = (0, psdReader_1.readBytes)(reader, left());
6653
+ }, function (writer, target) {
6654
+ (0, psdWriter_1.writeBytes)(writer, target._ir1092);
6655
+ });
6623
6656
  // 0 - normal, 7 - multiply, 8 - screen, 23 - difference
6624
6657
  var onionSkinsBlendModes = [
6625
6658
  'normal', undefined, undefined, undefined, undefined, undefined, undefined, 'multiply',
@@ -6830,10 +6863,10 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
6830
6863
  var associatedLayerId = origin_1 == 'layer' ? (0, psdReader_1.readUint32)(reader) : 0;
6831
6864
  var name_3 = (0, psdReader_1.readUnicodeString)(reader);
6832
6865
  var type = clamped(sliceTypes, (0, psdReader_1.readUint32)(reader));
6833
- var top_2 = (0, psdReader_1.readInt32)(reader);
6834
6866
  var left_1 = (0, psdReader_1.readInt32)(reader);
6835
- var bottom_1 = (0, psdReader_1.readInt32)(reader);
6867
+ var top_2 = (0, psdReader_1.readInt32)(reader);
6836
6868
  var right_1 = (0, psdReader_1.readInt32)(reader);
6869
+ var bottom_1 = (0, psdReader_1.readInt32)(reader);
6837
6870
  var url = (0, psdReader_1.readUnicodeString)(reader);
6838
6871
  var target_1 = (0, psdReader_1.readUnicodeString)(reader);
6839
6872
  var message = (0, psdReader_1.readUnicodeString)(reader);
@@ -6939,10 +6972,10 @@ target) { return target.slices ? target.slices.length : 0; }, function (reader,
6939
6972
  (0, psdWriter_1.writeUint32)(writer, slice.associatedLayerId);
6940
6973
  (0, psdWriter_1.writeUnicodeString)(writer, slice.name);
6941
6974
  (0, psdWriter_1.writeUint32)(writer, sliceTypes.indexOf(slice.type));
6942
- (0, psdWriter_1.writeInt32)(writer, slice.bounds.top);
6943
6975
  (0, psdWriter_1.writeInt32)(writer, slice.bounds.left);
6944
- (0, psdWriter_1.writeInt32)(writer, slice.bounds.bottom);
6976
+ (0, psdWriter_1.writeInt32)(writer, slice.bounds.top);
6945
6977
  (0, psdWriter_1.writeInt32)(writer, slice.bounds.right);
6978
+ (0, psdWriter_1.writeInt32)(writer, slice.bounds.bottom);
6946
6979
  (0, psdWriter_1.writeUnicodeString)(writer, slice.url);
6947
6980
  (0, psdWriter_1.writeUnicodeString)(writer, slice.target);
6948
6981
  (0, psdWriter_1.writeUnicodeString)(writer, slice.message);
@@ -8446,6 +8479,7 @@ function writePascalString(writer, text, padTo) {
8446
8479
  writeUint8(writer, length);
8447
8480
  for (var i = 0; i < length; i++) {
8448
8481
  var code = text.charCodeAt(i);
8482
+ // writeUint8(writer, code); // for testing
8449
8483
  writeUint8(writer, code < 128 ? code : '?'.charCodeAt(0));
8450
8484
  }
8451
8485
  while (++length % padTo) {
@@ -1,4 +1,4 @@
1
- import { AntiAlias, BevelDirection, BevelStyle, BevelTechnique, BlendMode, Color, GlowSource, GlowTechnique, GradientStyle, InterpolationMethod, LayerEffectsInfo, LineAlignment, LineCapType, LineJoinType, Orientation, TextGridding, TimelineKeyInterpolation, TimelineTrack, TimelineTrackType, Units, UnitsValue, VectorContent, WarpStyle } from './psd';
1
+ import { AntiAlias, BevelDirection, BevelStyle, BevelTechnique, BlendMode, Color, GlowSource, GlowTechnique, GradientStyle, InterpolationMethod, LayerEffectsInfo, LineAlignment, LineCapType, LineJoinType, Orientation, TextGridding, TimelineKeyInterpolation, TimelineTrack, TimelineTrackType, Units, UnitsBounds, UnitsValue, VectorContent, WarpStyle } from './psd';
2
2
  import { PsdReader } from './psdReader';
3
3
  import { PsdWriter } from './psdWriter';
4
4
  export declare function setLogErrors(value: boolean): void;
@@ -43,7 +43,7 @@ export type DescriptorColor = {
43
43
  'B ': number;
44
44
  } | {
45
45
  _name: '';
46
- _classID: 'XXXX';
46
+ _classID: 'RGBC';
47
47
  redFloat: number;
48
48
  greenFloat: number;
49
49
  blueFloat: number;
@@ -121,11 +121,19 @@ export interface StrokeDescriptor {
121
121
  strokeStyleContent: DescriptorVectorContent;
122
122
  strokeStyleResolution: number;
123
123
  }
124
+ export interface BoundsDescriptor {
125
+ Left: DescriptorUnitsValue;
126
+ 'Top ': DescriptorUnitsValue;
127
+ Rght: DescriptorUnitsValue;
128
+ Btom: DescriptorUnitsValue;
129
+ }
124
130
  export interface TextDescriptor {
125
131
  'Txt ': string;
126
132
  textGridding: string;
127
133
  Ornt: string;
128
134
  AntA: string;
135
+ bounds?: BoundsDescriptor;
136
+ boundingBox?: BoundsDescriptor;
129
137
  TextIndex: number;
130
138
  EngineData?: Uint8Array;
131
139
  }
@@ -209,6 +217,8 @@ export declare function xyToHorzVrtc(xy: {
209
217
  x: number;
210
218
  y: number;
211
219
  }): HrznVrtcDescriptor;
220
+ export declare function descBoundsToBounds(desc: BoundsDescriptor): UnitsBounds;
221
+ export declare function boundsToDescBounds(bounds: UnitsBounds): BoundsDescriptor;
212
222
  export type TimelineAnimKeyDescriptor = {
213
223
  Type: 'keyType.Opct';
214
224
  Opct: DescriptorUnitsValue;
@@ -297,17 +307,17 @@ export interface Lfx2Descriptor {
297
307
  export interface LmfxDescriptor {
298
308
  'Scl '?: DescriptorUnitsValue;
299
309
  masterFXSwitch?: boolean;
300
- numModifyingFX?: number;
301
- OrGl?: EffectDescriptor;
302
- IrGl?: EffectDescriptor;
303
- ebbl?: EffectDescriptor;
304
- ChFX?: EffectDescriptor;
305
310
  dropShadowMulti?: EffectDescriptor[];
306
311
  innerShadowMulti?: EffectDescriptor[];
312
+ OrGl?: EffectDescriptor;
307
313
  solidFillMulti?: EffectDescriptor[];
308
314
  gradientFillMulti?: EffectDescriptor[];
309
- frameFXMulti?: EffectDescriptor[];
310
315
  patternFill?: EffectDescriptor;
316
+ frameFXMulti?: EffectDescriptor[];
317
+ IrGl?: EffectDescriptor;
318
+ ebbl?: EffectDescriptor;
319
+ ChFX?: EffectDescriptor;
320
+ numModifyingFX?: number;
311
321
  }
312
322
  export declare function serializeEffects(e: LayerEffectsInfo, log: boolean, multi: boolean): Lfx2Descriptor & LmfxDescriptor;
313
323
  export declare function parseEffects(info: Lfx2Descriptor & LmfxDescriptor, log: boolean): LayerEffectsInfo;
@@ -11,8 +11,8 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.strokeStyleLineCapType = exports.ESliceBGColorType = exports.ESliceOrigin = exports.ESliceVertAlign = exports.ESliceHorzAlign = exports.ESliceType = exports.FrFl = exports.FStl = exports.ClrS = exports.gradientInterpolationMethodType = exports.stdTrackID = exports.animInterpStyleEnum = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.frac = exports.unitsValue = exports.unitsPercentF = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.serializeColor = exports.parseColor = exports.serializeVectorContent = exports.parseVectorContent = exports.serializeTrackList = exports.parseTrackList = exports.parseEffects = exports.serializeEffects = exports.xyToHorzVrtc = exports.horzVrtcToXY = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
15
- exports.prjM = exports.FlMd = exports.IntC = exports.IntE = exports.Drct = exports.WndM = exports.CntE = exports.FlCl = exports.ExtR = exports.ExtT = exports.DfsM = exports.blurType = exports.Lns = exports.MztT = exports.Chnl = exports.Dstr = exports.ZZTy = exports.Wvtp = exports.SphM = exports.RplS = exports.Cnvr = exports.UndA = exports.DspM = exports.SmBQ = exports.SmBM = exports.BlrQ = exports.BlrM = exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = void 0;
14
+ exports.ESliceOrigin = exports.ESliceVertAlign = exports.ESliceHorzAlign = exports.ESliceType = exports.FrFl = exports.FStl = exports.ClrS = exports.gradientInterpolationMethodType = exports.stdTrackID = exports.animInterpStyleEnum = exports.GrdT = exports.IGSr = exports.BETE = exports.BESs = exports.bvlT = exports.BESl = exports.BlnM = exports.warpStyle = exports.Annt = exports.Ornt = exports.textGridding = exports.frac = exports.unitsValue = exports.unitsPercentF = exports.unitsPercent = exports.unitsAngle = exports.parseUnitsToNumber = exports.parseUnitsOrNumber = exports.parseUnits = exports.parsePercentOrAngle = exports.parsePercent = exports.parseAngle = exports.serializeColor = exports.parseColor = exports.serializeVectorContent = exports.parseVectorContent = exports.serializeTrackList = exports.parseTrackList = exports.parseEffects = exports.serializeEffects = exports.boundsToDescBounds = exports.descBoundsToBounds = exports.xyToHorzVrtc = exports.horzVrtcToXY = exports.writeVersionAndDescriptor = exports.readVersionAndDescriptor = exports.writeDescriptorStructure = exports.readDescriptorStructure = exports.readAsciiStringOrClassId = exports.setLogErrors = void 0;
15
+ exports.prjM = exports.FlMd = exports.IntC = exports.IntE = exports.Drct = exports.WndM = exports.CntE = exports.FlCl = exports.ExtR = exports.ExtT = exports.DfsM = exports.blurType = exports.Lns = exports.MztT = exports.Chnl = exports.Dstr = exports.ZZTy = exports.Wvtp = exports.SphM = exports.RplS = exports.Cnvr = exports.UndA = exports.DspM = exports.SmBQ = exports.SmBM = exports.BlrQ = exports.BlrM = exports.strokeStyleLineAlignment = exports.strokeStyleLineJoinType = exports.strokeStyleLineCapType = exports.ESliceBGColorType = void 0;
16
16
  var helpers_1 = require("./helpers");
17
17
  var psdReader_1 = require("./psdReader");
18
18
  var psdWriter_1 = require("./psdWriter");
@@ -107,6 +107,7 @@ var fieldToExtType = {
107
107
  sheetStyle: nullType,
108
108
  translation: nullType,
109
109
  Skew: nullType,
110
+ boundingBox: makeType('', 'boundingBox'),
110
111
  'Lnk ': makeType('', 'ExternalFileLink'),
111
112
  frameReader: makeType('', 'FrameReader'),
112
113
  effectParams: makeType('', 'motionTrackEffectParams'),
@@ -379,7 +380,10 @@ function writeDescriptorStructure(writer, name, classId, value, root) {
379
380
  continue;
380
381
  var type = getTypeByKey(key, value[key], root, value);
381
382
  var extType = fieldToExtType[key];
382
- if (key === 'origin') {
383
+ if (key === 'bounds' && root === 'text') {
384
+ extType = makeType('', 'bounds');
385
+ }
386
+ else if (key === 'origin') {
383
387
  type = root === 'slices' ? 'enum' : 'Objc';
384
388
  }
385
389
  else if ((key === 'Cyn ' || key === 'Mgnt' || key === 'Ylw ' || key === 'Blck') && value._classID === 'CMYC') {
@@ -794,6 +798,26 @@ function xyToHorzVrtc(xy) {
794
798
  return { Hrzn: xy.x, Vrtc: xy.y };
795
799
  }
796
800
  exports.xyToHorzVrtc = xyToHorzVrtc;
801
+ function descBoundsToBounds(desc) {
802
+ return {
803
+ top: parseUnits(desc['Top ']),
804
+ left: parseUnits(desc.Left),
805
+ right: parseUnits(desc.Rght),
806
+ bottom: parseUnits(desc.Btom),
807
+ };
808
+ }
809
+ exports.descBoundsToBounds = descBoundsToBounds;
810
+ function boundsToDescBounds(bounds) {
811
+ var _a;
812
+ return _a = {
813
+ Left: unitsValue(bounds.left, 'bounds.left')
814
+ },
815
+ _a['Top '] = unitsValue(bounds.top, 'bounds.top'),
816
+ _a.Rght = unitsValue(bounds.right, 'bounds.right'),
817
+ _a.Btom = unitsValue(bounds.bottom, 'bounds.bottom'),
818
+ _a;
819
+ }
820
+ exports.boundsToDescBounds = boundsToDescBounds;
797
821
  function parseFxObject(fx) {
798
822
  var stroke = {
799
823
  enabled: !!fx.enab,
@@ -842,11 +866,11 @@ function serializeFxObject(stroke) {
842
866
  function serializeEffects(e, log, multi) {
843
867
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
844
868
  var info = multi ? {
845
- 'Scl ': unitsPercent((_a = e.scale) !== null && _a !== void 0 ? _a : 1),
869
+ 'Scl ': unitsPercentF((_a = e.scale) !== null && _a !== void 0 ? _a : 1),
846
870
  masterFXSwitch: !e.disabled,
847
871
  } : {
848
872
  masterFXSwitch: !e.disabled,
849
- 'Scl ': unitsPercent((_b = e.scale) !== null && _b !== void 0 ? _b : 1),
873
+ 'Scl ': unitsPercentF((_b = e.scale) !== null && _b !== void 0 ? _b : 1),
850
874
  };
851
875
  var arrayKeys = ['dropShadow', 'innerShadow', 'solidFill', 'gradientOverlay', 'stroke'];
852
876
  for (var _i = 0, arrayKeys_1 = arrayKeys; _i < arrayKeys_1.length; _i++) {
@@ -896,6 +920,9 @@ function serializeEffects(e, log, multi) {
896
920
  info.numModifyingFX++;
897
921
  }
898
922
  }
923
+ else if (value.enabled) {
924
+ info.numModifyingFX++;
925
+ }
899
926
  }
900
927
  }
901
928
  return info;
@@ -1285,7 +1312,7 @@ function serializeEffectObject(obj, objName, reportErrors) {
1285
1312
  result.sdwO = unitsPercent(val);
1286
1313
  break;
1287
1314
  case 'angle':
1288
- if (objName === 'gradientOverlay') {
1315
+ if (objName === 'gradientOverlay' || objName === 'patternFill') {
1289
1316
  result.Angl = unitsAngle(val);
1290
1317
  }
1291
1318
  else {
@@ -1555,7 +1582,7 @@ function serializeColor(color) {
1555
1582
  return { _name: '', _classID: 'RGBC', 'Rd ': color.r || 0, 'Grn ': color.g || 0, 'Bl ': color.b || 0 };
1556
1583
  }
1557
1584
  else if ('fr' in color) {
1558
- return { _name: '', _classID: 'XXXX', redFloat: color.fr, greenFloat: color.fg, blueFloat: color.fb };
1585
+ return { _name: '', _classID: 'RGBC', redFloat: color.fr, greenFloat: color.fg, blueFloat: color.fb };
1559
1586
  }
1560
1587
  else if ('h' in color) {
1561
1588
  return { _name: '', _classID: 'HSBC', 'H ': unitsAngle(color.h * 360), Strt: color.s || 0, Brgh: color.b || 0 };