editor-render-v2
Version:
编辑器渲染器
163 lines (162 loc) • 3.79 kB
TypeScript
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 {};