js-web-screen-shot
Version:
web端自定义截屏插件(原生JS版)
178 lines (177 loc) • 4.49 kB
TypeScript
export type cutOutBoxBorder = {
x: number;
y: number;
width: number;
height: number;
index: number;
option: number;
};
export type movePositionType = {
moveStartX: number;
moveStartY: number;
};
export type positionInfoType = {
startX: number;
startY: number;
width: number;
height: number;
};
export type textInfoType = {
positionX: number;
positionY: number;
color: string;
size: number;
};
export type zoomCutOutBoxReturnType = {
tempStartX: number;
tempStartY: number;
tempWidth: number;
tempHeight: number;
};
export type toolPositionValType = "left" | "right" | "center";
export type hideBarInfoType = {
state: boolean;
color?: string;
fillWidth?: number;
fillHeight?: number;
fillState?: boolean;
};
export type drawCutOutBoxReturnType = {
startX: number;
startY: number;
width: number;
height: number;
};
export type toolIcoType = {
[key: string]: boolean | undefined;
square?: boolean;
round?: boolean;
rightTop?: boolean;
brush?: boolean;
mosaicPen?: boolean;
text?: boolean;
separateLine?: boolean;
save?: boolean;
undo?: boolean;
confirm?: boolean;
};
export type mouseEventType = {
mouseDownFn: (event: MouseEvent | TouchEvent, mouseX: number, mouseY: number, addHistory: () => void) => void;
mouseMoveFn: (event: MouseEvent | TouchEvent, mouseInfo: {
startX: number;
startY: number;
currentX: number;
currentY: number;
}, showLastHistory: (context: CanvasRenderingContext2D) => void) => void;
mouseUpFn: (showLastHistory: (context: CanvasRenderingContext2D) => void) => void;
};
export type toolbarType = {
id: number;
title: string;
icon?: string;
activeIcon?: string;
clickFn?: (params?: any) => void;
};
export type crcEventType = {
state: boolean;
handleFn?: () => void;
};
export type userToolbarType = {
title: string;
icon: string;
activeIcon: string;
clickFn: userToolbarFnType;
};
export type customToolbarType = userToolbarType & {
id: number;
};
export type userToolbarFnType = (canvasInfo: {
screenShotCanvas: CanvasRenderingContext2D;
screenShotController: HTMLCanvasElement;
ScreenShotImageController: HTMLCanvasElement;
currentInfo: {
toolName: string;
toolId: number;
};
imgInfo: imgInfoType;
}) => void;
export type imgInfoType = {
base64: string;
cutInfo: positionInfoType;
};
export type screenShotType = {
enableWebRtc?: boolean;
screenFlow?: MediaStream;
level?: number;
canvasWidth?: number;
canvasHeight?: number;
completeCallback?: (imgInfo: imgInfoType) => void;
closeCallback?: () => void;
h2cImgLoadErrCallback?: (err: Event & {
imgUrl: string;
}) => void;
triggerCallback?: (res: {
code: number;
msg: string;
displaySurface: string | null;
displayLabel: string | null;
}) => void;
cancelCallback?: (res: {
code: number;
msg: string;
errorInfo: string;
}) => void;
saveCallback?: (code: number, msg: string) => void;
position?: {
top?: number;
left?: number;
};
clickCutFullScreen?: boolean;
hiddenToolIco?: toolIcoType;
showScreenData?: boolean;
imgSrc?: string;
loadCrossImg?: boolean;
proxyUrl?: string;
useCORS?: boolean;
screenShotDom?: HTMLElement | HTMLDivElement | HTMLCanvasElement;
cropBoxInfo?: {
x: number;
y: number;
w: number;
h: number;
};
wrcReplyTime?: number;
wrcImgPosition?: {
x: number;
y: number;
w: number;
h: number;
};
noScroll?: boolean;
maskColor?: {
r: number;
g: number;
b: number;
a: number;
};
toolPosition?: toolPositionValType;
writeBase64?: boolean;
hiddenScrollBar?: hideBarInfoType;
wrcWindowMode?: boolean;
customRightClickEvent?: crcEventType;
cutBoxBdColor?: string;
maxUndoNum?: number;
useRatioArrow?: boolean;
imgAutoFit?: boolean;
useCustomImgSize?: boolean;
customImgSize?: {
w: number;
h: number;
};
saveImgTitle?: string;
destroyContainer?: boolean;
userToolbar?: Array<userToolbarType>;
canvasEvents?: mouseEventType;
h2cIgnoreElementsCallback?: (element: Element) => boolean;
menuBarHeight?: number;
};