You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9 lines
3.0 KiB
9 lines
3.0 KiB
// All material copyright Esri, All Rights Reserved, unless otherwise specified. |
|
// See https://js.arcgis.com/4.30/esri/copyright.txt for details. |
|
//>>built |
|
define("./CIMSymbolHelper ./rasterizingUtils ./Rect ./SDFHelper ./utils ../../views/2d/engine/webgl/definitions".split(" "),function(h,l,x,m,y,n){function p(b){if(!b)return null;const [e,c,a]=m.buildSDF(b);return e?{size:[c,a],image:new Uint32Array(e.buffer),sdf:!0,simplePattern:!0,anchorX:0,anchorY:0}:null}class z{constructor(b){this._resourceManager=b;this._cachedRasterizationCanvas=null}dispose(){this._cachedRasterizationCanvas=null}get _canvas(){this._cachedRasterizationCanvas||(this._cachedRasterizationCanvas= |
|
document.createElement("canvas"));return this._cachedRasterizationCanvas}rasterizeJSONResource(b){switch(b.type){case "dash":const [e,c,a]=l.rasterizeDash(b.dashTemplate,b.capStyle);return{size:[c,a],image:new Uint32Array(e.buffer),sdf:!0,simplePattern:!0,anchorX:0,anchorY:0};case "fill-style":const [f,d,g,k]=l.rasterizeFillStyle(this._canvas,b,n.patternFillRasterizationScale);return{size:[d,g],image:new Uint32Array(f.buffer),sdf:!1,simplePattern:!0,anchorX:0,anchorY:0,rasterizationScale:k};case "sdf":return p(b); |
|
case "CIMHatchFill":case "CIMVectorMarker":case "CIMPictureMarker":return this._rasterizeCIMJSONResource(b)}}_rasterizeCIMJSONResource(b){switch(b.type){case "CIMHatchFill":return b=h.CIMSymbolHelper.fromCIMHatchFill(b,n.patternFillRasterizationScale),this._rasterizeCIMVectorMarker(b);case "CIMPictureMarker":return b=h.CIMSymbolHelper.fromCIMInsidePolygon(b),this._rasterizeCIMVectorMarker(b);case "CIMVectorMarker":if("CIMMarkerPlacementInsidePolygon"===b.markerPlacement?.type)return b=h.CIMSymbolHelper.fromCIMInsidePolygon(b), |
|
this._rasterizeCIMVectorMarker(b);const e=m.getSDFInfo(b);return e&&!b.avoidSDFRasterization?p(e):this._rasterizeCIMVectorMarker(b,!1)}}_rasterizeCIMVectorMarker(b,e=!0){e=e?x.fromExtent(b.frame):null;const [c,a,f,d,g]=h.CIMSymbolHelper.rasterize(this._canvas,b,e,this._resourceManager);return c?{size:[a,f],image:new Uint32Array(c.buffer),sdf:!1,simplePattern:!1,anchorX:d,anchorY:g}:null}rasterizeImageResource(b,e,c,a){this._canvas.width=b;this._canvas.height=e;var f=this._canvas.getContext("2d",{willReadFrequently:!0}); |
|
c instanceof ImageData?f.putImageData(c,0,0):(c.setAttribute("width",`${b}px`),c.setAttribute("height",`${e}px`),f.drawImage(c,0,0,b,e));c=f.getImageData(0,0,b,e);c=new Uint8Array(c.data);if(a)for(var d of a)if(d&&d.oldColor&&4===d.oldColor.length&&d.newColor&&4===d.newColor.length){const [g,k,q,r]=d.oldColor,[t,u,v,w]=d.newColor;if(g!==t||k!==u||q!==v||r!==w)for(a=0;a<c.length;a+=4)g===c[a]&&k===c[a+1]&&q===c[a+2]&&r===c[a+3]&&(c[a]=t,c[a+1]=u,c[a+2]=v,c[a+3]=w)}for(a=0;a<c.length;a+=4)d=c[a+3]/ |
|
255,c[a]*=d,c[a+1]*=d,c[a+2]*=d;f=c;d=b;a=e;if(512<=d||512<=a){f=d/a;1<f?(d=512,a=Math.round(512/f)):(a=512,d=Math.round(512*f));f=new Uint8Array(4*d*a);const g=new Uint8ClampedArray(f.buffer);y.resampleHermite(c,b,e,g,d,a,!1)}return{size:[d,a],image:new Uint32Array(f.buffer),sdf:!1,simplePattern:!1,anchorX:0,anchorY:0}}}return z}); |