UNPKG

vue3-electronic-signature

Version:

一个基于Vue3的电子签名组件库,支持手写签名、触摸绘制和多种导出格式

163 lines (162 loc) 3.98 kB
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