import { IGroup } from '@antv/g-base'; import { Item, BubblesetCfg, HullCfg } from '../types'; import { IAbstractGraph } from '../interface/graph'; /** * 用于包裹内部的成员的轮廓。 * convex hull(凸包):http://geomalgorithms.com/a10-_hull-1.html#Monotone%20Chain * bubble: 使用 bubbleset算法,refer: http://vialab.science.uoit.ca/wp-content/papercite-data/pdf/col2009c.pdf * 通过配置 padding 可以调节包裹轮廓对节点的松紧程度 */ export default class Hull { id: string; graph: IAbstractGraph; cfg: any; path: any[][]; group: IGroup; members: Item[]; nonMembers: Item[]; padding: number; bubbleCfg: Partial; type: string; constructor(graph: IAbstractGraph, cfg: HullCfg); getDefaultCfg(): HullCfg; setPadding(): void; setType(): void; calcPath(members: Item[], nonMembers: Item[]): any; render(): void; /** * 增加hull的成员,同时如果该成员原先在nonMembers中,则从nonMembers中去掉 * @param item 节点实例 * @return boolean 添加成功返回 true,否则返回 false */ addMember(item: Item | string): boolean; /** * 增加hull需要排除的节点,同时如果该成员原先在members中,则从members中去掉 * @param item 节点实例 * @return boolean 添加成功返回 true,否则返回 false */ addNonMember(item: Item | string): boolean; /** * 移除hull中的成员 * @param node 节点实例 * @return boolean 移除成功返回 true,否则返回 false */ removeMember(item: Item | string): boolean; /** * @param node 节点实例 * @return boolean 移除成功返回 true,否则返回 false */ removeNonMember(item: Item | string): boolean; updateData(members: Item[] | string[], nonMembers: string[] | Item[]): void; updateStyle(cfg: HullCfg['style']): void; /** * 更新 hull * @param cfg hull 配置项 */ updateCfg(cfg: Partial): void; /** * 判断是否在hull内部 * @param item */ contain(item: Item | string): boolean; destroy(): void; }