vue3-electronic-signature
Version:
一个基于Vue3的电子签名组件库,支持手写签名、触摸绘制和多种导出格式
163 lines (162 loc) • 3.98 kB
TypeScript
import { SignatureReplay, SignatureData, ReplayState, ReplayOptions, ReplayController } from '../types';
/**
* 签名回放控制器
*/
export declare class SignatureReplayController implements ReplayController {
private canvas;
private ctx;
private replayData;
private state;
private currentTime;
private speed;
private animationId;
private startTimestamp;
private pausedTime;
private options;
private eventCallbacks;
private offscreenCanvas;
private offscreenCtx;
private lastFrameImageBitmap;
private renderThrottle;
private isRendering;
private seededRandom;
constructor(canvas: HTMLCanvasElement);
/**
* 创建确定性随机数生成器(解决毛笔等笔迹的闪烁问题)
* 基于简单的线性同余生成器(LCG)算法
*/
private createSeededRandom;
/**
* 初始化离屏画布用于性能优化
*/
private initializeOffscreenCanvas;
/**
* 设置回放数据
*/
setReplayData(data: SignatureReplay, options?: ReplayOptions): void;
/**
* 重置优化状态
*/
private resetOptimizationState;
/**
* 开始播放
*/
play(): void;
/**
* 暂停播放
*/
pause(): void;
/**
* 停止播放
*/
stop(): void;
/**
* 跳转到指定时间
*/
seek(time: number): void;
/**
* 设置播放速度
*/
setSpeed(speed: number): void;
/**
* 获取当前状态
*/
getState(): ReplayState;
/**
* 获取当前时间
*/
getCurrentTime(): number;
/**
* 获取总时长
*/
getTotalDuration(): number;
/**
* 获取当前进度(0-1)
*/
getProgress(): number;
/**
* 动画循环
*/
private animate;
/**
* 渲染指定时间的帧 - 高性能优化版本
*/
private renderFrame;
/**
* 高效地将离屏画布内容传输到主画布(同步版本)
*/
private transferToMainCanvasSync;
/**
* 在离屏画布上渲染完整帧
*/
private renderToOffscreenCanvas;
/**
* 获取指定时间内的所有点
*/
private getPointsUpToTime;
/**
* 根据笔迹样式计算动态线宽(与录制时一致)
*/
private calculateDynamicStrokeWidth;
/**
* 根据笔迹样式绘制线段(与录制时完全一致)
*/
private drawStyledStrokeForReplay;
/**
* 绘制优雅笔迹 - 基于Fabric.js和Vue3-Signature-Pad的速度压力感应技术
*/
private drawElegantStroke;
/**
* 预处理点数据,计算速度和动态线宽 - 基于Vue3-Signature-Pad算法
*/
private preprocessPointsForVelocity;
/**
* 基于速度的路径绘制 - 使用Fabric.js的平滑算法
*/
private drawVelocityBasedPath;
/**
* 绘制基于速度的单个线段 - 实现由粗到细的渐变
*/
private drawVelocitySegment;
/**
* 平滑插值函数 - 基于Paper.js的平滑算法
*/
private smoothStep;
/**
* 获取控制点(用于贝塞尔曲线平滑) - 与signature.ts中的实现一致
*/
private getControlPoint;
/**
* 清除画布
*/
private clearCanvas;
/**
* 注册事件监听器
*/
on(event: string, callback: Function): void;
/**
* 移除事件监听器
*/
off(event: string, callback?: Function): void;
/**
* 触发事件
*/
private emit;
/**
* 在离屏画布上绘制完整路径
*/
private drawCompletePathToOffscreen;
/**
* 在离屏画布上绘制部分路径
*/
private drawPartialPathToOffscreen;
/**
* 销毁控制器
*/
destroy(): void;
}
/**
* 从签名数据生成回放数据
*/
export declare function createReplayData(signatureData: SignatureData): SignatureReplay;
//# sourceMappingURL=replay.d.ts.map