@adnsistemas/pdf-lib 2.7.0 → 2.7.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/cjs/utils/png.js +1 -1
- package/cjs/utils/png.js.map +1 -1
- package/dist/pdf-lib.esm.js +125 -38
- package/dist/pdf-lib.esm.js.map +1 -1
- package/dist/pdf-lib.esm.min.js +3 -3
- package/dist/pdf-lib.esm.min.js.map +1 -1
- package/dist/pdf-lib.js +125 -38
- package/dist/pdf-lib.js.map +1 -1
- package/dist/pdf-lib.min.js +1 -1
- package/dist/pdf-lib.min.js.map +1 -1
- package/es/utils/png.js +1 -1
- package/es/utils/png.js.map +1 -1
- package/package.json +2 -2
- package/src/utils/png.ts +1 -1
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("@
|
|
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;
|
package/cjs/utils/png.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/utils/png.ts"],"names":[],"mappings":"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"}
|
package/dist/pdf-lib.esm.js
CHANGED
|
@@ -13374,7 +13374,7 @@ UPNG.toRGBA8.decodeImage = function(data, w, h, out)
|
|
|
13374
13374
|
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
13375
|
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
13376
|
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<<
|
|
13377
|
+
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
13378
|
}
|
|
13379
13379
|
}
|
|
13380
13380
|
//console.log(Date.now()-time);
|
|
@@ -13400,6 +13400,7 @@ UPNG.decode = function(buff)
|
|
|
13400
13400
|
//console.log(type,len);
|
|
13401
13401
|
|
|
13402
13402
|
if (type=="IHDR") { UPNG.decode._IHDR(data, offset, out); }
|
|
13403
|
+
else if(type=="CgBI") { out.tabs[type] = data.slice(offset,offset+4); }
|
|
13403
13404
|
else if(type=="IDAT") {
|
|
13404
13405
|
for(var i=0; i<len; i++) dd[doff+i] = data[offset+i];
|
|
13405
13406
|
doff += len;
|
|
@@ -13429,11 +13430,16 @@ UPNG.decode = function(buff)
|
|
|
13429
13430
|
out.tabs[type] = [];
|
|
13430
13431
|
for(var i=0; i<8; i++) out.tabs[type].push(bin.readUint(data, offset+i*4));
|
|
13431
13432
|
}
|
|
13432
|
-
else if(type=="tEXt") {
|
|
13433
|
+
else if(type=="tEXt" || type=="zTXt") {
|
|
13433
13434
|
if(out.tabs[type]==null) out.tabs[type] = {};
|
|
13434
13435
|
var nz = bin.nextZero(data, offset);
|
|
13435
13436
|
var keyw = bin.readASCII(data, offset, nz-offset);
|
|
13436
|
-
var text =
|
|
13437
|
+
var text, tl=offset+len-nz-1;
|
|
13438
|
+
if(type=="tEXt") text = bin.readASCII(data, nz+1, tl);
|
|
13439
|
+
else {
|
|
13440
|
+
var bfr = UPNG.decode._inflate(data.slice(nz+2,nz+2+tl));
|
|
13441
|
+
text = bin.readUTF8(bfr,0,bfr.length);
|
|
13442
|
+
}
|
|
13437
13443
|
out.tabs[type][keyw] = text;
|
|
13438
13444
|
}
|
|
13439
13445
|
else if(type=="iTXt") {
|
|
@@ -13441,12 +13447,17 @@ UPNG.decode = function(buff)
|
|
|
13441
13447
|
var nz = 0, off = offset;
|
|
13442
13448
|
nz = bin.nextZero(data, off);
|
|
13443
13449
|
var keyw = bin.readASCII(data, off, nz-off); off = nz + 1;
|
|
13444
|
-
data[off]; data[off+1]; off+=2;
|
|
13450
|
+
var cflag = data[off]; data[off+1]; off+=2;
|
|
13445
13451
|
nz = bin.nextZero(data, off);
|
|
13446
13452
|
bin.readASCII(data, off, nz-off); off = nz + 1;
|
|
13447
13453
|
nz = bin.nextZero(data, off);
|
|
13448
13454
|
bin.readUTF8(data, off, nz-off); off = nz + 1;
|
|
13449
|
-
var text
|
|
13455
|
+
var text, tl=len-(off-offset);
|
|
13456
|
+
if(cflag==0) text = bin.readUTF8(data, off, tl);
|
|
13457
|
+
else {
|
|
13458
|
+
var bfr = UPNG.decode._inflate(data.slice(off,off+tl));
|
|
13459
|
+
text = bin.readUTF8(bfr,0,bfr.length);
|
|
13460
|
+
}
|
|
13450
13461
|
out.tabs[type][keyw] = text;
|
|
13451
13462
|
}
|
|
13452
13463
|
else if(type=="PLTE") {
|
|
@@ -13473,12 +13484,12 @@ UPNG.decode = function(buff)
|
|
|
13473
13484
|
else if(type=="IEND") {
|
|
13474
13485
|
break;
|
|
13475
13486
|
}
|
|
13476
|
-
//else { log("unknown chunk type", type, len); }
|
|
13487
|
+
//else { console.log("unknown chunk type", type, len); out.tabs[type]=data.slice(offset,offset+len); }
|
|
13477
13488
|
offset += len;
|
|
13478
13489
|
bin.readUint(data, offset); offset += 4;
|
|
13479
13490
|
}
|
|
13480
13491
|
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);
|
|
13492
|
+
fr.data = UPNG.decode._decompress(out, fd.slice(0,foff), fr.rect.width, fr.rect.height);
|
|
13482
13493
|
}
|
|
13483
13494
|
out.data = UPNG.decode._decompress(out, dd, out.width, out.height);
|
|
13484
13495
|
|
|
@@ -13488,7 +13499,8 @@ UPNG.decode = function(buff)
|
|
|
13488
13499
|
|
|
13489
13500
|
UPNG.decode._decompress = function(out, dd, w, h) {
|
|
13490
13501
|
var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), buff = new Uint8Array((bpl+1+out.interlace)*h);
|
|
13491
|
-
dd = UPNG.
|
|
13502
|
+
if(out.tabs["CgBI"]) dd = UPNG.inflateRaw(dd,buff);
|
|
13503
|
+
else dd = UPNG.decode._inflate(dd,buff);
|
|
13492
13504
|
if (out.interlace==0) dd = UPNG.decode._filterZero(dd, out, 0, w, h);
|
|
13493
13505
|
else if(out.interlace==1) dd = UPNG.decode._readInterlace(dd, out);
|
|
13494
13506
|
//console.log(Date.now()-time);
|
|
@@ -13498,7 +13510,7 @@ UPNG.decode._decompress = function(out, dd, w, h) {
|
|
|
13498
13510
|
UPNG.decode._inflate = function(data, buff) { var out=UPNG["inflateRaw"](new Uint8Array(data.buffer, 2,data.length-6),buff); return out; };
|
|
13499
13511
|
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
13512
|
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<<
|
|
13513
|
+
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
13514
|
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
13515
|
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
13516
|
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 +13607,7 @@ UPNG.decode._filterZero = function(data, out, off, w, h)
|
|
|
13595
13607
|
var bpp = UPNG.decode._getBPP(out), bpl = Math.ceil(w*bpp/8), paeth = UPNG.decode._paeth;
|
|
13596
13608
|
bpp = Math.ceil(bpp/8);
|
|
13597
13609
|
|
|
13598
|
-
var i
|
|
13610
|
+
var i,di, type=data[off], x=0;
|
|
13599
13611
|
|
|
13600
13612
|
if(type>1) data[off]=[0,0,1][type-2];
|
|
13601
13613
|
if(type==3) for(x=bpp; x<bpl; x++) data[x+1] = (data[x+1] + (data[x+1-bpp]>>>1) )&255;
|
|
@@ -13695,12 +13707,13 @@ UPNG._copyTile = function(sb, sw, sh, tb, tw, th, xoff, yoff, mode)
|
|
|
13695
13707
|
|
|
13696
13708
|
|
|
13697
13709
|
|
|
13710
|
+
|
|
13698
13711
|
UPNG.encode = function(bufs, w, h, ps, dels, tabs, forbidPlte)
|
|
13699
13712
|
{
|
|
13700
13713
|
if(ps==null) ps=0;
|
|
13701
13714
|
if(forbidPlte==null) forbidPlte = false;
|
|
13702
13715
|
|
|
13703
|
-
var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte]);
|
|
13716
|
+
var nimg = UPNG.encode.compress(bufs, w, h, ps, [false, false, false, 0, forbidPlte,false]);
|
|
13704
13717
|
UPNG.encode.compressPNG(nimg, -1);
|
|
13705
13718
|
|
|
13706
13719
|
return UPNG.encode._main(nimg, w, h, dels, tabs);
|
|
@@ -13848,7 +13861,7 @@ UPNG.encode.compressPNG = function(out, filter, levelZero) {
|
|
|
13848
13861
|
UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBits, forbidPlte
|
|
13849
13862
|
{
|
|
13850
13863
|
//var time = Date.now();
|
|
13851
|
-
var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4];
|
|
13864
|
+
var onlyBlend = prms[0], evenCrd = prms[1], forbidPrev = prms[2], minBits = prms[3], forbidPlte = prms[4], dither=prms[5];
|
|
13852
13865
|
|
|
13853
13866
|
var ctype = 6, depth = 8, alphaAnd=255;
|
|
13854
13867
|
|
|
@@ -13864,17 +13877,27 @@ UPNG.encode.compress = function(bufs, w, h, ps, prms) // prms: onlyBlend, minBi
|
|
|
13864
13877
|
var frms = UPNG.encode.framize(bufs, w, h, onlyBlend, evenCrd, forbidPrev);
|
|
13865
13878
|
//console.log("framize", Date.now()-time); time = Date.now();
|
|
13866
13879
|
|
|
13867
|
-
var cmap={}, plte=[], inds=[];
|
|
13880
|
+
var cmap={}, plte=[], inds=[];
|
|
13868
13881
|
|
|
13869
13882
|
if(ps!=0) {
|
|
13870
13883
|
var nbufs = []; for(var i=0; i<frms.length; i++) nbufs.push(frms[i].img.buffer);
|
|
13871
13884
|
|
|
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; }
|
|
13885
|
+
var abuf = UPNG.encode.concatRGBA(nbufs), qres = UPNG.quantize(abuf, ps);
|
|
13876
13886
|
|
|
13877
13887
|
for(var i=0; i<qres.plte.length; i++) plte.push(qres.plte[i].est.rgba);
|
|
13888
|
+
|
|
13889
|
+
var cof = 0;
|
|
13890
|
+
for(var i=0; i<frms.length; i++) {
|
|
13891
|
+
var frm=frms[i], bln=frm.img.length, ind = new Uint8Array(qres.inds.buffer, cof>>2, bln>>2); inds.push(ind);
|
|
13892
|
+
var bb = new Uint8Array(qres.abuf,cof,bln);
|
|
13893
|
+
|
|
13894
|
+
//console.log(frm.img, frm.width, frm.height);
|
|
13895
|
+
//var time = Date.now();
|
|
13896
|
+
if(dither) UPNG.encode.dither(frm.img, frm.rect.width, frm.rect.height, plte, bb, ind);
|
|
13897
|
+
//console.log(Date.now()-time);
|
|
13898
|
+
frm.img.set(bb); cof+=bln;
|
|
13899
|
+
}
|
|
13900
|
+
|
|
13878
13901
|
//console.log("quantize", Date.now()-time); time = Date.now();
|
|
13879
13902
|
}
|
|
13880
13903
|
else {
|
|
@@ -14066,8 +14089,8 @@ UPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)
|
|
|
14066
14089
|
else if(h*bpl>500000 || bpp==1) ftry=[0];
|
|
14067
14090
|
var opts; if(levelZero) opts={level:0};
|
|
14068
14091
|
|
|
14069
|
-
var CMPR = (levelZero && UZIP!=null) ? UZIP : pako$1;
|
|
14070
14092
|
|
|
14093
|
+
var CMPR = (data.length>10e6 && UZIP!=null) ? UZIP : pako$1;
|
|
14071
14094
|
for(var i=0; i<ftry.length; i++) {
|
|
14072
14095
|
for(var y=0; y<h; y++) UPNG.encode._filterLine(data, img, y, bpl, bpp, ftry[i]);
|
|
14073
14096
|
//var nimg = new Uint8Array(data.length);
|
|
@@ -14077,6 +14100,7 @@ UPNG.encode._filterZero = function(img,h,bpp,bpl,data, filter, levelZero)
|
|
|
14077
14100
|
//console.log(crc, UZIP.adler(data,2,data.length-6));
|
|
14078
14101
|
fls.push(CMPR["deflate"](data,opts));
|
|
14079
14102
|
}
|
|
14103
|
+
|
|
14080
14104
|
var ti, tsize=1e9;
|
|
14081
14105
|
for(var i=0; i<fls.length; i++) if(fls[i].length<tsize) { ti=i; tsize=fls[i].length; }
|
|
14082
14106
|
return fls[ti];
|
|
@@ -14131,27 +14155,30 @@ UPNG.crc = {
|
|
|
14131
14155
|
|
|
14132
14156
|
UPNG.quantize = function(abuf, ps)
|
|
14133
14157
|
{
|
|
14134
|
-
var
|
|
14158
|
+
var sb = new Uint8Array(abuf), tb = sb.slice(0), tb32 = new Uint32Array(tb.buffer);
|
|
14135
14159
|
|
|
14136
|
-
var KD = UPNG.quantize.getKDtree(
|
|
14160
|
+
var KD = UPNG.quantize.getKDtree(tb, ps);
|
|
14137
14161
|
var root = KD[0], leafs = KD[1];
|
|
14138
14162
|
|
|
14139
|
-
UPNG.quantize.planeDst;
|
|
14140
|
-
var
|
|
14141
|
-
|
|
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);
|
|
14163
|
+
var planeDst = UPNG.quantize.planeDst;
|
|
14164
|
+
var len=sb.length;
|
|
14145
14165
|
|
|
14146
|
-
|
|
14147
|
-
|
|
14148
|
-
|
|
14149
|
-
|
|
14150
|
-
|
|
14151
|
-
|
|
14152
|
-
|
|
14153
|
-
|
|
14154
|
-
|
|
14166
|
+
var inds = new Uint8Array(len>>2), nd;
|
|
14167
|
+
if(sb.length<20e6) // precise, but slow :(
|
|
14168
|
+
for(var i=0; i<len; i+=4) {
|
|
14169
|
+
var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
|
|
14170
|
+
|
|
14171
|
+
nd = UPNG.quantize.getNearest(root, r, g, b, a);
|
|
14172
|
+
inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
|
|
14173
|
+
}
|
|
14174
|
+
else
|
|
14175
|
+
for(var i=0; i<len; i+=4) {
|
|
14176
|
+
var r=sb[i]*(1/255), g=sb[i+1]*(1/255), b=sb[i+2]*(1/255), a=sb[i+3]*(1/255);
|
|
14177
|
+
|
|
14178
|
+
nd = root; while(nd.left) nd = (planeDst(nd.est,r,g,b,a)<=0) ? nd.left : nd.right;
|
|
14179
|
+
inds[i>>2] = nd.ind; tb32[i>>2] = nd.est.rgba;
|
|
14180
|
+
}
|
|
14181
|
+
return { abuf:tb.buffer, inds:inds, plte:leafs };
|
|
14155
14182
|
};
|
|
14156
14183
|
|
|
14157
14184
|
UPNG.quantize.getKDtree = function(nimg, ps, err) {
|
|
@@ -14259,12 +14286,12 @@ UPNG.quantize.estats = function(stats){
|
|
|
14259
14286
|
];
|
|
14260
14287
|
|
|
14261
14288
|
var A = Rj, M = UPNG.M4;
|
|
14262
|
-
var b = [
|
|
14289
|
+
var b = [Math.random(),Math.random(),Math.random(),Math.random()], mi = 0, tmi = 0;
|
|
14263
14290
|
|
|
14264
14291
|
if(N!=0)
|
|
14265
|
-
for(var i=0; i<
|
|
14292
|
+
for(var i=0; i<16; i++) {
|
|
14266
14293
|
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;
|
|
14294
|
+
if(i!=0 && Math.abs(tmi-mi)<1e-9) break; mi = tmi;
|
|
14268
14295
|
}
|
|
14269
14296
|
//b = [0,0,1,0]; mi=N;
|
|
14270
14297
|
var q = [m0*iN, m1*iN, m2*iN, m3*iN];
|
|
@@ -14301,6 +14328,66 @@ UPNG.encode.concatRGBA = function(bufs) {
|
|
|
14301
14328
|
return nimg.buffer;
|
|
14302
14329
|
};
|
|
14303
14330
|
|
|
14331
|
+
UPNG.encode.dither = function(sb, w, h, plte, tb, oind) {
|
|
14332
|
+
|
|
14333
|
+
function addErr(er, tg, ti, f) {
|
|
14334
|
+
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;
|
|
14335
|
+
}
|
|
14336
|
+
function N(x) { return Math.max(0, Math.min(255, x)); }
|
|
14337
|
+
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); }
|
|
14338
|
+
|
|
14339
|
+
|
|
14340
|
+
var pc=plte.length, nplt = [];
|
|
14341
|
+
for(var i=0; i<pc; i++) {
|
|
14342
|
+
var c = plte[i];
|
|
14343
|
+
nplt.push([((c>>>0)&255), ((c>>>8)&255), ((c>>>16)&255), ((c>>>24)&255)]);
|
|
14344
|
+
}
|
|
14345
|
+
for(var i=0; i<pc; i++) {
|
|
14346
|
+
var ne=0xffffffff, ni=0;
|
|
14347
|
+
for(var j=0; j<pc; j++) { var ce=D(nplt[i],nplt[j]); if(j!=i && ce<ne) { ne=ce; ni=j; } }
|
|
14348
|
+
}
|
|
14349
|
+
|
|
14350
|
+
var tb32 = new Uint32Array(tb.buffer);
|
|
14351
|
+
var err = new Int16Array(w*h*4);
|
|
14352
|
+
|
|
14353
|
+
for(var y=0; y<h; y++) {
|
|
14354
|
+
for(var x=0; x<w; x++) {
|
|
14355
|
+
var i = (y*w+x)*4;
|
|
14356
|
+
|
|
14357
|
+
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])];
|
|
14358
|
+
|
|
14359
|
+
var ni=0, nd = 0xffffff;
|
|
14360
|
+
for(var j=0; j<pc; j++) {
|
|
14361
|
+
var cd = D(cc,nplt[j]);
|
|
14362
|
+
if(cd<nd) { nd=cd; ni=j; }
|
|
14363
|
+
}
|
|
14364
|
+
|
|
14365
|
+
//ni = oind[i>>2];
|
|
14366
|
+
var nc = nplt[ni];
|
|
14367
|
+
var er = [cc[0]-nc[0], cc[1]-nc[1], cc[2]-nc[2], cc[3]-nc[3]];
|
|
14368
|
+
|
|
14369
|
+
//addErr(er, err, i+4, 16);
|
|
14370
|
+
|
|
14371
|
+
//*
|
|
14372
|
+
if(x!=w-1) addErr(er, err, i+4 , 7);
|
|
14373
|
+
if(y!=h-1) {
|
|
14374
|
+
if(x!= 0) addErr(er, err, i+4*w-4, 3);
|
|
14375
|
+
addErr(er, err, i+4*w , 5);
|
|
14376
|
+
if(x!=w-1) addErr(er, err, i+4*w+4, 1); //*/
|
|
14377
|
+
}
|
|
14378
|
+
|
|
14379
|
+
oind[i>>2] = ni; tb32[i>>2] = plte[ni];
|
|
14380
|
+
}
|
|
14381
|
+
}
|
|
14382
|
+
};
|
|
14383
|
+
if (typeof module !== 'undefined') {
|
|
14384
|
+
if (exports && exports.default) {
|
|
14385
|
+
module.exports = exports.default;
|
|
14386
|
+
} else if (exports) {
|
|
14387
|
+
module.exports = exports;
|
|
14388
|
+
}
|
|
14389
|
+
}
|
|
14390
|
+
|
|
14304
14391
|
const getImageType = (ctype) => {
|
|
14305
14392
|
if (ctype === 0)
|
|
14306
14393
|
return PngType.Greyscale;
|