@adnsistemas/pdf-lib 2.7.0 → 2.7.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.
@@ -24,6 +24,21 @@ declare class PDFWriter {
24
24
  protected readonly snapshot: DocumentSnapshot;
25
25
  private parsedObjects;
26
26
  protected constructor(context: PDFContext, objectsPerTick: number, snapshot: DocumentSnapshot);
27
+ /**
28
+ * If PDF has an XRef Stream, then the last object will be probably be skipped on saving.
29
+ * If that's the case, this property will have that object number, and the PDF /Size can
30
+ * be corrected, to be accurate.
31
+ */
32
+ protected _largestSkippedObjectNum: number;
33
+ /**
34
+ * For incremental saves, defers the decision to the snapshot.
35
+ * For full saves, checks that the object is not an XRef stream object.
36
+ * @param {boolean} incremental If making an incremental save, or a full save of the PDF
37
+ * @param {number} objNum Object number
38
+ * @param {PDFObject} object PDFObject used to check if it is an XRef stream, when not 'incremental' saving
39
+ * @returns {boolean} whether the object should be saved or not
40
+ */
41
+ protected shouldSave(incremental: boolean, objNum: number, object: PDFObject): boolean;
27
42
  serializeToBuffer(): Promise<Uint8Array>;
28
43
  protected computeIndirectObjectSize([ref, object]: [
29
44
  PDFRef,
@@ -1 +1 @@
1
- {"version":3,"file":"PDFWriter.d.ts","sourceRoot":"","sources":["../../../src/core/writers/PDFWriter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,UAAU,MAAM,eAAe,CAAC;AAKvC,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAGlD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,eAAe,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IACvC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,cAAM,SAAS;IACb,MAAM,CAAC,UAAU,YAAa,UAAU,kBAAkB,MAAM,eACE;IAElE,MAAM,CAAC,sBAAsB,YAClB,UAAU,kBACH,MAAM,YACZ,gBAAgB,eAC0B;IAEtD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC9C,OAAO,CAAC,aAAa,CAAK;IAE1B,SAAS,aACP,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,gBAAgB;IAOtB,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC;IAmE9C,SAAS,CAAC,yBAAyB,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;QACjD,MAAM;QACN,SAAS;KACV,GAAG,MAAM;IAMV,SAAS,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;cAW5C,iBAAiB,CAC/B,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAmD7B,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;IAYvE,SAAS,CAAC,iBAAiB,MAAO,MAAM,aAGtC;CACH;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"PDFWriter.d.ts","sourceRoot":"","sources":["../../../src/core/writers/PDFWriter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,UAAU,MAAM,eAAe,CAAC;AAKvC,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAKlD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,eAAe,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;IACvC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,cAAM,SAAS;IACb,MAAM,CAAC,UAAU,YAAa,UAAU,kBAAkB,MAAM,eACE;IAElE,MAAM,CAAC,sBAAsB,YAClB,UAAU,kBACH,MAAM,YACZ,gBAAgB,eAC0B;IAEtD,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAEvC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAC1C,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC9C,OAAO,CAAC,aAAa,CAAK;IAE1B,SAAS,aACP,OAAO,EAAE,UAAU,EACnB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,gBAAgB;IAO5B;;;;OAIG;IACH,SAAS,CAAC,wBAAwB,EAAE,MAAM,CAAK;IAE/C;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,GAChB,OAAO;IAeJ,iBAAiB,IAAI,OAAO,CAAC,UAAU,CAAC;IAmE9C,SAAS,CAAC,yBAAyB,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE;QACjD,MAAM;QACN,SAAS;KACV,GAAG,MAAM;IAMV,SAAS,CAAC,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;cAoB5C,iBAAiB,CAC/B,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAoD7B,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW;IAYvE,SAAS,CAAC,iBAAiB,MAAO,MAAM,aAGtC;CACH;AAED,eAAe,SAAS,CAAC"}
@@ -12,9 +12,17 @@ const CharCodes_1 = tslib_1.__importDefault(require("../syntax/CharCodes"));
12
12
  const utils_1 = require("../../utils");
13
13
  const PDFNumber_1 = tslib_1.__importDefault(require("../objects/PDFNumber"));
14
14
  const PDFStream_1 = tslib_1.__importDefault(require("../objects/PDFStream"));
15
+ const PDFName_1 = tslib_1.__importDefault(require("../objects/PDFName"));
16
+ const PDFRawStream_1 = tslib_1.__importDefault(require("../objects/PDFRawStream"));
15
17
  class PDFWriter {
16
18
  constructor(context, objectsPerTick, snapshot) {
17
19
  this.parsedObjects = 0;
20
+ /**
21
+ * If PDF has an XRef Stream, then the last object will be probably be skipped on saving.
22
+ * If that's the case, this property will have that object number, and the PDF /Size can
23
+ * be corrected, to be accurate.
24
+ */
25
+ this._largestSkippedObjectNum = 0;
18
26
  this.shouldWaitForTick = (n) => {
19
27
  this.parsedObjects += n;
20
28
  return this.parsedObjects % this.objectsPerTick === 0;
@@ -23,6 +31,27 @@ class PDFWriter {
23
31
  this.objectsPerTick = objectsPerTick;
24
32
  this.snapshot = snapshot;
25
33
  }
34
+ /**
35
+ * For incremental saves, defers the decision to the snapshot.
36
+ * For full saves, checks that the object is not an XRef stream object.
37
+ * @param {boolean} incremental If making an incremental save, or a full save of the PDF
38
+ * @param {number} objNum Object number
39
+ * @param {PDFObject} object PDFObject used to check if it is an XRef stream, when not 'incremental' saving
40
+ * @returns {boolean} whether the object should be saved or not
41
+ */
42
+ shouldSave(incremental, objNum, object) {
43
+ let should = true;
44
+ if (incremental) {
45
+ should = this.snapshot.shouldSave(objNum);
46
+ }
47
+ else {
48
+ should = !(object instanceof PDFRawStream_1.default &&
49
+ object.dict.lookup(PDFName_1.default.of('Type')) === PDFName_1.default.of('XRef'));
50
+ }
51
+ if (!should && this._largestSkippedObjectNum < objNum)
52
+ this._largestSkippedObjectNum = objNum;
53
+ return should;
54
+ }
26
55
  serializeToBuffer() {
27
56
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
28
57
  const incremental = !(this.snapshot instanceof snapshot_1.DefaultDocumentSnapshot);
@@ -36,7 +65,7 @@ class PDFWriter {
36
65
  buffer[offset++] = CharCodes_1.default.Newline;
37
66
  for (let idx = 0, len = indirectObjects.length; idx < len; idx++) {
38
67
  const [ref, object] = indirectObjects[idx];
39
- if (!this.snapshot.shouldSave(ref.objectNumber)) {
68
+ if (!this.shouldSave(incremental, ref.objectNumber, object)) {
40
69
  continue;
41
70
  }
42
71
  const objectNumber = String(ref.objectNumber);
@@ -82,8 +111,16 @@ class PDFWriter {
82
111
  return refSize + objectSize;
83
112
  }
84
113
  createTrailerDict(prevStartXRef) {
114
+ /**
115
+ * if last object (XRef Stream) is not in the output, then size is one less.
116
+ * An XRef Stream object should always be the largest object number in PDF
117
+ */
118
+ const size = this.context.largestObjectNumber +
119
+ (this._largestSkippedObjectNum === this.context.largestObjectNumber
120
+ ? 0
121
+ : 1);
85
122
  return this.context.obj({
86
- Size: this.context.largestObjectNumber + 1,
123
+ Size: size,
87
124
  Root: this.context.trailerInfo.Root,
88
125
  Encrypt: this.context.trailerInfo.Encrypt,
89
126
  Info: this.context.trailerInfo.Info,
@@ -93,6 +130,7 @@ class PDFWriter {
93
130
  }
94
131
  computeBufferSize(incremental) {
95
132
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
133
+ this._largestSkippedObjectNum = 0;
96
134
  const header = PDFHeader_1.default.forVersion(1, 7);
97
135
  let size = this.snapshot.pdfSize;
98
136
  if (!incremental) {
@@ -105,7 +143,7 @@ class PDFWriter {
105
143
  for (let idx = 0, len = indirectObjects.length; idx < len; idx++) {
106
144
  const indirectObject = indirectObjects[idx];
107
145
  const [ref, object] = indirectObject;
108
- if (!this.snapshot.shouldSave(ref.objectNumber))
146
+ if (!this.shouldSave(incremental, ref.objectNumber, object))
109
147
  continue;
110
148
  if (security)
111
149
  this.encrypt(ref, object, security);
@@ -1 +1 @@
1
- {"version":3,"file":"PDFWriter.js","sourceRoot":"","sources":["../../../src/core/writers/PDFWriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PDFWriter.js","sourceRoot":"","sources":["../../../src/core/writers/PDFWriter.ts"],"names":[],"mappings":"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"}
package/cjs/utils/png.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PNG = exports.PngType = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const upng_1 = tslib_1.__importDefault(require("@pdf-lib/upng"));
5
+ const upng_1 = tslib_1.__importDefault(require("@adnsistemas/upng"));
6
6
  const getImageType = (ctype) => {
7
7
  if (ctype === 0)
8
8
  return PngType.Greyscale;
@@ -1 +1 @@
1
- {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":"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"}
@@ -10325,6 +10325,12 @@ PDFObjectStream.withContextAndObjects = (context, objects, encode = true) => new
10325
10325
  class PDFWriter {
10326
10326
  constructor(context, objectsPerTick, snapshot) {
10327
10327
  this.parsedObjects = 0;
10328
+ /**
10329
+ * If PDF has an XRef Stream, then the last object will be probably be skipped on saving.
10330
+ * If that's the case, this property will have that object number, and the PDF /Size can
10331
+ * be corrected, to be accurate.
10332
+ */
10333
+ this._largestSkippedObjectNum = 0;
10328
10334
  this.shouldWaitForTick = (n) => {
10329
10335
  this.parsedObjects += n;
10330
10336
  return this.parsedObjects % this.objectsPerTick === 0;
@@ -10333,6 +10339,27 @@ class PDFWriter {
10333
10339
  this.objectsPerTick = objectsPerTick;
10334
10340
  this.snapshot = snapshot;
10335
10341
  }
10342
+ /**
10343
+ * For incremental saves, defers the decision to the snapshot.
10344
+ * For full saves, checks that the object is not an XRef stream object.
10345
+ * @param {boolean} incremental If making an incremental save, or a full save of the PDF
10346
+ * @param {number} objNum Object number
10347
+ * @param {PDFObject} object PDFObject used to check if it is an XRef stream, when not 'incremental' saving
10348
+ * @returns {boolean} whether the object should be saved or not
10349
+ */
10350
+ shouldSave(incremental, objNum, object) {
10351
+ let should = true;
10352
+ if (incremental) {
10353
+ should = this.snapshot.shouldSave(objNum);
10354
+ }
10355
+ else {
10356
+ should = !(object instanceof PDFRawStream &&
10357
+ object.dict.lookup(PDFName.of('Type')) === PDFName.of('XRef'));
10358
+ }
10359
+ if (!should && this._largestSkippedObjectNum < objNum)
10360
+ this._largestSkippedObjectNum = objNum;
10361
+ return should;
10362
+ }
10336
10363
  serializeToBuffer() {
10337
10364
  return __awaiter(this, void 0, void 0, function* () {
10338
10365
  const incremental = !(this.snapshot instanceof DefaultDocumentSnapshot);
@@ -10346,7 +10373,7 @@ class PDFWriter {
10346
10373
  buffer[offset++] = CharCodes$1.Newline;
10347
10374
  for (let idx = 0, len = indirectObjects.length; idx < len; idx++) {
10348
10375
  const [ref, object] = indirectObjects[idx];
10349
- if (!this.snapshot.shouldSave(ref.objectNumber)) {
10376
+ if (!this.shouldSave(incremental, ref.objectNumber, object)) {
10350
10377
  continue;
10351
10378
  }
10352
10379
  const objectNumber = String(ref.objectNumber);
@@ -10392,8 +10419,16 @@ class PDFWriter {
10392
10419
  return refSize + objectSize;
10393
10420
  }
10394
10421
  createTrailerDict(prevStartXRef) {
10422
+ /**
10423
+ * if last object (XRef Stream) is not in the output, then size is one less.
10424
+ * An XRef Stream object should always be the largest object number in PDF
10425
+ */
10426
+ const size = this.context.largestObjectNumber +
10427
+ (this._largestSkippedObjectNum === this.context.largestObjectNumber
10428
+ ? 0
10429
+ : 1);
10395
10430
  return this.context.obj({
10396
- Size: this.context.largestObjectNumber + 1,
10431
+ Size: size,
10397
10432
  Root: this.context.trailerInfo.Root,
10398
10433
  Encrypt: this.context.trailerInfo.Encrypt,
10399
10434
  Info: this.context.trailerInfo.Info,
@@ -10403,6 +10438,7 @@ class PDFWriter {
10403
10438
  }
10404
10439
  computeBufferSize(incremental) {
10405
10440
  return __awaiter(this, void 0, void 0, function* () {
10441
+ this._largestSkippedObjectNum = 0;
10406
10442
  const header = PDFHeader.forVersion(1, 7);
10407
10443
  let size = this.snapshot.pdfSize;
10408
10444
  if (!incremental) {
@@ -10415,7 +10451,7 @@ class PDFWriter {
10415
10451
  for (let idx = 0, len = indirectObjects.length; idx < len; idx++) {
10416
10452
  const indirectObject = indirectObjects[idx];
10417
10453
  const [ref, object] = indirectObject;
10418
- if (!this.snapshot.shouldSave(ref.objectNumber))
10454
+ if (!this.shouldSave(incremental, ref.objectNumber, object))
10419
10455
  continue;
10420
10456
  if (security)
10421
10457
  this.encrypt(ref, object, security);
@@ -13374,7 +13410,7 @@ UPNG.toRGBA8.decodeImage = function(data, w, h, out)
13374
13410
  else if(depth== 2) for(var x=0; x<w; x++) { var gr= 85*((data[off+(x>>>2)]>>>(6 -((x&3)<<1)))& 3), al=(gr==tr* 85)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13375
13411
  else if(depth== 4) for(var x=0; x<w; x++) { var gr= 17*((data[off+(x>>>1)]>>>(4 -((x&1)<<2)))&15), al=(gr==tr* 17)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13376
13412
  else if(depth== 8) for(var x=0; x<w; x++) { var gr=data[off+ x], al=(gr ==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13377
- else if(depth==16) for(var x=0; x<w; x++) { var gr=data[off+(x<<1)], al=(rs(data,off+(x<<i))==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13413
+ else if(depth==16) for(var x=0; x<w; x++) { var gr=data[off+(x<<1)], al=(rs(data,off+(x<<1))==tr)?0:255; bf32[to+x]=(al<<24)|(gr<<16)|(gr<<8)|gr; }
13378
13414
  }
13379
13415
  }
13380
13416
  //console.log(Date.now()-time);
@@ -13400,6 +13436,7 @@ UPNG.decode = function(buff)
13400
13436
  //console.log(type,len);
13401
13437
 
13402
13438
  if (type=="IHDR") { UPNG.decode._IHDR(data, offset, out); }
13439
+ else if(type=="CgBI") { out.tabs[type] = data.slice(offset,offset+4); }
13403
13440
  else if(type=="IDAT") {
13404
13441
  for(var i=0; i<len; i++) dd[doff+i] = data[offset+i];
13405
13442
  doff += len;
@@ -13429,11 +13466,16 @@ UPNG.decode = function(buff)
13429
13466
  out.tabs[type] = [];
13430
13467
  for(var i=0; i<8; i++) out.tabs[type].push(bin.readUint(data, offset+i*4));
13431
13468
  }
13432
- else if(type=="tEXt") {
13469
+ else if(type=="tEXt" || type=="zTXt") {
13433
13470
  if(out.tabs[type]==null) out.tabs[type] = {};
13434
13471
  var nz = bin.nextZero(data, offset);
13435
13472
  var keyw = bin.readASCII(data, offset, nz-offset);
13436
- var text = bin.readASCII(data, nz+1, offset+len-nz-1);
13473
+ var text, tl=offset+len-nz-1;
13474
+ if(type=="tEXt") text = bin.readASCII(data, nz+1, tl);
13475
+ else {
13476
+ var bfr = UPNG.decode._inflate(data.slice(nz+2,nz+2+tl));
13477
+ text = bin.readUTF8(bfr,0,bfr.length);
13478
+ }
13437
13479
  out.tabs[type][keyw] = text;
13438
13480
  }
13439
13481
  else if(type=="iTXt") {
@@ -13441,12 +13483,17 @@ UPNG.decode = function(buff)
13441
13483
  var nz = 0, off = offset;
13442
13484
  nz = bin.nextZero(data, off);
13443
13485
  var keyw = bin.readASCII(data, off, nz-off); off = nz + 1;
13444
- data[off]; data[off+1]; off+=2;
13486
+ var cflag = data[off]; data[off+1]; off+=2;
13445
13487
  nz = bin.nextZero(data, off);
13446
13488
  bin.readASCII(data, off, nz-off); off = nz + 1;
13447
13489
  nz = bin.nextZero(data, off);
13448
13490
  bin.readUTF8(data, off, nz-off); off = nz + 1;
13449
- var text = bin.readUTF8(data, off, len-(off-offset));
13491
+ var text, tl=len-(off-offset);
13492
+ if(cflag==0) text = bin.readUTF8(data, off, tl);
13493
+ else {
13494
+ var bfr = UPNG.decode._inflate(data.slice(off,off+tl));
13495
+ text = bin.readUTF8(bfr,0,bfr.length);
13496
+ }
13450
13497
  out.tabs[type][keyw] = text;
13451
13498
  }
13452
13499
  else if(type=="PLTE") {
@@ -13473,12 +13520,12 @@ UPNG.decode = function(buff)
13473
13520
  else if(type=="IEND") {
13474
13521
  break;
13475
13522
  }
13476
- //else { log("unknown chunk type", type, len); }
13523
+ //else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
13477
13524
  offset += len;
13478
13525
  bin.readUint(data, offset); offset += 4;
13479
13526
  }
13480
13527
  if(foff!=0) { var fr = out.frames[out.frames.length-1];
13481
- fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height); foff=0;
13528
+ fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height);
13482
13529
  }
13483
13530
  out.data = UPNG.decode._decompress(out, dd, out.width, out.height);
13484
13531
 
@@ -13488,7 +13535,8 @@ UPNG.decode = function(buff)
13488
13535
 
13489
13536
  UPNG.decode._decompress = function(out, dd, w, h) {
13490
13537
  var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), buff = new Uint8Array((bpl+1+out.interlace)*h);
13491
- dd = UPNG.decode._inflate(dd,buff);
13538
+ if(out.tabs["CgBI"]) dd = UPNG.inflateRaw(dd,buff);
13539
+ else dd = UPNG.decode._inflate(dd,buff);
13492
13540
  if (out.interlace==0) dd = UPNG.decode._filterZero(dd, out, 0, w, h);
13493
13541
  else if(out.interlace==1) dd = UPNG.decode._readInterlace(dd, out);
13494
13542
  //console.log(Date.now()-time);
@@ -13498,7 +13546,7 @@ UPNG.decode._decompress = function(out, dd, w, h) {
13498
13546
  UPNG.decode._inflate = function(data, buff) { var out=UPNG["inflateRaw"](new Uint8Array(data.buffer, 2,data.length-6),buff); return out; };
13499
13547
  UPNG.inflateRaw=function(){var H={};H.H={};H.H.N=function(N,W){var R=Uint8Array,i=0,m=0,J=0,h=0,Q=0,X=0,u=0,w=0,d=0,v,C;
13500
13548
  if(N[0]==3&&N[1]==0)return W?W:new R(0);var V=H.H,n=V.b,A=V.e,l=V.R,M=V.n,I=V.A,e=V.Z,b=V.m,Z=W==null;
13501
- if(Z)W=new R(N.length>>>2<<3);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);
13549
+ if(Z)W=new R(N.length>>>2<<5);while(i==0){i=n(N,d,1);m=n(N,d+1,2);d+=3;if(m==0){if((d&7)!=0)d+=8-(d&7);
13502
13550
  var D=(d>>>3)+4,q=N[D-4]|N[D-3]<<8;if(Z)W=H.H.W(W,w+q);W.set(new R(N.buffer,N.byteOffset+D,q),w);d=D+q<<3;
13503
13551
  w+=q;continue}if(Z)W=H.H.W(W,w+(1<<17));if(m==1){v=b.J;C=b.h;X=(1<<9)-1;u=(1<<5)-1;}if(m==2){J=A(N,d,5)+257;
13504
13552
  h=A(N,d+5,5)+1;Q=A(N,d+10,4)+4;d+=14;var j=1;for(var c=0;c<38;c+=2){b.Q[c]=0;b.Q[c+1]=0;}for(var c=0;
@@ -13595,7 +13643,7 @@ UPNG.decode._filterZero = function(data, out, off, w, h)
13595
13643
  var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), paeth = UPNG.decode._paeth;
13596
13644
  bpp = Math.ceil(bpp/8);
13597
13645
 
13598
- var i=0, di=1, type=data[off], x=0;
13646
+ var i,di, type=data[off], x=0;
13599
13647
 
13600
13648
  if(type>1) data[off]=[0,0,1][type-2];
13601
13649
  if(type==3) for(x=bpp; x<bpl; x++) data[x+1] = (data[x+1] + (data[x+1-bpp]>>>1) )&255;
@@ -13695,12 +13743,13 @@ UPNG._copyTile = function(sb, sw, sh, tb, tw, th, xoff, yoff, mode)
13695
13743
 
13696
13744
 
13697
13745
 
13746
+
13698
13747
  UPNG.encode = function(bufs, w, h, ps, dels, tabs, forbidPlte)
13699
13748
  {
13700
13749
  if(ps==null) ps=0;
13701
13750
  if(forbidPlte==null) forbidPlte = false;
13702
13751
 
13703
- var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte]);
13752
+ var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte,false]);
13704
13753
  UPNG.encode.compressPNG(nimg, -1);
13705
13754
 
13706
13755
  return UPNG.encode._main(nimg, w, h, dels, tabs);
@@ -13848,7 +13897,7 @@ UPNG.encode.compressPNG = function(out, filter, levelZero) {
13848
13897
  UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBits, forbidPlte
13849
13898
  {
13850
13899
  //var time = Date.now();
13851
- var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4];
13900
+ var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4], dither=prms[5];
13852
13901
 
13853
13902
  var ctype = 6, depth = 8, alphaAnd=255;
13854
13903
 
@@ -13864,17 +13913,27 @@ UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBi
13864
13913
  var frms = UPNG.encode.framize(bufs, w, h, onlyBlend, evenCrd, forbidPrev);
13865
13914
  //console.log("framize", Date.now()-time); time = Date.now();
13866
13915
 
13867
- var cmap={}, plte=[], inds=[];
13916
+ var cmap={}, plte=[], inds=[];
13868
13917
 
13869
13918
  if(ps!=0) {
13870
13919
  var nbufs = []; for(var i=0; i<frms.length; i++) nbufs.push(frms[i].img.buffer);
13871
13920
 
13872
- var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
13873
- var cof = 0, bb = new Uint8Array(qres.abuf);
13874
- for(var i=0; i<frms.length; i++) { var ti=frms[i].img, bln=ti.length; inds.push(new Uint8Array(qres.inds.buffer, cof>>2, bln>>2));
13875
- for(var j=0; j<bln; j+=4) { ti[j]=bb[cof+j]; ti[j+1]=bb[cof+j+1]; ti[j+2]=bb[cof+j+2]; ti[j+3]=bb[cof+j+3]; } cof+=bln; }
13921
+ var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
13876
13922
 
13877
13923
  for(var i=0; i<qres.plte.length; i++) plte.push(qres.plte[i].est.rgba);
13924
+
13925
+ var cof = 0;
13926
+ for(var i=0; i<frms.length; i++) {
13927
+ var frm=frms[i], bln=frm.img.length, ind = new Uint8Array(qres.inds.buffer, cof>>2, bln>>2); inds.push(ind);
13928
+ var bb = new Uint8Array(qres.abuf,cof,bln);
13929
+
13930
+ //console.log(frm.img, frm.width, frm.height);
13931
+ //var time = Date.now();
13932
+ if(dither) UPNG.encode.dither(frm.img, frm.rect.width, frm.rect.height, plte, bb, ind);
13933
+ //console.log(Date.now()-time);
13934
+ frm.img.set(bb); cof+=bln;
13935
+ }
13936
+
13878
13937
  //console.log("quantize", Date.now()-time); time = Date.now();
13879
13938
  }
13880
13939
  else {
@@ -14066,8 +14125,8 @@ UPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)
14066
14125
  else if(h*bpl>500000 || bpp==1) ftry=[0];
14067
14126
  var opts; if(levelZero) opts={level:0};
14068
14127
 
14069
- var CMPR = (levelZero && UZIP!=null) ? UZIP : pako$1;
14070
14128
 
14129
+ var CMPR = (data.length>10e6 && UZIP!=null) ? UZIP : pako$1;
14071
14130
  for(var i=0; i<ftry.length; i++) {
14072
14131
  for(var y=0; y<h; y++) UPNG.encode._filterLine(data, img, y, bpl, bpp, ftry[i]);
14073
14132
  //var nimg = new Uint8Array(data.length);
@@ -14077,6 +14136,7 @@ UPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)
14077
14136
  //console.log(crc, UZIP.adler(data,2,data.length-6));
14078
14137
  fls.push(CMPR["deflate"](data,opts));
14079
14138
  }
14139
+
14080
14140
  var ti, tsize=1e9;
14081
14141
  for(var i=0; i<fls.length; i++) if(fls[i].length<tsize) { ti=i; tsize=fls[i].length; }
14082
14142
  return fls[ti];
@@ -14131,27 +14191,30 @@ UPNG.crc = {
14131
14191
 
14132
14192
  UPNG.quantize = function(abuf, ps)
14133
14193
  {
14134
- var oimg = new Uint8Array(abuf), nimg = oimg.slice(0), nimg32 = new Uint32Array(nimg.buffer);
14194
+ var sb = new Uint8Array(abuf), tb = sb.slice(0), tb32 = new Uint32Array(tb.buffer);
14135
14195
 
14136
- var KD = UPNG.quantize.getKDtree(nimg, ps);
14196
+ var KD = UPNG.quantize.getKDtree(tb, ps);
14137
14197
  var root = KD[0], leafs = KD[1];
14138
14198
 
14139
- UPNG.quantize.planeDst;
14140
- var sb = oimg, tb = nimg32, len=sb.length;
14199
+ var planeDst = UPNG.quantize.planeDst;
14200
+ var len=sb.length;
14141
14201
 
14142
- var inds = new Uint8Array(oimg.length>>2);
14143
- for(var i=0; i<len; i+=4) {
14144
- var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
14145
-
14146
- // exact, but too slow :(
14147
- var nd = UPNG.quantize.getNearest(root, r, g, b, a);
14148
- //var nd = root;
14149
- //while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
14150
-
14151
- inds[i>>2] = nd.ind;
14152
- tb[i>>2] = nd.est.rgba;
14153
- }
14154
- return { abuf:nimg.buffer, inds:inds, plte:leafs };
14202
+ var inds = new Uint8Array(len>>2), nd;
14203
+ if(sb.length<20e6) // precise, but slow :(
14204
+ for(var i=0; i<len; i+=4) {
14205
+ var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
14206
+
14207
+ nd = UPNG.quantize.getNearest(root, r, g, b, a);
14208
+ inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
14209
+ }
14210
+ else
14211
+ for(var i=0; i<len; i+=4) {
14212
+ var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
14213
+
14214
+ nd = root; while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
14215
+ inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
14216
+ }
14217
+ return { abuf:tb.buffer, inds:inds, plte:leafs };
14155
14218
  };
14156
14219
 
14157
14220
  UPNG.quantize.getKDtree = function(nimg, ps, err) {
@@ -14259,12 +14322,12 @@ UPNG.quantize.estats = function(stats){
14259
14322
  ];
14260
14323
 
14261
14324
  var A = Rj, M = UPNG.M4;
14262
- var b = [0.5,0.5,0.5,0.5], mi = 0, tmi = 0;
14325
+ var b = [Math.random(),Math.random(),Math.random(),Math.random()], mi = 0, tmi = 0;
14263
14326
 
14264
14327
  if(N!=0)
14265
- for(var i=0; i<10; i++) {
14328
+ for(var i=0; i<16; i++) {
14266
14329
  b = M.multVec(A, b); tmi = Math.sqrt(M.dot(b,b)); b = M.sml(1/tmi, b);
14267
- if(Math.abs(tmi-mi)<1e-9) break; mi = tmi;
14330
+ if(i!=0 && Math.abs(tmi-mi)<1e-9) break; mi = tmi;
14268
14331
  }
14269
14332
  //b = [0,0,1,0]; mi=N;
14270
14333
  var q = [m0*iN, m1*iN, m2*iN, m3*iN];
@@ -14301,6 +14364,66 @@ UPNG.encode.concatRGBA = function(bufs) {
14301
14364
  return nimg.buffer;
14302
14365
  };
14303
14366
 
14367
+ UPNG.encode.dither = function(sb, w, h, plte, tb, oind) {
14368
+
14369
+ function addErr(er, tg, ti, f) {
14370
+ tg[ti]+=(er[0]*f)>>4; tg[ti+1]+=(er[1]*f)>>4; tg[ti+2]+=(er[2]*f)>>4; tg[ti+3]+=(er[3]*f)>>4;
14371
+ }
14372
+ function N(x) { return Math.max(0, Math.min(255, x)); }
14373
+ function D(a,b) { var dr=a[0]-b[0], dg=a[1]-b[1], db=a[2]-b[2], da=a[3]-b[3]; return (dr*dr + dg*dg + db*db + da*da); }
14374
+
14375
+
14376
+ var pc=plte.length, nplt = [];
14377
+ for(var i=0; i<pc; i++) {
14378
+ var c = plte[i];
14379
+ nplt.push([((c>>>0)&255), ((c>>>8)&255), ((c>>>16)&255), ((c>>>24)&255)]);
14380
+ }
14381
+ for(var i=0; i<pc; i++) {
14382
+ var ne=0xffffffff, ni=0;
14383
+ for(var j=0; j<pc; j++) { var ce=D(nplt[i],nplt[j]); if(j!=i && ce<ne) { ne=ce; ni=j; } }
14384
+ }
14385
+
14386
+ var tb32 = new Uint32Array(tb.buffer);
14387
+ var err = new Int16Array(w*h*4);
14388
+
14389
+ for(var y=0; y<h; y++) {
14390
+ for(var x=0; x<w; x++) {
14391
+ var i = (y*w+x)*4;
14392
+
14393
+ var cc = [N(sb[i]+err[i]), N(sb[i+1]+err[i+1]), N(sb[i+2]+err[i+2]), N(sb[i+3]+err[i+3])];
14394
+
14395
+ var ni=0, nd = 0xffffff;
14396
+ for(var j=0; j<pc; j++) {
14397
+ var cd = D(cc,nplt[j]);
14398
+ if(cd<nd) { nd=cd; ni=j; }
14399
+ }
14400
+
14401
+ //ni = oind[i>>2];
14402
+ var nc = nplt[ni];
14403
+ var er = [cc[0]-nc[0], cc[1]-nc[1], cc[2]-nc[2], cc[3]-nc[3]];
14404
+
14405
+ //addErr(er, err, i+4, 16);
14406
+
14407
+ //*
14408
+ if(x!=w-1) addErr(er, err, i+4 , 7);
14409
+ if(y!=h-1) {
14410
+ if(x!= 0) addErr(er, err, i+4*w-4, 3);
14411
+ addErr(er, err, i+4*w , 5);
14412
+ if(x!=w-1) addErr(er, err, i+4*w+4, 1); //*/
14413
+ }
14414
+
14415
+ oind[i>>2] = ni; tb32[i>>2] = plte[ni];
14416
+ }
14417
+ }
14418
+ };
14419
+ if (typeof module !== 'undefined') {
14420
+ if (exports && exports.default) {
14421
+ module.exports = exports.default;
14422
+ } else if (exports) {
14423
+ module.exports = exports;
14424
+ }
14425
+ }
14426
+
14304
14427
  const getImageType = (ctype) => {
14305
14428
  if (ctype === 0)
14306
14429
  return PngType.Greyscale;