Open3D (C++ API)  0.19.0
GuiVisualizer.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - Open3D: www.open3d.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.open3d.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <vector>
11 
13 
14 namespace open3d {
15 
16 namespace geometry {
17 class AxisAlignedBoundingBox;
18 class Geometry;
19 } // namespace geometry
20 
21 namespace t {
22 namespace geometry {
23 class Geometry;
24 } // namespace geometry
25 } // namespace t
26 
27 namespace visualization {
28 
29 namespace gui {
30 struct Theme;
31 }
32 
33 class GuiVisualizer : public gui::Window {
34  using Super = gui::Window;
35 
36 public:
37  GuiVisualizer(const std::string& title, int width, int height);
38  GuiVisualizer(const std::vector<std::shared_ptr<const geometry::Geometry>>&
39  geometries,
40  const std::string& title,
41  int width,
42  int height,
43  int left,
44  int top);
45  virtual ~GuiVisualizer();
46 
47  void SetTitle(const std::string& title);
48  void SetGeometry(std::shared_ptr<const geometry::Geometry> geometry,
49  bool loaded_model);
50  void SetGeometry(std::shared_ptr<const t::geometry::Geometry> geometry,
51  bool loaded_model);
52 
53  bool SetIBL(const char* path);
54 
56  void LoadGeometry(const std::string& path);
57 
58  void ExportCurrentImage(const std::string& path);
59 
60  void Layout(const gui::LayoutContext& context) override;
61 
63  void StartRPCInterface(const std::string& address, int timeout);
64 
65  void StopRPCInterface();
66 
67 protected:
68  // Add custom items to the application menu (only relevant on macOS)
69  void AddItemsToAppMenu(
70  const std::vector<std::pair<std::string, gui::Menu::ItemId>>&
71  items);
72 
73  void OnMenuItemSelected(gui::Menu::ItemId item_id) override;
74  void OnDragDropped(const char* path) override;
75 
76 private:
77  struct Impl;
78  std::unique_ptr<Impl> impl_;
79 
80  void Init();
81 };
82 
83 } // namespace visualization
84 } // namespace open3d
double t
Definition: SurfaceReconstructionPoisson.cpp:172
ImGuiContext * context
Definition: Window.cpp:99
Definition: GuiVisualizer.h:33
void LoadGeometry(const std::string &path)
Loads asynchronously, will return immediately.
Definition: GuiVisualizer.cpp:1153
virtual ~GuiVisualizer()
Definition: GuiVisualizer.cpp:924
void OnDragDropped(const char *path) override
Definition: GuiVisualizer.cpp:1419
void Layout(const gui::LayoutContext &context) override
Definition: GuiVisualizer.cpp:1104
void AddItemsToAppMenu(const std::vector< std::pair< std::string, gui::Menu::ItemId >> &items)
Definition: GuiVisualizer.cpp:930
GuiVisualizer(const std::string &title, int width, int height)
Definition: GuiVisualizer.cpp:705
void StopRPCInterface()
Definition: GuiVisualizer.cpp:1145
void ExportCurrentImage(const std::string &path)
Definition: GuiVisualizer.cpp:1286
void StartRPCInterface(const std::string &address, int timeout)
Starts the RPC interface. See io/rpc/ZMQReceiver for the parameters.
Definition: GuiVisualizer.cpp:1134
void SetTitle(const std::string &title)
Definition: GuiVisualizer.cpp:926
void SetGeometry(std::shared_ptr< const geometry::Geometry > geometry, bool loaded_model)
Definition: GuiVisualizer.cpp:946
bool SetIBL(const char *path)
Definition: GuiVisualizer.cpp:1147
void OnMenuItemSelected(gui::Menu::ItemId item_id) override
Definition: GuiVisualizer.cpp:1300
int ItemId
Definition: MenuBase.h:28
Definition: Window.h:30
int width
Definition: FilePCD.cpp:52
int height
Definition: FilePCD.cpp:53
Definition: PinholeCameraIntrinsic.cpp:16
Definition: GuiVisualizer.cpp:265