import { Node } from '../../models/force-graph'; import { IBaseGraphData, IMouseSite, IBaseOptions, IWindowMsg } from '../../models/force-graph.types'; import { BehaviorSubject, Subject, Subscription } from 'rxjs'; import * as d3 from 'd3'; export declare class CanvasRenderer { parent: any; target: any; legendTarget: any; imgTarget: any; linkLabelInput: any; alphaMin: number; options: IBaseOptions; renderFrame$: BehaviorSubject; tickAlpha: BehaviorSubject; action$: BehaviorSubject; legendAction$: Subject; transform: d3.ZoomTransform; hotKeysNodes$: BehaviorSubject; selectedNodes$: BehaviorSubject; selectedLinks$: BehaviorSubject; onHover$: BehaviorSubject; onHoverLabel$: BehaviorSubject; onContextNodeMenu$: BehaviorSubject; onContextLinkMenu$: BehaviorSubject; addLink$: BehaviorSubject; onClickNode$: Subject; onHotKeyClick$: Subject; onDblClick$: Subject; onClickLabel$: Subject; onClick$: Subject; onDragStart$: Subject; onDrag$: Subject; onDragEnd$: Subject; linkLabelRect: Array; alreadyOnRender: boolean; nodeMenuObj: {}; linkMenuObj: {}; zoomScale: number; autoZoom: number; zoom: any; hoverChoose: any; actionClick: any; subscriptions: Subscription[]; graphData: IBaseGraphData | undefined; graphHisData: IBaseGraphData | undefined; transformSession: any; timer: any; editStatus: boolean; editEle: any; canDrawLink: boolean; editStart: { x: number; y: number; }; editEnd: { x: number; y: number; }; editTarget: any; isLock: boolean; lockedNode: any; siteAble: boolean; hisForceData: any; hoverForceData: any; isHover: boolean; customScale: number; count: number; hoverNode: any; hoverRenderNode: any; get context(): CanvasRenderingContext2D; get editContext(): CanvasRenderingContext2D; get imgContext(): CanvasRenderingContext2D; get d3Element(): d3.Selection; get currentFrameData(): IBaseGraphData; get selectedNodes(): Node[]; get alpha(): number; get hotKeysNodes(): Node[]; get selectedLinks(): Node[]; get onZoomOrDrag(): boolean; constructor(); /** * 添加options * @params options config配置 */ setOptions(options: IBaseOptions): void; updateOptions(options: IBaseOptions): void; /** * 设置canvas基础属性 * @params options config配置 */ setSize(options: IBaseOptions): void; /** * 赋值基础element * @param parentElement * @param element * @param imgElement * @param linkLabelEle * @param lockedNode */ attach(parentElement: HTMLElement, element: HTMLElement, imgElement: HTMLElement, linkLabelEle: HTMLElement, lockedNode?: any, siteAble?: boolean): void; /** * 赋值图例legend element * @param legendElement */ attachLegend(legendElement: any): void; /** * 刷新重绘 */ refresh(): void; /** * 渲染数据 * @params */ renderFrame({ nodes, links }: IBaseGraphData): void; /** * 绘制连线--自指向 * @params d 连线data * @params bend 连线角度 * @params aLen 箭头高 * @params aWidth 箭头底宽 */ drawBendSelf(d: any, aLen: any, aWidth: any, context: any): void; /** * 绘制连线 * @params d 连线data * @params bend 连线角度 * @params aLen 箭头高 * @params aWidth 箭头底宽 */ drawBend(d: any, bend: any, aLen: any, aWidth: any, context: any): void; /** * 绘制连线箭头 * @params targetAngle target坐标角度 * @params sAngle 曲线起始角度 * @params arcRadius 曲线圆半径 * @params arcPointX 曲线圆心坐标x * @params arcPointY 曲线圆心坐标y * @params labelAngle 边关系斜率 */ drawArrow(d: any, targetAngle: any, sAngle: any, arcRadius: any, arcPointX: any, arcPointY: any, aWidth: any, context: any): void; /** * 绘制连线关系 * @params d 边数据 * @params textPosition 曲线边中心点坐标 * @params labelAngle 边关系斜率 * @params offsetAngle 边关系垂直边斜率 */ drawLinkLabel(d: any, textPosition: any, labelAngle: any, offsetAngle: any, context: any, isSelf?: boolean): void; /** * 选中节点绘制border */ paintSelectedNodeBorder(): void; /** * 绘制节点 * @params d 节点data */ paintNode(d: any, context: any): void; /** * 绘制节点属性 * @params d 节点data */ paintNodeAttr(d: any, context: any): void; setNodeBorder(d: any, context: any, r: any, color: any): void; linearGradient(d: any, radius: any, context: any, linearList: any): any; /** * 绘制节点文字 * @params d 节点data */ paintNodeLabel(d: any, context: any): void; onRender(): void; formatGraphData(): void; setSite(nodeA: any, nodeB: any): IBaseGraphData; setSiteXY(item: any, x: number, y: number): any; /** * 设置缩放 * @params data 节点数据 * @params alreadyOnRender 是否为初始化状态 */ applyZoomable(alreadyOnRender: any): void; setAutoZoom(size?: number): void; getZoom(): number; /** * 计算缩放比例 * @param _data */ getLocation(_data: any): void; /** * 获取选中节点 */ getClickedNode(): Node; get offset(): number; /** * 节点drag * @params param */ applyDraggable({ beforeStart, beforeEnd }: { beforeStart: any; beforeEnd: any; }): void; setUnlockLeaf(node: any): void; getNodeRelation(node: any): boolean; /** * 获取hover节点 * @params event d3.event */ getNode(event: any): { node: Node; position: { x: number; y: number; }; }; /** * 获取hover节点 icon图标 * @params event d3.event */ getNodeIcon(event: any): { x: number; y: number; }; editNodeIcon(data: any): void; getMousePosition(event: any): IMouseSite; getData(): any; /** * 获取hover边关系label * @params event d3.event */ getLinkLabel(event: any): any; getCross(pointA: any, pointB: any, eventPoint: any): number; /** * 设置canvas hover 事件发布 */ applyHoverable(): void; /** * canvas点击发布事件 */ applyClickable(): void; canvasClickFilter(event: any): any; /** * canvas右键发布事件 */ applyContextmenuAble(): void; /** * canvas双击发布事件 */ applyDbClickAble(): void; getElement(event: any): any; updateTransform(tx: any, ty: any): void; /** * 绘制图例 * @params element 图例canvas * @params legendData 图例list */ paintLegend(legendData: any): void; /** * 在重新布局或其他需要清除痕迹时使用 */ clearTraces(): void; /** * 锁定全局节点 */ lockGraph(): void; lockNode(node: any): void; /** * 解锁全局节点 */ unlockGraph(): void; /** * 高清屏 canvas文字模糊处理 */ canvasDPI(canvasEl: HTMLCanvasElement, width: number, height: number): void; downloadImg(text?: string): void; drawImgCanvas(data: any, elSize: any, offset: any, k: any, text?: string): void; getExplorerInfo(): IWindowMsg; editLine(item: any): void; closeEdit(): void; creatEditCanvas(): void; editMouseDown(e: any): void; editMouseMove(e: any): void; editMouseUp(e: any): void; drawEditLink(e: any): void; editStartIcon(start: { x: number; y: number; }): void; editNodeBorder(d: any): void; editLinkLabel(d: any): void; dealText(text: string, width: number): string; }