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,
57 int image_height,
const Eigen::Affine3f &pose,
62 const std::shared_ptr<std::vector<pcl::Vertices>> &disc_outlines,
85 void viewer_drain_tasks(
const ViewerPtr &viewer);
86 void viewer_loop(std::latch &initialized);
88 std::vector<int> viewports_ = std::vector<int>(1);
89 std::thread viz_thread_;
90 std::queue<VizTask> task_queue_;
91 std::mutex queue_mutex_;
92 std::atomic_bool stop_requested_{
false};
93 std::atomic_bool running_{
false};
94 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_labeled_cloud(std::string_view name, const reusex::CloudConstPtr &cloud, const reusex::CloudLConstPtr &labels, reusex::core::Stage stage, int idx) override
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
void viewer_add_visibility_graph(std::string_view name, const reusex::CloudLocPtr &disc_points, const std::shared_ptr< std::vector< pcl::Vertices > > &disc_outlines, const pcl::CorrespondencesPtr &edges, 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 CloudL::ConstPtr CloudLConstPtr
typename Cloud::ConstPtr CloudConstPtr
typename CloudLoc::Ptr CloudLocPtr
void setup_processing_observer()
VizualizationObserver & get_processing_observer()