import { Pose, Pano, PanoId } from "@realsee/five"; /** * Five 命令集合 */ interface FiveActionReactCallbacks { /** * 移动相机。(不触发点位移动) * @description * 如果动画中途被打断(用户触发行为,或者调用 setState, load, changeMode)的等 * 会 Promise.reject。运动完成则 Promise.resolve * @param pose - 相机目标位置 * @param duration - 动画触发的时常 * @returns Promise 是否移动成功 */ updateCamera(pose: Pose, duration: number): Promise; /** * 获取画面中的像素颜色 * @param x - 获取像素区域的起始坐标 x * @param y - 获取像素区域的起始坐标 y * @param width - 获取像素区域的宽度 * @param height - 获取像素区域的高度 * @param pixelRatio - 获取区域的像素比 * @param flipY - 是否Y轴翻转 * @param buffer - 存储数组 * @returns rgba颜色平铺的 Uint8Array */ getPixels(x: number, y: number, width: number, height: number, pixelRatio?: number, flipY?: boolean, buffer?: T): T; /** * 获取画面中的像素颜色 * @param options - 参数 * @returns */ getPixels(options: { /** 获取像素区域的起始坐标 x */ x: number; /** 获取像素区域的起始坐标 y */ y: number; /** 获取像素区域的宽度 */ width: number; /** 获取像素区域的高度 */ height: number; /** 获取区域的像素比 */ pixelRatio?: number; helperVisible?: boolean; skipPanorama?: boolean; /** 是否Y轴翻转 */ flipY?: boolean; /** 存储数组 */ buffer?: T; }): T; /** * 强制渲染 * @description * 调用 `render()` 和 `needsRender()` 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - `needsRender()` 为在下帧渲染画面 * - `render()` 在当前帧渲染画面 * 推荐使用 `needsRender()`, 可以更加流畅。但是如果需要截图等同步操作,可以使用 `render()` * * @param callback - 渲染完成回调 */ render(callback?: () => void): void; /** * 下一帧渲染 * @description * 调用 `render()` 和 `needsRender()` 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - `needsRender()` 为在下帧渲染画面 * - `render()` 在当前帧渲染画面 * 推荐使用 `needsRender()`, 可以更加流畅。但是如果需要截图等同步操作,可以使用 `render()` */ needsRender(): void; /** * 预加载点位图片资源 * @param pano - 观察点 * @param callback - 加载完成回调, 并传递加载用时。 * @returns 加载完成的 Promise 参数同 callback */ preloadPano(pano: Pano | PanoId | number, callback?: (costs: number) => void): Promise; } /** * Five React Hooks: 使用 Five 的命令 * * @function updateCamera * ``` * 移动相机。(不触发点位移动) * 如果动画中途被打断(用户触发行为,或者调用 setState, load, changeMode)的等 * 会 Promise.reject。运动完成则 Promise.resolve * * // params pose - 相机目标位置 * // params duration - 动画触发的时常 * // params Promise - 是否移动成功 * updateCamera(pose: Pose, duration: number): Promise * ``` * * @function getPixels * ``` * 获取画面中的像素颜色 * // param x - 获取像素区域的起始坐标 x * // param y - 获取像素区域的起始坐标 y * // param width - 获取像素区域的宽度 * // param height - 获取像素区域的高度 * // param pixelRatio - 获取区域的像素比 * // returns rgba颜色平铺的 Uint8Array * getPixels(x: number, y: number, width: number, height: number, pixelRatio?: number): Uint8Array, * ``` * * @function render * ``` * 强制渲染 * 调用 render() 和 needsRender() 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - needsRender() 为在下帧渲染画面 * - render() 在当前帧渲染画面 * 推荐使用 needsRender(), 可以更加流畅。但是如果需要截图等同步操作,可以使用 render() * * // param callback 渲染完成回调 * render(callback?: () => void): void, * ``` * * @function needsRender * ``` * 下一帧渲染 * 调用 render() 和 needsRender() 均可在按需渲染时,使得画面渲染一次 * 区别在于: * - needsRender() 为在下帧渲染画面 * - render() 在当前帧渲染画面 * 推荐使用 needsRender(), 可以更加流畅。但是如果需要截图等同步操作,可以使用 render() * needsRender(): void, * ``` * * @function preloadPano * ``` * 预加载点位图片资源 * // param panoIndex - 观察点序号 * // param callback - 加载完成回调, 并传递加载用时。 * // returns 加载完成的 Promise 参数同 callback * preloadPano(panoIndex: number, callback?: (costs: number) => void): Promise * ``` * * @example * ``` * const { updateCamera, initBasisLoader, getPixels, render, needsRender, preloadPano } = useFiveAction(); * ``` */ declare function useFiveAction(): FiveActionReactCallbacks; export { useFiveAction, FiveActionReactCallbacks };