VTK  9.4.20241103
vtkWebAssemblyOpenGLRenderWindow.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
14#ifndef vtkWebAssemblyOpenGLRenderWindow_h
15#define vtkWebAssemblyOpenGLRenderWindow_h
16
18#include "vtkRenderingOpenGL2Module.h" // For export macro
19#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
20#include <stack> // for ivar
21
22VTK_ABI_NAMESPACE_BEGIN
23class VTKRENDERINGOPENGL2_EXPORT VTK_MARSHALAUTO vtkWebAssemblyOpenGLRenderWindow
25{
26public:
29 void PrintSelf(ostream& os, vtkIndent indent) override;
30
37 void Initialize() override;
38
44 void Finalize() override;
45
49 void SetFullScreen(vtkTypeBool) override;
50
54 void SetShowWindow(bool val) override;
55
57
60 void SetSize(int, int) override;
61 void SetSize(int a[2]) override { vtkOpenGLRenderWindow::SetSize(a); }
63
65
68 void SetPosition(int x, int y) override { vtkOpenGLRenderWindow::SetPosition(x, y); }
69 void SetPosition(int a[2]) override { vtkOpenGLRenderWindow::SetPosition(a); }
71
75 int* GetScreenSize() VTK_SIZEHINT(2) override;
76
80 int* GetPosition() VTK_SIZEHINT(2) override;
81
82 void* GetGenericDisplayId() override { return (void*)this->ContextId; }
83 void* GetGenericWindowId() override { return (void*)this->ContextId; }
84 void* GetGenericDrawable() override { return (void*)this->ContextId; }
85
89 void MakeCurrent() override;
90
94 void ReleaseCurrent() override;
95
99 bool IsCurrent() override;
100
104 void Clean();
105
110 void Frame() override;
111
113
120 void PushContext() override;
121 void PopContext() override;
123
133 bool SetSwapControl(int i) override;
134
139 int GetColorBufferSizes(int* rgba) override;
140
142
146 void HideCursor() override;
147 void ShowCursor() override;
149
153 vtkGetStringMacro(CanvasSelector);
154 vtkSetStringMacro(CanvasSelector);
155
161 {
162 Default,
163 LowPower,
164 HighPerformance
165 };
166
168
183
185
193 void PreferHighPerformanceAdapter() { PowerPreference = PowerPreferenceType::HighPerformance; }
194 void PreferLowPowerAdapter() { PowerPreference = PowerPreferenceType::LowPower; }
196
197protected:
200
201 unsigned long ContextId;
202 std::stack<unsigned long> ContextStack;
203 char* CanvasSelector = nullptr;
204 PowerPreferenceType PowerPreference = PowerPreferenceType::Default;
205
207 void CreateAWindow() override;
208 void DestroyWindow() override;
209
210private:
212 void operator=(const vtkWebAssemblyOpenGLRenderWindow&) = delete;
213};
214
215VTK_ABI_NAMESPACE_END
216#endif
a simple class to control print indentation
Definition vtkIndent.h:108
OpenGL rendering window.
PowerPreferenceType
These enums have a one-one correspondence with the webgpu enums.
void Frame() override
A termination method performed at the end of the rendering process to do things like swapping buffers...
void Initialize() override
Initialize the rendering window.
static vtkWebAssemblyOpenGLRenderWindow * New()
void ReleaseCurrent() override
Release the current context.
vtkSetEnumMacro(PowerPreference, PowerPreferenceType)
Set/Get the power preference of the graphics adapter.
void SetSize(int, int) override
Set the size of the window in pixels.
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
void MakeCurrent() override
Make this windows OpenGL context the current context.
void SetSize(int a[2]) override
Set the size of the window in pixels.
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
void PreferHighPerformanceAdapter()
Set preference for a high-performance or low-power device.
void Clean()
Clean up device contexts, rendering contexts, etc.
void PushContext() override
Ability to push and pop this window's context as the current context.
void CreateAWindow() override
Create a not-off-screen window.
void DestroyWindow() override
Destroy a not-off-screen window.
int * GetScreenSize() override
Get the current size of the screen in pixels.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetPosition(int a[2]) override
Set the position of the window.
void ShowCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
void SetPosition(int x, int y) override
Set the position of the window.
void HideCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
int GetColorBufferSizes(int *rgba) override
Get the size of the color buffer.
void PreferLowPowerAdapter()
Set preference for a high-performance or low-power device.
vtkGetEnumMacro(PowerPreference, PowerPreferenceType)
Set/Get the power preference of the graphics adapter.
void SetShowWindow(bool val) override
Show or not Show the window.
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
void Finalize() override
Finalize the rendering window.
void PopContext() override
Ability to push and pop this window's context as the current context.
virtual void SetPosition(int x, int y)
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
virtual void SetSize(int width, int height)
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO