EmbyCrackedClient/web/modules/qrcode-generator/qrcode.js

1 line
28 KiB
JavaScript
Raw Normal View History

2025-06-25 11:46:04 +08:00
var qrcode=(()=>{function qrcode(typeNumber,errorCorrectionLevel){function makeImpl(test,maskPattern){_modules=(moduleCount=>{for(var modules=new Array(moduleCount),row=0;row<moduleCount;row+=1){modules[row]=new Array(moduleCount);for(var col=0;col<moduleCount;col+=1)modules[row][col]=null}return modules})(_moduleCount=4*_typeNumber+17),setupPositionProbePattern(0,0),setupPositionProbePattern(_moduleCount-7,0),setupPositionProbePattern(0,_moduleCount-7),setupPositionAdjustPattern(),setupTimingPattern(),setupTypeInfo(test,maskPattern),7<=_typeNumber&&setupTypeNumber(test),null==_dataCache&&(_dataCache=createData(_typeNumber,_errorCorrectionLevel,_dataList)),mapData(_dataCache,maskPattern)}var PAD0=236,PAD1=17,_typeNumber=typeNumber,_errorCorrectionLevel=QRErrorCorrectionLevel[errorCorrectionLevel],_modules=null,_moduleCount=0,_dataCache=null,_dataList=[],_this={},setupPositionProbePattern=function(row,col){for(var r=-1;r<=7;r+=1)if(!(row+r<=-1||_moduleCount<=row+r))for(var c=-1;c<=7;c+=1)col+c<=-1||_moduleCount<=col+c||(_modules[row+r][col+c]=0<=r&&r<=6&&(0==c||6==c)||0<=c&&c<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=c&&c<=4)},setupTimingPattern=function(){for(var r=8;r<_moduleCount-8;r+=1)null==_modules[r][6]&&(_modules[r][6]=r%2==0);for(var c=8;c<_moduleCount-8;c+=1)null==_modules[6][c]&&(_modules[6][c]=c%2==0)},setupPositionAdjustPattern=function(){for(var pos=QRUtil.getPatternPosition(_typeNumber),i=0;i<pos.length;i+=1)for(var j=0;j<pos.length;j+=1){var row=pos[i],col=pos[j];if(null==_modules[row][col])for(var r=-2;r<=2;r+=1)for(var c=-2;c<=2;c+=1)_modules[row+r][col+c]=-2==r||2==r||-2==c||2==c||0==r&&0==c}},setupTypeNumber=function(test){for(var bits=QRUtil.getBCHTypeNumber(_typeNumber),i=0;i<18;i+=1){var mod=!test&&1==(bits>>i&1);_modules[Math.floor(i/3)][i%3+_moduleCount-8-3]=mod}for(i=0;i<18;i+=1){mod=!test&&1==(bits>>i&1);_modules[i%3+_moduleCount-8-3][Math.floor(i/3)]=mod}},setupTypeInfo=function(test,maskPattern){for(var maskPattern=_errorCorrectionLevel<<3|maskPattern,bits=QRUtil.getBCHTypeInfo(maskPattern),i=0;i<15;i+=1){var mod=!test&&1==(bits>>i&1);i<6?_modules[i][8]=mod:i<8?_modules[i+1][8]=mod:_modules[_moduleCount-15+i][8]=mod}for(i=0;i<15;i+=1){mod=!test&&1==(bits>>i&1);i<8?_modules[8][_moduleCount-i-1]=mod:i<9?_modules[8][15-i-1+1]=mod:_modules[8][15-i-1]=mod}_modules[_moduleCount-8][8]=!test},mapData=function(data,maskPattern){for(var inc=-1,row=_moduleCount-1,bitIndex=7,byteIndex=0,maskFunc=QRUtil.getMaskFunction(maskPattern),col=_moduleCount-1;0<col;col-=2)for(6==col&&--col;;){for(var dark,mask,c=0;c<2;c+=1)null==_modules[row][col-c]&&(dark=!1,byteIndex<data.length&&(dark=1==(data[byteIndex]>>>bitIndex&1)),mask=maskFunc(row,col-c),_modules[row][col-c]=dark=mask?!dark:dark,-1==--bitIndex)&&(byteIndex+=1,bitIndex=7);if((row+=inc)<0||_moduleCount<=row){row-=inc,inc=-inc;break}}},createBytes=function(buffer,rsBlocks){for(var offset=0,maxDcCount=0,maxEcCount=0,dcdata=new Array(rsBlocks.length),ecdata=new Array(rsBlocks.length),r=0;r<rsBlocks.length;r+=1){var dcCount=rsBlocks[r].dataCount,ecCount=rsBlocks[r].totalCount-dcCount,maxDcCount=Math.max(maxDcCount,dcCount),maxEcCount=Math.max(maxEcCount,ecCount);dcdata[r]=new Array(dcCount);for(var i=0;i<dcdata[r].length;i+=1)dcdata[r][i]=255&buffer.getBuffer()[i+offset];offset+=dcCount;var dcCount=QRUtil.getErrorCorrectPolynomial(ecCount),modPoly=qrPolynomial(dcdata[r],dcCount.getLength()-1).mod(dcCount);ecdata[r]=new Array(dcCount.getLength()-1);for(i=0;i<ecdata[r].length;i+=1){var modIndex=i+modPoly.getLength()-ecdata[r].length;ecdata[r][i]=0<=modIndex?modPoly.getAt(modIndex):0}}for(var totalCodeCount=0,i=0;i<rsBlocks.length;i+=1)totalCodeCount+=rsBlocks[i].totalCount;for(var data=new Array(totalCodeCount),index=0,i=0;i<maxDcCount;i+=1)for(r=0;r<rsBlocks.length;r+=1)i<dcdata[r].length&&(data[index]=dcdata[r][i],index+=1);for(i=0;i<maxEcCount;i+=1)for(r=0;r<rsBlocks.length;r+=1)i<ecdata[r].length&&(data[index]=ecdata[r][i],index+=1);return data},createData=function(typeNumber,errorCorrectionLevel,dataList){for(var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrect