node-red-contrib-tak-registration
Version:
A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK
54 lines (52 loc) • 1.47 kB
JavaScript
import SweepLineEvent from './SweepLineEvent'
import Collections from '../../../../../java/util/Collections'
import ArrayList from '../../../../../java/util/ArrayList'
export default class SweepLineIndex {
constructor () {
this.events = new ArrayList()
this._indexBuilt = null
this._nOverlaps = null
}
computeOverlaps (action) {
this._nOverlaps = 0
this.buildIndex()
for (let i = 0; i < this.events.size(); i++) {
const ev = this.events.get(i)
if (ev.isInsert()) {
this.processOverlaps(i, ev.getDeleteEventIndex(), ev.getInterval(), action)
}
}
}
processOverlaps (start, end, s0, action) {
for (let i = start; i < end; i++) {
const ev = this.events.get(i)
if (ev.isInsert()) {
const s1 = ev.getInterval()
action.overlap(s0, s1)
this._nOverlaps++
}
}
}
buildIndex () {
if (this._indexBuilt) return null
Collections.sort(this.events)
for (let i = 0; i < this.events.size(); i++) {
const ev = this.events.get(i)
if (ev.isDelete()) {
ev.getInsertEvent().setDeleteEventIndex(i)
}
}
this._indexBuilt = true
}
add (sweepInt) {
const insertEvent = new SweepLineEvent(sweepInt.getMin(), null, sweepInt)
this.events.add(insertEvent)
this.events.add(new SweepLineEvent(sweepInt.getMax(), insertEvent, sweepInt))
}
interfaces_ () {
return []
}
getClass () {
return SweepLineIndex
}
}