UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 1.72 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{GeometryCursor as e}from"../../../geometry/GeometryCursor.js";import{collectMultipath as t}from"../../../geometry/geometryCursorCollectUtils.js";import i from"../../../geometry/SpatialReference.js";import{clipCursorToTileExtent as s}from"../CIMEffects.js";import{CurveHelper as r,pixelTolerance as n}from"../CurveHelper.js";import{GeometricEffectOffsetMethod as o}from"../enums.js";class m{static{this.instance=null}static local(){return null===m.instance&&(m.instance=new m),m.instance}execute(e,t,i,s,r,n,o){return new l(e,t,i,s,r,n,o)}}class l{constructor(e,t,i,s,o,m,l){this._preventClipping=l,this._inputGeometries=e,this._tileKey=s,this._geometryEngine=o,this._curveHelper=new r,this._size=(void 0!==t.size?t.size:1)*i,this._maxInflateSize=m*i,this._offsetFlattenError=n*i}next(){let r;for(;r=this._inputGeometries.next();){if(0===this._size)return r;if("esriGeometryEnvelope"===r.geometryType)if(this._size>0){const i=e.createEmptyOptimizedCIM(r.geometryType),s=t(r)[0],n=this._curveHelper.offset(s,this._size,o.Rounded,4,this._offsetFlattenError);if(n)return i.pushPath(n),i}else if(this._size<0){const t=r.asJSON();if(Math.min(t.xmax-t.xmin,t.ymax-t.ymin)+2*this._size>0)return e.fromJSONCIM({xmin:t.xmin-this._size,xmax:t.xmax+this._size,ymin:t.ymin-this._size,ymax:t.ymax+this._size})}const n=this._geometryEngine;if(null==n)return null;const m=!this._preventClipping&&this._tileKey?s(r,this._maxInflateSize,!0):r;if(!m)continue;const l=n.buffer(i.WebMercator,m.asJSON(),this._size,1);return l?e.fromJSONCIM(l):null}return null}}export{m as EffectBuffer};