UNPKG

@logicflow/core

Version:

LogicFlow, help you quickly create flowcharts

102 lines (101 loc) 3.86 kB
import LogicFlow from '../LogicFlow'; import { Options as LFOptions } from '../options'; import EventEmitter from '../event/eventEmitter'; import PointTuple = LogicFlow.PointTuple; export type ZoomParamType = boolean | number; export type TransformData = Record<'SCALE_X' | 'SCALE_Y' | 'SKEW_Y' | 'SKEW_X' | 'TRANSLATE_X' | 'TRANSLATE_Y', number>; export type TransformType = 'zoom' | 'resetZoom' | 'translate' | 'focusOn'; export interface TransformInterface { SCALE_X: number; SCALE_Y: number; SKEW_Y: number; SKEW_X: number; TRANSLATE_X: number; TRANSLATE_Y: number; ZOOM_SIZE: number; MINI_SCALE_SIZE: number; MAX_SCALE_SIZE: number; translateLimitMinX: number; translateLimitMinY: number; translateLimitMaxX: number; translateLimitMaxY: number; zoom: (isZoomOut: ZoomParamType, point?: PointTuple) => string; HtmlPointToCanvasPoint: (point: PointTuple) => PointTuple; CanvasPointToHtmlPoint: (point: PointTuple) => PointTuple; moveCanvasPointByHtml: (point: PointTuple, x: number, y: number) => PointTuple; getTransformStyle: () => { transform: string; }; } export declare class TransformModel implements TransformInterface { MINI_SCALE_SIZE: number; MAX_SCALE_SIZE: number; SCALE_X: number; SKEW_Y: number; SKEW_X: number; SCALE_Y: number; TRANSLATE_X: number; TRANSLATE_Y: number; ZOOM_SIZE: number; eventCenter: EventEmitter; translateLimitMinX: number; translateLimitMinY: number; translateLimitMaxX: number; translateLimitMaxY: number; constructor(eventCenter: EventEmitter, options: LFOptions.Common); setZoomMiniSize(size: number): void; setZoomMaxSize(size: number): void; /** * 将最外层graph上的点基于缩放转换为canvasOverlay层上的点。 * @param point HTML点 */ HtmlPointToCanvasPoint(point: PointTuple): PointTuple; /** * 将最外层canvasOverlay层上的点基于缩放转换为graph上的点。 * @param point HTML点 */ CanvasPointToHtmlPoint(point: PointTuple): PointTuple; /** * 将一个在canvas上的点,向x轴方向移动directionX距离,向y轴方向移动directionY距离。 * 因为canvas可能被缩小或者放大了,所以其在canvas层移动的距离需要计算上缩放的量。 * @param point 点 * @param directionX x轴距离 * @param directionY y轴距离 */ moveCanvasPointByHtml(point: PointTuple, directionX: number, directionY: number): PointTuple; /** * 根据缩放情况,获取缩放后的delta距离 * @param deltaX x轴距离变化 * @param deltaY y轴距离变化 */ fixDeltaXY(deltaX: number, deltaY: number): PointTuple; /** * 基于当前的缩放,获取画布渲染样式transform值 */ getTransformStyle(): { transform: string; }; /** * 放大缩小图形 * @param zoomSize 放大缩小的值,支持传入0-n之间的数字。小于1表示缩小,大于1表示放大。也支持传入true和false按照内置的刻度放大缩小 * @param point 缩放的原点 * @returns {string} -放大缩小的比例 */ zoom(zoomSize?: ZoomParamType, point?: PointTuple): string; private emitGraphTransform; resetZoom(): void; translate(x: number, y: number): void; /** * 将图形定位到画布中心 * @param targetX 图形当前x坐标 * @param targetY 图形当前y坐标 * @param width 画布宽 * @param height 画布高 */ focusOn(targetX: number, targetY: number, width: number, height: number): void; /** * 更新画布可以移动范围 */ updateTranslateLimits(limit: boolean | 'vertical' | 'horizontal' | [number, number, number, number]): void; } export default TransformModel;