VTK  9.3.20240424
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#include "vtkRenderingOpenGL2Module.h" // For export macro
20#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
21#include <stack> // for ivar
22
23#include "vtkWindows.h" // For windows API
24
25VTK_ABI_NAMESPACE_BEGIN
26class vtkIdList;
27
28class VTKRENDERINGOPENGL2_EXPORT VTK_MARSHALAUTO vtkWin32OpenGLRenderWindow
30{
31public:
34 void PrintSelf(ostream& os, vtkIndent indent) override;
35
39 void Frame() override;
40
44 virtual void WindowInitialize();
45
52 void Initialize() override;
53
59 void Finalize() override;
60
64 void SetFullScreen(vtkTypeBool) override;
65
69 void WindowRemap() override;
70
74 void SetShowWindow(bool val) override;
75
79 virtual void PrefFullScreen();
80
82
90 void SetSize(int width, int height) override;
91 void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
93
98 int* GetSize() VTK_SIZEHINT(2) override;
99
101
106 void SetPosition(int x, int y) override;
107 void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
109
114 int* GetScreenSize() VTK_SIZEHINT(2) override;
115
120 int* GetPosition() VTK_SIZEHINT(2) override;
121
126 void SetWindowName(const char*) override;
127
131 void SetIcon(vtkImageData* img) override;
132
136 void SetWindowInfo(const char*) override;
137
141 void SetNextWindowInfo(const char*) override;
142
146 void SetParentInfo(const char*) override;
147
148 void* GetGenericDisplayId() override { return (void*)this->ContextId; }
149 void* GetGenericWindowId() override { return (void*)this->WindowId; }
150 void* GetGenericParentId() override { return (void*)this->ParentId; }
151 void* GetGenericContext() override { return (void*)this->DeviceContext; }
152 void* GetGenericDrawable() override { return (void*)this->WindowId; }
153 void SetDisplayId(void*) override;
154
159
161
164 void SetWindowId(HWND);
165 void SetWindowId(void* foo) override { this->SetWindowId((HWND)foo); }
167
173
177 bool GetPlatformSupportsRenderWindowSharing() override { return true; }
178
180
183 void SetParentId(HWND);
184 void SetParentId(void* foo) override { this->SetParentId((HWND)foo); }
186
187 void SetContextId(HGLRC); // hsr
188 void SetDeviceContext(HDC); // hsr
189
193 void SetNextWindowId(HWND);
194
200 void SetNextWindowId(void* arg) override;
201
208 void SetStereoCapableWindow(vtkTypeBool capable) override;
209
213 void MakeCurrent() override;
214
218 void ReleaseCurrent() override;
219
223 bool IsCurrent() override;
224
228 const char* ReportCapabilities() override;
229
234
241
243
246 virtual void SetupPalette(HDC hDC);
248 HDC hDC, DWORD dwFlags, int debug, int bpp = 16, int zbpp = 16);
250
254 void Clean();
255
257
263 void HideCursor() override;
264 void ShowCursor() override;
265 void SetCursorPosition(int x, int y) override;
267
271 void SetCurrentCursor(int) override;
272
273 bool DetectDPI() override;
274
276
283 void PushContext() override;
284 void PopContext() override;
286
296 bool SetSwapControl(int i) override;
297
298protected:
301
303 HPALETTE Palette;
304 HPALETTE OldPalette;
314 static const std::string DEFAULT_BASE_WINDOW_NAME;
315
316 std::stack<HGLRC> ContextStack;
317 std::stack<HDC> DCStack;
318
319 // message handler
320 virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
321
322 static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
325
327 void ResizeWhileOffscreen(int xsize, int ysize);
328 void CreateAWindow() override;
329 void DestroyWindow() override;
333
334private:
336 void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
337};
338
339VTK_ABI_NAMESPACE_END
340#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(HWND)
Set the window id to a pre-existing window.
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.
HWND GetWindowId()
Get the window id.
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_MARSHALAUTO