VTK  9.4.20250201
vtkWin32OpenGLRenderWindow.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
15#ifndef vtkWin32OpenGLRenderWindow_h
16#define vtkWin32OpenGLRenderWindow_h
17
19
20#include "vtkRenderingOpenGL2Module.h" // For export macro
21#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
22#include <stack> // for ivar
23
24#include "vtkWindows.h" // For windows API
25
26VTK_ABI_NAMESPACE_BEGIN
27class vtkIdList;
28
29class VTKRENDERINGOPENGL2_EXPORT VTK_MARSHALAUTO vtkWin32OpenGLRenderWindow
31{
32public:
35 void PrintSelf(ostream& os, vtkIndent indent) override;
36
40 void Frame() override;
41
45 virtual void WindowInitialize();
46
53 void Initialize() override;
54
60 void Finalize() override;
61
65 void SetFullScreen(vtkTypeBool) override;
66
70 void WindowRemap() override;
71
75 void SetShowWindow(bool val) override;
76
80 virtual void PrefFullScreen();
81
83
91 void SetSize(int width, int height) override;
92 void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
94
99 int* GetSize() VTK_SIZEHINT(2) override;
100
102
107 void SetPosition(int x, int y) override;
108 void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
110
115 int* GetScreenSize() VTK_SIZEHINT(2) override;
116
121 int* GetPosition() VTK_SIZEHINT(2) override;
122
127 void SetWindowName(const char*) override;
128
132 void SetIcon(vtkImageData* img) override;
133
137 void SetWindowInfo(const char*) override;
138
142 void SetNextWindowInfo(const char*) override;
143
147 void SetParentInfo(const char*) override;
148
149 void* GetGenericDisplayId() override { return (void*)this->ContextId; }
150 void* GetGenericWindowId() override { return (void*)this->WindowId; }
151 void* GetGenericParentId() override { return (void*)this->ParentId; }
152 void* GetGenericContext() override { return (void*)this->DeviceContext; }
153 void* GetGenericDrawable() override { return (void*)this->WindowId; }
154 void SetDisplayId(void*) override;
155
160 HWND GetWindowId();
161
163
167 void SetWindowId(HWND);
169 void SetWindowId(void* foo) override { this->SetWindowId((HWND)foo); }
171
177
181 bool GetPlatformSupportsRenderWindowSharing() override { return true; }
182
184
187 void SetParentId(HWND);
188 void SetParentId(void* foo) override { this->SetParentId((HWND)foo); }
190
191 void SetContextId(HGLRC); // hsr
192 void SetDeviceContext(HDC); // hsr
193
197 void SetNextWindowId(HWND);
198
204 void SetNextWindowId(void* arg) override;
205
212 void SetStereoCapableWindow(vtkTypeBool capable) override;
213
217 void MakeCurrent() override;
218
222 void ReleaseCurrent() override;
223
227 bool IsCurrent() override;
228
232 const char* ReportCapabilities() override;
233
238
245
247
250 virtual void SetupPalette(HDC hDC);
252 HDC hDC, DWORD dwFlags, int debug, int bpp = 16, int zbpp = 16);
254
258 void Clean();
259
261
267 void HideCursor() override;
268 void ShowCursor() override;
269 void SetCursorPosition(int x, int y) override;
271
275 void SetCurrentCursor(int) override;
276
277 bool DetectDPI() override;
278
280
287 void PushContext() override;
288 void PopContext() override;
290
300 bool SetSwapControl(int i) override;
301
302protected:
305
307 HPALETTE Palette;
308 HPALETTE OldPalette;
318 static const std::string DEFAULT_BASE_WINDOW_NAME;
319
320 std::stack<HGLRC> ContextStack;
321 std::stack<HDC> DCStack;
322
323 // message handler
324 virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
325
326 static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
329
331 void ResizeWhileOffscreen(int xsize, int ysize);
332 void CreateAWindow() override;
333 void DestroyWindow() override;
337
338private:
340 void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
341};
342
343VTK_ABI_NAMESPACE_END
344#endif
list of point or cell ids
Definition vtkIdList.h:133
topologically and geometrically regular array of data
a simple class to control print indentation
Definition vtkIndent.h:108
OpenGL rendering window.
void DestroyWindow() override
Destroy a not-off-screen window.
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
void Clean()
Clean up device contexts, rendering contexts, etc.
static const std::string DEFAULT_BASE_WINDOW_NAME
virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
void SetWindowId(void *foo) override
Set the window id to a pre-existing window.
static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
void SetNextWindowId(void *arg) override
Set the window id of the new window once a WindowRemap is done.
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
~vtkWin32OpenGLRenderWindow() override
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
void WindowRemap() override
Remap the window.
void Frame() override
End the rendering process and display the image.
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...
vtkTypeBool GetEventPending() override
Check to see if a mouse button has been pressed or mouse wheel activated.
void SetShowWindow(bool val) override
Show or not Show the window.
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
static vtkWin32OpenGLRenderWindow * New()
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...
int * GetSize() override
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
void * GetGenericContext() override
Dummy stubs for vtkWindow API.
void SetCursorPosition(int x, int y) 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 * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
virtual void WindowInitialize()
Create the window.
void Finalize() override
Finalize the rendering window.
bool DetectDPI() override
Attempt to detect and set the DPI of the display device by querying the system.
int * GetScreenSize() override
Get the current size of the screen in pixels.
void PushContext() override
Ability to push and pop this window's context as the current context.
void SetCurrentCursor(int) override
Change the shape of the cursor.
void SetSize(int a[2]) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
void SetDisplayId(void *) override
Dummy stubs for vtkWindow API.
virtual void PrefFullScreen()
Set the preferred window size to full screen.
bool GetPlatformSupportsRenderWindowSharing() override
Does this platform support render window data sharing.
void SetStereoCapableWindow(vtkTypeBool capable) override
Prescribe that the window be created in a stereo-capable mode.
void PopContext() override
Ability to push and pop this window's context as the current context.
virtual void SetupPixelFormatPaletteAndContext(HDC hDC, DWORD dwFlags, int debug, int bpp=16, int zbpp=16)
Initialize OpenGL for this window.
void SetParentId(void *foo) override
Set the window's parent id to a pre-existing window.
void SetNextWindowId(HWND)
Set the window id of the new window once a WindowRemap is done.
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
void Initialize() override
Initialize the rendering window.
void SetParentId(HWND)
Set the window's parent id to a pre-existing window.
const char * ReportCapabilities() override
Get report of capabilities for the render window.
void MakeCurrent() override
Make this windows OpenGL context the current context.
void SetPosition(int a[2]) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
void ResizeWhileOffscreen(int xsize, int ysize)
void CreateAWindow() override
Create a not-off-screen window.
void ReleaseCurrent() override
Release the current context.
virtual void SetupPalette(HDC hDC)
Initialize OpenGL for this window.
int vtkTypeBool
Definition vtkABI.h:64
#define VTK_SIZEHINT(...)
#define VTK_MARSHAL_EXCLUDE_REASON_NOT_SUPPORTED
#define VTK_MARSHALAUTO
#define VTK_MARSHALEXCLUDE(reason)