ag-psd 17.0.6 → 18.0.1

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
@@ -448,10 +448,15 @@ function readVectorMask(reader, vectorMask, width, height, size) {
448
448
  case 3: { // Open subpath length record
449
449
  (0, psdReader_1.readUint16)(reader); // count
450
450
  var boolOp = (0, psdReader_1.readInt16)(reader);
451
- (0, psdReader_1.readUint16)(reader); // always 1 ?
451
+ var flags = (0, psdReader_1.readUint16)(reader); // bit 1 always 1 ?
452
452
  (0, psdReader_1.skipBytes)(reader, 18);
453
453
  // TODO: 'combine' here might be wrong
454
- path = { open: selector === 3, operation: boolOp === -1 ? 'combine' : exports.booleanOperations[boolOp], knots: [] };
454
+ path = {
455
+ open: selector === 3,
456
+ operation: boolOp === -1 ? 'combine' : exports.booleanOperations[boolOp],
457
+ knots: [],
458
+ fillRule: flags === 2 ? 'non-zero' : 'even-odd',
459
+ };
455
460
  paths.push(path);
456
461
  break;
457
462
  }
@@ -529,7 +534,7 @@ addHandler('vmsk', hasKey('vectorMask'), function (reader, target, left, _a) {
529
534
  (0, psdWriter_1.writeUint16)(writer, path.open ? 3 : 0);
530
535
  (0, psdWriter_1.writeUint16)(writer, path.knots.length);
531
536
  (0, psdWriter_1.writeUint16)(writer, Math.abs(exports.booleanOperations.indexOf(path.operation))); // default to 1 if not found
532
- (0, psdWriter_1.writeUint16)(writer, 1);
537
+ (0, psdWriter_1.writeUint16)(writer, path.fillRule === 'non-zero' ? 2 : 1);
533
538
  (0, psdWriter_1.writeZeros)(writer, 18); // TODO: these are sometimes non-zero
534
539
  var linkedKnot = path.open ? 4 : 1;
535
540
  var unlinkedKnot = path.open ? 5 : 2;
package/dist/psd.d.ts CHANGED
@@ -444,6 +444,7 @@ export interface BezierPath {
444
444
  open: boolean;
445
445
  operation: BooleanOperation;
446
446
  knots: BezierKnot[];
447
+ fillRule: 'even-odd' | 'non-zero';
447
448
  }
448
449
  export interface ExtraGradientInfo {
449
450
  style?: GradientStyle;
@@ -172,10 +172,15 @@ export function readVectorMask(reader, vectorMask, width, height, size) {
172
172
  case 3: { // Open subpath length record
173
173
  readUint16(reader); // count
174
174
  var boolOp = readInt16(reader);
175
- readUint16(reader); // always 1 ?
175
+ var flags = readUint16(reader); // bit 1 always 1 ?
176
176
  skipBytes(reader, 18);
177
177
  // TODO: 'combine' here might be wrong
178
- path = { open: selector === 3, operation: boolOp === -1 ? 'combine' : booleanOperations[boolOp], knots: [] };
178
+ path = {
179
+ open: selector === 3,
180
+ operation: boolOp === -1 ? 'combine' : booleanOperations[boolOp],
181
+ knots: [],
182
+ fillRule: flags === 2 ? 'non-zero' : 'even-odd',
183
+ };
179
184
  paths.push(path);
180
185
  break;
181
186
  }
@@ -252,7 +257,7 @@ addHandler('vmsk', hasKey('vectorMask'), function (reader, target, left, _a) {
252
257
  writeUint16(writer, path.open ? 3 : 0);
253
258
  writeUint16(writer, path.knots.length);
254
259
  writeUint16(writer, Math.abs(booleanOperations.indexOf(path.operation))); // default to 1 if not found
255
- writeUint16(writer, 1);
260
+ writeUint16(writer, path.fillRule === 'non-zero' ? 2 : 1);
256
261
  writeZeros(writer, 18); // TODO: these are sometimes non-zero
257
262
  var linkedKnot = path.open ? 4 : 1;
258
263
  var unlinkedKnot = path.open ? 5 : 2;