agora-classroom-sdk
Version:
For publishing npm package agora-classroom-sdk (Web & Electron). Get more information from https://docs.agora.io
102 lines (101 loc) • 3.63 kB
TypeScript
import { StreamWindow, StreamWindowBounds, WidgetTrackStruct } from './type';
export declare function isNum(num: unknown): boolean;
/**
* 计算 8 宫格布局
* 当数量小于等于 3 的时候一行展示
*
* ┌───────┐
* │ 1 │
* └───────┘
*
* ┌───────┬───────┐
* │ 1 │ 2 │
* └───────┴───────┘
*
* ┌───────┬───────┬───────┐
* │ 1 │ 2 │ 3 │
* └───────┴───────┴───────┘
*
*
* 当数量大于3的时候
*
* ┌───────┬───────┐
* │ 3 │ 4 │
* ├───────┼───────┤
* │ 1 │ 2 │
* └───────┴───────┘
*
* ┌───────────┬───────────┐
* │ 4 │ 5 │
* ├───────┬───┴───┬───────┤
* │ 1 │ 2 │ 3 │
* └───────┴───────┴───────┘
*
* ┌───────┬───────┬───────┐
* │ 4 │ 5 │ 6 │
* ├───────┼───────┼───────┤
* │ 1 │ 2 │ 3 │
* └───────┴───────┴───────┘
*
* ┌───────────┬─────────┬─────────┐
* │ 5 │ 6 │ 7 │
* ├───────┬───┴───┬─────┴─┬───────┤
* │ 1 │ 2 │ 3 │ 4 │
* └───────┴───────┴───────┴───────┘
*
* ┌───────┬───────┬───────┬───────┐
* │ 5 │ 6 │ 7 │ 8 │
* ├───────┼───────┼───────┼───────┤
* │ 1 │ 2 │ 3 │ 4 │
* └───────┴───────┴───────┴───────┘
*
* @param length
* @param width
* @param height
* @returns
*/
export declare const calculateSize: (length: number, width: number, height: number) => StreamWindowBounds[][];
/**
* 计算 9 宫格布局
* 计算规则为 1^2 2^2 3^2
*/
export declare const calculateSizeSquare: (length: number, width: number, height: number) => StreamWindowBounds[][];
/**
* 需要把 x, y 为可移动距离的比例
* 最大有效移动范围(Maximum Effective Distance, MED):在不超出教室布局的前提下,分别能够在 X 轴、Y 轴方向移动的最大距离
* 移动偏移量:
* @param rect
*/
export declare const convertToWidgetTrackPos: (rect: StreamWindow, bigRect: {
width: number;
height: number;
}) => {
position: {
xaxis: number;
yaxis: number;
};
size: {
width: number;
height: number;
};
extra: {
contain: boolean;
zIndex: number;
};
};
/**
* 把 widget 坐标转换为目前的用的坐标
* @param rect
* @param bigRect
*/
export declare const convertToRelativePos: (rect: WidgetTrackStruct, streamWindowRect: {
width: number;
height: number;
}) => {
x: number;
y: number;
width: number;
height: number;
zIndex: number;
contain: boolean;
};