VTK  9.0.1
vtkWin32OpenGLRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3 Program: Visualization Toolkit
4 Module: vtkWin32OpenGL2RenderWindow.h
5 
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
24 #ifndef vtkWin32OpenGLRenderWindow_h
25 #define vtkWin32OpenGLRenderWindow_h
26 
27 #include "vtkOpenGLRenderWindow.h"
28 #include "vtkRenderingOpenGL2Module.h" // For export macro
29 #include <stack> // for ivar
30 
31 #include "vtkWindows.h" // For windows API
32 
33 class vtkIdList;
34 
35 class VTKRENDERINGOPENGL2_EXPORT vtkWin32OpenGLRenderWindow : public vtkOpenGLRenderWindow
36 {
37 public:
40  void PrintSelf(ostream& os, vtkIndent indent) override;
41 
45  void Frame(void) override;
46 
50  virtual void WindowInitialize(void);
51 
58  void Initialize(void) override;
59 
65  void Finalize(void) override;
66 
70  void SetFullScreen(vtkTypeBool) override;
71 
75  void WindowRemap(void) override;
76 
80  void SetShowWindow(bool val) override;
81 
85  virtual void PrefFullScreen(void);
86 
88 
96  void SetSize(int width, int height) override;
97  void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
99 
104  int* GetSize() VTK_SIZEHINT(2) override;
105 
107 
112  void SetPosition(int x, int y) override;
113  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
115 
120  int* GetScreenSize() VTK_SIZEHINT(2) override;
121 
126  int* GetPosition() VTK_SIZEHINT(2) override;
127 
132  void SetWindowName(const char*) 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 
159  HWND GetWindowId();
160 
162 
165  void SetWindowId(HWND);
166  void SetWindowId(void* foo) override { this->SetWindowId((HWND)foo); }
168 
174 
178  bool GetPlatformSupportsRenderWindowSharing() override { return true; }
179 
181 
184  void SetParentId(HWND);
185  void SetParentId(void* foo) override { this->SetParentId((HWND)foo); }
187 
188  void SetContextId(HGLRC); // hsr
189  void SetDeviceContext(HDC); // hsr
190 
194  void SetNextWindowId(HWND);
195 
201  void SetNextWindowId(void* arg) override;
202 
209  void SetStereoCapableWindow(vtkTypeBool capable) override;
210 
214  void MakeCurrent() override;
215 
219  bool IsCurrent() override;
220 
224  const char* ReportCapabilities() override;
225 
229  vtkTypeBool IsDirect() override;
230 
237 
239 
242  virtual void SetupPalette(HDC hDC);
244  HDC hDC, DWORD dwFlags, int debug, int bpp = 16, int zbpp = 16);
246 
250  void Clean();
251 
253 
259  void HideCursor() override;
260  void ShowCursor() override;
261  void SetCursorPosition(int x, int y) override;
263 
267  void SetCurrentCursor(int) override;
268 
269  bool DetectDPI() override;
270 
272 
279  void PushContext() override;
280  void PopContext() override;
282 
292  bool SetSwapControl(int i) override;
293 
294 protected:
297 
299  HPALETTE Palette;
300  HPALETTE OldPalette;
301  HGLRC ContextId;
304  HWND WindowId;
305  HWND ParentId;
308 
309  std::stack<HGLRC> ContextStack;
310  std::stack<HDC> DCStack;
311 
312  // message handler
313  virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
314 
315  static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
318 
320  void ResizeWhileOffscreen(int xsize, int ysize);
321  void CreateAWindow() override;
322  void DestroyWindow() override;
326 
327 private:
329  void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
330 };
331 
332 #endif
vtkWin32OpenGLRenderWindow::GetGenericContext
void * GetGenericContext() override
Definition: vtkWin32OpenGLRenderWindow.h:152
vtkWin32OpenGLRenderWindow::Frame
void Frame(void) override
End the rendering process and display the image.
vtkWin32OpenGLRenderWindow::InitializeApplication
void InitializeApplication()
vtkWin32OpenGLRenderWindow::PrefFullScreen
virtual void PrefFullScreen(void)
Set the preferred window size to full screen.
vtkWin32OpenGLRenderWindow::~vtkWin32OpenGLRenderWindow
~vtkWin32OpenGLRenderWindow() override
vtkWin32OpenGLRenderWindow::ResizeWhileOffscreen
void ResizeWhileOffscreen(int xsize, int ysize)
vtkWin32OpenGLRenderWindow::PopContext
void PopContext() override
vtkWin32OpenGLRenderWindow::ShowCursor
void ShowCursor() override
vtkWin32OpenGLRenderWindow::SetCurrentCursor
void SetCurrentCursor(int) override
Change the shape of the cursor.
vtkWin32OpenGLRenderWindow
Definition: vtkWin32OpenGLRenderWindow.h:36
vtkWin32OpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkWin32OpenGLRenderWindow::Palette
HPALETTE Palette
Definition: vtkWin32OpenGLRenderWindow.h:299
vtkWin32OpenGLRenderWindow::NextWindowId
HWND NextWindowId
Definition: vtkWin32OpenGLRenderWindow.h:306
vtkWin32OpenGLRenderWindow::OwnWindow
vtkTypeBool OwnWindow
Definition: vtkWin32OpenGLRenderWindow.h:307
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(void *foo) override
Definition: vtkWin32OpenGLRenderWindow.h:166
vtkWin32OpenGLRenderWindow::SetDeviceContext
void SetDeviceContext(HDC)
vtkWin32OpenGLRenderWindow::InitializeFromCurrentContext
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
vtkWin32OpenGLRenderWindow::SetFullScreen
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
vtkWin32OpenGLRenderWindow::CursorHidden
vtkTypeBool CursorHidden
Definition: vtkWin32OpenGLRenderWindow.h:316
vtkWin32OpenGLRenderWindow::SetSwapControl
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
vtkWin32OpenGLRenderWindow::WindowIdReferenceCount
int WindowIdReferenceCount
Definition: vtkWin32OpenGLRenderWindow.h:319
vtkWin32OpenGLRenderWindow::WindowId
HWND WindowId
Definition: vtkWin32OpenGLRenderWindow.h:304
vtkWin32OpenGLRenderWindow::ContextId
HGLRC ContextId
Definition: vtkWin32OpenGLRenderWindow.h:301
vtkWin32OpenGLRenderWindow::ApplicationInstance
HINSTANCE ApplicationInstance
Definition: vtkWin32OpenGLRenderWindow.h:298
vtkWin32OpenGLRenderWindow::VTKRegisterClass
void VTKRegisterClass()
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(void *foo) override
Definition: vtkWin32OpenGLRenderWindow.h:185
vtkWin32OpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Definition: vtkWin32OpenGLRenderWindow.h:97
vtkWin32OpenGLRenderWindow::WndProc
static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
vtkWin32OpenGLRenderWindow::MessageProc
virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
vtkWin32OpenGLRenderWindow::SetCursorPosition
void SetCursorPosition(int x, int y) override
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkWin32OpenGLRenderWindow::ParentId
HWND ParentId
Definition: vtkWin32OpenGLRenderWindow.h:305
vtkX3D::height
@ height
Definition: vtkX3D.h:260
vtkWin32OpenGLRenderWindow::OldPalette
HPALETTE OldPalette
Definition: vtkWin32OpenGLRenderWindow.h:300
vtkWin32OpenGLRenderWindow::SetSize
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkWin32OpenGLRenderWindow::GetScreenSize
int * GetScreenSize() override
Get the current size of the screen in pixels.
vtkWin32OpenGLRenderWindow::Clean
void Clean()
Clean up device contexts, rendering contexts, etc.
vtkWin32OpenGLRenderWindow::SetStereoCapableWindow
void SetStereoCapableWindow(vtkTypeBool capable) override
Prescribe that the window be created in a stereo-capable mode.
vtkWin32OpenGLRenderWindow::SetDisplayId
void SetDisplayId(void *) override
Dummy stubs for vtkWindow API.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkWin32OpenGLRenderWindow::SetContextId
void SetContextId(HGLRC)
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:31
vtkWin32OpenGLRenderWindow::SetNextWindowId
void SetNextWindowId(void *arg) override
Set the window id of the new window once a WindowRemap is done.
vtkWin32OpenGLRenderWindow::GetGenericWindowId
void * GetGenericWindowId() override
Definition: vtkWin32OpenGLRenderWindow.h:150
vtkWin32OpenGLRenderWindow::GetEventPending
vtkTypeBool GetEventPending() override
Check to see if a mouse button has been pressed or mouse wheel activated.
vtkWin32OpenGLRenderWindow::GetPlatformSupportsRenderWindowSharing
bool GetPlatformSupportsRenderWindowSharing() override
Does this platform support render window data sharing.
Definition: vtkWin32OpenGLRenderWindow.h:178
vtkWin32OpenGLRenderWindow::SetShowWindow
void SetShowWindow(bool val) override
Show or not Show the window.
vtkWin32OpenGLRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkWin32OpenGLRenderWindow::GetSize
int * GetSize() override
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkWin32OpenGLRenderWindow::IsCurrent
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
vtkWin32OpenGLRenderWindow::DeviceContext
HDC DeviceContext
Definition: vtkWin32OpenGLRenderWindow.h:302
vtkWin32OpenGLRenderWindow::New
static vtkWin32OpenGLRenderWindow * New()
vtkWin32OpenGLRenderWindow::CreateAWindow
void CreateAWindow() override
Create a not-off-screen window.
vtkWin32OpenGLRenderWindow::GetWindowId
HWND GetWindowId()
Get the window id.
vtkWin32OpenGLRenderWindow::Finalize
void Finalize(void) override
Finalize the rendering window.
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(HWND)
Set the window's parent id to a pre-existing window.
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(HWND)
Set the window id to a pre-existing window.
vtkWin32OpenGLRenderWindow::WindowRemap
void WindowRemap(void) override
Remap the window.
vtkWin32OpenGLRenderWindow::SetupPalette
virtual void SetupPalette(HDC hDC)
Initialize OpenGL for this window.
vtkWin32OpenGLRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Definition: vtkWin32OpenGLRenderWindow.h:151
vtkWin32OpenGLRenderWindow::DCStack
std::stack< HDC > DCStack
Definition: vtkWin32OpenGLRenderWindow.h:310
vtkWin32OpenGLRenderWindow::Initialize
void Initialize(void) override
Initialize the rendering window.
vtkWin32OpenGLRenderWindow::vtkWin32OpenGLRenderWindow
vtkWin32OpenGLRenderWindow()
vtkWin32OpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkWin32OpenGLRenderWindow::SetupPixelFormatPaletteAndContext
virtual void SetupPixelFormatPaletteAndContext(HDC hDC, DWORD dwFlags, int debug, int bpp=16, int zbpp=16)
vtkWin32OpenGLRenderWindow::CleanUpRenderers
void CleanUpRenderers()
vtkWin32OpenGLRenderWindow::HideCursor
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...
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:52
vtkWin32OpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Definition: vtkWin32OpenGLRenderWindow.h:153
vtkWin32OpenGLRenderWindow::PushContext
void PushContext() override
Ability to push and pop this window's context as the current context.
vtkWin32OpenGLRenderWindow::SetPosition
void SetPosition(int a[2]) override
Definition: vtkWin32OpenGLRenderWindow.h:113
vtkWin32OpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this windows OpenGL context the current context.
vtkWin32OpenGLRenderWindow::ForceMakeCurrent
vtkTypeBool ForceMakeCurrent
Definition: vtkWin32OpenGLRenderWindow.h:317
vtkWin32OpenGLRenderWindow::DetectDPI
bool DetectDPI() override
Attempt to detect and set the DPI of the display device by querying the system.
vtkWin32OpenGLRenderWindow::IsDirect
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
vtkWin32OpenGLRenderWindow::MFChandledWindow
BOOL MFChandledWindow
Definition: vtkWin32OpenGLRenderWindow.h:303
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkWin32OpenGLRenderWindow::SetNextWindowId
void SetNextWindowId(HWND)
Set the window id of the new window once a WindowRemap is done.
vtkWin32OpenGLRenderWindow::WindowInitialize
virtual void WindowInitialize(void)
Create the window.
vtkWin32OpenGLRenderWindow::ContextStack
std::stack< HGLRC > ContextStack
Definition: vtkWin32OpenGLRenderWindow.h:309
vtkOpenGLRenderWindow.h