Open3D (C++ API)  0.20.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-2026 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:346
std::int64_t y
Definition NormalDistributionsTransform.cpp:43
std::int64_t x
Definition NormalDistributionsTransform.cpp:42
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:757
void SetOnMenuItemActivated(Menu::ItemId item_id, std::function< void()> callback)
Definition Window.cpp:648
const Theme & GetTheme() const
Definition Window.cpp:478
void OnMouseEvent(const MouseEvent &e)
Definition Window.cpp:1137
void CloseDialog()
Closes the dialog.
Definition Window.cpp:694
void SetTitle(const char *title)
Definition Window.cpp:499
void SetOnKeyEvent(std::function< bool(const KeyEvent &)> callback)
Definition Window.cpp:661
void PostRedraw()
Definition Window.cpp:606
LayoutContext GetLayoutContext()
Definition Window.cpp:735
void SetOnClose(std::function< bool()> callback)
Definition Window.cpp:657
void AddChild(std::shared_ptr< Widget > w)
Definition Window.cpp:643
const char * GetTitle() const
Definition Window.cpp:497
void SetOSFrame(const Rect &r)
Definition Window.cpp:491
std::string GetWebRTCUID() const
Definition Window.cpp:451
friend class Renderer
Definition Window.h:32
void ShowMessageBox(const char *title, const char *message)
Definition Window.cpp:707
void ShowDialog(std::shared_ptr< Dialog > dlg)
Definition Window.cpp:665
virtual void Layout(const LayoutContext &context)
Definition Window.cpp:737
virtual void OnDragDropped(const char *path)
Definition Window.cpp:1327
Size GetSize() const
Definition Window.cpp:554
virtual Size CalcPreferredSize()
Definition Window.cpp:508
int GetMouseMods() const
Definition Window.cpp:449
void SetSize(const Size &size)
Sets the size of the window in pixels. Includes menubar on Linux.
Definition Window.cpp:541
static const int FLAG_HIDDEN
Definition Window.h:35
void Show(bool vis=true)
Definition Window.cpp:587
visualization::rendering::Renderer & GetRenderer() const
Definition Window.cpp:480
void OnResize()
Definition Window.cpp:1061
Rect GetOSFrame() const
Definition Window.cpp:484
void Close()
Definition Window.cpp:592
Point GlobalToWindowCoord(int global_x, int global_y)
Returns the global point (in OS pixels) in window local coordinates.
Definition Window.cpp:576
void RaiseToTop() const
Definition Window.cpp:631
const std::vector< std::shared_ptr< Widget > > & GetChildren() const
Definition Window.cpp:464
void OnDraw()
Definition Window.cpp:1029
std::string GetClipboardText() const
Gets text from the system clipboard.
Definition Window.cpp:725
void SetClipboardText(const std::string &text)
Copies text to the system clipboard.
Definition Window.cpp:720
void SetNeedsLayout()
Instructs the window to relayout before the next draw.
Definition Window.cpp:604
void DestroyWindow()
Definition Window.cpp:442
bool IsVisible() const
Definition Window.cpp:582
void OnTickEvent(const TickEvent &e)
Definition Window.cpp:1307
bool IsActiveWindow() const
Definition Window.cpp:636
void SetOnTickEvent(std::function< bool()> callback)
Definition Window.cpp:653
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:571
virtual void OnMenuItemSelected(Menu::ItemId item_id)
Definition Window.cpp:749
Rect GetContentRect() const
Definition Window.cpp:559
void SetFocusWidget(Widget *w)
Sets w as widget with text focus.
Definition Window.cpp:641
void ShowMenu(bool show)
Definition Window.cpp:730
void OnTextInput(const TextInputEvent &e)
Definition Window.cpp:1298
virtual ~Window()
Definition Window.cpp:433
void SizeToFit()
Definition Window.cpp:533
void OnKeyEvent(const KeyEvent &e)
Definition Window.cpp:1257
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