NuclearDispersionSystem/ant-design-vue-jeecg/node_modules/@antv/g/lib/shapes/polygon.js
2023-09-14 14:47:11 +08:00

86 lines
1.7 KiB
Java

var Util = require('../util/index');
var Shape = require('../core/shape');
var Polygon = function Polygon(cfg) {
Polygon.superclass.constructor.call(this, cfg);
};
Polygon.ATTRS = {
points: null,
lineWidth: 1
};
Util.extend(Polygon, Shape);
Util.augment(Polygon, {
canFill: true,
canStroke: true,
type: 'polygon',
getDefaultAttrs: function getDefaultAttrs() {
return {
lineWidth: 1
};
},
calculateBox: function calculateBox() {
var self = this;
var attrs = self._attrs;
var points = attrs.points;
var lineWidth = this.getHitLineWidth();
if (!points || points.length === 0) {
return null;
}
var minX = Infinity;
var minY = Infinity;
var maxX = -Infinity;
var maxY = -Infinity;
Util.each(points, function (point) {
var x = point[0];
var y = point[1];
if (x < minX) {
minX = x;
}
if (x > maxX) {
maxX = x;
}
if (y < minY) {
minY = y;
}
if (y > maxY) {
maxY = y;
}
});
var halfWidth = lineWidth / 2;
return {
minX: minX - halfWidth,
minY: minY - halfWidth,
maxX: maxX + halfWidth,
maxY: maxY + halfWidth
};
},
createPath: function createPath(context) {
var self = this;
var attrs = self._attrs;
var points = attrs.points;
if (points.length < 2) {
return;
}
context = context || self.get('context');
context.beginPath();
Util.each(points, function (point, index) {
if (index === 0) {
context.moveTo(point[0], point[1]);
} else {
context.lineTo(point[0], point[1]);
}
});
context.closePath();
}
});
module.exports = Polygon;