- Go backend (server/)
- Frontend (web/, server/static/)
- Database and deployment files
- Scripts and docs
Co-Authored-By: 狸花猫/Claude-Qwen3.6-Plus 🐾
99 lines
3.8 KiB
JavaScript
99 lines
3.8 KiB
JavaScript
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var tslib_1 = require("tslib");
|
||
/**
|
||
* @fileoverview 线
|
||
* @author dxq613@gmail.com
|
||
*/
|
||
var g_math_1 = require("@antv/g-math");
|
||
var base_1 = require("./base");
|
||
var line_1 = require("../util/in-stroke/line");
|
||
var ArrowUtil = require("../util/arrow");
|
||
var Line = /** @class */ (function (_super) {
|
||
tslib_1.__extends(Line, _super);
|
||
function Line() {
|
||
return _super !== null && _super.apply(this, arguments) || this;
|
||
}
|
||
Line.prototype.getDefaultAttrs = function () {
|
||
var attrs = _super.prototype.getDefaultAttrs.call(this);
|
||
return tslib_1.__assign(tslib_1.__assign({}, attrs), { x1: 0, y1: 0, x2: 0, y2: 0, startArrow: false, endArrow: false });
|
||
};
|
||
Line.prototype.initAttrs = function (attrs) {
|
||
this.setArrow();
|
||
};
|
||
// 更新属性时,检测是否更改了箭头
|
||
Line.prototype.onAttrChange = function (name, value, originValue) {
|
||
_super.prototype.onAttrChange.call(this, name, value, originValue);
|
||
// 由于箭头的绘制依赖于 line 的诸多 attrs,因此这里不再对每个 attr 进行判断,attr 每次变化都会影响箭头的更新
|
||
this.setArrow();
|
||
};
|
||
Line.prototype.setArrow = function () {
|
||
var attrs = this.attr();
|
||
var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;
|
||
if (startArrow) {
|
||
ArrowUtil.addStartArrow(this, attrs, x2, y2, x1, y1);
|
||
}
|
||
if (endArrow) {
|
||
ArrowUtil.addEndArrow(this, attrs, x1, y1, x2, y2);
|
||
}
|
||
};
|
||
Line.prototype.isInStrokeOrPath = function (x, y, isStroke, isFill, lineWidth) {
|
||
if (!isStroke || !lineWidth) {
|
||
return false;
|
||
}
|
||
var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;
|
||
return line_1.default(x1, y1, x2, y2, lineWidth, x, y);
|
||
};
|
||
Line.prototype.createPath = function (context) {
|
||
var attrs = this.attr();
|
||
var x1 = attrs.x1, y1 = attrs.y1, x2 = attrs.x2, y2 = attrs.y2, startArrow = attrs.startArrow, endArrow = attrs.endArrow;
|
||
var startArrowDistance = {
|
||
dx: 0,
|
||
dy: 0,
|
||
};
|
||
var endArrowDistance = {
|
||
dx: 0,
|
||
dy: 0,
|
||
};
|
||
if (startArrow && startArrow.d) {
|
||
startArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.startArrow.d);
|
||
}
|
||
if (endArrow && endArrow.d) {
|
||
endArrowDistance = ArrowUtil.getShortenOffset(x1, y1, x2, y2, attrs.endArrow.d);
|
||
}
|
||
context.beginPath();
|
||
// 如果自定义箭头,线条相应缩进
|
||
context.moveTo(x1 + startArrowDistance.dx, y1 + startArrowDistance.dy);
|
||
context.lineTo(x2 - endArrowDistance.dx, y2 - endArrowDistance.dy);
|
||
};
|
||
Line.prototype.afterDrawPath = function (context) {
|
||
var startArrowShape = this.get('startArrowShape');
|
||
var endArrowShape = this.get('endArrowShape');
|
||
if (startArrowShape) {
|
||
startArrowShape.draw(context);
|
||
}
|
||
if (endArrowShape) {
|
||
endArrowShape.draw(context);
|
||
}
|
||
};
|
||
/**
|
||
* Get length of line
|
||
* @return {number} length
|
||
*/
|
||
Line.prototype.getTotalLength = function () {
|
||
var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;
|
||
return g_math_1.Line.length(x1, y1, x2, y2);
|
||
};
|
||
/**
|
||
* Get point according to ratio
|
||
* @param {number} ratio
|
||
* @return {Point} point
|
||
*/
|
||
Line.prototype.getPoint = function (ratio) {
|
||
var _a = this.attr(), x1 = _a.x1, y1 = _a.y1, x2 = _a.x2, y2 = _a.y2;
|
||
return g_math_1.Line.pointAt(x1, y1, x2, y2, ratio);
|
||
};
|
||
return Line;
|
||
}(base_1.default));
|
||
exports.default = Line;
|
||
//# sourceMappingURL=line.js.map
|