VTK  9.3.20240419
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 
18 #include "vtkOpenGLRenderWindow.h"
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 
25 VTK_ABI_NAMESPACE_BEGIN
26 class vtkIdList;
27 
28 class VTKRENDERINGOPENGL2_EXPORT VTK_MARSHALAUTO vtkWin32OpenGLRenderWindow
29  : public vtkOpenGLRenderWindow
30 {
31 public:
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 
158  HWND GetWindowId();
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 
233  vtkTypeBool IsDirect() override;
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 
298 protected:
301 
303  HPALETTE Palette;
304  HPALETTE OldPalette;
305  HGLRC ContextId;
308  HWND WindowId;
309  HWND ParentId;
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 
334 private:
336  void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
337 };
338 
339 VTK_ABI_NAMESPACE_END
340 #endif
list of point or cell ids
Definition: vtkIdList.h:133
topologically and geometrically regular array of data
Definition: vtkImageData.h:156
a simple class to control print indentation
Definition: vtkIndent.h:108
OpenGL rendering window.
void DestroyWindow() override
Destroy a not-off-screen window.
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.
int * GetSize() override
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
~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...
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
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.
HWND GetWindowId()
Get the window id.
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 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...
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.
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
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.
const char * ReportCapabilities() override
Get report of capabilities for the render window.
static vtkWin32OpenGLRenderWindow * New()
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
int * GetScreenSize() override
Get the current size of the screen in pixels.
void Initialize() override
Initialize the rendering window.
void * GetGenericContext() override
Dummy stubs for vtkWindow API.
void SetParentId(HWND)
Set the window's parent id to a pre-existing 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.
@ height
Definition: vtkX3D.h:254
@ string
Definition: vtkX3D.h:490
int vtkTypeBool
Definition: vtkABI.h:64
#define VTK_SIZEHINT(...)
#define VTK_MARSHALAUTO