pica 8.0.0 → 9.0.0
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/README.md +0 -2
- package/dist/pica.js +218 -133
- package/dist/pica.min.js +2 -2
- package/index.js +5 -7
- package/lib/mathlib.js +2 -2
- package/lib/mm_resize/convolve.c +193 -17
- package/lib/mm_resize/convolve.js +160 -33
- package/lib/mm_resize/convolve.wasm +0 -0
- package/lib/mm_resize/convolve_wasm_base64.js +1 -1
- package/lib/mm_resize/resize.js +21 -17
- package/lib/mm_resize/resize_wasm.js +21 -11
- package/lib/worker.js +2 -2
- package/package.json +3 -4
package/dist/pica.min.js
CHANGED
|
@@ -4,10 +4,10 @@ pica
|
|
|
4
4
|
https://github.com/nodeca/pica
|
|
5
5
|
|
|
6
6
|
*/
|
|
7
|
-
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).pica=t()}}((function(){return function t(e,r,i){function n(A,o){if(!r[A]){if(!e[A]){var s="function"==typeof require&&require;if(!o&&s)return s(A,!0);if(a)return a(A,!0);var u=new Error("Cannot find module '"+A+"'");throw u.code="MODULE_NOT_FOUND",u}var h=r[A]={exports:{}};e[A][0].call(h.exports,(function(t){return n(e[A][1][t]||t)}),h,h.exports,t,e,r,i)}return r[A].exports}for(var a="function"==typeof require&&require,A=0;A<i.length;A++)n(i[A]);return n}({1:[function(t,e,r){"use strict";var i=t("inherits"),n=t("multimath"),a=t("./mm_unsharp_mask"),A=t("./mm_resize");function o(t){var e=t||[],r={js:e.indexOf("js")>=0,wasm:e.indexOf("wasm")>=0};n.call(this,r),this.features={js:r.js,wasm:r.wasm&&this.has_wasm()},this.use(a),this.use(A)}i(o,n),o.prototype.resizeAndUnsharp=function(t,e){var r=this.resize(t,e);return t.unsharpAmount&&this.unsharp_mask(r,t.toWidth,t.toHeight,t.unsharpAmount,t.unsharpRadius,t.unsharpThreshold),r},e.exports=o},{"./mm_resize":4,"./mm_unsharp_mask":9,inherits:19,multimath:20}],2:[function(t,e,r){"use strict";function i(t){return t<0?0:t>255?255:t}e.exports={convolveHorizontally:function(t,e,r,n,a,A){var o,s,u,h,c,f,l,g,d,m,p,I=0,w=0;for(d=0;d<n;d++){for(c=0,m=0;m<a;m++){for(f=A[c++],l=A[c++],g=I+4*f|0,o=s=u=h=0;l>0;l--)h=h+(p=A[c++])*t[g+3]|0,u=u+p*t[g+2]|0,s=s+p*t[g+1]|0,o=o+p*t[g]|0,g=g+4|0;e[w+3]=i(h+8192>>14),e[w+2]=i(u+8192>>14),e[w+1]=i(s+8192>>14),e[w]=i(o+8192>>14),w=w+4*n|0}w=4*(d+1)|0,I=(d+1)*r*4|0}},convolveVertically:function(t,e,r,n,a,A){var o,s,u,h,c,f,l,g,d,m,p,I=0,w=0;for(d=0;d<n;d++){for(c=0,m=0;m<a;m++){for(f=A[c++],l=A[c++],g=I+4*f|0,o=s=u=h=0;l>0;l--)h=h+(p=A[c++])*t[g+3]|0,u=u+p*t[g+2]|0,s=s+p*t[g+1]|0,o=o+p*t[g]|0,g=g+4|0;e[w+3]=i(h+8192>>14),e[w+2]=i(u+8192>>14),e[w+1]=i(s+8192>>14),e[w]=i(o+8192>>14),w=w+4*n|0}w=4*(d+1)|0,I=(d+1)*r*4|0}}}},{}],3:[function(t,e,r){"use strict";e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAEXA2AAAGAGf39/f39/AGAHf39/f39/fwACDwEDZW52Bm1lbW9yeQIAAAMEAwABAgYGAX8AQQALB1cFEV9fd2FzbV9jYWxsX2N0b3JzAAAIY29udm9sdmUAAQpjb252b2x2ZUhWAAIMX19kc29faGFuZGxlAwAYX193YXNtX2FwcGx5X2RhdGFfcmVsb2NzAAAK7AMDAwABC8YDAQ9/AkAgA0UNACAERQ0AA0AgDCENQQAhE0EAIQcDQCAHQQJqIQYCfyAHQQF0IAVqIgcuAQIiFEUEQEGAwAAhCEGAwAAhCUGAwAAhCkGAwAAhCyAGDAELIBIgBy4BAGohCEEAIQsgFCEHQQAhDiAGIQlBACEPQQAhEANAIAUgCUEBdGouAQAiESAAIAhBAnRqKAIAIgpBGHZsIBBqIRAgCkH/AXEgEWwgC2ohCyAKQRB2Qf8BcSARbCAPaiEPIApBCHZB/wFxIBFsIA5qIQ4gCEEBaiEIIAlBAWohCSAHQQFrIgcNAAsgC0GAQGshCCAOQYBAayEJIA9BgEBrIQogEEGAQGshCyAGIBRqCyEHIAEgDUECdGogCUEOdSIGQf8BIAZB/wFIGyIGQQAgBkEAShtBCHRBgP4DcSAKQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EQdEGAgPwHcSALQQ51IgZB/wEgBkH/AUgbIgZBACAGQQBKG0EYdHJyIAhBDnUiBkH/ASAGQf8BSBsiBkEAIAZBAEobcjYCACADIA1qIQ0gE0EBaiITIARHDQALIAxBAWoiDCACbCESIAMgDEcNAAsLCx4AQQAgAiADIAQgBSAAEAEgAkEAIAQgBSAGIAEQAQs="},{}],4:[function(t,e,r){"use strict";e.exports={name:"resize",fn:t("./resize"),wasm_fn:t("./resize_wasm"),wasm_src:t("./convolve_wasm_base64")}},{"./convolve_wasm_base64":3,"./resize":5,"./resize_wasm":8}],5:[function(t,e,r){"use strict";var i=t("./resize_filter_gen"),n=t("./convolve").convolveHorizontally,a=t("./convolve").convolveVertically;e.exports=function(t){var e=t.src,r=t.width,A=t.height,o=t.toWidth,s=t.toHeight,u=t.scaleX||t.toWidth/t.width,h=t.scaleY||t.toHeight/t.height,c=t.offsetX||0,f=t.offsetY||0,l=t.dest||new Uint8Array(o*s*4),g=t.alpha||!1,d=void 0===t.filter?"mks2013":t.filter,m=i(d,r,o,u,c),p=i(d,A,s,h,f),I=new Uint8Array(o*A*4);return n(e,I,r,A,o,m),a(I,l,A,o,s,p),g||function(t,e,r){for(var i=3,n=e*r*4|0;i<n;)t[i]=255,i=i+4|0}(l,o,s),l}},{"./convolve":2,"./resize_filter_gen":6}],6:[function(t,e,r){"use strict";var i=t("./resize_filter_info");function n(t){return Math.round(16383*t)}e.exports=function(t,e,r,a,A){var o,s,u,h,c,f,l,g,d,m,p,I,w,_,B,b,y,v=i.filter[t].fn,Q=1/a,C=Math.min(1,a),E=i.filter[t].win/C,x=Math.floor(2*(E+1)),M=new Int16Array((x+2)*r),D=0,G=!M.subarray||!M.set;for(o=0;o<r;o++){for(s=(o+.5)*Q+A,u=Math.max(0,Math.floor(s-E)),c=(h=Math.min(e-1,Math.ceil(s+E)))-u+1,f=new Float32Array(c),l=new Int16Array(c),g=0,d=u,m=0;d<=h;d++,m++)g+=p=v((d+.5-s)*C),f[m]=p;for(I=0,m=0;m<f.length;m++)I+=w=f[m]/g,l[m]=n(w);for(l[r>>1]+=n(1-I),_=0;_<l.length&&0===l[_];)_++;if(_<l.length){for(B=l.length-1;B>0&&0===l[B];)B--;if(b=u+_,y=B-_+1,M[D++]=b,M[D++]=y,G)for(m=_;m<=B;m++)M[D++]=l[m];else M.set(l.subarray(_,B+1),D),D+=y}else M[D++]=0,M[D++]=0}return M}},{"./resize_filter_info":7}],7:[function(t,e,r){"use strict";var i={box:{win:.5,fn:function(t){return t<0&&(t=-t),t<.5?1:0}},hamming:{win:1,fn:function(t){if(t<0&&(t=-t),t>=1)return 0;if(t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*(.54+.46*Math.cos(e/1))}},lanczos2:{win:2,fn:function(t){if(t<0&&(t=-t),t>=2)return 0;if(t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/2)/(e/2)}},lanczos3:{win:3,fn:function(t){if(t<0&&(t=-t),t>=3)return 0;if(t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/3)/(e/3)}},mks2013:{win:2.5,fn:function(t){return t<0&&(t=-t),t>=2.5?0:t>=1.5?-.125*(t-2.5)*(t-2.5):t>=.5?.25*(4*t*t-11*t+7):1.0625-1.75*t*t}}};e.exports={filter:i,f2q:{box:0,hamming:1,lanczos2:2,lanczos3:3},q2f:["box","hamming","lanczos2","lanczos3"]}},{}],8:[function(t,e,r){"use strict";var i=t("./resize_filter_gen");var n=!0;try{n=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0]}catch(t){}function a(t,e,r){if(n)e.set(function(t){return new Uint8Array(t.buffer,0,t.byteLength)}(t),r);else for(var i=r,a=0;a<t.length;a++){var A=t[a];e[i++]=255&A,e[i++]=A>>8&255}}e.exports=function(t){var e=t.src,r=t.width,n=t.height,A=t.toWidth,o=t.toHeight,s=t.scaleX||t.toWidth/t.width,u=t.scaleY||t.toHeight/t.height,h=t.offsetX||0,c=t.offsetY||0,f=t.dest||new Uint8Array(A*o*4),l=t.alpha||!1,g=void 0===t.filter?"mks2013":t.filter,d=i(g,r,A,s,h),m=i(g,n,o,u,c),p=this.__align(0+Math.max(e.byteLength,f.byteLength)),I=this.__align(p+n*A*4),w=this.__align(I+d.byteLength),_=w+m.byteLength,B=this.__instance("resize",_),b=new Uint8Array(this.__memory.buffer),y=new Uint32Array(this.__memory.buffer),v=new Uint32Array(e.buffer);return y.set(v),a(d,b,I),a(m,b,w),(B.exports.convolveHV||B.exports._convolveHV)(I,w,p,r,n,A,o),new Uint32Array(f.buffer).set(new Uint32Array(this.__memory.buffer,0,o*A)),l||function(t,e,r){for(var i=3,n=e*r*4|0;i<n;)t[i]=255,i=i+4|0}(f,A,o),f}},{"./resize_filter_gen":6}],9:[function(t,e,r){"use strict";e.exports={name:"unsharp_mask",fn:t("./unsharp_mask"),wasm_fn:t("./unsharp_mask_wasm"),wasm_src:t("./unsharp_mask_wasm_base64")}},{"./unsharp_mask":10,"./unsharp_mask_wasm":11,"./unsharp_mask_wasm_base64":12}],10:[function(t,e,r){"use strict";var i=t("glur/mono16");e.exports=function(t,e,r,n,a,A){var o,s,u,h,c;if(!(0===n||a<.5)){a>2&&(a=2);var f=function(t,e,r){for(var i,n,a,A,o=e*r,s=new Uint16Array(o),u=0;u<o;u++)i=t[4*u],n=t[4*u+1],a=t[4*u+2],A=i>=n&&i>=a?i:n>=a&&n>=i?n:a,s[u]=A<<8;return s}(t,e,r),l=new Uint16Array(f);i(l,e,r,a);for(var g=n/100*4096+.5|0,d=A<<8,m=e*r,p=0;p<m;p++)h=(o=f[p])-l[p],Math.abs(h)>=d&&(u=((s=(s=(s=o+(g*h+2048>>12))>65280?65280:s)<0?0:s)<<12)/(o=0!==o?o:1)|0,t[c=4*p]=t[c]*u+2048>>12,t[c+1]=t[c+1]*u+2048>>12,t[c+2]=t[c+2]*u+2048>>12)}}},{"glur/mono16":18}],11:[function(t,e,r){"use strict";e.exports=function(t,e,r,i,n,a){if(!(0===i||n<.5)){n>2&&(n=2);var A=e*r,o=4*A,s=2*A,u=2*A,h=4*Math.max(e,r),c=o,f=c+s,l=f+u,g=l+u,d=g+h,m=this.__instance("unsharp_mask",o+s+2*u+h+32,{exp:Math.exp}),p=new Uint32Array(t.buffer);new Uint32Array(this.__memory.buffer).set(p);var I=m.exports.hsv_v16||m.exports._hsv_v16;I(0,c,e,r),(I=m.exports.blurMono16||m.exports._blurMono16)(c,f,l,g,d,e,r,n),(I=m.exports.unsharp||m.exports._unsharp)(0,0,c,f,e,r,i,a),p.set(new Uint32Array(this.__memory.buffer,0,A))}}},{}],12:[function(t,e,r){"use strict";e.exports="AGFzbQEAAAAADAZkeWxpbmsAAAAAAAE0B2AAAGAEf39/fwBgBn9/f39/fwBgCH9/f39/f39/AGAIf39/f39/f30AYAJ9fwBgAXwBfAIZAgNlbnYDZXhwAAYDZW52Bm1lbW9yeQIAAAMHBgAFAgQBAwYGAX8AQQALB4oBCBFfX3dhc21fY2FsbF9jdG9ycwABFl9fYnVpbGRfZ2F1c3NpYW5fY29lZnMAAg5fX2dhdXNzMTZfbGluZQADCmJsdXJNb25vMTYABAdoc3ZfdjE2AAUHdW5zaGFycAAGDF9fZHNvX2hhbmRsZQMAGF9fd2FzbV9hcHBseV9kYXRhX3JlbG9jcwABCsUMBgMAAQvWAQEHfCABRNuGukOCGvs/IAC7oyICRAAAAAAAAADAohAAIgW2jDgCFCABIAKaEAAiAyADoCIGtjgCECABRAAAAAAAAPA/IAOhIgQgBKIgAyACIAKgokQAAAAAAADwP6AgBaGjIgS2OAIAIAEgBSAEmqIiB7Y4AgwgASADIAJEAAAAAAAA8D+gIASioiIItjgCCCABIAMgAkQAAAAAAADwv6AgBKKiIgK2OAIEIAEgByAIoCAFRAAAAAAAAPA/IAahoCIDo7Y4AhwgASAEIAKgIAOjtjgCGAuGBQMGfwl8An0gAyoCDCEVIAMqAgghFiADKgIUuyERIAMqAhC7IRACQCAEQQFrIghBAEgiCQRAIAIhByAAIQYMAQsgAiAALwEAuCIPIAMqAhi7oiIMIBGiIg0gDCAQoiAPIAMqAgS7IhOiIhQgAyoCALsiEiAPoqCgoCIOtjgCACACQQRqIQcgAEECaiEGIAhFDQAgCEEBIAhBAUgbIgpBf3MhCwJ/IAQgCmtBAXFFBEAgDiENIAgMAQsgAiANIA4gEKIgFCASIAAvAQK4Ig+ioKCgIg22OAIEIAJBCGohByAAQQRqIQYgDiEMIARBAmsLIQIgC0EAIARrRg0AA0AgByAMIBGiIA0gEKIgDyAToiASIAYvAQC4Ig6ioKCgIgy2OAIAIAcgDSARoiAMIBCiIA4gE6IgEiAGLwECuCIPoqCgoCINtjgCBCAHQQhqIQcgBkEEaiEGIAJBAkohACACQQJrIQIgAA0ACwsCQCAJDQAgASAFIAhsQQF0aiIAAn8gBkECay8BACICuCINIBW7IhKiIA0gFrsiE6KgIA0gAyoCHLuiIgwgEKKgIAwgEaKgIg8gB0EEayIHKgIAu6AiDkQAAAAAAADwQWMgDkQAAAAAAAAAAGZxBEAgDqsMAQtBAAs7AQAgCEUNACAGQQRrIQZBACAFa0EBdCEBA0ACfyANIBKiIAJB//8DcbgiDSAToqAgDyIOIBCioCAMIBGioCIPIAdBBGsiByoCALugIgxEAAAAAAAA8EFjIAxEAAAAAAAAAABmcQRAIAyrDAELQQALIQMgBi8BACECIAAgAWoiACADOwEAIAZBAmshBiAIQQFKIQMgDiEMIAhBAWshCCADDQALCwvRAgIBfwd8AkAgB0MAAAAAWw0AIARE24a6Q4Ia+z8gB0MAAAA/l7ujIglEAAAAAAAAAMCiEAAiDLaMOAIUIAQgCZoQACIKIAqgIg22OAIQIAREAAAAAAAA8D8gCqEiCyALoiAKIAkgCaCiRAAAAAAAAPA/oCAMoaMiC7Y4AgAgBCAMIAuaoiIOtjgCDCAEIAogCUQAAAAAAADwP6AgC6KiIg+2OAIIIAQgCiAJRAAAAAAAAPC/oCALoqIiCbY4AgQgBCAOIA+gIAxEAAAAAAAA8D8gDaGgIgqjtjgCHCAEIAsgCaAgCqO2OAIYIAYEQANAIAAgBSAIbEEBdGogAiAIQQF0aiADIAQgBSAGEAMgCEEBaiIIIAZHDQALCyAFRQ0AQQAhCANAIAIgBiAIbEEBdGogASAIQQF0aiADIAQgBiAFEAMgCEEBaiIIIAVHDQALCwtxAQN/IAIgA2wiBQRAA0AgASAAKAIAIgRBEHZB/wFxIgIgAiAEQQh2Qf8BcSIDIAMgBEH/AXEiBEkbIAIgA0sbIgYgBiAEIAIgBEsbIAMgBEsbQQh0OwEAIAFBAmohASAAQQRqIQAgBUEBayIFDQALCwuZAgIDfwF8IAQgBWwhBAJ/IAazQwAAgEWUQwAAyEKVu0QAAAAAAADgP6AiC5lEAAAAAAAA4EFjBEAgC6oMAQtBgICAgHgLIQUgBARAIAdBCHQhCUEAIQYDQCAJIAIgBkEBdCIHai8BACIBIAMgB2ovAQBrIgcgB0EfdSIIaiAIc00EQCAAIAZBAnQiCGoiCiAFIAdsQYAQakEMdSABaiIHQYD+AyAHQYD+A0gbIgdBACAHQQBKG0EMdCABQQEgARtuIgEgCi0AAGxBgBBqQQx2OgAAIAAgCEEBcmoiByABIActAABsQYAQakEMdjoAACAAIAhBAnJqIgcgASAHLQAAbEGAEGpBDHY6AAALIAZBAWoiBiAERw0ACwsL"},{}],13:[function(t,e,r){"use strict";function i(t,e){this.create=t,this.available=[],this.acquired={},this.lastId=1,this.timeoutId=0,this.idle=e||2e3}i.prototype.acquire=function(){var t,e=this;return 0!==this.available.length?t=this.available.pop():((t=this.create()).id=this.lastId++,t.release=function(){return e.release(t)}),this.acquired[t.id]=t,t},i.prototype.release=function(t){var e=this;delete this.acquired[t.id],t.lastUsed=Date.now(),this.available.push(t),0===this.timeoutId&&(this.timeoutId=setTimeout((function(){return e.gc()}),100))},i.prototype.gc=function(){var t=this,e=Date.now();this.available=this.available.filter((function(r){return!(e-r.lastUsed>t.idle)||(r.destroy(),!1)})),0!==this.available.length?this.timeoutId=setTimeout((function(){return t.gc()}),100):this.timeoutId=0},e.exports=i},{}],14:[function(t,e,r){"use strict";e.exports=function(t,e,r,i,n,a){var A=r/t,o=i/e,s=(2*a+2+1)/n;if(s>.5)return[[r,i]];var u=Math.ceil(Math.log(Math.min(A,o))/Math.log(s));if(u<=1)return[[r,i]];for(var h=[],c=0;c<u;c++){var f=Math.round(Math.pow(Math.pow(t,u-c-1)*Math.pow(r,c+1),1/u)),l=Math.round(Math.pow(Math.pow(e,u-c-1)*Math.pow(i,c+1),1/u));h.push([f,l])}return h}},{}],15:[function(t,e,r){"use strict";var i=1e-5;function n(t){var e=Math.round(t);return Math.abs(t-e)<i?e:Math.floor(t)}function a(t){var e=Math.round(t);return Math.abs(t-e)<i?e:Math.ceil(t)}e.exports=function(t){var e,r,i,A,o,s,u=t.toWidth/t.width,h=t.toHeight/t.height,c=n(t.srcTileSize*u)-2*t.destTileBorder,f=n(t.srcTileSize*h)-2*t.destTileBorder;if(c<1||f<1)throw new Error("Internal error in pica: target tile width/height is too small.");var l,g=[];for(A=0;A<t.toHeight;A+=f)for(i=0;i<t.toWidth;i+=c)(e=i-t.destTileBorder)<0&&(e=0),e+(o=i+c+t.destTileBorder-e)>=t.toWidth&&(o=t.toWidth-e),(r=A-t.destTileBorder)<0&&(r=0),r+(s=A+f+t.destTileBorder-r)>=t.toHeight&&(s=t.toHeight-r),l={toX:e,toY:r,toWidth:o,toHeight:s,toInnerX:i,toInnerY:A,toInnerWidth:c,toInnerHeight:f,offsetX:e/u-n(e/u),offsetY:r/h-n(r/h),scaleX:u,scaleY:h,x:n(e/u),y:n(r/h),width:a(o/u),height:a(s/h)},g.push(l);return g}},{}],16:[function(t,e,r){"use strict";function i(t){return Object.prototype.toString.call(t)}e.exports.isCanvas=function(t){var e=i(t);return"[object HTMLCanvasElement]"===e||"[object OffscreenCanvas]"===e||"[object Canvas]"===e},e.exports.isImage=function(t){return"[object HTMLImageElement]"===i(t)},e.exports.isImageBitmap=function(t){return"[object ImageBitmap]"===i(t)},e.exports.limiter=function(t){var e=0,r=[];function i(){e<t&&r.length&&(e++,r.shift()())}return function(t){return new Promise((function(n,a){r.push((function(){t().then((function(t){n(t),e--,i()}),(function(t){a(t),e--,i()}))})),i()}))}},e.exports.cib_quality_name=function(t){switch(t){case 0:return"pixelated";case 1:return"low";case 2:return"medium"}return"high"},e.exports.cib_support=function(t){return Promise.resolve().then((function(){if("undefined"==typeof createImageBitmap)return!1;var e=t(100,100);return createImageBitmap(e,0,0,100,100,{resizeWidth:10,resizeHeight:10,resizeQuality:"high"}).then((function(t){var r=10===t.width;return t.close(),e=null,r}))})).catch((function(){return!1}))},e.exports.worker_offscreen_canvas_support=function(){return new Promise((function(t,e){if("undefined"!=typeof OffscreenCanvas){var r=btoa("(".concat(function(t){"undefined"!=typeof createImageBitmap?Promise.resolve().then((function(){var t=new OffscreenCanvas(10,10);return t.getContext("2d").rect(0,0,1,1),createImageBitmap(t,0,0,1,1)})).then((function(){return t.postMessage(!0)}),(function(){return t.postMessage(!1)})):t.postMessage(!1)}.toString(),")(self);")),i=new Worker("data:text/javascript;base64,".concat(r));i.onmessage=function(e){return t(e.data)},i.onerror=e}else t(!1)})).then((function(t){return t}),(function(){return!1}))},e.exports.can_use_canvas=function(t){var e=!1;try{var r=t(2,1).getContext("2d"),i=r.createImageData(2,1);i.data[0]=12,i.data[1]=23,i.data[2]=34,i.data[3]=255,i.data[4]=45,i.data[5]=56,i.data[6]=67,i.data[7]=255,r.putImageData(i,0,0),i=null,12===(i=r.getImageData(0,0,2,1)).data[0]&&23===i.data[1]&&34===i.data[2]&&255===i.data[3]&&45===i.data[4]&&56===i.data[5]&&67===i.data[6]&&255===i.data[7]&&(e=!0)}catch(t){}return e},e.exports.cib_can_use_region=function(){return new Promise((function(t){if("undefined"!=typeof createImageBitmap){var e=new Image;e.src="data:image/jpeg;base64,/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRcZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRAf/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z",e.onload=function(){createImageBitmap(e,0,0,e.width,e.height).then((function(r){r.width===e.width&&r.height===e.height?t(!0):t(!1)}),(function(){return t(!1)}))},e.onerror=function(){return t(!1)}}else t(!1)}))}},{}],17:[function(t,e,r){"use strict";e.exports=function(){var e,r=t("./mathlib");onmessage=function(t){var i=t.data.opts;if(!i.src&&i.srcBitmap){var n=new OffscreenCanvas(i.width,i.height),a=n.getContext("2d",{alpha:Boolean(i.alpha)});a.drawImage(i.srcBitmap,0,0),i.src=a.getImageData(0,0,i.width,i.height).data,n.width=n.height=0,n=null,i.srcBitmap.close(),i.srcBitmap=null}e||(e=new r(t.data.features));var A=e.resizeAndUnsharp(i);postMessage({data:A},[A.buffer])}}},{"./mathlib":1}],18:[function(t,e,r){var i,n,a,A,o,s;function u(t,e,r,i,n,a){var A,o,s,u,h,c,f,l,g,d,m,p,I,w;for(g=0;g<a;g++){for(f=g,l=0,u=h=(A=t[c=g*n])*i[6],m=i[0],p=i[1],I=i[4],w=i[5],d=0;d<n;d++)s=(o=t[c])*m+A*p+u*I+h*w,h=u,u=s,A=o,r[l]=u,l++,c++;for(l--,f+=a*(n-1),u=h=(A=t[--c])*i[7],o=A,m=i[2],p=i[3],d=n-1;d>=0;d--)s=o*m+A*p+u*I+h*w,h=u,u=s,A=o,o=t[c],e[f]=r[l]+u,c--,l--,f-=a}}e.exports=function(t,e,r,h){if(h){var c=new Uint16Array(t.length),f=new Float32Array(Math.max(e,r)),l=function(t){t<.5&&(t=.5);var e=Math.exp(.527076)/t,r=Math.exp(-e),u=Math.exp(-2*e),h=(1-r)*(1-r)/(1+2*e*r-u);return i=h,n=h*(e-1)*r,a=h*(e+1)*r,A=-h*u,o=2*r,s=-u,new Float32Array([i,n,a,A,o,s,(i+n)/(1-o-s),(a+A)/(1-o-s)])}(h);u(t,c,f,l,e,r),u(c,t,f,l,r,e)}}},{}],19:[function(t,e,r){"function"==typeof Object.create?e.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},{}],20:[function(t,e,r){"use strict";var i=t("object-assign"),n=t("./lib/base64decode"),a=t("./lib/wa_detect"),A={js:!0,wasm:!0};function o(t){if(!(this instanceof o))return new o(t);var e=i({},A,t||{});if(this.options=e,this.__cache={},this.__init_promise=null,this.__modules=e.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least "js" or "wasm" should be enabled')}o.prototype.has_wasm=a,o.prototype.use=function(t){return this.__modules[t.name]=t,this.options.wasm&&this.has_wasm()&&t.wasm_fn?this[t.name]=t.wasm_fn:this[t.name]=t.fn,this},o.prototype.init=function(){if(this.__init_promise)return this.__init_promise;if(!this.options.js&&this.options.wasm&&!this.has_wasm())return Promise.reject(new Error('mathlib: only "wasm" was enabled, but it\'s not supported'));var t=this;return this.__init_promise=Promise.all(Object.keys(t.__modules).map((function(e){var r=t.__modules[e];return t.options.wasm&&t.has_wasm()&&r.wasm_fn?t.__wasm[e]?null:WebAssembly.compile(t.__base64decode(r.wasm_src)).then((function(r){t.__wasm[e]=r})):null}))).then((function(){return t})),this.__init_promise},o.prototype.__base64decode=n,o.prototype.__reallocate=function(t){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(t/65536)}),this.__memory;var e=this.__memory.buffer.byteLength;return e<t&&this.__memory.grow(Math.ceil((t-e)/65536)),this.__memory},o.prototype.__instance=function(t,e,r){if(e&&this.__reallocate(e),!this.__wasm[t]){var n=this.__modules[t];this.__wasm[t]=new WebAssembly.Module(this.__base64decode(n.wasm_src))}if(!this.__cache[t]){var a={memoryBase:0,memory:this.__memory,tableBase:0,table:new WebAssembly.Table({initial:0,element:"anyfunc"})};this.__cache[t]=new WebAssembly.Instance(this.__wasm[t],{env:i(a,r||{})})}return this.__cache[t]},o.prototype.__align=function(t,e){var r=t%(e=e||8);return t+(r?e-r:0)},e.exports=o},{"./lib/base64decode":21,"./lib/wa_detect":22,"object-assign":23}],21:[function(t,e,r){"use strict";e.exports=function(t){for(var e=t.replace(/[\r\n=]/g,""),r=e.length,i=new Uint8Array(3*r>>2),n=0,a=0,A=0;A<r;A++)A%4==0&&A&&(i[a++]=n>>16&255,i[a++]=n>>8&255,i[a++]=255&n),n=n<<6|"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e.charAt(A));var o=r%4*6;return 0===o?(i[a++]=n>>16&255,i[a++]=n>>8&255,i[a++]=255&n):18===o?(i[a++]=n>>10&255,i[a++]=n>>2&255):12===o&&(i[a++]=n>>4&255),i}},{}],22:[function(t,e,r){"use strict";var i;e.exports=function(){if(void 0!==i)return i;if(i=!1,"undefined"==typeof WebAssembly)return i;try{var t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(i=!0),i}catch(t){}return i}},{}],23:[function(t,e,r){
|
|
7
|
+
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).pica=t()}}((function(){return function t(e,A,i){function r(a,o){if(!A[a]){if(!e[a]){var s="function"==typeof require&&require;if(!o&&s)return s(a,!0);if(n)return n(a,!0);var h=new Error("Cannot find module '"+a+"'");throw h.code="MODULE_NOT_FOUND",h}var u=A[a]={exports:{}};e[a][0].call(u.exports,(function(t){return r(e[a][1][t]||t)}),u,u.exports,t,e,A,i)}return A[a].exports}for(var n="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,e,A){"use strict";var i=t("multimath"),r=t("./mm_unsharp_mask"),n=t("./mm_resize");function a(t){var e=t||[],A={js:e.indexOf("js")>=0,wasm:e.indexOf("wasm")>=0};i.call(this,A),this.features={js:A.js,wasm:A.wasm&&this.has_wasm()},this.use(r),this.use(n)}a.prototype=Object.create(i.prototype),a.prototype.constructor=a,a.prototype.resizeAndUnsharp=function(t,e){var A=this.resize(t,e);return t.unsharpAmount&&this.unsharp_mask(A,t.toWidth,t.toHeight,t.unsharpAmount,t.unsharpRadius,t.unsharpThreshold),A},e.exports=a},{"./mm_resize":4,"./mm_unsharp_mask":9,multimath:19}],2:[function(t,e,A){"use strict";function i(t){return t<0?0:t>255?255:t}function r(t){return t>=0?t:0}e.exports={convolveHor:function(t,e,A,i,n,a){var o,s,h,u,c,f,g,l,I,d,B,m=0,Q=0;for(I=0;I<i;I++){for(c=0,d=0;d<n;d++){for(f=a[c++],g=a[c++],l=m+4*f|0,o=s=h=u=0;g>0;g--)u=u+(B=a[c++])*t[l+3]|0,h=h+B*t[l+2]|0,s=s+B*t[l+1]|0,o=o+B*t[l]|0,l=l+4|0;e[Q+3]=r(u>>7),e[Q+2]=r(h>>7),e[Q+1]=r(s>>7),e[Q]=r(o>>7),Q=Q+4*i|0}Q=4*(I+1)|0,m=(I+1)*A*4|0}},convolveVert:function(t,e,A,r,n,a){var o,s,h,u,c,f,g,l,I,d,B,m=0,Q=0;for(I=0;I<r;I++){for(c=0,d=0;d<n;d++){for(f=a[c++],g=a[c++],l=m+4*f|0,o=s=h=u=0;g>0;g--)u=u+(B=a[c++])*t[l+3]|0,h=h+B*t[l+2]|0,s=s+B*t[l+1]|0,o=o+B*t[l]|0,l=l+4|0;o>>=7,s>>=7,h>>=7,u>>=7,e[Q+3]=i(u+8192>>14),e[Q+2]=i(h+8192>>14),e[Q+1]=i(s+8192>>14),e[Q]=i(o+8192>>14),Q=Q+4*r|0}Q=4*(I+1)|0,m=(I+1)*A*4|0}},convolveHorWithPre:function(t,e,A,i,n,a){var o,s,h,u,c,f,g,l,I,d,B,m,Q=0,p=0;for(d=0;d<i;d++){for(f=0,B=0;B<n;B++){for(g=a[f++],l=a[f++],I=Q+4*g|0,o=s=h=u=0;l>0;l--)u=u+(m=a[f++])*(c=t[I+3])|0,h=h+m*t[I+2]*c|0,s=s+m*t[I+1]*c|0,o=o+m*t[I]*c|0,I=I+4|0;h=h/255|0,s=s/255|0,o=o/255|0,e[p+3]=r(u>>7),e[p+2]=r(h>>7),e[p+1]=r(s>>7),e[p]=r(o>>7),p=p+4*i|0}p=4*(d+1)|0,Q=(d+1)*A*4|0}},convolveVertWithPre:function(t,e,A,r,n,a){var o,s,h,u,c,f,g,l,I,d,B,m=0,Q=0;for(I=0;I<r;I++){for(c=0,d=0;d<n;d++){for(f=a[c++],g=a[c++],l=m+4*f|0,o=s=h=u=0;g>0;g--)u=u+(B=a[c++])*t[l+3]|0,h=h+B*t[l+2]|0,s=s+B*t[l+1]|0,o=o+B*t[l]|0,l=l+4|0;o>>=7,s>>=7,h>>=7,(u=i((u>>=7)+8192>>14))>0&&(o=255*o/u|0,s=255*s/u|0,h=255*h/u|0),e[Q+3]=u,e[Q+2]=i(h+8192>>14),e[Q+1]=i(s+8192>>14),e[Q]=i(o+8192>>14),Q=Q+4*r|0}Q=4*(I+1)|0,m=(I+1)*A*4|0}}}},{}],3:[function(t,e,A){"use strict";e.exports="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"},{}],4:[function(t,e,A){"use strict";e.exports={name:"resize",fn:t("./resize"),wasm_fn:t("./resize_wasm"),wasm_src:t("./convolve_wasm_base64")}},{"./convolve_wasm_base64":3,"./resize":5,"./resize_wasm":8}],5:[function(t,e,A){"use strict";var i=t("./resize_filter_gen"),r=t("./convolve"),n=r.convolveHor,a=r.convolveVert,o=r.convolveHorWithPre,s=r.convolveVertWithPre;e.exports=function(t){var e=t.src,A=t.width,r=t.height,h=t.toWidth,u=t.toHeight,c=t.scaleX||t.toWidth/t.width,f=t.scaleY||t.toHeight/t.height,g=t.offsetX||0,l=t.offsetY||0,I=t.dest||new Uint8Array(h*u*4),d=void 0===t.filter?"mks2013":t.filter,B=i(d,A,h,c,g),m=i(d,r,u,f,l),Q=new Uint16Array(h*r*4);return!function(t,e,A){for(var i=3,r=e*A*4|0;i<r;){if(255!==t[i])return!0;i=i+4|0}return!1}(e,A,r)?(n(e,Q,A,r,h,B),a(Q,I,r,h,u,m),function(t,e,A){for(var i=3,r=e*A*4|0;i<r;)t[i]=255,i=i+4|0}(I,h,u)):(o(e,Q,A,r,h,B),s(Q,I,r,h,u,m)),I}},{"./convolve":2,"./resize_filter_gen":6}],6:[function(t,e,A){"use strict";var i=t("./resize_filter_info");function r(t){return Math.round(16383*t)}e.exports=function(t,e,A,n,a){var o,s,h,u,c,f,g,l,I,d,B,m,Q,p,E,w,C,_=i.filter[t].fn,b=1/n,y=Math.min(1,n),v=i.filter[t].win/y,D=Math.floor(2*(v+1)),M=new Int16Array((D+2)*A),x=0,k=!M.subarray||!M.set;for(o=0;o<A;o++){for(s=(o+.5)*b+a,h=Math.max(0,Math.floor(s-v)),c=(u=Math.min(e-1,Math.ceil(s+v)))-h+1,f=new Float32Array(c),g=new Int16Array(c),l=0,I=h,d=0;I<=u;I++,d++)l+=B=_((I+.5-s)*y),f[d]=B;for(m=0,d=0;d<f.length;d++)m+=Q=f[d]/l,g[d]=r(Q);for(g[A>>1]+=r(1-m),p=0;p<g.length&&0===g[p];)p++;if(p<g.length){for(E=g.length-1;E>0&&0===g[E];)E--;if(w=h+p,C=E-p+1,M[x++]=w,M[x++]=C,k)for(d=p;d<=E;d++)M[x++]=g[d];else M.set(g.subarray(p,E+1),x),x+=C}else M[x++]=0,M[x++]=0}return M}},{"./resize_filter_info":7}],7:[function(t,e,A){"use strict";var i={box:{win:.5,fn:function(t){return t<0&&(t=-t),t<.5?1:0}},hamming:{win:1,fn:function(t){if(t<0&&(t=-t),t>=1)return 0;if(t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*(.54+.46*Math.cos(e/1))}},lanczos2:{win:2,fn:function(t){if(t<0&&(t=-t),t>=2)return 0;if(t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/2)/(e/2)}},lanczos3:{win:3,fn:function(t){if(t<0&&(t=-t),t>=3)return 0;if(t<1.1920929e-7)return 1;var e=t*Math.PI;return Math.sin(e)/e*Math.sin(e/3)/(e/3)}},mks2013:{win:2.5,fn:function(t){return t<0&&(t=-t),t>=2.5?0:t>=1.5?-.125*(t-2.5)*(t-2.5):t>=.5?.25*(4*t*t-11*t+7):1.0625-1.75*t*t}}};e.exports={filter:i,f2q:{box:0,hamming:1,lanczos2:2,lanczos3:3},q2f:["box","hamming","lanczos2","lanczos3"]}},{}],8:[function(t,e,A){"use strict";var i=t("./resize_filter_gen");var r=!0;try{r=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0]}catch(t){}function n(t,e,A){if(r)e.set(function(t){return new Uint8Array(t.buffer,0,t.byteLength)}(t),A);else for(var i=A,n=0;n<t.length;n++){var a=t[n];e[i++]=255&a,e[i++]=a>>8&255}}e.exports=function(t){var e=t.src,A=t.width,r=t.height,a=t.toWidth,o=t.toHeight,s=t.scaleX||t.toWidth/t.width,h=t.scaleY||t.toHeight/t.height,u=t.offsetX||0,c=t.offsetY||0,f=t.dest||new Uint8Array(a*o*4),g=void 0===t.filter?"mks2013":t.filter,l=i(g,A,a,s,u),I=i(g,r,o,h,c),d=Math.max(e.byteLength,f.byteLength),B=this.__align(0+d),m=r*a*4*2,Q=this.__align(B+m),p=this.__align(Q+l.byteLength),E=p+I.byteLength,w=this.__instance("resize",E),C=new Uint8Array(this.__memory.buffer),_=new Uint32Array(this.__memory.buffer),b=new Uint32Array(e.buffer);_.set(b),n(l,C,Q),n(I,C,p);var y=w.exports.convolveHV||w.exports._convolveHV;return!function(t,e,A){for(var i=3,r=e*A*4|0;i<r;){if(255!==t[i])return!0;i=i+4|0}return!1}(e,A,r)?(y(Q,p,B,A,r,a,o,0),function(t,e,A){for(var i=3,r=e*A*4|0;i<r;)t[i]=255,i=i+4|0}(f,a,o)):y(Q,p,B,A,r,a,o,1),new Uint32Array(f.buffer).set(new Uint32Array(this.__memory.buffer,0,o*a)),f}},{"./resize_filter_gen":6}],9:[function(t,e,A){"use strict";e.exports={name:"unsharp_mask",fn:t("./unsharp_mask"),wasm_fn:t("./unsharp_mask_wasm"),wasm_src:t("./unsharp_mask_wasm_base64")}},{"./unsharp_mask":10,"./unsharp_mask_wasm":11,"./unsharp_mask_wasm_base64":12}],10:[function(t,e,A){"use strict";var i=t("glur/mono16");e.exports=function(t,e,A,r,n,a){var o,s,h,u,c;if(!(0===r||n<.5)){n>2&&(n=2);var f=function(t,e,A){for(var i,r,n,a,o=e*A,s=new Uint16Array(o),h=0;h<o;h++)i=t[4*h],r=t[4*h+1],n=t[4*h+2],a=i>=r&&i>=n?i:r>=n&&r>=i?r:n,s[h]=a<<8;return s}(t,e,A),g=new Uint16Array(f);i(g,e,A,n);for(var l=r/100*4096+.5|0,I=a<<8,d=e*A,B=0;B<d;B++)u=(o=f[B])-g[B],Math.abs(u)>=I&&(h=((s=(s=(s=o+(l*u+2048>>12))>65280?65280:s)<0?0:s)<<12)/(o=0!==o?o:1)|0,t[c=4*B]=t[c]*h+2048>>12,t[c+1]=t[c+1]*h+2048>>12,t[c+2]=t[c+2]*h+2048>>12)}}},{"glur/mono16":18}],11:[function(t,e,A){"use strict";e.exports=function(t,e,A,i,r,n){if(!(0===i||r<.5)){r>2&&(r=2);var a=e*A,o=4*a,s=2*a,h=2*a,u=4*Math.max(e,A),c=o,f=c+s,g=f+h,l=g+h,I=l+u,d=this.__instance("unsharp_mask",o+s+2*h+u+32,{exp:Math.exp}),B=new Uint32Array(t.buffer);new Uint32Array(this.__memory.buffer).set(B);var m=d.exports.hsv_v16||d.exports._hsv_v16;m(0,c,e,A),(m=d.exports.blurMono16||d.exports._blurMono16)(c,f,g,l,I,e,A,r),(m=d.exports.unsharp||d.exports._unsharp)(0,0,c,f,e,A,i,n),B.set(new Uint32Array(this.__memory.buffer,0,a))}}},{}],12:[function(t,e,A){"use strict";e.exports="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"},{}],13:[function(t,e,A){"use strict";function i(t,e){this.create=t,this.available=[],this.acquired={},this.lastId=1,this.timeoutId=0,this.idle=e||2e3}i.prototype.acquire=function(){var t,e=this;return 0!==this.available.length?t=this.available.pop():((t=this.create()).id=this.lastId++,t.release=function(){return e.release(t)}),this.acquired[t.id]=t,t},i.prototype.release=function(t){var e=this;delete this.acquired[t.id],t.lastUsed=Date.now(),this.available.push(t),0===this.timeoutId&&(this.timeoutId=setTimeout((function(){return e.gc()}),100))},i.prototype.gc=function(){var t=this,e=Date.now();this.available=this.available.filter((function(A){return!(e-A.lastUsed>t.idle)||(A.destroy(),!1)})),0!==this.available.length?this.timeoutId=setTimeout((function(){return t.gc()}),100):this.timeoutId=0},e.exports=i},{}],14:[function(t,e,A){"use strict";e.exports=function(t,e,A,i,r,n){var a=A/t,o=i/e,s=(2*n+2+1)/r;if(s>.5)return[[A,i]];var h=Math.ceil(Math.log(Math.min(a,o))/Math.log(s));if(h<=1)return[[A,i]];for(var u=[],c=0;c<h;c++){var f=Math.round(Math.pow(Math.pow(t,h-c-1)*Math.pow(A,c+1),1/h)),g=Math.round(Math.pow(Math.pow(e,h-c-1)*Math.pow(i,c+1),1/h));u.push([f,g])}return u}},{}],15:[function(t,e,A){"use strict";var i=1e-5;function r(t){var e=Math.round(t);return Math.abs(t-e)<i?e:Math.floor(t)}function n(t){var e=Math.round(t);return Math.abs(t-e)<i?e:Math.ceil(t)}e.exports=function(t){var e,A,i,a,o,s,h=t.toWidth/t.width,u=t.toHeight/t.height,c=r(t.srcTileSize*h)-2*t.destTileBorder,f=r(t.srcTileSize*u)-2*t.destTileBorder;if(c<1||f<1)throw new Error("Internal error in pica: target tile width/height is too small.");var g,l=[];for(a=0;a<t.toHeight;a+=f)for(i=0;i<t.toWidth;i+=c)(e=i-t.destTileBorder)<0&&(e=0),e+(o=i+c+t.destTileBorder-e)>=t.toWidth&&(o=t.toWidth-e),(A=a-t.destTileBorder)<0&&(A=0),A+(s=a+f+t.destTileBorder-A)>=t.toHeight&&(s=t.toHeight-A),g={toX:e,toY:A,toWidth:o,toHeight:s,toInnerX:i,toInnerY:a,toInnerWidth:c,toInnerHeight:f,offsetX:e/h-r(e/h),offsetY:A/u-r(A/u),scaleX:h,scaleY:u,x:r(e/h),y:r(A/u),width:n(o/h),height:n(s/u)},l.push(g);return l}},{}],16:[function(t,e,A){"use strict";function i(t){return Object.prototype.toString.call(t)}e.exports.isCanvas=function(t){var e=i(t);return"[object HTMLCanvasElement]"===e||"[object OffscreenCanvas]"===e||"[object Canvas]"===e},e.exports.isImage=function(t){return"[object HTMLImageElement]"===i(t)},e.exports.isImageBitmap=function(t){return"[object ImageBitmap]"===i(t)},e.exports.limiter=function(t){var e=0,A=[];function i(){e<t&&A.length&&(e++,A.shift()())}return function(t){return new Promise((function(r,n){A.push((function(){t().then((function(t){r(t),e--,i()}),(function(t){n(t),e--,i()}))})),i()}))}},e.exports.cib_quality_name=function(t){switch(t){case 0:return"pixelated";case 1:return"low";case 2:return"medium"}return"high"},e.exports.cib_support=function(t){return Promise.resolve().then((function(){if("undefined"==typeof createImageBitmap)return!1;var e=t(100,100);return createImageBitmap(e,0,0,100,100,{resizeWidth:10,resizeHeight:10,resizeQuality:"high"}).then((function(t){var A=10===t.width;return t.close(),e=null,A}))})).catch((function(){return!1}))},e.exports.worker_offscreen_canvas_support=function(){return new Promise((function(t,e){if("undefined"!=typeof OffscreenCanvas){var A=btoa("(".concat(function(t){"undefined"!=typeof createImageBitmap?Promise.resolve().then((function(){var t=new OffscreenCanvas(10,10);return t.getContext("2d").rect(0,0,1,1),createImageBitmap(t,0,0,1,1)})).then((function(){return t.postMessage(!0)}),(function(){return t.postMessage(!1)})):t.postMessage(!1)}.toString(),")(self);")),i=new Worker("data:text/javascript;base64,".concat(A));i.onmessage=function(e){return t(e.data)},i.onerror=e}else t(!1)})).then((function(t){return t}),(function(){return!1}))},e.exports.can_use_canvas=function(t){var e=!1;try{var A=t(2,1).getContext("2d"),i=A.createImageData(2,1);i.data[0]=12,i.data[1]=23,i.data[2]=34,i.data[3]=255,i.data[4]=45,i.data[5]=56,i.data[6]=67,i.data[7]=255,A.putImageData(i,0,0),i=null,12===(i=A.getImageData(0,0,2,1)).data[0]&&23===i.data[1]&&34===i.data[2]&&255===i.data[3]&&45===i.data[4]&&56===i.data[5]&&67===i.data[6]&&255===i.data[7]&&(e=!0)}catch(t){}return e},e.exports.cib_can_use_region=function(){return new Promise((function(t){if("undefined"!=typeof createImageBitmap){var e=new Image;e.src="data:image/jpeg;base64,/9j/4QBiRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAYAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAAITAAMAAAABAAEAAAAAAAAAAABIAAAAAQAAAEgAAAAB/9sAQwAEAwMEAwMEBAMEBQQEBQYKBwYGBgYNCQoICg8NEBAPDQ8OERMYFBESFxIODxUcFRcZGRsbGxAUHR8dGh8YGhsa/9sAQwEEBQUGBQYMBwcMGhEPERoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoa/8IAEQgAAQACAwERAAIRAQMRAf/EABQAAQAAAAAAAAAAAAAAAAAAAAf/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAF/P//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAQUCf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Bf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Bf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEABj8Cf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8hf//aAAwDAQACAAMAAAAQH//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQMBAT8Qf//EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQIBAT8Qf//EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gAIAQEAAT8Qf//Z",e.onload=function(){createImageBitmap(e,0,0,e.width,e.height).then((function(A){A.width===e.width&&A.height===e.height?t(!0):t(!1)}),(function(){return t(!1)}))},e.onerror=function(){return t(!1)}}else t(!1)}))}},{}],17:[function(t,e,A){"use strict";e.exports=function(){var e,A=t("./mathlib");onmessage=function(t){var i=t.data.opts;if(!i.src&&i.srcBitmap){var r=new OffscreenCanvas(i.width,i.height),n=r.getContext("2d");n.drawImage(i.srcBitmap,0,0),i.src=n.getImageData(0,0,i.width,i.height).data,r.width=r.height=0,r=null,i.srcBitmap.close(),i.srcBitmap=null}e||(e=new A(t.data.features));var a=e.resizeAndUnsharp(i);postMessage({data:a},[a.buffer])}}},{"./mathlib":1}],18:[function(t,e,A){var i,r,n,a,o,s;function h(t,e,A,i,r,n){var a,o,s,h,u,c,f,g,l,I,d,B,m,Q;for(l=0;l<n;l++){for(f=l,g=0,h=u=(a=t[c=l*r])*i[6],d=i[0],B=i[1],m=i[4],Q=i[5],I=0;I<r;I++)s=(o=t[c])*d+a*B+h*m+u*Q,u=h,h=s,a=o,A[g]=h,g++,c++;for(g--,f+=n*(r-1),h=u=(a=t[--c])*i[7],o=a,d=i[2],B=i[3],I=r-1;I>=0;I--)s=o*d+a*B+h*m+u*Q,u=h,h=s,a=o,o=t[c],e[f]=A[g]+h,c--,g--,f-=n}}e.exports=function(t,e,A,u){if(u){var c=new Uint16Array(t.length),f=new Float32Array(Math.max(e,A)),g=function(t){t<.5&&(t=.5);var e=Math.exp(.527076)/t,A=Math.exp(-e),h=Math.exp(-2*e),u=(1-A)*(1-A)/(1+2*e*A-h);return i=u,r=u*(e-1)*A,n=u*(e+1)*A,a=-u*h,o=2*A,s=-h,new Float32Array([i,r,n,a,o,s,(i+r)/(1-o-s),(n+a)/(1-o-s)])}(u);h(t,c,f,g,e,A),h(c,t,f,g,A,e)}}},{}],19:[function(t,e,A){"use strict";var i=t("object-assign"),r=t("./lib/base64decode"),n=t("./lib/wa_detect"),a={js:!0,wasm:!0};function o(t){if(!(this instanceof o))return new o(t);var e=i({},a,t||{});if(this.options=e,this.__cache={},this.__init_promise=null,this.__modules=e.modules||{},this.__memory=null,this.__wasm={},this.__isLE=1===new Uint32Array(new Uint8Array([1,0,0,0]).buffer)[0],!this.options.js&&!this.options.wasm)throw new Error('mathlib: at least "js" or "wasm" should be enabled')}o.prototype.has_wasm=n,o.prototype.use=function(t){return this.__modules[t.name]=t,this.options.wasm&&this.has_wasm()&&t.wasm_fn?this[t.name]=t.wasm_fn:this[t.name]=t.fn,this},o.prototype.init=function(){if(this.__init_promise)return this.__init_promise;if(!this.options.js&&this.options.wasm&&!this.has_wasm())return Promise.reject(new Error('mathlib: only "wasm" was enabled, but it\'s not supported'));var t=this;return this.__init_promise=Promise.all(Object.keys(t.__modules).map((function(e){var A=t.__modules[e];return t.options.wasm&&t.has_wasm()&&A.wasm_fn?t.__wasm[e]?null:WebAssembly.compile(t.__base64decode(A.wasm_src)).then((function(A){t.__wasm[e]=A})):null}))).then((function(){return t})),this.__init_promise},o.prototype.__base64decode=r,o.prototype.__reallocate=function(t){if(!this.__memory)return this.__memory=new WebAssembly.Memory({initial:Math.ceil(t/65536)}),this.__memory;var e=this.__memory.buffer.byteLength;return e<t&&this.__memory.grow(Math.ceil((t-e)/65536)),this.__memory},o.prototype.__instance=function(t,e,A){if(e&&this.__reallocate(e),!this.__wasm[t]){var r=this.__modules[t];this.__wasm[t]=new WebAssembly.Module(this.__base64decode(r.wasm_src))}if(!this.__cache[t]){var n={memoryBase:0,memory:this.__memory,tableBase:0,table:new WebAssembly.Table({initial:0,element:"anyfunc"})};this.__cache[t]=new WebAssembly.Instance(this.__wasm[t],{env:i(n,A||{})})}return this.__cache[t]},o.prototype.__align=function(t,e){var A=t%(e=e||8);return t+(A?e-A:0)},e.exports=o},{"./lib/base64decode":20,"./lib/wa_detect":21,"object-assign":22}],20:[function(t,e,A){"use strict";e.exports=function(t){for(var e=t.replace(/[\r\n=]/g,""),A=e.length,i=new Uint8Array(3*A>>2),r=0,n=0,a=0;a<A;a++)a%4==0&&a&&(i[n++]=r>>16&255,i[n++]=r>>8&255,i[n++]=255&r),r=r<<6|"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(e.charAt(a));var o=A%4*6;return 0===o?(i[n++]=r>>16&255,i[n++]=r>>8&255,i[n++]=255&r):18===o?(i[n++]=r>>10&255,i[n++]=r>>2&255):12===o&&(i[n++]=r>>4&255),i}},{}],21:[function(t,e,A){"use strict";var i;e.exports=function(){if(void 0!==i)return i;if(i=!1,"undefined"==typeof WebAssembly)return i;try{var t=new Uint8Array([0,97,115,109,1,0,0,0,1,6,1,96,1,127,1,127,3,2,1,0,5,3,1,0,1,7,8,1,4,116,101,115,116,0,0,10,16,1,14,0,32,0,65,1,54,2,0,32,0,40,2,0,11]),e=new WebAssembly.Module(t);return 0!==new WebAssembly.Instance(e,{}).exports.test(4)&&(i=!0),i}catch(t){}return i}},{}],22:[function(t,e,A){
|
|
8
8
|
/*
|
|
9
9
|
object-assign
|
|
10
10
|
(c) Sindre Sorhus
|
|
11
11
|
@license MIT
|
|
12
12
|
*/
|
|
13
|
-
"use strict";var i=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;function A(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}e.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,o,s=A(t),u=1;u<arguments.length;u++){for(var h in r=Object(arguments[u]))n.call(r,h)&&(s[h]=r[h]);if(i){o=i(r);for(var c=0;c<o.length;c++)a.call(r,o[c])&&(s[o[c]]=r[o[c]])}}return s}},{}],24:[function(t,e,r){var i=arguments[3],n=arguments[4],a=arguments[5],A=JSON.stringify;e.exports=function(t,e){for(var r,o=Object.keys(a),s=0,u=o.length;s<u;s++){var h=o[s],c=a[h].exports;if(c===t||c&&c.default===t){r=h;break}}if(!r){r=Math.floor(Math.pow(16,8)*Math.random()).toString(16);var f={};for(s=0,u=o.length;s<u;s++){f[h=o[s]]=h}n[r]=["function(require,module,exports){"+t+"(self); }",f]}var l=Math.floor(Math.pow(16,8)*Math.random()).toString(16),g={};g[r]=r,n[l]=["function(require,module,exports){var f = require("+A(r)+");(f.default ? f.default : f)(self);}",g];var d={};!function t(e){for(var r in d[e]=!0,n[e][1]){var i=n[e][1][r];d[i]||t(i)}}(l);var m="("+i+")({"+Object.keys(d).map((function(t){return A(t)+":["+n[t][0]+","+A(n[t][1])+"]"})).join(",")+"},{},["+A(l)+"])",p=window.URL||window.webkitURL||window.mozURL||window.msURL,I=new Blob([m],{type:"text/javascript"});if(e&&e.bare)return I;var w=p.createObjectURL(I),_=new Worker(w);return _.objectURL=w,_}},{}],"/index.js":[function(t,e,r){"use strict";function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==r)return;var i,n,a=[],A=!0,o=!1;try{for(r=r.call(t);!(A=(i=r.next()).done)&&(a.push(i.value),!e||a.length!==e);A=!0);}catch(t){o=!0,n=t}finally{try{A||null==r.return||r.return()}finally{if(o)throw n}}return a}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return n(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return n(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r<e;r++)i[r]=t[r];return i}var a=t("object-assign"),A=t("webworkify"),o=t("./lib/mathlib"),s=t("./lib/pool"),u=t("./lib/utils"),h=t("./lib/worker"),c=t("./lib/stepper"),f=t("./lib/tiler"),l=t("./lib/mm_resize/resize_filter_info"),g={},d=!1;try{"undefined"!=typeof navigator&&navigator.userAgent&&(d=navigator.userAgent.indexOf("Safari")>=0)}catch(t){}var m=1;"undefined"!=typeof navigator&&(m=Math.min(navigator.hardwareConcurrency||1,4));var p={tile:1024,concurrency:m,features:["js","wasm","ww"],idle:2e3,createCanvas:function(t,e){var r=document.createElement("canvas");return r.width=t,r.height=e,r}},I={filter:"mks2013",alpha:!1,unsharpAmount:0,unsharpRadius:0,unsharpThreshold:0},w=!1,_=!1,B=!1,b=!1,y=!1;function v(){return{value:A(h),destroy:function(){if(this.value.terminate(),"undefined"!=typeof window){var t=window.URL||window.webkitURL||window.mozURL||window.msURL;t&&t.revokeObjectURL&&this.value.objectURL&&t.revokeObjectURL(this.value.objectURL)}}}}function Q(t){if(!(this instanceof Q))return new Q(t);this.options=a({},p,t||{});var e="lk_".concat(this.options.concurrency);this.__limit=g[e]||u.limiter(this.options.concurrency),g[e]||(g[e]=this.__limit),this.features={js:!1,wasm:!1,cib:!1,ww:!1},this.__workersPool=null,this.__requested_features=[],this.__mathlib=null}Q.prototype.init=function(){var e=this;if(this.__initPromise)return this.__initPromise;if("undefined"!=typeof ImageData&&"undefined"!=typeof Uint8ClampedArray)try{new ImageData(new Uint8ClampedArray(400),10,10),w=!0}catch(t){}"undefined"!=typeof ImageBitmap&&(ImageBitmap.prototype&&ImageBitmap.prototype.close?_=!0:this.debug("ImageBitmap does not support .close(), disabled"));var r=this.options.features.slice();if(r.indexOf("all")>=0&&(r=["cib","wasm","js","ww"]),this.__requested_features=r,this.__mathlib=new o(r),r.indexOf("ww")>=0&&"undefined"!=typeof window&&"Worker"in window)try{t("webworkify")((function(){})).terminate(),this.features.ww=!0;var i="wp_".concat(JSON.stringify(this.options));g[i]?this.__workersPool=g[i]:(this.__workersPool=new s(v,this.options.idle),g[i]=this.__workersPool)}catch(t){}var n,A,h=this.__mathlib.init().then((function(t){a(e.features,t.features)}));n=_?u.cib_support(this.options.createCanvas).then((function(t){e.features.cib&&r.indexOf("cib")<0?e.debug("createImageBitmap() resize supported, but disabled by config"):r.indexOf("cib")>=0&&(e.features.cib=t)})):Promise.resolve(!1),B=u.can_use_canvas(this.options.createCanvas),A=(A=_&&w&&-1!==r.indexOf("ww")?u.worker_offscreen_canvas_support():Promise.resolve(!1)).then((function(t){b=t}));var c=u.cib_can_use_region().then((function(t){y=t}));return this.__initPromise=Promise.all([h,n,A,c]).then((function(){return e})),this.__initPromise},Q.prototype.__invokeResize=function(t,e){var r=this;return e.__mathCache=e.__mathCache||{},Promise.resolve().then((function(){return r.features.ww?new Promise((function(i,n){var a=r.__workersPool.acquire();e.cancelToken&&e.cancelToken.catch((function(t){return n(t)})),a.value.onmessage=function(t){a.release(),t.data.err?n(t.data.err):i(t.data)};var A=[];t.src&&A.push(t.src.buffer),t.srcBitmap&&A.push(t.srcBitmap),a.value.postMessage({opts:t,features:r.__requested_features,preload:{wasm_nodule:r.__mathlib.__}},A)})):{data:r.__mathlib.resizeAndUnsharp(t,e.__mathCache)}}))},Q.prototype.__extractTileData=function(t,e,r,i,n){if(this.features.ww&&b&&(u.isCanvas(e)||y))return this.debug("Create tile for OffscreenCanvas"),createImageBitmap(i.srcImageBitmap||e,t.x,t.y,t.width,t.height).then((function(t){return n.srcBitmap=t,n}));if(u.isCanvas(e))return i.srcCtx||(i.srcCtx=e.getContext("2d",{alpha:Boolean(r.alpha)})),this.debug("Get tile pixel data"),n.src=i.srcCtx.getImageData(t.x,t.y,t.width,t.height).data,n;this.debug("Draw tile imageBitmap/image to temporary canvas");var a=this.options.createCanvas(t.width,t.height),A=a.getContext("2d",{alpha:Boolean(r.alpha)});return A.globalCompositeOperation="copy",A.drawImage(i.srcImageBitmap||e,t.x,t.y,t.width,t.height,0,0,t.width,t.height),this.debug("Get tile pixel data"),n.src=A.getImageData(0,0,t.width,t.height).data,a.width=a.height=0,n},Q.prototype.__landTileData=function(t,e,r){var i;if(this.debug("Convert raw rgba tile result to ImageData"),e.bitmap)return r.toCtx.drawImage(e.bitmap,t.toX,t.toY),null;if(w)i=new ImageData(new Uint8ClampedArray(e.data),t.toWidth,t.toHeight);else if((i=r.toCtx.createImageData(t.toWidth,t.toHeight)).data.set)i.data.set(e.data);else for(var n=i.data.length-1;n>=0;n--)i.data[n]=e.data[n];return this.debug("Draw tile"),d?r.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth+1e-5,t.toInnerHeight+1e-5):r.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth,t.toInnerHeight),null},Q.prototype.__tileAndResize=function(t,e,r){var i=this,n={srcCtx:null,srcImageBitmap:null,isImageBitmapReused:!1,toCtx:null};return Promise.resolve().then((function(){if(n.toCtx=e.getContext("2d",{alpha:Boolean(r.alpha)}),u.isCanvas(t))return null;if(u.isImageBitmap(t))return n.srcImageBitmap=t,n.isImageBitmapReused=!0,null;if(u.isImage(t))return _?(i.debug("Decode image via createImageBitmap"),createImageBitmap(t).then((function(t){n.srcImageBitmap=t})).catch((function(t){return null}))):null;throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap')})).then((function(){if(r.canceled)return r.cancelToken;i.debug("Calculate tiles");var a=f({width:r.width,height:r.height,srcTileSize:i.options.tile,toWidth:r.toWidth,toHeight:r.toHeight,destTileBorder:r.__destTileBorder}).map((function(e){return function(e){return i.__limit((function(){if(r.canceled)return r.cancelToken;var a={width:e.width,height:e.height,toWidth:e.toWidth,toHeight:e.toHeight,scaleX:e.scaleX,scaleY:e.scaleY,offsetX:e.offsetX,offsetY:e.offsetY,filter:r.filter,alpha:r.alpha,unsharpAmount:r.unsharpAmount,unsharpRadius:r.unsharpRadius,unsharpThreshold:r.unsharpThreshold};return i.debug("Invoke resize math"),Promise.resolve(a).then((function(a){return i.__extractTileData(e,t,r,n,a)})).then((function(t){return i.debug("Invoke resize math"),i.__invokeResize(t,r)})).then((function(t){return r.canceled?r.cancelToken:(n.srcImageData=null,i.__landTileData(e,t,n))}))}))}(e)}));function A(t){t.srcImageBitmap&&(t.isImageBitmapReused||t.srcImageBitmap.close(),t.srcImageBitmap=null)}return i.debug("Process tiles"),Promise.all(a).then((function(){return i.debug("Finished!"),A(n),e}),(function(t){throw A(n),t}))}))},Q.prototype.__processStages=function(t,e,r,n){var A=this;if(n.canceled)return n.cancelToken;var o,s,u=i(t.shift(),2),h=u[0],c=u[1],f=0===t.length;return o=f||l.q2f.indexOf(n.filter)<0?n.filter:"box"===n.filter?"box":"hamming",n=a({},n,{toWidth:h,toHeight:c,filter:o}),f||(s=this.options.createCanvas(h,c)),this.__tileAndResize(e,f?r:s,n).then((function(){return f?r:(n.width=h,n.height=c,A.__processStages(t,s,r,n))})).then((function(t){return s&&(s.width=s.height=0),t}))},Q.prototype.__resizeViaCreateImageBitmap=function(t,e,r){var i=this,n=e.getContext("2d",{alpha:Boolean(r.alpha)});return this.debug("Resize via createImageBitmap()"),createImageBitmap(t,{resizeWidth:r.toWidth,resizeHeight:r.toHeight,resizeQuality:u.cib_quality_name(l.f2q[r.filter])}).then((function(t){if(r.canceled)return r.cancelToken;if(!r.unsharpAmount)return n.drawImage(t,0,0),t.close(),n=null,i.debug("Finished!"),e;i.debug("Unsharp result");var a=i.options.createCanvas(r.toWidth,r.toHeight),A=a.getContext("2d",{alpha:Boolean(r.alpha)});A.drawImage(t,0,0),t.close();var o=A.getImageData(0,0,r.toWidth,r.toHeight);return i.__mathlib.unsharp_mask(o.data,r.toWidth,r.toHeight,r.unsharpAmount,r.unsharpRadius,r.unsharpThreshold),n.putImageData(o,0,0),a.width=a.height=0,o=A=a=n=null,i.debug("Finished!"),e}))},Q.prototype.resize=function(t,e,r){var i=this;this.debug("Start resize...");var n=a({},I);if(isNaN(r)?r&&(n=a(n,r)):n=a(n,{quality:r}),n.toWidth=e.width,n.toHeight=e.height,n.width=t.naturalWidth||t.width,n.height=t.naturalHeight||t.height,Object.prototype.hasOwnProperty.call(n,"quality")){if(n.quality<0||n.quality>3)throw new Error("Pica: .quality should be [0..3], got ".concat(n.quality));n.filter=l.q2f[n.quality]}if(0===e.width||0===e.height)return Promise.reject(new Error("Invalid output size: ".concat(e.width,"x").concat(e.height)));n.unsharpRadius>2&&(n.unsharpRadius=2),n.canceled=!1,n.cancelToken&&(n.cancelToken=n.cancelToken.then((function(t){throw n.canceled=!0,t}),(function(t){throw n.canceled=!0,t})));return n.__destTileBorder=Math.ceil(Math.max(3,2.5*n.unsharpRadius|0)),this.init().then((function(){if(n.canceled)return n.cancelToken;if(i.features.cib){if(l.q2f.indexOf(n.filter)>=0)return i.__resizeViaCreateImageBitmap(t,e,n);i.debug("cib is enabled, but not supports provided filter, fallback to manual math")}if(!B){var r=new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");throw r.code="ERR_GET_IMAGE_DATA",r}var a=c(n.width,n.height,n.toWidth,n.toHeight,i.options.tile,n.__destTileBorder);return i.__processStages(a,t,e,n)}))},Q.prototype.resizeBuffer=function(t){var e=this,r=a({},I,t);if(Object.prototype.hasOwnProperty.call(r,"quality")){if(r.quality<0||r.quality>3)throw new Error("Pica: .quality should be [0..3], got ".concat(r.quality));r.filter=l.q2f[r.quality]}return this.init().then((function(){return e.__mathlib.resizeAndUnsharp(r)}))},Q.prototype.toBlob=function(t,e,r){return e=e||"image/png",new Promise((function(i){if(t.toBlob)t.toBlob((function(t){return i(t)}),e,r);else if(t.convertToBlob)i(t.convertToBlob({type:e,quality:r}));else{for(var n=atob(t.toDataURL(e,r).split(",")[1]),a=n.length,A=new Uint8Array(a),o=0;o<a;o++)A[o]=n.charCodeAt(o);i(new Blob([A],{type:e}))}}))},Q.prototype.debug=function(){},e.exports=Q},{"./lib/mathlib":1,"./lib/mm_resize/resize_filter_info":7,"./lib/pool":13,"./lib/stepper":14,"./lib/tiler":15,"./lib/utils":16,"./lib/worker":17,"object-assign":23,webworkify:24}]},{},[])("/index.js")}));
|
|
13
|
+
"use strict";var i=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function a(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}e.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},A=0;A<10;A++)e["_"+String.fromCharCode(A)]=A;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach((function(t){i[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},i)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var A,o,s=a(t),h=1;h<arguments.length;h++){for(var u in A=Object(arguments[h]))r.call(A,u)&&(s[u]=A[u]);if(i){o=i(A);for(var c=0;c<o.length;c++)n.call(A,o[c])&&(s[o[c]]=A[o[c]])}}return s}},{}],23:[function(t,e,A){var i=arguments[3],r=arguments[4],n=arguments[5],a=JSON.stringify;e.exports=function(t,e){for(var A,o=Object.keys(n),s=0,h=o.length;s<h;s++){var u=o[s],c=n[u].exports;if(c===t||c&&c.default===t){A=u;break}}if(!A){A=Math.floor(Math.pow(16,8)*Math.random()).toString(16);var f={};for(s=0,h=o.length;s<h;s++){f[u=o[s]]=u}r[A]=["function(require,module,exports){"+t+"(self); }",f]}var g=Math.floor(Math.pow(16,8)*Math.random()).toString(16),l={};l[A]=A,r[g]=["function(require,module,exports){var f = require("+a(A)+");(f.default ? f.default : f)(self);}",l];var I={};!function t(e){for(var A in I[e]=!0,r[e][1]){var i=r[e][1][A];I[i]||t(i)}}(g);var d="("+i+")({"+Object.keys(I).map((function(t){return a(t)+":["+r[t][0]+","+a(r[t][1])+"]"})).join(",")+"},{},["+a(g)+"])",B=window.URL||window.webkitURL||window.mozURL||window.msURL,m=new Blob([d],{type:"text/javascript"});if(e&&e.bare)return m;var Q=B.createObjectURL(m),p=new Worker(Q);return p.objectURL=Q,p}},{}],"/index.js":[function(t,e,A){"use strict";function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var A=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null==A)return;var i,r,n=[],a=!0,o=!1;try{for(A=A.call(t);!(a=(i=A.next()).done)&&(n.push(i.value),!e||n.length!==e);a=!0);}catch(t){o=!0,r=t}finally{try{a||null==A.return||A.return()}finally{if(o)throw r}}return n}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return r(t,e);var A=Object.prototype.toString.call(t).slice(8,-1);"Object"===A&&t.constructor&&(A=t.constructor.name);if("Map"===A||"Set"===A)return Array.from(t);if("Arguments"===A||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(A))return r(t,e)}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var A=0,i=new Array(e);A<e;A++)i[A]=t[A];return i}var n=t("object-assign"),a=t("webworkify"),o=t("./lib/mathlib"),s=t("./lib/pool"),h=t("./lib/utils"),u=t("./lib/worker"),c=t("./lib/stepper"),f=t("./lib/tiler"),g=t("./lib/mm_resize/resize_filter_info"),l={},I=!1;try{"undefined"!=typeof navigator&&navigator.userAgent&&(I=navigator.userAgent.indexOf("Safari")>=0)}catch(t){}var d=1;"undefined"!=typeof navigator&&(d=Math.min(navigator.hardwareConcurrency||1,4));var B={tile:1024,concurrency:d,features:["js","wasm","ww"],idle:2e3,createCanvas:function(t,e){var A=document.createElement("canvas");return A.width=t,A.height=e,A}},m={filter:"mks2013",unsharpAmount:0,unsharpRadius:0,unsharpThreshold:0},Q=!1,p=!1,E=!1,w=!1,C=!1;function _(){return{value:a(u),destroy:function(){if(this.value.terminate(),"undefined"!=typeof window){var t=window.URL||window.webkitURL||window.mozURL||window.msURL;t&&t.revokeObjectURL&&this.value.objectURL&&t.revokeObjectURL(this.value.objectURL)}}}}function b(t){if(!(this instanceof b))return new b(t);this.options=n({},B,t||{});var e="lk_".concat(this.options.concurrency);this.__limit=l[e]||h.limiter(this.options.concurrency),l[e]||(l[e]=this.__limit),this.features={js:!1,wasm:!1,cib:!1,ww:!1},this.__workersPool=null,this.__requested_features=[],this.__mathlib=null}b.prototype.init=function(){var e=this;if(this.__initPromise)return this.__initPromise;if("undefined"!=typeof ImageData&&"undefined"!=typeof Uint8ClampedArray)try{new ImageData(new Uint8ClampedArray(400),10,10),Q=!0}catch(t){}"undefined"!=typeof ImageBitmap&&(ImageBitmap.prototype&&ImageBitmap.prototype.close?p=!0:this.debug("ImageBitmap does not support .close(), disabled"));var A=this.options.features.slice();if(A.indexOf("all")>=0&&(A=["cib","wasm","js","ww"]),this.__requested_features=A,this.__mathlib=new o(A),A.indexOf("ww")>=0&&"undefined"!=typeof window&&"Worker"in window)try{t("webworkify")((function(){})).terminate(),this.features.ww=!0;var i="wp_".concat(JSON.stringify(this.options));l[i]?this.__workersPool=l[i]:(this.__workersPool=new s(_,this.options.idle),l[i]=this.__workersPool)}catch(t){}var r,a,u=this.__mathlib.init().then((function(t){n(e.features,t.features)}));r=p?h.cib_support(this.options.createCanvas).then((function(t){e.features.cib&&A.indexOf("cib")<0?e.debug("createImageBitmap() resize supported, but disabled by config"):A.indexOf("cib")>=0&&(e.features.cib=t)})):Promise.resolve(!1),E=h.can_use_canvas(this.options.createCanvas),a=(a=p&&Q&&-1!==A.indexOf("ww")?h.worker_offscreen_canvas_support():Promise.resolve(!1)).then((function(t){w=t}));var c=h.cib_can_use_region().then((function(t){C=t}));return this.__initPromise=Promise.all([u,r,a,c]).then((function(){return e})),this.__initPromise},b.prototype.__invokeResize=function(t,e){var A=this;return e.__mathCache=e.__mathCache||{},Promise.resolve().then((function(){return A.features.ww?new Promise((function(i,r){var n=A.__workersPool.acquire();e.cancelToken&&e.cancelToken.catch((function(t){return r(t)})),n.value.onmessage=function(t){n.release(),t.data.err?r(t.data.err):i(t.data)};var a=[];t.src&&a.push(t.src.buffer),t.srcBitmap&&a.push(t.srcBitmap),n.value.postMessage({opts:t,features:A.__requested_features,preload:{wasm_nodule:A.__mathlib.__}},a)})):{data:A.__mathlib.resizeAndUnsharp(t,e.__mathCache)}}))},b.prototype.__extractTileData=function(t,e,A,i,r){if(this.features.ww&&w&&(h.isCanvas(e)||C))return this.debug("Create tile for OffscreenCanvas"),createImageBitmap(i.srcImageBitmap||e,t.x,t.y,t.width,t.height).then((function(t){return r.srcBitmap=t,r}));if(h.isCanvas(e))return i.srcCtx||(i.srcCtx=e.getContext("2d")),this.debug("Get tile pixel data"),r.src=i.srcCtx.getImageData(t.x,t.y,t.width,t.height).data,r;this.debug("Draw tile imageBitmap/image to temporary canvas");var n=this.options.createCanvas(t.width,t.height),a=n.getContext("2d");return a.globalCompositeOperation="copy",a.drawImage(i.srcImageBitmap||e,t.x,t.y,t.width,t.height,0,0,t.width,t.height),this.debug("Get tile pixel data"),r.src=a.getImageData(0,0,t.width,t.height).data,n.width=n.height=0,r},b.prototype.__landTileData=function(t,e,A){var i;if(this.debug("Convert raw rgba tile result to ImageData"),e.bitmap)return A.toCtx.drawImage(e.bitmap,t.toX,t.toY),null;if(Q)i=new ImageData(new Uint8ClampedArray(e.data),t.toWidth,t.toHeight);else if((i=A.toCtx.createImageData(t.toWidth,t.toHeight)).data.set)i.data.set(e.data);else for(var r=i.data.length-1;r>=0;r--)i.data[r]=e.data[r];return this.debug("Draw tile"),I?A.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth+1e-5,t.toInnerHeight+1e-5):A.toCtx.putImageData(i,t.toX,t.toY,t.toInnerX-t.toX,t.toInnerY-t.toY,t.toInnerWidth,t.toInnerHeight),null},b.prototype.__tileAndResize=function(t,e,A){var i=this,r={srcCtx:null,srcImageBitmap:null,isImageBitmapReused:!1,toCtx:null};return Promise.resolve().then((function(){if(r.toCtx=e.getContext("2d"),h.isCanvas(t))return null;if(h.isImageBitmap(t))return r.srcImageBitmap=t,r.isImageBitmapReused=!0,null;if(h.isImage(t))return p?(i.debug("Decode image via createImageBitmap"),createImageBitmap(t).then((function(t){r.srcImageBitmap=t})).catch((function(t){return null}))):null;throw new Error('Pica: ".from" should be Image, Canvas or ImageBitmap')})).then((function(){if(A.canceled)return A.cancelToken;i.debug("Calculate tiles");var n=f({width:A.width,height:A.height,srcTileSize:i.options.tile,toWidth:A.toWidth,toHeight:A.toHeight,destTileBorder:A.__destTileBorder}).map((function(e){return function(e){return i.__limit((function(){if(A.canceled)return A.cancelToken;var n={width:e.width,height:e.height,toWidth:e.toWidth,toHeight:e.toHeight,scaleX:e.scaleX,scaleY:e.scaleY,offsetX:e.offsetX,offsetY:e.offsetY,filter:A.filter,unsharpAmount:A.unsharpAmount,unsharpRadius:A.unsharpRadius,unsharpThreshold:A.unsharpThreshold};return i.debug("Invoke resize math"),Promise.resolve(n).then((function(n){return i.__extractTileData(e,t,A,r,n)})).then((function(t){return i.debug("Invoke resize math"),i.__invokeResize(t,A)})).then((function(t){return A.canceled?A.cancelToken:(r.srcImageData=null,i.__landTileData(e,t,r))}))}))}(e)}));function a(t){t.srcImageBitmap&&(t.isImageBitmapReused||t.srcImageBitmap.close(),t.srcImageBitmap=null)}return i.debug("Process tiles"),Promise.all(n).then((function(){return i.debug("Finished!"),a(r),e}),(function(t){throw a(r),t}))}))},b.prototype.__processStages=function(t,e,A,r){var a=this;if(r.canceled)return r.cancelToken;var o,s,h=i(t.shift(),2),u=h[0],c=h[1],f=0===t.length;return o=f||g.q2f.indexOf(r.filter)<0?r.filter:"box"===r.filter?"box":"hamming",r=n({},r,{toWidth:u,toHeight:c,filter:o}),f||(s=this.options.createCanvas(u,c)),this.__tileAndResize(e,f?A:s,r).then((function(){return f?A:(r.width=u,r.height=c,a.__processStages(t,s,A,r))})).then((function(t){return s&&(s.width=s.height=0),t}))},b.prototype.__resizeViaCreateImageBitmap=function(t,e,A){var i=this,r=e.getContext("2d");return this.debug("Resize via createImageBitmap()"),createImageBitmap(t,{resizeWidth:A.toWidth,resizeHeight:A.toHeight,resizeQuality:h.cib_quality_name(g.f2q[A.filter])}).then((function(t){if(A.canceled)return A.cancelToken;if(!A.unsharpAmount)return r.drawImage(t,0,0),t.close(),r=null,i.debug("Finished!"),e;i.debug("Unsharp result");var n=i.options.createCanvas(A.toWidth,A.toHeight),a=n.getContext("2d");a.drawImage(t,0,0),t.close();var o=a.getImageData(0,0,A.toWidth,A.toHeight);return i.__mathlib.unsharp_mask(o.data,A.toWidth,A.toHeight,A.unsharpAmount,A.unsharpRadius,A.unsharpThreshold),r.putImageData(o,0,0),n.width=n.height=0,o=a=n=r=null,i.debug("Finished!"),e}))},b.prototype.resize=function(t,e,A){var i=this;this.debug("Start resize...");var r=n({},m);if(isNaN(A)?A&&(r=n(r,A)):r=n(r,{quality:A}),r.toWidth=e.width,r.toHeight=e.height,r.width=t.naturalWidth||t.width,r.height=t.naturalHeight||t.height,Object.prototype.hasOwnProperty.call(r,"quality")){if(r.quality<0||r.quality>3)throw new Error("Pica: .quality should be [0..3], got ".concat(r.quality));r.filter=g.q2f[r.quality]}if(0===e.width||0===e.height)return Promise.reject(new Error("Invalid output size: ".concat(e.width,"x").concat(e.height)));r.unsharpRadius>2&&(r.unsharpRadius=2),r.canceled=!1,r.cancelToken&&(r.cancelToken=r.cancelToken.then((function(t){throw r.canceled=!0,t}),(function(t){throw r.canceled=!0,t})));return r.__destTileBorder=Math.ceil(Math.max(3,2.5*r.unsharpRadius|0)),this.init().then((function(){if(r.canceled)return r.cancelToken;if(i.features.cib){if(g.q2f.indexOf(r.filter)>=0)return i.__resizeViaCreateImageBitmap(t,e,r);i.debug("cib is enabled, but not supports provided filter, fallback to manual math")}if(!E){var A=new Error("Pica: cannot use getImageData on canvas, make sure fingerprinting protection isn't enabled");throw A.code="ERR_GET_IMAGE_DATA",A}var n=c(r.width,r.height,r.toWidth,r.toHeight,i.options.tile,r.__destTileBorder);return i.__processStages(n,t,e,r)}))},b.prototype.resizeBuffer=function(t){var e=this,A=n({},m,t);if(Object.prototype.hasOwnProperty.call(A,"quality")){if(A.quality<0||A.quality>3)throw new Error("Pica: .quality should be [0..3], got ".concat(A.quality));A.filter=g.q2f[A.quality]}return this.init().then((function(){return e.__mathlib.resizeAndUnsharp(A)}))},b.prototype.toBlob=function(t,e,A){return e=e||"image/png",new Promise((function(i){if(t.toBlob)t.toBlob((function(t){return i(t)}),e,A);else if(t.convertToBlob)i(t.convertToBlob({type:e,quality:A}));else{for(var r=atob(t.toDataURL(e,A).split(",")[1]),n=r.length,a=new Uint8Array(n),o=0;o<n;o++)a[o]=r.charCodeAt(o);i(new Blob([a],{type:e}))}}))},b.prototype.debug=function(){},e.exports=b},{"./lib/mathlib":1,"./lib/mm_resize/resize_filter_info":7,"./lib/pool":13,"./lib/stepper":14,"./lib/tiler":15,"./lib/utils":16,"./lib/worker":17,"object-assign":22,webworkify:23}]},{},[])("/index.js")}));
|
package/index.js
CHANGED
|
@@ -49,7 +49,6 @@ const DEFAULT_PICA_OPTS = {
|
|
|
49
49
|
|
|
50
50
|
const DEFAULT_RESIZE_OPTS = {
|
|
51
51
|
filter: 'mks2013',
|
|
52
|
-
alpha: false,
|
|
53
52
|
unsharpAmount: 0,
|
|
54
53
|
unsharpRadius: 0.0,
|
|
55
54
|
unsharpThreshold: 0
|
|
@@ -286,7 +285,7 @@ Pica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extract
|
|
|
286
285
|
|
|
287
286
|
// Extract tile RGBA buffer, depending on input type
|
|
288
287
|
if (utils.isCanvas(from)) {
|
|
289
|
-
if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d'
|
|
288
|
+
if (!stageEnv.srcCtx) stageEnv.srcCtx = from.getContext('2d');
|
|
290
289
|
|
|
291
290
|
// If input is Canvas - extract region data directly
|
|
292
291
|
this.debug('Get tile pixel data');
|
|
@@ -303,7 +302,7 @@ Pica.prototype.__extractTileData = function (tile, from, opts, stageEnv, extract
|
|
|
303
302
|
|
|
304
303
|
let tmpCanvas = this.options.createCanvas(tile.width, tile.height);
|
|
305
304
|
|
|
306
|
-
let tmpCtx = tmpCanvas.getContext('2d'
|
|
305
|
+
let tmpCtx = tmpCanvas.getContext('2d');
|
|
307
306
|
tmpCtx.globalCompositeOperation = 'copy';
|
|
308
307
|
tmpCtx.drawImage(stageEnv.srcImageBitmap || from,
|
|
309
308
|
tile.x, tile.y, tile.width, tile.height,
|
|
@@ -388,7 +387,6 @@ Pica.prototype.__tileAndResize = function (from, to, opts) {
|
|
|
388
387
|
offsetX: tile.offsetX,
|
|
389
388
|
offsetY: tile.offsetY,
|
|
390
389
|
filter: opts.filter,
|
|
391
|
-
alpha: opts.alpha,
|
|
392
390
|
unsharpAmount: opts.unsharpAmount,
|
|
393
391
|
unsharpRadius: opts.unsharpRadius,
|
|
394
392
|
unsharpThreshold: opts.unsharpThreshold
|
|
@@ -413,7 +411,7 @@ Pica.prototype.__tileAndResize = function (from, to, opts) {
|
|
|
413
411
|
// Need to normalize data source first. It can be canvas or image.
|
|
414
412
|
// If image - try to decode in background if possible
|
|
415
413
|
return Promise.resolve().then(() => {
|
|
416
|
-
stageEnv.toCtx = to.getContext('2d'
|
|
414
|
+
stageEnv.toCtx = to.getContext('2d');
|
|
417
415
|
|
|
418
416
|
if (utils.isCanvas(from)) return null;
|
|
419
417
|
|
|
@@ -537,7 +535,7 @@ Pica.prototype.__processStages = function (stages, from, to, opts) {
|
|
|
537
535
|
|
|
538
536
|
|
|
539
537
|
Pica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {
|
|
540
|
-
let toCtx = to.getContext('2d'
|
|
538
|
+
let toCtx = to.getContext('2d');
|
|
541
539
|
|
|
542
540
|
this.debug('Resize via createImageBitmap()');
|
|
543
541
|
|
|
@@ -564,7 +562,7 @@ Pica.prototype.__resizeViaCreateImageBitmap = function (from, to, opts) {
|
|
|
564
562
|
|
|
565
563
|
let tmpCanvas = this.options.createCanvas(opts.toWidth, opts.toHeight);
|
|
566
564
|
|
|
567
|
-
let tmpCtx = tmpCanvas.getContext('2d'
|
|
565
|
+
let tmpCtx = tmpCanvas.getContext('2d');
|
|
568
566
|
|
|
569
567
|
tmpCtx.drawImage(imageBitmap, 0, 0);
|
|
570
568
|
imageBitmap.close();
|
package/lib/mathlib.js
CHANGED
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
const inherits = require('inherits');
|
|
10
9
|
const Multimath = require('multimath');
|
|
11
10
|
|
|
12
11
|
const mm_unsharp_mask = require('./mm_unsharp_mask');
|
|
@@ -33,7 +32,8 @@ function MathLib(requested_features) {
|
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
MathLib.prototype = Object.create(Multimath.prototype);
|
|
36
|
+
MathLib.prototype.constructor = MathLib;
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
MathLib.prototype.resizeAndUnsharp = function resizeAndUnsharp(options, cache) {
|
package/lib/mm_resize/convolve.c
CHANGED
|
@@ -4,6 +4,10 @@ inline uint8_t clampTo8(int32_t i) {
|
|
|
4
4
|
return i < 0 ? 0 : (i > 255 ? 255 : i);
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
+
inline uint32_t clampNegative(int32_t i) {
|
|
8
|
+
return i >= 0 ? i : 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
7
11
|
|
|
8
12
|
#define R(x) ((uint8_t)(x))
|
|
9
13
|
#define G(x) ((uint8_t)((x) >> 8))
|
|
@@ -13,10 +17,9 @@ inline uint8_t clampTo8(int32_t i) {
|
|
|
13
17
|
#define RGBA(r, g, b, a) ((r) | ((g) << 8) | ((b) << 16) | ((a) << 24))
|
|
14
18
|
|
|
15
19
|
|
|
16
|
-
void
|
|
20
|
+
void convolveHor(uint32_t *src, uint16_t *dest, uint32_t srcW, uint32_t srcH, uint32_t destW, int16_t *filters)
|
|
17
21
|
{
|
|
18
22
|
int32_t r, g, b, a;
|
|
19
|
-
uint32_t rgba;
|
|
20
23
|
uint32_t filterPtr, filterShift, filterSize;
|
|
21
24
|
uint32_t srcPtr, srcY, destX;
|
|
22
25
|
int32_t filterVal;
|
|
@@ -28,53 +31,226 @@ void convolve(uint32_t *src, uint32_t *dest, uint32_t srcW, uint32_t srcH, uint3
|
|
|
28
31
|
for (destX = 0; destX < destW; destX++) {
|
|
29
32
|
// Get the filter that determines the current output pixel.
|
|
30
33
|
filterShift = filters[filterPtr++];
|
|
31
|
-
srcPtr = srcOffset + filterShift;
|
|
32
34
|
filterSize = filters[filterPtr++];
|
|
33
35
|
|
|
36
|
+
srcPtr = srcOffset + filterShift;
|
|
37
|
+
|
|
34
38
|
r = g = b = a = 0;
|
|
35
39
|
// Apply the filter to the row to get the destination pixel r, g, b, a
|
|
36
40
|
for (; filterSize > 0; filterSize--) {
|
|
37
41
|
filterVal = filters[filterPtr++];
|
|
38
|
-
rgba = src[srcPtr++];
|
|
42
|
+
uint32_t rgba = src[srcPtr++];
|
|
39
43
|
|
|
40
44
|
r += filterVal * R(rgba);
|
|
41
45
|
g += filterVal * G(rgba);
|
|
42
46
|
b += filterVal * B(rgba);
|
|
43
47
|
a += filterVal * A(rgba);
|
|
44
48
|
};
|
|
45
|
-
|
|
46
|
-
//
|
|
49
|
+
|
|
50
|
+
// Store 15 bits between passes for better precision
|
|
51
|
+
// Instead of shift to 14 (FIXED_FRAC_BITS), shift to 7 only
|
|
52
|
+
//
|
|
53
|
+
dest[destOffset++] = clampNegative(r >> 7);
|
|
54
|
+
dest[destOffset++] = clampNegative(g >> 7);
|
|
55
|
+
dest[destOffset++] = clampNegative(b >> 7);
|
|
56
|
+
dest[destOffset++] = clampNegative(a >> 7);
|
|
57
|
+
destOffset += srcH * 4 - 4;
|
|
58
|
+
};
|
|
59
|
+
destOffset = (srcY + 1) * 4;
|
|
60
|
+
srcOffset = (srcY + 1) * srcW;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
void convolveVert(uint16_t *src, uint32_t *dest, uint32_t srcW, uint32_t srcH, uint32_t destW, int16_t *filters)
|
|
66
|
+
{
|
|
67
|
+
int32_t r, g, b, a;
|
|
68
|
+
uint32_t filterPtr, filterShift, filterSize;
|
|
69
|
+
uint32_t srcPtr, srcY, destX;
|
|
70
|
+
int32_t filterVal;
|
|
71
|
+
uint32_t srcOffset = 0, destOffset = 0;
|
|
72
|
+
//
|
|
73
|
+
for (srcY=0; srcY < srcH; srcY++) {
|
|
74
|
+
filterPtr = 0;
|
|
75
|
+
|
|
76
|
+
// Apply precomputed filters to each destination row point
|
|
77
|
+
for (destX = 0; destX < destW; destX++) {
|
|
78
|
+
// Get the filter that determines the current output pixel.
|
|
79
|
+
filterShift = filters[filterPtr++];
|
|
80
|
+
filterSize = filters[filterPtr++];
|
|
81
|
+
|
|
82
|
+
srcPtr = srcOffset + filterShift*4;
|
|
83
|
+
|
|
84
|
+
r = g = b = a = 0;
|
|
85
|
+
|
|
86
|
+
// Apply the filter to the row to get the destination pixel r, g, b, a
|
|
87
|
+
for (; filterSize > 0; filterSize--) {
|
|
88
|
+
filterVal = filters[filterPtr++];
|
|
89
|
+
|
|
90
|
+
r += filterVal * src[srcPtr++];
|
|
91
|
+
g += filterVal * src[srcPtr++];
|
|
92
|
+
b += filterVal * src[srcPtr++];
|
|
93
|
+
a += filterVal * src[srcPtr++];
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// Sync with premultiplied version for exact result match
|
|
97
|
+
r >>= 7;
|
|
98
|
+
g >>= 7;
|
|
99
|
+
b >>= 7;
|
|
100
|
+
a >>= 7;
|
|
101
|
+
|
|
102
|
+
// Bring this value back in range + round result.
|
|
47
103
|
//
|
|
48
|
-
// (!) Add 1/2 of value before clamping to get proper rounding. In other
|
|
49
|
-
// case brightness loss will be noticeable if you resize image with white
|
|
50
|
-
// border and place it on white background.
|
|
51
104
|
dest[destOffset] = RGBA(
|
|
52
|
-
clampTo8((r + (1<<13))>>14
|
|
53
|
-
clampTo8((g + (1<<13))>>14
|
|
54
|
-
clampTo8((b + (1<<13))>>14
|
|
55
|
-
clampTo8((a + (1<<13))>>14
|
|
105
|
+
clampTo8((r + (1 << 13)) >> 14),
|
|
106
|
+
clampTo8((g + (1 << 13)) >> 14),
|
|
107
|
+
clampTo8((b + (1 << 13)) >> 14),
|
|
108
|
+
clampTo8((a + (1 << 13)) >> 14)
|
|
109
|
+
);
|
|
56
110
|
destOffset += srcH;
|
|
57
111
|
};
|
|
58
112
|
destOffset = srcY + 1;
|
|
113
|
+
srcOffset = (srcY + 1) * srcW * 4;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
void convolveHorWithPre(uint32_t *src, uint16_t *dest, uint32_t srcW, uint32_t srcH, uint32_t destW, int16_t *filters)
|
|
119
|
+
{
|
|
120
|
+
int32_t r, g, b, a;
|
|
121
|
+
uint32_t filterPtr, filterShift, filterSize;
|
|
122
|
+
uint32_t srcPtr, srcY, destX;
|
|
123
|
+
int32_t filterVal;
|
|
124
|
+
uint32_t srcOffset = 0, destOffset = 0;
|
|
125
|
+
//
|
|
126
|
+
for (srcY=0; srcY < srcH; srcY++) {
|
|
127
|
+
filterPtr = 0;
|
|
128
|
+
// Apply precomputed filters to each destination row point
|
|
129
|
+
for (destX = 0; destX < destW; destX++) {
|
|
130
|
+
// Get the filter that determines the current output pixel.
|
|
131
|
+
filterShift = filters[filterPtr++];
|
|
132
|
+
filterSize = filters[filterPtr++];
|
|
133
|
+
|
|
134
|
+
srcPtr = srcOffset + filterShift;
|
|
135
|
+
|
|
136
|
+
r = g = b = a = 0;
|
|
137
|
+
// Apply the filter to the row to get the destination pixel r, g, b, a
|
|
138
|
+
for (; filterSize > 0; filterSize--) {
|
|
139
|
+
filterVal = filters[filterPtr++];
|
|
140
|
+
uint32_t rgba = src[srcPtr++];
|
|
141
|
+
|
|
142
|
+
uint8_t alpha = A(rgba);
|
|
143
|
+
|
|
144
|
+
r += filterVal * alpha * R(rgba);
|
|
145
|
+
g += filterVal * alpha * G(rgba);
|
|
146
|
+
b += filterVal * alpha * B(rgba);
|
|
147
|
+
a += filterVal * alpha;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
// Premultiply is (* alpha / 255).
|
|
151
|
+
// Postpone division for better performance
|
|
152
|
+
r /= 255;
|
|
153
|
+
g /= 255;
|
|
154
|
+
b /= 255;
|
|
155
|
+
|
|
156
|
+
// Store 15 bits between passes for better precision
|
|
157
|
+
// Instead of shift to 14 (FIXED_FRAC_BITS), shift to 7 only
|
|
158
|
+
//
|
|
159
|
+
dest[destOffset++] = clampNegative(r >> 7);
|
|
160
|
+
dest[destOffset++] = clampNegative(g >> 7);
|
|
161
|
+
dest[destOffset++] = clampNegative(b >> 7);
|
|
162
|
+
dest[destOffset++] = clampNegative(a >> 7);
|
|
163
|
+
destOffset += srcH * 4 - 4;
|
|
164
|
+
};
|
|
165
|
+
destOffset = (srcY + 1) * 4;
|
|
59
166
|
srcOffset = (srcY + 1) * srcW;
|
|
60
167
|
};
|
|
61
168
|
}
|
|
62
169
|
|
|
170
|
+
|
|
171
|
+
void convolveVertWithPre(uint16_t *src, uint32_t *dest, uint32_t srcW, uint32_t srcH, uint32_t destW, int16_t *filters)
|
|
172
|
+
{
|
|
173
|
+
int32_t r, g, b, a;
|
|
174
|
+
uint32_t filterPtr, filterShift, filterSize;
|
|
175
|
+
uint32_t srcPtr, srcY, destX;
|
|
176
|
+
int32_t filterVal;
|
|
177
|
+
uint32_t srcOffset = 0, destOffset = 0;
|
|
178
|
+
//
|
|
179
|
+
for (srcY=0; srcY < srcH; srcY++) {
|
|
180
|
+
filterPtr = 0;
|
|
181
|
+
|
|
182
|
+
// Apply precomputed filters to each destination row point
|
|
183
|
+
for (destX = 0; destX < destW; destX++) {
|
|
184
|
+
// Get the filter that determines the current output pixel.
|
|
185
|
+
filterShift = filters[filterPtr++];
|
|
186
|
+
filterSize = filters[filterPtr++];
|
|
187
|
+
|
|
188
|
+
srcPtr = srcOffset + filterShift*4;
|
|
189
|
+
|
|
190
|
+
r = g = b = a = 0;
|
|
191
|
+
|
|
192
|
+
// Apply the filter to the row to get the destination pixel r, g, b, a
|
|
193
|
+
for (; filterSize > 0; filterSize--) {
|
|
194
|
+
filterVal = filters[filterPtr++];
|
|
195
|
+
|
|
196
|
+
r += filterVal * src[srcPtr++];
|
|
197
|
+
g += filterVal * src[srcPtr++];
|
|
198
|
+
b += filterVal * src[srcPtr++];
|
|
199
|
+
a += filterVal * src[srcPtr++];
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
// Downscale to leave room for un-premultiply
|
|
203
|
+
r >>= 7;
|
|
204
|
+
g >>= 7;
|
|
205
|
+
b >>= 7;
|
|
206
|
+
a >>= 7;
|
|
207
|
+
|
|
208
|
+
// Un-premultiply
|
|
209
|
+
a = clampTo8((a + (1 << 13)) >> 14);
|
|
210
|
+
if (a > 0) {
|
|
211
|
+
r = r * 255 / a;
|
|
212
|
+
g = g * 255 / a;
|
|
213
|
+
b = b * 255 / a;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Bring this value back in range + round result.
|
|
217
|
+
// Shift value = FIXED_FRAC_BITS + 7
|
|
218
|
+
//
|
|
219
|
+
dest[destOffset] = RGBA(
|
|
220
|
+
clampTo8((r + (1 << 13)) >> 14),
|
|
221
|
+
clampTo8((g + (1 << 13)) >> 14),
|
|
222
|
+
clampTo8((b + (1 << 13)) >> 14),
|
|
223
|
+
a
|
|
224
|
+
);
|
|
225
|
+
destOffset += srcH;
|
|
226
|
+
};
|
|
227
|
+
destOffset = srcY + 1;
|
|
228
|
+
srcOffset = (srcY + 1) * srcW * 4;
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
|
|
63
233
|
void convolveHV(uint32_t filtersX_offset,
|
|
64
234
|
uint32_t filtersY_offset,
|
|
65
235
|
uint32_t tmp_offset,
|
|
66
236
|
uint32_t srcW,
|
|
67
237
|
uint32_t srcH,
|
|
68
238
|
uint32_t destW,
|
|
69
|
-
uint32_t destH
|
|
239
|
+
uint32_t destH,
|
|
240
|
+
uint8_t has_alpha)
|
|
70
241
|
{
|
|
71
242
|
uint8_t *memory = 0;
|
|
72
243
|
|
|
73
244
|
uint32_t *src = (uint32_t *)memory;
|
|
245
|
+
uint16_t *tmp = (uint16_t *)(memory + tmp_offset);
|
|
74
246
|
int16_t *filterX = (int16_t *)(memory + filtersX_offset);
|
|
75
247
|
int16_t *filterY = (int16_t *)(memory + filtersY_offset);
|
|
76
|
-
uint32_t *tmp = (uint32_t *)(memory + tmp_offset);
|
|
77
248
|
|
|
78
|
-
|
|
79
|
-
|
|
249
|
+
if (has_alpha) {
|
|
250
|
+
convolveHorWithPre(src, tmp, srcW, srcH, destW, filterX);
|
|
251
|
+
convolveVertWithPre(tmp, src, srcH, destW, destH, filterY);
|
|
252
|
+
} else {
|
|
253
|
+
convolveHor(src, tmp, srcW, srcH, destW, filterX);
|
|
254
|
+
convolveVert(tmp, src, srcH, destW, destH, filterY);
|
|
255
|
+
}
|
|
80
256
|
}
|