Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
Window.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 <functional>
11#include <memory>
12#include <string>
13
20
21namespace open3d {
22namespace visualization {
23namespace gui {
24
25class Dialog;
26class Menu;
27class Renderer;
28struct Theme;
29
30class Window {
31 friend class Application;
32 friend class Renderer;
33
34public:
35 static const int FLAG_HIDDEN;
36 static const int FLAG_TOPMOST;
37
41 explicit Window(const std::string& title, int flags = 0);
42
46 Window(const std::string& title,
47 int width,
48 int height,
49 int flags = 0); // centered
50
54 Window(const std::string& title,
55 int x,
56 int y,
57 int width,
58 int height,
59 int flags = 0);
60 virtual ~Window();
61
62 const Theme& GetTheme() const;
64
67 Rect GetOSFrame() const;
70 void SetOSFrame(const Rect& r);
71
72 const char* GetTitle() const;
73 void SetTitle(const char* title);
74
77 void SizeToFit();
78
80 void SetSize(const Size& size);
83 Size GetSize() const;
86 Rect GetContentRect() const;
88 float GetScaling() const;
90 Point GlobalToWindowCoord(int global_x, int global_y);
91
92 bool IsVisible() const;
93 void Show(bool vis = true);
96 void Close();
97
99 void SetNeedsLayout();
102 void PostRedraw();
103
104 void SetTopmost(bool topmost);
105 void RaiseToTop() const;
106
107 bool IsActiveWindow() const;
108
110 void SetFocusWidget(Widget* w);
111
112 void AddChild(std::shared_ptr<Widget> w);
113
118 std::function<void()> callback);
119
123 void SetOnTickEvent(std::function<bool()> callback);
124
128 void SetOnClose(std::function<bool()> callback);
129
133 void SetOnKeyEvent(std::function<bool(const KeyEvent&)> callback);
134
137 void ShowDialog(std::shared_ptr<Dialog> dlg);
139 void CloseDialog();
140
141 void ShowMessageBox(const char* title, const char* message);
142
144 void SetClipboardText(const std::string& text);
145
147 std::string GetClipboardText() const;
148
151 void DestroyWindow();
152
153 // Override to handle menu items
154 virtual void OnMenuItemSelected(Menu::ItemId item_id);
155
156 // Override to handle drag and drop on the windows.
157 virtual void OnDragDropped(const char* path);
158
159 // Shows or hides the menubar, except on macOS when using real windows.
160 // This is intended to be used when using HeadlessWindowSystem but may
161 // be useful in other circumstances.
162 void ShowMenu(bool show);
163
164 int GetMouseMods() const; // internal, for WindowSystem
165
169 std::string GetWebRTCUID() const;
170
171protected:
177 virtual Size CalcPreferredSize();
178
182 virtual void Layout(const LayoutContext& context);
183
185
186 const std::vector<std::shared_ptr<Widget>>& GetChildren() const;
187
188public:
189 // these are intended for internal delivery of events
190 void OnDraw();
191 void OnResize();
192 void OnMouseEvent(const MouseEvent& e);
193 void OnKeyEvent(const KeyEvent& e);
194 void OnTextInput(const TextInputEvent& e);
195 void OnTickEvent(const TickEvent& e);
196
198
199private:
200 void CreateRenderer();
201 Widget::DrawResult DrawOnce(bool is_layout_pass);
202 void* MakeDrawContextCurrent() const;
203 void RestoreDrawContext(void* old_context) const;
204
205private:
206 struct Impl;
207 std::unique_ptr<Impl> impl_;
208};
209
210} // namespace gui
211} // namespace visualization
212} // namespace open3d
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition FilamentRenderer.cpp:327
ImGuiContext * context
Definition Window.cpp:99
Definition Application.h:40
int ItemId
Definition MenuBase.h:28
DrawResult
Definition Widget.h:95
WindowSystem::OSWindow GetOSWindow() const
Definition Window.cpp:743
void SetOnMenuItemActivated(Menu::ItemId item_id, std::function< void()> callback)
Definition Window.cpp:634
const Theme & GetTheme() const
Definition Window.cpp:477
void OnMouseEvent(const MouseEvent &e)
Definition Window.cpp:1122
void CloseDialog()
Closes the dialog.
Definition Window.cpp:680
void SetTitle(const char *title)
Definition Window.cpp:498
void SetOnKeyEvent(std::function< bool(const KeyEvent &)> callback)
Definition Window.cpp:647
void PostRedraw()
Definition Window.cpp:605
LayoutContext GetLayoutContext()
Definition Window.cpp:721
void SetOnClose(std::function< bool()> callback)
Definition Window.cpp:643
void AddChild(std::shared_ptr< Widget > w)
Definition Window.cpp:629
const char * GetTitle() const
Definition Window.cpp:496
void SetOSFrame(const Rect &r)
Definition Window.cpp:490
std::string GetWebRTCUID() const
Definition Window.cpp:450
friend class Renderer
Definition Window.h:32
void ShowMessageBox(const char *title, const char *message)
Definition Window.cpp:693
void ShowDialog(std::shared_ptr< Dialog > dlg)
Definition Window.cpp:651
virtual void Layout(const LayoutContext &context)
Definition Window.cpp:723
virtual void OnDragDropped(const char *path)
Definition Window.cpp:1312
Size GetSize() const
Definition Window.cpp:553
virtual Size CalcPreferredSize()
Definition Window.cpp:507
int GetMouseMods() const
Definition Window.cpp:448
void SetSize(const Size &size)
Sets the size of the window in pixels. Includes menubar on Linux.
Definition Window.cpp:540
static const int FLAG_HIDDEN
Definition Window.h:35
void Show(bool vis=true)
Definition Window.cpp:586
visualization::rendering::Renderer & GetRenderer() const
Definition Window.cpp:479
void OnResize()
Definition Window.cpp:1046
Rect GetOSFrame() const
Definition Window.cpp:483
void Close()
Definition Window.cpp:591
Point GlobalToWindowCoord(int global_x, int global_y)
Returns the global point (in OS pixels) in window local coordinates.
Definition Window.cpp:575
void RaiseToTop() const
Definition Window.cpp:617
const std::vector< std::shared_ptr< Widget > > & GetChildren() const
Definition Window.cpp:463
void OnDraw()
Definition Window.cpp:1015
std::string GetClipboardText() const
Gets text from the system clipboard.
Definition Window.cpp:711
void SetClipboardText(const std::string &text)
Copies text to the system clipboard.
Definition Window.cpp:706
void SetNeedsLayout()
Instructs the window to relayout before the next draw.
Definition Window.cpp:603
void DestroyWindow()
Definition Window.cpp:441
bool IsVisible() const
Definition Window.cpp:581
void OnTickEvent(const TickEvent &e)
Definition Window.cpp:1292
bool IsActiveWindow() const
Definition Window.cpp:622
void SetOnTickEvent(std::function< bool()> callback)
Definition Window.cpp:639
static const int FLAG_TOPMOST
Definition Window.h:36
float GetScaling() const
Returns the scaling factor from OS pixels to device pixels.
Definition Window.cpp:570
virtual void OnMenuItemSelected(Menu::ItemId item_id)
Definition Window.cpp:735
Rect GetContentRect() const
Definition Window.cpp:558
void SetFocusWidget(Widget *w)
Sets.
Definition Window.cpp:627
void ShowMenu(bool show)
Definition Window.cpp:716
void OnTextInput(const TextInputEvent &e)
Definition Window.cpp:1283
virtual ~Window()
Definition Window.cpp:432
void SizeToFit()
Definition Window.cpp:532
void OnKeyEvent(const KeyEvent &e)
Definition Window.cpp:1242
void * OSWindow
Definition WindowSystem.h:31
int width
Definition FilePCD.cpp:53
int size
Definition FilePCD.cpp:41
int height
Definition FilePCD.cpp:54
Definition PinholeCameraIntrinsic.cpp:16