VTK  9.1.0
vtkWin32OpenGLRenderWindow.h
Go to the documentation of this file.
1/*=========================================================================
2
3Program: Visualization Toolkit
4Module: vtkWin32OpenGL2RenderWindow.h
5
6Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7All rights reserved.
8See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10This software is distributed WITHOUT ANY WARRANTY; without even
11the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12PURPOSE. See the above copyright notice for more information.
13
14=========================================================================*/
27#ifndef vtkWin32OpenGLRenderWindow_h
28#define vtkWin32OpenGLRenderWindow_h
29
31#include "vtkRenderingOpenGL2Module.h" // For export macro
32#include <stack> // for ivar
33
34#include "vtkWindows.h" // For windows API
35
36class vtkIdList;
37
38class VTKRENDERINGOPENGL2_EXPORT vtkWin32OpenGLRenderWindow : public vtkOpenGLRenderWindow
39{
40public:
43 void PrintSelf(ostream& os, vtkIndent indent) override;
44
48 void Frame(void) override;
49
53 virtual void WindowInitialize(void);
54
61 void Initialize(void) override;
62
68 void Finalize(void) override;
69
73 void SetFullScreen(vtkTypeBool) override;
74
78 void WindowRemap(void) override;
79
83 void SetShowWindow(bool val) override;
84
88 virtual void PrefFullScreen(void);
89
91
99 void SetSize(int width, int height) override;
100 void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
102
107 int* GetSize() VTK_SIZEHINT(2) override;
108
110
115 void SetPosition(int x, int y) override;
116 void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
118
123 int* GetScreenSize() VTK_SIZEHINT(2) override;
124
129 int* GetPosition() VTK_SIZEHINT(2) override;
130
135 void SetWindowName(const char*) override;
136
140 void SetIcon(vtkImageData* img) override;
141
145 void SetWindowInfo(const char*) override;
146
150 void SetNextWindowInfo(const char*) override;
151
155 void SetParentInfo(const char*) override;
156
157 void* GetGenericDisplayId() override { return (void*)this->ContextId; }
158 void* GetGenericWindowId() override { return (void*)this->WindowId; }
159 void* GetGenericParentId() override { return (void*)this->ParentId; }
160 void* GetGenericContext() override { return (void*)this->DeviceContext; }
161 void* GetGenericDrawable() override { return (void*)this->WindowId; }
162 void SetDisplayId(void*) override;
163
168
170
173 void SetWindowId(HWND);
174 void SetWindowId(void* foo) override { this->SetWindowId((HWND)foo); }
176
182
186 bool GetPlatformSupportsRenderWindowSharing() override { return true; }
187
189
192 void SetParentId(HWND);
193 void SetParentId(void* foo) override { this->SetParentId((HWND)foo); }
195
196 void SetContextId(HGLRC); // hsr
197 void SetDeviceContext(HDC); // hsr
198
202 void SetNextWindowId(HWND);
203
209 void SetNextWindowId(void* arg) override;
210
217 void SetStereoCapableWindow(vtkTypeBool capable) override;
218
222 void MakeCurrent() override;
223
227 void ReleaseCurrent() override;
228
232 bool IsCurrent() override;
233
237 const char* ReportCapabilities() override;
238
243
250
252
255 virtual void SetupPalette(HDC hDC);
257 HDC hDC, DWORD dwFlags, int debug, int bpp = 16, int zbpp = 16);
259
263 void Clean();
264
266
272 void HideCursor() override;
273 void ShowCursor() override;
274 void SetCursorPosition(int x, int y) override;
276
280 void SetCurrentCursor(int) override;
281
282 bool DetectDPI() override;
283
285
292 void PushContext() override;
293 void PopContext() override;
295
305 bool SetSwapControl(int i) override;
306
307protected:
310
312 HPALETTE Palette;
313 HPALETTE OldPalette;
323 static const std::string DEFAULT_BASE_WINDOW_NAME;
324
325 std::stack<HGLRC> ContextStack;
326 std::stack<HDC> DCStack;
327
328 // message handler
329 virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
330
331 static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
334
336 void ResizeWhileOffscreen(int xsize, int ysize);
337 void CreateAWindow() override;
338 void DestroyWindow() override;
342
343private:
345 void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
346};
347
348#endif
list of point or cell ids
Definition: vtkIdList.h:140
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
a simple class to control print indentation
Definition: vtkIndent.h:113
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.
virtual void PrefFullScreen(void)
Set the preferred window size to full screen.
void WindowRemap(void) override
Remap the window.
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
~vtkWin32OpenGLRenderWindow() override
void Finalize(void) override
Finalize the rendering window.
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 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.
void Frame(void) override
End the rendering process and display the image.
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.
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.
virtual void WindowInitialize(void)
Create the window.
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.
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 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 Initialize(void) override
Initialize the rendering window.
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:69
#define VTK_SIZEHINT(...)