UNPKG

editor-render-v2

Version:

编辑器渲染器

99 lines (98 loc) 2.46 kB
import Handler from './Handler'; import { fabric } from 'fabric'; interface IRenderObjectBase { id?: string; type: string; left: number; top: number; fill?: string; stroke?: string; } /** @ignore */ export interface IRenderRect extends IRenderObjectBase { type: 'rect'; width: number; height: number; } /** @ignore */ export interface IRenderText extends IRenderObjectBase { type: 'text'; text: string; fontSize?: number; fontFamily?: string; } /** @ignore */ export type IRenderLine = Omit<IRenderObjectBase & { type: 'line'; lineWidth: number; x1: number; y1: number; x2: number; y2: number; }, 'left' | 'top'>; /** @ignore */ export type IRenderObject = IRenderRect | IRenderText | IRenderLine; /** * 分层渲染器 */ export default class RenderLayerHandler { /** @ignore */ handler: Handler; private layers; /** @ignore */ constructor(handler: Handler); /** @ignore */ dispose(): void; /** * 擦除所有渲染结果,但不清空数据 * */ clear(event: fabric.IEvent): void; /** * 渲染所有图层的元素 * */ render(event: fabric.IEvent): void; /** * 新建图层 * @param layerId 图层id * */ createLayer(id: string): void; /** * 设置图层内的元素, 完全覆盖旧内容 * @param layerId 要操作的图层id * @param objects 要添加的元素 * */ setObjects(layerId: string, objects: IRenderObject[]): this; /** * 返回某个图层下所有object * @param layerId 要操作的图层id * */ getObjects(layerId: string): Readonly<IRenderObject[]>; /** * 在图层内添加元素 * @param layerId 要操作的图层id * @param ...objects 要添加的元素 * */ addObject(layerId: string, ...objects: IRenderObject[]): this; /** * 在图层内移除元素 * @param layerId 要操作的图层id * @param removed [option] 要移除的object,如不传则移除该图层所有元素 * */ removeObject(layerId: string, removed?: IRenderObject): this; /** * 返回所有元素 * */ getAllObjects(): IRenderObject[]; /** * 通过id查找元素 * @param id id * @returns 查找到的元素 */ private getLayer; /** * 遍历元素 * @param fn 遍历时执行的函数 */ private eachLayer; } export {};