@jxstjh/jhvideo
Version:
HTML5 jhvideo base on MPEG2-TS Stream Player
51 lines (50 loc) • 1.45 kB
TypeScript
export interface InteractionControllerOptions {
root: HTMLElement;
wrapper: HTMLElement;
videoWrapper: HTMLElement;
video: HTMLVideoElement;
renderCanvas: HTMLCanvasElement;
previewCanvas: HTMLCanvasElement;
getPlayer: () => any;
getMediaInfo: () => {
width?: number;
height?: number;
} | null;
onZoomEnabled?: () => void;
zoomButtonSelector?: string;
}
/**
* 用户交互控制器。
*
* 第一阶段负责数码放大的完整生命周期:
* - H.264 Video 与 H.265/WASM Canvas 的鼠标框选
* - 放大区域预览绘制
* - 放大框、激活样式和 RAF 的创建与释放
*/
export declare class InteractionController {
private readonly options;
private zoomEnabled;
private dragging;
private startPoint;
private endPoint;
private animationFrameId;
private zoomBlock;
constructor(options: InteractionControllerOptions);
get zooming(): boolean;
setZooming(enabled: boolean): void;
toggleZoom(): void;
resizePreview(scale: number): void;
destroy(): void;
private readonly handleMouseDown;
private readonly handleMouseMove;
private readonly handleMouseUp;
private getSource;
private getLocalPoint;
private createZoomBlock;
private updateZoomBlock;
private removeZoomBlock;
private startPreviewLoop;
private stopPreviewLoop;
private clearPreview;
private getSourceSize;
}