UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.21 kB
class t{applyColorSubstituition(t,a){if(!a)return t;this._rasterizationCanvas||(this._rasterizationCanvas=document.createElement("canvas"));const{width:e,height:n}=t,o=this._rasterizationCanvas,r=o.getContext("2d");t!==o&&(o.width=e,o.height=n,r.drawImage(t,0,0,e,n));const i=r.getImageData(0,0,e,n).data;if(a)for(const h of a)if(h&&h.oldColor&&4===h.oldColor.length&&h.newColor&&4===h.newColor.length){const[t,a,e,n]=h.oldColor,[o,r,s,l]=h.newColor;if(t===o&&a===r&&e===s&&n===l)continue;for(let h=0;h<i.length;h+=4)t===i[h]&&a===i[h+1]&&e===i[h+2]&&n===i[h+3]&&(i[h]=o,i[h+1]=r,i[h+2]=s,i[h+3]=l)}const s=new ImageData(i,e,n);return r.putImageData(s,0,0),o}tintImageData(t,a){if(!a||a.length<4)return t;this._rasterizationCanvas||(this._rasterizationCanvas=document.createElement("canvas"));const{width:e,height:n}=t,o=this._rasterizationCanvas,r=o.getContext("2d");t!==o&&(o.width=e,o.height=n,r.drawImage(t,0,0,e,n));const i=r.getImageData(0,0,e,n),s=new Uint8Array(i.data),h=[a[0]/255,a[1]/255,a[2]/255,a[3]/255];for(let g=0;g<s.length;g+=4)s[g+0]*=h[0],s[g+1]*=h[1],s[g+2]*=h[2],s[g+3]*=h[3];const l=new ImageData(new Uint8ClampedArray(s.buffer),e,n);return r.putImageData(l,0,0),o}}export{t as default};