UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.06 kB
import{clone as t}from"../../core/lang.js";import{isPolygon as i,isPolyline as n,isMultipoint as s,isExtent as h,isPoint as e}from"../../geometry/support/jsonUtils.js";import{Placement as o}from"./CIMPlacements.js";function a(i){const n=t(i);return P(n),n}function l(t){t&&(e(t)?t.y=-t.y:i(t)?u(t.rings):n(t)?u(t.paths):s(t)&&r(t.points))}function r(t){if(t){const i=t.length;for(let n=0;n<i;n++)t[n][1]=-t[n][1]}}function u(t){if(t)for(const i of t)r(i)}function c(t){if(t){for(let i=t.length-1;i>0;--i)t[i][0]-=t[i-1][0],t[i][1]-=t[i-1][1]}}function f(t){if(t)for(const i of t)c(i)}function p(t){if(t){const i=t.length;for(let n=1;n<i;++n)t[n][0]+=t[n-1][0],t[n][1]+=t[n-1][1]}}function m(t){if(t)for(const i of t)p(i)}function P(t){t&&(i(t)?m(t.rings):n(t)?m(t.paths):s(t)&&p(t.points),l(t))}function x(t){t&&(l(t),i(t)?f(t.rings):n(t)?f(t.paths):s(t)&&c(t.points))}function g(t){if(t)for(const i of t)d(i)}function d(t){t&&t.reverse()}function C(t,i,n){return[t[0]+(i[0]-t[0])*n,t[1]+(i[1]-t[1])*n]}function y(t){return!(!t||0===t.length)&&(t[0][0]===t[t.length-1][0]&&t[0][1]===t[t.length-1][1])}function I(t){return t[4]}function j(t,i){t[4]=i}class G{constructor(t,s,e,a=0){this.isClosed=!1,this.multiPath=null,this.acceptPolygon=s,this.acceptPolyline=e,this.geomUnitsPerPoint=a,this.pathCount=-1,this.pathIndex=-1,this.iteratePath=!1,t&&(i(t)?s&&(this.multiPath=t.rings,this.isClosed=!0):n(t)?e&&(this.multiPath=t.paths,this.isClosed=!1):h(t)&&s&&(this.multiPath=b(t).rings,this.isClosed=!0),this.multiPath&&(this.pathCount=this.multiPath.length)),this.internalPlacement=new o}next(){if(!this.multiPath)return null;for(;this.iteratePath||this.pathIndex<this.pathCount-1;){this.iteratePath||this.pathIndex++;const t=this.processPath(this.multiPath[this.pathIndex]);if(t)return t}return this.pathCount=-1,this.pathIndex=-1,this.multiPath=null,null}}class U{constructor(t,i,n,s=0){this.isClosed=!1,this.multiPath=null,this.inputGeometries=t,this.acceptPolygon=i,this.acceptPolyline=n,this.geomUnitsPerPoint=s,this.pathCount=-1,this.pathIndex=-1,this.iteratePath=!1}next(){for(;;){if(!this.multiPath){let t=this.inputGeometries.next();for(;t;){if(i(t)?this.acceptPolygon&&(this.multiPath=t.rings,this.isClosed=!0):n(t)?this.acceptPolyline&&(this.multiPath=t.paths,this.isClosed=!1):h(t)&&this.acceptPolygon&&(this.multiPath=b(t).rings,this.isClosed=!0),this.multiPath){this.pathCount=this.multiPath.length,this.pathIndex=-1;break}t=this.inputGeometries.next()}if(!this.multiPath)return null}for(;this.iteratePath||this.pathIndex<this.pathCount-1;){this.iteratePath||this.pathIndex++;const t=this.processPath(this.multiPath[this.pathIndex]);if(t)return t}this.pathCount=-1,this.pathIndex=-1,this.multiPath=null}}}function b(t){return{rings:[[[t.xmin,t.ymin],[t.xmin,t.ymax],[t.xmax,t.ymax],[t.xmax,t.ymin],[t.xmin,t.ymin]]]}}export{U as PathGeometryCursor,G as PathTransformationCursor,a as cloneAndDecodeGeometry,P as deltaDecodeGeometry,x as deltaEncodeGeometry,C as getCoord2D,I as getId,y as isClosedPath,g as reverseMultipath,d as reversePath,j as setId};