8#include <pcl/visualization/pcl_visualizer.h>
9#include <reusex/core/processing_observer.hpp>
10#include <reusex/geometry/CellComplex.hpp>
11#include <reusex/types.hpp>
22 using ViewerPtr = std::shared_ptr<pcl::visualization::PCLVisualizer>;
24 std::function<void(
const ViewerPtr &,
const std::vector<int> &viewports)>;
25 using Pair = std::pair<Eigen::Vector4d, Eigen::Vector3d>;
36 const T & , std::string_view ,
47 std::string_view name,
48 const std::shared_ptr<reusex::geometry::CellComplex> &cc,
56 double focal_y,
int image_width,
58 const Eigen::Affine3f &pose,
75 void viewer_drain_tasks(
const ViewerPtr &viewer);
76 void viewer_loop(std::latch &initialized);
78 std::vector<int> viewports_ = std::vector<int>(1);
79 std::thread viz_thread_;
80 std::queue<VizTask> task_queue_;
81 std::mutex queue_mutex_;
82 std::atomic_bool stop_requested_{
false};
83 std::atomic_bool running_{
false};
84 std::unique_ptr<spdmon::LoggerProgress> progress_logger_;
void viewer_wait_for_user()
std::pair< Eigen::Vector4d, Eigen::Vector3d > Pair
void on_process_finished(reusex::core::Stage stage) override
void viewer_add_plane(std::string_view name, const Pair &plane, reusex::core::Stage stage, int idx) override
void on_process_updated(reusex::core::Stage stage, size_t increment) override
void viewer_add_plane_pair(std::string_view name, const PlanePair &pair, reusex::core::Stage stage, int idx) override
~VizualizationObserver() override
void on_process_started(reusex::core::Stage stage, size_t total) override
std::function< void(const ViewerPtr &, const std::vector< int > &viewports)> VizTask
std::pair< Pair, Pair > PlanePair
void viewer_add_geometry(std::string_view, const T &, std::string_view, int)
void viewer_add_cell_complex(std::string_view name, const std::shared_ptr< reusex::geometry::CellComplex > &cc, reusex::core::Stage stage, int idx) override
void viewer_enqueue_task(VizTask task)
void viewer_add_plane(std::string_view name, const Eigen::Vector4d &plane, reusex::core::Stage stage, int idx) override
void viewer_add_camera_frustum(std::string_view name, double focal_x, double focal_y, int image_width, int image_height, const Eigen::Affine3f &pose, reusex::core::Stage stage, int idx) override
bool viewer_is_active() const
void viewer_add_cloud(std::string_view name, const reusex::CloudConstPtr &cloud, reusex::core::Stage stage, int idx) override
std::shared_ptr< pcl::visualization::PCLVisualizer > ViewerPtr
void viewer_request_viewports(size_t num_viewports)
typename Cloud::ConstPtr CloudConstPtr
void setup_processing_observer()
VizualizationObserver & get_processing_observer()