@wcardinal/wcardinal-geditor
Version:
WebGL-based graphic editor, tester and viewer for supervisory systems
43 lines • 1.95 kB
JavaScript
import { __extends } from "tslib";
import { EShapeCapability, EShapeLockPart, toPointsBoundary } from "@wcardinal/wcardinal-ui";
import { EToolShapeEditLineBase } from "./e-tool-shape-edit-line-base";
var EToolShapeEditLine = /** @class */ (function (_super) {
__extends(EToolShapeEditLine, _super);
function EToolShapeEditLine(options) {
return _super.call(this, options) || this;
}
EToolShapeEditLine.prototype.toCapability = function (shape) {
return EShapeCapability.LINE_TAIL | EShapeCapability.LINE_HEAD;
};
EToolShapeEditLine.prototype.newShape = function (values, segments, style, oldShape) {
var boundary = toPointsBoundary(values, [0, 0, 0, 0]);
var cx = (boundary[2] + boundary[0]) * 0.5;
var cy = (boundary[3] + boundary[1]) * 0.5;
var sx = boundary[2] - boundary[0];
var sy = boundary[3] - boundary[1];
var result = oldShape.clone();
var transform = result.transform;
var transformPosition = transform.position;
var px = transformPosition.x;
var py = transformPosition.y;
var localTransform = oldShape.transform.localTransform;
var dx = localTransform.a * cx + localTransform.c * cy;
var dy = localTransform.b * cx + localTransform.d * cy;
var newValues = [];
for (var i = 0, imax = values.length; i < imax; i += 2) {
newValues.push(values[i + 0] - cx, values[i + 1] - cy);
}
result.lock(EShapeLockPart.UPLOADED);
result.transform.position.set(px + dx, py + dy);
result.size.set(sx, sy);
var points = result.points;
if (points) {
points.set(newValues, segments, style);
}
result.unlock(EShapeLockPart.UPLOADED, true);
return result;
};
return EToolShapeEditLine;
}(EToolShapeEditLineBase));
export { EToolShapeEditLine };
//# sourceMappingURL=e-tool-shape-edit-line.js.map