| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- import CommonBits from './CommonBits'
- import CoordinateFilter from '../geom/CoordinateFilter'
- import Coordinate from '../geom/Coordinate'
- import CoordinateSequenceFilter from '../geom/CoordinateSequenceFilter'
- export default class CommonBitsRemover {
- constructor() {
- CommonBitsRemover.constructor_.apply(this, arguments)
- }
- static constructor_() {
- this._commonCoord = null
- this._ccFilter = new CommonCoordinateFilter()
- }
- addCommonBits(geom) {
- const trans = new Translater(this._commonCoord)
- geom.apply(trans)
- geom.geometryChanged()
- }
- removeCommonBits(geom) {
- if (this._commonCoord.x === 0.0 && this._commonCoord.y === 0.0) return geom
- const invCoord = new Coordinate(this._commonCoord)
- invCoord.x = -invCoord.x
- invCoord.y = -invCoord.y
- const trans = new Translater(invCoord)
- geom.apply(trans)
- geom.geometryChanged()
- return geom
- }
- getCommonCoordinate() {
- return this._commonCoord
- }
- add(geom) {
- geom.apply(this._ccFilter)
- this._commonCoord = this._ccFilter.getCommonCoordinate()
- }
- }
- class CommonCoordinateFilter {
- constructor() {
- CommonCoordinateFilter.constructor_.apply(this, arguments)
- }
- static constructor_() {
- this._commonBitsX = new CommonBits()
- this._commonBitsY = new CommonBits()
- }
- filter(coord) {
- this._commonBitsX.add(coord.x)
- this._commonBitsY.add(coord.y)
- }
- getCommonCoordinate() {
- return new Coordinate(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())
- }
- get interfaces_() {
- return [CoordinateFilter]
- }
- }
- class Translater {
- constructor() {
- Translater.constructor_.apply(this, arguments)
- }
- static constructor_() {
- this.trans = null
- const trans = arguments[0]
- this.trans = trans
- }
- filter(seq, i) {
- const xp = seq.getOrdinate(i, 0) + this.trans.x
- const yp = seq.getOrdinate(i, 1) + this.trans.y
- seq.setOrdinate(i, 0, xp)
- seq.setOrdinate(i, 1, yp)
- }
- isDone() {
- return false
- }
- isGeometryChanged() {
- return true
- }
- get interfaces_() {
- return [CoordinateSequenceFilter]
- }
- }
- CommonBitsRemover.CommonCoordinateFilter = CommonCoordinateFilter
- CommonBitsRemover.Translater = Translater
|