Open3D (C++ API)  0.18.0
Loading...
Searching...
No Matches
Application.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2023 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <cstdint>
11#include <functional>
12#include <memory>
13#include <string>
14#include <vector>
15
18
19namespace open3d {
20
21namespace geometry {
22class Image;
23}
24
25namespace visualization {
26
27namespace rendering {
28class Renderer;
29class View;
30class Scene;
31} // namespace rendering
32
33namespace gui {
34
35struct Theme;
36class Window;
37class WindowSystem;
38
40public:
41 static Application &GetInstance();
42
43 virtual ~Application();
44
48 void Initialize();
52 void Initialize(int argc, const char *argv[]);
54 void Initialize(const char *resource_path);
55
57 static constexpr FontId DEFAULT_FONT_ID = 0;
63 void SetFont(FontId id, const FontDescription &fd);
64
66 void Run();
68 void Quit();
69
77 void RunInThread(std::function<void()> f);
83 void PostToMainThread(Window *window, std::function<void()> f);
84
85 std::shared_ptr<Menu> GetMenubar() const;
86 void SetMenubar(std::shared_ptr<Menu> menubar);
87
89 void AddWindow(std::shared_ptr<Window> window);
93 void RemoveWindow(Window *window);
94
103 void ShowMessageBox(const char *title, const char *message);
104
106
107 // (std::string not good in interfaces for ABI reasons)
108 const char *GetResourcePath() const;
109
114 const Theme &GetTheme() const;
115
118 double Now() const;
119
121 void OnMenuItemSelected(Menu::ItemId itemId);
122
127 void OnTerminate();
128
130 public:
132 virtual ~EnvUnlocker() {}
133 virtual void unlock() {}
134 virtual void relock() {}
135 };
146 bool RunOneTick(EnvUnlocker &unlocker, bool cleanup_if_no_windows = true);
147
151 void SetWindowSystem(std::shared_ptr<WindowSystem> ws);
152
157 bool UsingNativeWindows() const;
158
161 void VerifyIsInitialized();
162
163 const std::vector<FontDescription> &GetFontDescriptions() const;
164
168 std::shared_ptr<geometry::Image> RenderToImage(
169 rendering::Renderer &renderer,
170 rendering::View *view,
171 rendering::Scene *scene,
172 int width,
173 int height);
174
175 // Same as RenderToImage(), but returns the depth values in a float image.
176 std::shared_ptr<geometry::Image> RenderToDepthImage(
177 rendering::Renderer &renderer,
178 rendering::View *view,
179 rendering::Scene *scene,
180 int width,
181 int height,
182 bool z_in_view_space = false);
183
184private:
185 Application();
186
187 enum class RunStatus { CONTINUE, DONE };
188 RunStatus ProcessQueuedEvents(EnvUnlocker &unlocker);
189
190private:
191 struct Impl;
192 std::unique_ptr<Impl> impl_;
193};
194
195} // namespace gui
196} // namespace visualization
197} // namespace open3d
virtual void unlock()
Definition Application.h:133
virtual ~EnvUnlocker()
Definition Application.h:132
virtual void relock()
Definition Application.h:134
Definition Application.h:39
void VerifyIsInitialized()
Definition Application.cpp:268
FontId AddFont(const FontDescription &fd)
Definition Application.cpp:303
std::shared_ptr< Menu > GetMenubar() const
Definition Application.cpp:380
bool UsingNativeWindows() const
Definition Application.cpp:285
double Now() const
Definition Application.cpp:373
void SetWindowSystem(std::shared_ptr< WindowSystem > ws)
Definition Application.cpp:295
void PostToMainThread(Window *window, std::function< void()> f)
Definition Application.cpp:617
const Theme & GetTheme() const
Definition Application.cpp:626
void OnTerminate()
Definition Application.cpp:433
WindowSystem & GetWindowSystem() const
Definition Application.cpp:291
virtual ~Application()
Definition Application.cpp:211
void ShowMessageBox(const char *title, const char *message)
Definition Application.cpp:130
void RunInThread(std::function< void()> f)
Definition Application.cpp:611
void Run()
Does not return until the UI is completely finished.
Definition Application.cpp:476
void SetMenubar(std::shared_ptr< Menu > menubar)
Definition Application.cpp:384
bool RunOneTick(EnvUnlocker &unlocker, bool cleanup_if_no_windows=true)
Definition Application.cpp:482
void AddWindow(std::shared_ptr< Window > window)
Must be called on the same thread that calls Run()
Definition Application.cpp:403
std::shared_ptr< geometry::Image > RenderToDepthImage(rendering::Renderer &renderer, rendering::View *view, rendering::Scene *scene, int width, int height, bool z_in_view_space=false)
Definition Application.cpp:652
std::shared_ptr< geometry::Image > RenderToImage(rendering::Renderer &renderer, rendering::View *view, rendering::Scene *scene, int width, int height)
Definition Application.cpp:628
void SetFont(FontId id, const FontDescription &fd)
Definition Application.cpp:310
void RemoveWindow(Window *window)
Definition Application.cpp:409
static constexpr FontId DEFAULT_FONT_ID
Identifier for font used by default for all UI elements.
Definition Application.h:57
void OnMenuItemSelected(Menu::ItemId itemId)
Delivers the itemId to the active window. Used internally.
Definition Application.cpp:459
const char * GetResourcePath() const
Definition Application.cpp:622
void Initialize()
Definition Application.cpp:213
static Application & GetInstance()
Definition Application.cpp:125
const std::vector< FontDescription > & GetFontDescriptions() const
Definition Application.cpp:369
void Quit()
Closes all the windows, which exits as a result.
Definition Application.cpp:427
int ItemId
Definition MenuBase.h:28
Definition WindowSystem.h:27
int width
Definition FilePCD.cpp:52
int height
Definition FilePCD.cpp:53
unsigned int FontId
Definition Gui.h:68
Definition PinholeCameraIntrinsic.cpp:16