123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- import { IElement, IShape, IGroup, ICanvas, ICtor } from '../interfaces';
- import { ClipCfg, ChangeType, ShapeAttrs, BBox, ShapeBase } from '../types';
- import Base from './base';
- import GraphEvent from '../event/graph-event';
- declare abstract class Element extends Base implements IElement {
- /**
- * @protected
- * 图形属性
- * @type {ShapeAttrs}
- */
- attrs: ShapeAttrs;
- constructor(cfg: any);
- getDefaultCfg(): {
- visible: boolean;
- capture: boolean;
- zIndex: number;
- };
- /**
- * @protected
- * 获取默认的属相
- */
- getDefaultAttrs(): {
- matrix: any;
- opacity: number;
- };
- abstract getShapeBase(): ShapeBase;
- abstract getGroupBase(): ICtor<IGroup>;
- /**
- * @protected
- * 一些方法调用会引起画布变化
- * @param {ChangeType} changeType 改变的类型
- */
- onCanvasChange(changeType: ChangeType): void;
- /**
- * @protected
- * 初始化属性,有些属性需要加工
- * @param {object} attrs 属性值
- */
- initAttrs(attrs: ShapeAttrs): void;
- /**
- * @protected
- * 初始化动画
- */
- initAnimate(): void;
- isGroup(): boolean;
- getParent(): IGroup;
- getCanvas(): ICanvas;
- attr(...args: any[]): any;
- abstract getBBox(): BBox;
- abstract getCanvasBBox(): BBox;
- isClipped(refX: any, refY: any): boolean;
- /**
- * 内部设置属性值的接口
- * @param {string} name 属性名
- * @param {any} value 属性值
- */
- setAttr(name: string, value: any): void;
- /**
- * @protected
- * 属性值发生改变
- * @param {string} name 属性名
- * @param {any} value 属性值
- * @param {any} originValue 属性值
- */
- onAttrChange(name: string, value: any, originValue: any): void;
- /**
- * 属性更改后需要做的事情
- * @protected
- */
- afterAttrsChange(targetAttrs: any): void;
- show(): this;
- hide(): this;
- setZIndex(zIndex: number): this;
- toFront(): void;
- toBack(): void;
- remove(destroy?: boolean): void;
- resetMatrix(): void;
- getMatrix(): number[];
- setMatrix(m: number[]): void;
- getTotalMatrix(): any;
- applyMatrix(matrix: number[]): void;
- /**
- * @protected
- * 获取默认的矩阵
- * @returns {number[]|null} 默认的矩阵
- */
- getDefaultMatrix(): any;
- applyToMatrix(v: number[]): number[];
- invertFromMatrix(v: number[]): number[];
- setClip(clipCfg: ClipCfg): any;
- getClip(): IShape;
- clone(): any;
- destroy(): void;
- /**
- * 是否处于动画暂停状态
- * @return {boolean} 是否处于动画暂停状态
- */
- isAnimatePaused(): any;
- /**
- * 执行动画,支持多种函数签名
- * 1. animate(toAttrs: ElementAttrs, duration: number, easing?: string, callback?: () => void, delay?: number)
- * 2. animate(onFrame: OnFrame, duration: number, easing?: string, callback?: () => void, delay?: number)
- * 3. animate(toAttrs: ElementAttrs, cfg: AnimateCfg)
- * 4. animate(onFrame: OnFrame, cfg: AnimateCfg)
- * 各个参数的含义为:
- * toAttrs 动画最终状态
- * onFrame 自定义帧动画函数
- * duration 动画执行时间
- * easing 动画缓动效果
- * callback 动画执行后的回调
- * delay 动画延迟时间
- */
- animate(...args: any[]): void;
- /**
- * 停止动画
- * @param {boolean} toEnd 是否到动画的最终状态
- */
- stopAnimate(toEnd?: boolean): void;
- /**
- * 暂停动画
- */
- pauseAnimate(): this;
- /**
- * 恢复动画
- */
- resumeAnimate(): this;
- /**
- * 触发委托事件
- * @param {string} type 事件类型
- * @param {GraphEvent} eventObj 事件对象
- */
- emitDelegation(type: string, eventObj: GraphEvent): void;
- private emitDelegateEvent;
- /**
- * 移动元素
- * @param {number} translateX 水平移动距离
- * @param {number} translateY 垂直移动距离
- * @return {IElement} 元素
- */
- translate(translateX?: number, translateY?: number): this;
- /**
- * 移动元素到目标位置
- * @param {number} targetX 目标位置的水平坐标
- * @param {number} targetX 目标位置的垂直坐标
- * @return {IElement} 元素
- */
- move(targetX: number, targetY: number): this;
- /**
- * 移动元素到目标位置,等价于 move 方法。由于 moveTo 的语义性更强,因此在文档中推荐使用 moveTo 方法
- * @param {number} targetX 目标位置的 x 轴坐标
- * @param {number} targetY 目标位置的 y 轴坐标
- * @return {IElement} 元素
- */
- moveTo(targetX: number, targetY: number): this;
- /**
- * 缩放元素
- * @param {number} ratioX 水平缩放比例
- * @param {number} ratioY 垂直缩放比例
- * @return {IElement} 元素
- */
- scale(ratioX: number, ratioY?: number): this;
- /**
- * 以画布左上角 (0, 0) 为中心旋转元素
- * @param {number} radian 旋转角度(弧度值)
- * @return {IElement} 元素
- */
- rotate(radian: number): this;
- /**
- * 以起始点为中心旋转元素
- * @param {number} radian 旋转角度(弧度值)
- * @return {IElement} 元素
- */
- rotateAtStart(rotate: number): IElement;
- /**
- * 以任意点 (x, y) 为中心旋转元素
- * @param {number} radian 旋转角度(弧度值)
- * @return {IElement} 元素
- */
- rotateAtPoint(x: number, y: number, rotate: number): IElement;
- }
- export default Element;
|