editor-render-v2
Version:
编辑器渲染器
124 lines (123 loc) • 3.1 kB
TypeScript
import Handler from './Handler';
import { fabric } from 'fabric';
/**
* @ignore
* 裁剪ui类需要实现的接口
* */
export interface ICropUIImpl {
/**
* 裁剪UI初始化, 会传入本次裁剪的相关数据
* @param cropImageHandler 裁剪接口
* */
init(cropImageHandler: CropImageHandler): void;
/**
* 设置工具条的页面位置
* @param pageX 页面坐标x
* @param pageY 页面坐标y
* */
setPosition(pageX: number, pageY: number): void;
/**
* 当裁剪结束或取消时被调用
* */
dispose(): void;
/**
* 显示ui
* */
show(): void;
/**
* 隐藏ui
* */
hide(): void;
/**
* 更新自身位置
* */
updatePosition(): void;
}
export default class CropImageHandler {
private handler;
private cropStartState;
private cropingContext;
private objectAngle;
private needClearEffects;
private cropUI;
/** @ignore */
constructor(handler: Handler);
/**
* 启动裁剪
* @param fabricObject 要裁剪的图片object
* @param cropUI 裁剪工具栏,可以自定义传入,或使用内置的ui
* */
cropStart: (fabricObject: fabric.Object, cropUI?: ICropUIImpl) => void;
/**
* 完成裁剪
* */
cropDone(isNotify?: boolean): void;
/**
* 还原遮罩编辑
* @ignore
* */
clipReset(fabricObject: fabric.Object): void;
/**
* 取消正在进行的裁剪, 恢复到启动裁剪时的状态
* @param needRevert 是否需要恢复为本次裁剪前的状态
* */
cropCancel(revertImageState?: boolean): void;
/**
* 当前是否正在进行裁剪
* @returns 是否正在进行裁剪
* */
isCroping(): boolean;
/**
* 获取正在裁剪的图片
* @returns 正在裁剪的图片元素
* */
getCropingImage(): fabric.Image;
/**
* 以图片中心为缩放原点,缩放正在裁切的图片
* @param scale 缩放值
* @ignore
* */
setCropingImageScale(scale: number): void;
/**
* 计算缩放时候shell的超出
* @ignore
*/
setCropingImageShell(): void;
/**
* 设置裁剪外框的缩放和中心点
* @param width 宽度
* @param height 高度
* @param center 中心点
* @ignore
* */
setCropingShellScale(width: number, height: number, center: fabric.Point): void;
/**
* 触发fabric重绘
* */
private redraw;
/**
* 返回正在裁剪的图片的左上角位置
* @returns 页面坐标
* @ignore
* */
getCropingImageLeftTopPoint(): {
pageX: number;
pageY: number;
};
/**
* 还原图片
* @param target 目标图片
* */
private restoreCrop;
/**
* 选中态变化时,根据变化目标调整状态
* */
private onSelectionUpdated;
private resetMaxScale;
private computeRL;
private computeLeft;
private computeRight;
private computeTB;
private computeTop;
private computeBottom;
}