ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
VisualizerWithEditing.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
11 
12 namespace cloudViewer {
13 
14 namespace visualization {
15 class SelectionPolygon;
16 class PointCloudPicker;
17 
22 public:
23  enum class SelectionMode {
24  None = 0,
25  Rectangle = 1,
26  Polygon = 2,
27  };
28 
29 public:
33  VisualizerWithEditing(double voxel_size = -1.0,
34  bool use_dialog = true,
35  const std::string &directory = "")
36  : voxel_size_(voxel_size),
37  use_dialog_(use_dialog),
38  default_directory_(directory) {}
39  ~VisualizerWithEditing() override {}
42 
43 public:
44  bool AddGeometry(std::shared_ptr<const ccHObject> geometry_ptr,
45  bool reset_bounding_box = true) override;
46  void PrintVisualizerHelp() override;
47  void UpdateWindowTitle() override;
48  void BuildUtilities() override;
49  int PickPoint(double x, double y);
50  std::vector<size_t> &GetPickedPoints();
51 
52 protected:
53  bool InitViewControl() override;
54  bool InitRenderOption() override;
55  void WindowResizeCallback(GLFWwindow *window, int w, int h) override;
56  void MouseMoveCallback(GLFWwindow *window, double x, double y) override;
57  void MouseScrollCallback(GLFWwindow *window, double x, double y) override;
58  void MouseButtonCallback(GLFWwindow *window,
59  int button,
60  int action,
61  int mods) override;
62  void KeyPressCallback(GLFWwindow *window,
63  int key,
64  int scancode,
65  int action,
66  int mods) override;
68  void InvalidatePicking();
69  void SaveCroppingResult(const std::string &filename = "");
70 
71 protected:
72  std::shared_ptr<SelectionPolygon> selection_polygon_ptr_;
73  std::shared_ptr<glsl::SelectionPolygonRenderer>
76 
77  std::shared_ptr<PointCloudPicker> pointcloud_picker_ptr_;
78  std::shared_ptr<glsl::PointCloudPickerRenderer>
80 
81  std::shared_ptr<const ccHObject> original_geometry_ptr_;
82  std::shared_ptr<ccHObject> editing_geometry_ptr_;
83  std::shared_ptr<glsl::GeometryRenderer> editing_geometry_renderer_ptr_;
84 
85  double voxel_size_ = -1.0;
86  bool use_dialog_ = true;
87  std::string default_directory_;
88  unsigned int crop_action_count_ = 0;
89 };
90 
91 } // namespace visualization
92 } // namespace cloudViewer
std::string filename
void WindowResizeCallback(GLFWwindow *window, int w, int h) override
void SaveCroppingResult(const std::string &filename="")
void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods) override
void KeyPressCallback(GLFWwindow *window, int key, int scancode, int action, int mods) override
std::shared_ptr< glsl::GeometryRenderer > editing_geometry_renderer_ptr_
bool InitRenderOption() override
Function to initialize RenderOption.
void MouseScrollCallback(GLFWwindow *window, double x, double y) override
bool InitViewControl() override
Function to initialize ViewControl.
std::shared_ptr< PointCloudPicker > pointcloud_picker_ptr_
std::shared_ptr< const ccHObject > original_geometry_ptr_
std::shared_ptr< glsl::SelectionPolygonRenderer > selection_polygon_renderer_ptr_
std::shared_ptr< SelectionPolygon > selection_polygon_ptr_
void MouseMoveCallback(GLFWwindow *window, double x, double y) override
VisualizerWithEditing(const VisualizerWithEditing &)=delete
bool AddGeometry(std::shared_ptr< const ccHObject > geometry_ptr, bool reset_bounding_box=true) override
Function to add geometry to the scene and create corresponding shaders.
VisualizerWithEditing & operator=(const VisualizerWithEditing &)=delete
VisualizerWithEditing(double voxel_size=-1.0, bool use_dialog=true, const std::string &directory="")
std::shared_ptr< glsl::PointCloudPickerRenderer > pointcloud_picker_renderer_ptr_
The main Visualizer class.
Definition: Visualizer.h:45
Generic file read and write utility for python interface.