UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 3.06 kB
import{isSome as t,isNone as e}from"../../../core/maybe.js";import n from"../../../core/PooledArray.js";import{RenderOrder as r}from"./RenderOrder.js";class s{constructor(){this._queue=new n,this.remove=()=>{}}get done(){return 0===this._queue.length&&(!this._last||this._last.isLeaf)}resetOne(t){this._queue.clear(),this._queue.push(t),this._last=void 0}reset(e=null){this._queue.clear(),t(e)&&this._queue.pushArray(e),this._last=void 0}skipSubtree(){this._last=void 0}next(){const t=this._last?.children;return t&&t[0]&&this._queue.pushArray(t),this._last=this._queue.pop(),this._last}}class i{constructor(){this._q=new n}get done(){return 0===this._q.length}reset(t){if(this._q.clear(),!e(t)){this._q.pushArray(t);for(let t=0;t<this._q.length;++t){const e=this._q.data[t];e.isLeaf||this._q.pushArray(e.children)}}}next(){return this._q.pop()}}function o(t,e){if(Array.isArray(t))for(let n=0;n<t.length;n++)u(t[n],e);else u(t,e)}function u(t,e){if(e(t),!t.isLeaf)for(const n of t.children)u(n,e)}function l(t,n,r){if(e(n)||e(n.fullExtent))return!1;const s=n.fullExtent,i=t.extent;if(r){if(i[0]<s.xmin||i[1]<s.ymin||i[2]>s.xmax||i[3]>s.ymax)return!1}else if(s.xmin>i[2]||s.ymin>i[3]||s.xmax<i[0]||s.ymax<i[1])return!1;const o=t.surface.tilingScheme.levels[t.level].scale,u=n.minScale;if(u>0&&o>1.00000001*u)return!1;const l=n.maxScale;return!(l>0&&o<.99999999*l)}function c(t,e){const n=t.lij,r=e.lij;return n[0]-r[0]||n[1]-r[1]||n[2]-r[2]}function f(t,n,s=null){e(s)||0===s.length?t===r.BACK_TO_FRONT?n.sort(h):n.sort(a):n.sort(((e,n)=>p(e,n,t,s)))}function h(t,e){const n=e.screenDepth-t.screenDepth;if(0!==n)return n;const r=t.lij,s=e.lij;return r[0]-s[0]||r[1]-s[1]||r[2]-s[2]}function a(t,e){const n=t.screenDepth-e.screenDepth;if(0!==n)return n;const r=t.lij,s=e.lij;return r[0]-s[0]||r[1]-s[1]||r[2]-s[2]}function _(t,e,n){const r=t.screenDepth,s=e.screenDepth;return r<s?-n:r>s?n:c(t,e)}function p(t,e,n,r){return m(t,r)===m(e,r)?_(t,e,n):t?n:-n}function m(t,e){for(const n of e)if(t.intersectsExtent(n))return!0;return!1}function d(t,e){const n=t.distanceToPOI-e.distanceToPOI;if(0!==n)return n;const r=t.lij,s=e.lij;return r[0]-s[0]||r[1]-s[1]||r[2]-s[2]}function q(t,e){const n=t.length;for(let r=0;r<n;++r){t.getItemAt(r).updateDistanceToPOI(e)}t.sort(d)}function x(t,e,n){let r=1,s=0,i=0;for(;t!==e;)if(r*=.5,s*=.5,i*=.5,1&t.lij[2]&&(s+=.5),0==(1&t.lij[1])&&(i+=.5),null==(t=t.parent))throw new Error("tile was not a descendant of upsampleTile");n.init(e,s,i,r)}function j(t){for(let e=0;e<t.length;e++){const n=t[e],r=n.parent;if(r)for(let t=0;t<4;t++){const e=r.children[t];if(e&&e!==n)return!0}}return!1}function y(t,e){if(!t||!e||t[0]===e[0])return!1;const n=t[0]<e[0],r=n?t:e,s=n?e:t,i=1<<s[0]-r[0];return Math.floor(s[1]/i)===r[1]&&Math.floor(s[2]/i)===r[2]}export{i as IteratorPostorder,s as IteratorPreorder,_ as compareTiles,c as compareTilesByLij,p as compareTilesWithStencil,x as computeUpsampleInfo,l as fallsWithinLayer,j as hasLoadableSiblings,f as sortTiles,q as sortTilesByPOI,y as tilesAreRelated,o as traverseTilesPreorder};