UNPKG

editor-render-v2

Version:

编辑器渲染器

124 lines (123 loc) 3.1 kB
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; }