UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.58 kB
import"../../../geometry.js";import{isSome as t}from"../../../core/maybe.js";import{isExtent as i,isPolygon as e}from"../../../geometry/support/jsonUtils.js";import{clipPolygonToTileExtent as s}from"../CIMEffects.js";import{GeometricEffectDonutMethod as n}from"../enums.js";import r from"../../../geometry/SpatialReference.js";class h{static local(){return null===h.instance&&(h.instance=new h),h.instance}execute(t,i,e,s,n){return new m(t,i,e,s,n)}}h.instance=null;class m{constructor(t,i,e,s,r){switch(this._inputGeometries=t,this._tileKey=s,this._geometryEngine=r,this._width=(void 0!==i.width?i.width:2)*e,i.method){case n.Mitered:case n.Bevelled:case n.Rounded:case n.TrueBuffer:case n.Square:}this._option=i.option}next(){let n;for(;n=this._inputGeometries.next();){if(i(n)&&this._width>0){if(Math.min(n.xmax-n.xmin,n.ymax-n.ymin)-2*this._width<0)return n;const t=[];return t.push([[n.xmin,n.ymin],[n.xmin,n.ymax],[n.xmax,n.ymax],[n.xmax,n.ymin],[n.xmin,n.ymin]]),t.push([[n.xmin+this._width,n.ymin+this._width],[n.xmax-this._width,n.ymin+this._width],[n.xmax-this._width,n.ymax-this._width],[n.xmin+this._width,n.ymax-this._width],[n.xmin+this._width,n.ymin+this._width]]),{rings:t}}if(e(n)){let i=null;const e=this._geometryEngine;let h=n;if(this._tileKey&&(h=s(n,Math.abs(this._width)+1),!h||!h.rings||0===h.rings.length))continue;if(t(e)&&(i=e.buffer(r.WebMercator,h,-this._width,1)),this._width>0){const t=[];for(const i of n.rings)i&&t.push(i);if(i)for(const e of i.rings)e&&t.push(e.reverse());if(t.length)return{rings:t}}}}return null}}export{h as EffectDonut};