UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.37 kB
import{clone as t}from"../../../core/lang.js";import{create as n}from"../../../geometry/support/aaBoundingRect.js";import{getBoundsXY as e}from"../../../geometry/support/boundsUtils.js";import{isExtent as r,isPolygon as i,isPolyline as o,isMultipoint as s,isPoint as a}from"../../../geometry/support/jsonUtils.js";class u{static local(){return null===u.instance&&(u.instance=new u),u.instance}execute(t,n,e,r,i){return new c(t,n,e)}}u.instance=null;class c{constructor(t,n,e){this._inputGeometries=t,this._rotateAngle=void 0!==n.angle?n.angle*Math.PI/180:0}next(){let u=this._inputGeometries.next();for(;u;){if(0===this._rotateAngle)return u;const c=n();e(c,u);const l=(c[2]+c[0])/2,m=(c[3]+c[1])/2;if(r(u)){const t={rings:[[[u.xmin,u.ymin],[u.xmin,u.ymax],[u.xmax,u.ymax],[u.xmax,u.ymin],[u.xmin,u.ymin]]]};return this._rotateMultipath(t.rings,l,m),t}if(i(u)){const n=t(u);return this._rotateMultipath(n.rings,l,m),n}if(o(u)){const n=t(u);return this._rotateMultipath(n.paths,l,m),n}if(s(u)){const n=t(u);return this._rotatePath(n.points,l,m),n}if(a(u))return u;u=this._inputGeometries.next()}return null}_rotateMultipath(t,n,e){if(t)for(const r of t)this._rotatePath(r,n,e)}_rotatePath(t,n,e){if(t){const r=Math.cos(this._rotateAngle),i=Math.sin(this._rotateAngle);for(const o of t){const t=o[0]-n,s=o[1]-e;o[0]=n+t*r-s*i,o[1]=e+t*i+s*r}}}}export{u as EffectRotate};