@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.07 kB
JavaScript
class t{constructor(t){this._totalCount=t,this._indexRanges=[0,t]}allVisible(){return this.componentCount()===this._totalCount}allInvisible(){return 0===this._indexRanges.length}componentCount(){const t=this._indexRanges;let n=0;for(let e=0;e<t.length;e+=2)n+=t[e+1];return n}reset(t){"all"===t||t.length===this._totalCount?this._indexRanges=[0,this._totalCount]:this._indexRanges=n(t)}forEachComponent(t){const n=this._indexRanges;for(let e=0;e<n.length;e+=2){const s=n[e],o=s+n[e+1];for(let n=s;n<o;n++)if(!t(n))return!1}return!0}forEachComponentRange(t){const n=this._indexRanges;for(let e=0;e<n.length;e+=2){const s=n[e];if(!t(s,s+n[e+1]))return!1}return!0}computeOffsetRanges(t){const n=new Array(this._indexRanges.length),e=this._indexRanges;for(let s=0;s<e.length;s+=2){const o=e[s],r=o+e[s+1],i=t[o],l=t[r];n[s]=i,n[s+1]=l-i}return n}}function n(t){const n=new Array;if(0===t.length)return n;let e=t[0],s=1;for(let o=1;o<t.length;o++){const r=t[o];e+s===r?s+=1:(n.push(e),n.push(s),e=r,s=1)}return n.push(e),n.push(s),n}export{t as ComponentRangeRunLengthEncoded};