You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.3 KiB
112 lines
4.3 KiB
import { __extends } from "tslib"; |
|
import Displayble from './Displayable.js'; |
|
import BoundingRect from '../core/BoundingRect.js'; |
|
var m = []; |
|
var IncrementalDisplayable = (function (_super) { |
|
__extends(IncrementalDisplayable, _super); |
|
function IncrementalDisplayable() { |
|
var _this = _super !== null && _super.apply(this, arguments) || this; |
|
_this.notClear = true; |
|
_this.incremental = true; |
|
_this._displayables = []; |
|
_this._temporaryDisplayables = []; |
|
_this._cursor = 0; |
|
return _this; |
|
} |
|
IncrementalDisplayable.prototype.traverse = function (cb, context) { |
|
cb.call(context, this); |
|
}; |
|
IncrementalDisplayable.prototype.useStyle = function () { |
|
this.style = {}; |
|
}; |
|
IncrementalDisplayable.prototype.getCursor = function () { |
|
return this._cursor; |
|
}; |
|
IncrementalDisplayable.prototype.innerAfterBrush = function () { |
|
this._cursor = this._displayables.length; |
|
}; |
|
IncrementalDisplayable.prototype.clearDisplaybles = function () { |
|
this._displayables = []; |
|
this._temporaryDisplayables = []; |
|
this._cursor = 0; |
|
this.markRedraw(); |
|
this.notClear = false; |
|
}; |
|
IncrementalDisplayable.prototype.clearTemporalDisplayables = function () { |
|
this._temporaryDisplayables = []; |
|
}; |
|
IncrementalDisplayable.prototype.addDisplayable = function (displayable, notPersistent) { |
|
if (notPersistent) { |
|
this._temporaryDisplayables.push(displayable); |
|
} |
|
else { |
|
this._displayables.push(displayable); |
|
} |
|
this.markRedraw(); |
|
}; |
|
IncrementalDisplayable.prototype.addDisplayables = function (displayables, notPersistent) { |
|
notPersistent = notPersistent || false; |
|
for (var i = 0; i < displayables.length; i++) { |
|
this.addDisplayable(displayables[i], notPersistent); |
|
} |
|
}; |
|
IncrementalDisplayable.prototype.getDisplayables = function () { |
|
return this._displayables; |
|
}; |
|
IncrementalDisplayable.prototype.getTemporalDisplayables = function () { |
|
return this._temporaryDisplayables; |
|
}; |
|
IncrementalDisplayable.prototype.eachPendingDisplayable = function (cb) { |
|
for (var i = this._cursor; i < this._displayables.length; i++) { |
|
cb && cb(this._displayables[i]); |
|
} |
|
for (var i = 0; i < this._temporaryDisplayables.length; i++) { |
|
cb && cb(this._temporaryDisplayables[i]); |
|
} |
|
}; |
|
IncrementalDisplayable.prototype.update = function () { |
|
this.updateTransform(); |
|
for (var i = this._cursor; i < this._displayables.length; i++) { |
|
var displayable = this._displayables[i]; |
|
displayable.parent = this; |
|
displayable.update(); |
|
displayable.parent = null; |
|
} |
|
for (var i = 0; i < this._temporaryDisplayables.length; i++) { |
|
var displayable = this._temporaryDisplayables[i]; |
|
displayable.parent = this; |
|
displayable.update(); |
|
displayable.parent = null; |
|
} |
|
}; |
|
IncrementalDisplayable.prototype.getBoundingRect = function () { |
|
if (!this._rect) { |
|
var rect = new BoundingRect(Infinity, Infinity, -Infinity, -Infinity); |
|
for (var i = 0; i < this._displayables.length; i++) { |
|
var displayable = this._displayables[i]; |
|
var childRect = displayable.getBoundingRect().clone(); |
|
if (displayable.needLocalTransform()) { |
|
childRect.applyTransform(displayable.getLocalTransform(m)); |
|
} |
|
rect.union(childRect); |
|
} |
|
this._rect = rect; |
|
} |
|
return this._rect; |
|
}; |
|
IncrementalDisplayable.prototype.contain = function (x, y) { |
|
var localPos = this.transformCoordToLocal(x, y); |
|
var rect = this.getBoundingRect(); |
|
if (rect.contain(localPos[0], localPos[1])) { |
|
for (var i = 0; i < this._displayables.length; i++) { |
|
var displayable = this._displayables[i]; |
|
if (displayable.contain(x, y)) { |
|
return true; |
|
} |
|
} |
|
} |
|
return false; |
|
}; |
|
return IncrementalDisplayable; |
|
}(Displayble)); |
|
export default IncrementalDisplayable;
|
|
|