@antv/g-base
Version:
A common util collection for antv projects
32 lines (29 loc) • 863 B
text/typescript
import { IShape } from '../interfaces';
// 合并包围盒
export function mergeBBox(bbox1, bbox2) {
if (!bbox1 || !bbox2) {
return bbox1 || bbox2;
}
return {
minX: Math.min(bbox1.minX, bbox2.minX),
minY: Math.min(bbox1.minY, bbox2.minY),
maxX: Math.max(bbox1.maxX, bbox2.maxX),
maxY: Math.max(bbox1.maxY, bbox2.maxY),
};
}
// 合并箭头的包围盒
export function mergeArrowBBox(shape: IShape, bbox) {
const startArrowShape = shape.get('startArrowShape');
const endArrowShape = shape.get('endArrowShape');
let startArrowBBox = null;
let endArrowBBox = null;
if (startArrowShape) {
startArrowBBox = startArrowShape.getCanvasBBox();
bbox = mergeBBox(bbox, startArrowBBox);
}
if (endArrowShape) {
endArrowBBox = endArrowShape.getCanvasBBox();
bbox = mergeBBox(bbox, endArrowBBox);
}
return bbox;
}