GrabBag/Module/CloudShow/Inc/ICloudShow.h

50 lines
1.5 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef ICLOUDSHOW_H
#define ICLOUDSHOW_H
#include "CloudShow_global.h"
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <memory>
#include <string>
class CLOUDSHOW_EXPORT ICloudShow
{
public:
using PointCloudPtr = pcl::PointCloud<pcl::PointXYZI>::ConstPtr;
virtual ~ICloudShow() = default;
/// 工厂方法
static std::unique_ptr<ICloudShow> Create();
/// 单次显示:弹出窗口,按 intensity 着色,阻塞直到关闭窗口
virtual int Show(PointCloudPtr cloud, const std::string& windowName = "PointCloud") = 0;
/// 连续显示:非阻塞启动后台渲染线程
virtual int Start(const std::string& windowName = "PointCloud") = 0;
/// 更新当前窗口中的点云(连续模式,替换而非叠加)
virtual int UpdateCloud(PointCloudPtr cloud) = 0;
/// 停止连续显示
virtual int Stop() = 0;
/// 消费待更新点云并驱动一次渲染事件(必须与 Start 同线程调用)
virtual int SpinOnce(int ms = 1) = 0;
/// 是否正在连续显示
virtual bool IsRunning() const = 0;
/// 键盘状态查询PCL 窗口回调设置,主线程轮询)
virtual bool IsQuitRequested() const = 0;
virtual bool IsSaveRequested() const = 0;
virtual void ClearSaveRequest() = 0;
/// 保存为 TXT兼容 LaserDataLoader::DebugSaveLaser 格式)
virtual int SaveToTxt(const std::string& fileName, PointCloudPtr cloud) = 0;
};
#endif // ICLOUDSHOW_H