UNPKG

editor-render-v2

Version:

编辑器渲染器

163 lines (162 loc) 3.79 kB
import type Handler from '../Handler'; interface IRuleOptions { /** * 标尺宽度/高度 * */ ruleSize: number; /** * 标尺背景色 * */ ruleBgColor: string; /** * 标尺线刻度颜色 * */ ruleLinColor: string; /** * 标尺线颜色 * */ alignLinColor: string; } export declare class RuleLayerController { handler: Handler; options: IRuleOptions; private alighlineStore; private draggingLineId; private hoverLineId; private isEventListening; private resumeCanvasInteraction; constructor(handler: Handler); dispose(): void; /** * 初始化 * */ init(): void; /** * 展示标尺 * */ showRule(): void; /** * 隐藏标尺 * */ hideRule(): void; /** * 清空所有辅助线 * */ clearAlignLines(): void; /** * 是否有对齐线 * @returns 判断结果 */ hasAlignLines(): boolean; /** * fabric画布坐标转标尺系坐标 * fabric画布以画布左上角为0,0点 * 标尺坐标系基于workare左上角 / 画布中央为0,0点 * @param x 画布x坐标 * @param y 画布y坐标 * @returns 标尺系坐标 * */ canvasPositionToRulePosition(x: number, y: number): { x: number; y: number; }; /** * 标尺系坐标转fabric画布坐标 * @param ruleX 标尺x坐标 * @param ruleY 标尺y坐标 * @returns 画布坐标 * */ rulePositionToCanvasPosition(ruleX: number, ruleY: number): { x: number; y: number; }; /** * 默认以画布中心为原点,有workarea的情况下以workarea左上角为原点 * @returns 标尺原点的canvas坐标 * */ private getRuleOrigin; /** * 响应window尺寸变化 * */ private onWinResize; /** * 初始化监听 * */ private initEventListeners; /** * 停止监听 */ stopEventListeners(): void; /** * fabric渲染完成前触发 */ private onCanvasBeforeRender; /** * 鼠标事件 * @param e 事件event * @returns */ private onCanvasMouseDown; /** * 设置即将拖拽的水平和垂直对齐线 * @param type 设置的类型 */ private setLine; /** * 鼠标事件 * @param e 事件event * @returns */ private onCanvasMouseMove; /** * 鼠标事件 * @param e 事件event * @returns */ private onCanvasMouseUp; /** * 更新辅助线 */ private updateAlignLine; /** * 更新标尺刻度元素 * */ private updateRuleObjects; /** * 重绘标尺相关元素 */ private render; /** * 停止所有canvas内元素的时间响应,并返回一个函数用来恢复暂停 * @returns 恢复暂停函数, 仅生效一次 * */ private preventCanvasInteraction; /** * 基于参数值全等的可缓存函数 * @param fn 任意可执行函数 * @param 配置项 * @returns 可缓存的新函数 * */ private cache; /** * 基于0点,向前后整理出所有from ~ to,间隔step的数组 * */ private makeGridSteps; /** * 构建标尺需要的绘制元素 * @param 依赖的画布参数 * @returns 可渲染元素集合 * */ private createRuleRenderObjectsImplement; /** * 创建横纵标尺 * @param type 横纵类型 * @param items 遍历创建的点 * @param condition 长标尺计算 * @param pointArr 节点存储数组 * @param sizeParam 帮助计算尺寸的参数 */ private createRuler; private createRuleRenderObjects; } export {};