UNPKG

fabric-warpvas

Version:

This JavaScript library helps you efficiently build image warping tools on Fabric.js

139 lines (82 loc) 3.07 kB
[**fabric-warpvas**](../../README.md) *** # Class: `abstract` AbstractMode 变形模式的抽象基类 可具体实现该基类实现自定义变形模式 ## Example ```typescript // 实现一个自定义变形模式类 class CustomMode extends AbstractMode { // 第一步:自定义模式名称 name = 'custom-mode'; // 第二步:自定模式下的分割点计算策略,如果不覆盖默认的扭曲策略,可直接调用 super.execute 方法 execute(warpvas: Warpvas) { return super.execute(warpvas); } // 第三步:覆盖默认的渲染时机钩子,该渲染方法会在 fabricWarpvas.render 执行后执行 render(fabricWarpvas: FabricWarpvas) { // 这里保留默认逻辑(将临时变形图像添加到画布上) const cleanup = super.render(fabricWarpvas); // 添加自定义的交互元素,比如四个对角的交互点 const customElement = new fabric.Rect({ ... }); fabricWarpvas.canvas.add(customElement); // 返回清理回调 return () => { // 移除添加的自定义交互元素 fabricWarpvas.canvas.remove(customElement); // 执行默认逻辑的回调函数(移除临时变形图像) cleanup?.(); }; } // 第四步:具体实现脏渲染时机钩子,脏渲染逻辑仅在 fabricWarpvas.render 执行且 dirty 参数为 true 时执行 dirtyRender() { // 返回清理回调 return () => {}; } } ``` ## Constructors ### new AbstractMode() > **new AbstractMode**(): [`AbstractMode`](AbstractMode.md) #### Returns [`AbstractMode`](AbstractMode.md) ## Properties ### name > `abstract` **name**: `string` 变形模式的标识名称,建议使用唯一标识,比如 'custom-mode' ## Methods ### dirtyRender() > **dirtyRender**(`fabricWarpvas`): `void` \| () => `void` 在 fabricWarpvas.render 执行且 dirty 参数为 true 时执行的钩子函数 当变形区域结构发生变化时,dirty 参数为 true,但该参数也可由外部手动触发 render 传入 #### Parameters ##### fabricWarpvas [`FabricWarpvas`](FabricWarpvas.md) FabricWarpvas 实例 #### Returns `void` \| () => `void` 返回清理回调函数,在下一次 fabricWarpvas.render 执行前执行 *** ### execute() > **execute**(`warpvas`): `Coord`[][][] 该模式计算变形区域分割点位置的策略方法,默认使用 warpvas 库的扭曲计算策略。 #### Parameters ##### warpvas `Warpvas` Warpvas 实例对象 #### Returns `Coord`[][][] 返回计算后的分割点坐标数组 #### See Warpvas 了解 warpvas.js 库 *** ### render() > **render**(`fabricWarpvas`): `void` \| () => `void` 在 fabricWarpvas.render 执行后执行的钩子函数 #### Parameters ##### fabricWarpvas [`FabricWarpvas`](FabricWarpvas.md) FabricWarpvas 实例对象 #### Returns `void` \| () => `void` 返回清理回调函数,在下一次 fabricWarpvas.render 执行前执行