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 =========================================================================*/
27 #ifndef vtkWin32OpenGLRenderWindow_h
28 #define vtkWin32OpenGLRenderWindow_h
29 
30 #include "vtkOpenGLRenderWindow.h"
31 #include "vtkRenderingOpenGL2Module.h" // For export macro
32 #include <stack> // for ivar
33 
34 #include "vtkWindows.h" // For windows API
35 
36 class vtkIdList;
37 
38 class VTKRENDERINGOPENGL2_EXPORT vtkWin32OpenGLRenderWindow : public vtkOpenGLRenderWindow
39 {
40 public:
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 SetWindowInfo(const char*) override;
141 
145  void SetNextWindowInfo(const char*) override;
146 
150  void SetParentInfo(const char*) override;
151 
152  void* GetGenericDisplayId() override { return (void*)this->ContextId; }
153  void* GetGenericWindowId() override { return (void*)this->WindowId; }
154  void* GetGenericParentId() override { return (void*)this->ParentId; }
155  void* GetGenericContext() override { return (void*)this->DeviceContext; }
156  void* GetGenericDrawable() override { return (void*)this->WindowId; }
157  void SetDisplayId(void*) override;
158 
162  HWND GetWindowId();
163 
165 
168  void SetWindowId(HWND);
169  void SetWindowId(void* foo) override { this->SetWindowId((HWND)foo); }
171 
176  bool InitializeFromCurrentContext() override;
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  bool IsCurrent() override;
223 
227  const char* ReportCapabilities() override;
228 
232  vtkTypeBool IsDirect() override;
233 
239  vtkTypeBool GetEventPending() override;
240 
242 
245  virtual void SetupPalette(HDC hDC);
246  virtual void SetupPixelFormatPaletteAndContext(
247  HDC hDC, DWORD dwFlags, int debug, int bpp = 16, int zbpp = 16);
249 
253  void Clean();
254 
256 
262  void HideCursor() override;
263  void ShowCursor() override;
264  void SetCursorPosition(int x, int y) override;
266 
270  void SetCurrentCursor(int) override;
271 
272  bool DetectDPI() override;
273 
275 
282  void PushContext() override;
283  void PopContext() override;
285 
295  bool SetSwapControl(int i) override;
296 
297 protected:
299  ~vtkWin32OpenGLRenderWindow() override;
300 
302  HPALETTE Palette;
303  HPALETTE OldPalette;
304  HGLRC ContextId;
307  HWND WindowId;
308  HWND ParentId;
311 
312  std::stack<HGLRC> ContextStack;
313  std::stack<HDC> DCStack;
314 
315  // message handler
316  virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
317 
318  static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
321 
323  void ResizeWhileOffscreen(int xsize, int ysize);
324  void CreateAWindow() override;
325  void DestroyWindow() override;
326  void InitializeApplication();
327  void CleanUpRenderers();
328  void VTKRegisterClass();
329 
330 private:
332  void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
333 };
334 
335 #endif
vtkWin32OpenGLRenderWindow::GetGenericContext
void * GetGenericContext() override
Definition: vtkWin32OpenGLRenderWindow.h:155
vtkOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkWin32OpenGLRenderWindow
Definition: vtkWin32OpenGLRenderWindow.h:38
vtkWin32OpenGLRenderWindow::Palette
HPALETTE Palette
Definition: vtkWin32OpenGLRenderWindow.h:302
vtkWin32OpenGLRenderWindow::NextWindowId
HWND NextWindowId
Definition: vtkWin32OpenGLRenderWindow.h:309
vtkWin32OpenGLRenderWindow::OwnWindow
vtkTypeBool OwnWindow
Definition: vtkWin32OpenGLRenderWindow.h:310
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(void *foo) override
Definition: vtkWin32OpenGLRenderWindow.h:169
vtkWin32OpenGLRenderWindow::CursorHidden
vtkTypeBool CursorHidden
Definition: vtkWin32OpenGLRenderWindow.h:319
vtkOpenGLRenderWindow::SetSwapControl
virtual bool SetSwapControl(int)
Set the number of vertical syncs required between frames.
Definition: vtkOpenGLRenderWindow.h:400
vtkWindow::GetSize
virtual int * GetSize()
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkWin32OpenGLRenderWindow::WindowIdReferenceCount
int WindowIdReferenceCount
Definition: vtkWin32OpenGLRenderWindow.h:322
vtkRenderWindow::SetWindowId
void SetWindowId(void *) override
Definition: vtkRenderWindow.h:615
vtkWin32OpenGLRenderWindow::WindowId
HWND WindowId
Definition: vtkWin32OpenGLRenderWindow.h:307
vtkWin32OpenGLRenderWindow::ContextId
HGLRC ContextId
Definition: vtkWin32OpenGLRenderWindow.h:304
vtkWin32OpenGLRenderWindow::ApplicationInstance
HINSTANCE ApplicationInstance
Definition: vtkWin32OpenGLRenderWindow.h:301
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(void *foo) override
Definition: vtkWin32OpenGLRenderWindow.h:188
vtkWindow::DetectDPI
virtual bool DetectDPI()
Attempt to detect and set the DPI of the display device by querying the system.
Definition: vtkWindow.h:215
vtkWin32OpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Definition: vtkWin32OpenGLRenderWindow.h:100
vtkRenderWindow::WindowRemap
virtual void WindowRemap()
Remap the rendering window.
Definition: vtkRenderWindow.h:403
vtkOpenGLRenderWindow::PopContext
virtual void PopContext()
Definition: vtkOpenGLRenderWindow.h:374
vtkRenderWindow::ShowCursor
virtual void ShowCursor()
Definition: vtkRenderWindow.h:211
vtkRenderWindow::HideCursor
virtual void HideCursor()
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
Definition: vtkRenderWindow.h:210
vtkRenderWindow::SetDisplayId
void SetDisplayId(void *) override
Dummy stubs for vtkWindow API.
Definition: vtkRenderWindow.h:614
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkWin32OpenGLRenderWindow::ParentId
HWND ParentId
Definition: vtkWin32OpenGLRenderWindow.h:308
vtkRenderWindow::Finalize
virtual void Finalize()
Finalize the rendering process.
Definition: vtkRenderWindow.h:176
vtkX3D::height
@ height
Definition: vtkX3D.h:260
vtkWin32OpenGLRenderWindow::OldPalette
HPALETTE OldPalette
Definition: vtkWin32OpenGLRenderWindow.h:303
vtkOpenGLRenderWindow::InitializeFromCurrentContext
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
vtkRenderWindow::SetNextWindowId
virtual void SetNextWindowId(void *)
Definition: vtkRenderWindow.h:616
vtkRenderWindow::MakeCurrent
void MakeCurrent() override
Attempt to make this window the current graphics context for the calling thread.
Definition: vtkRenderWindow.h:651
vtkRenderWindow::IsDirect
virtual vtkTypeBool IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
Definition: vtkRenderWindow.h:687
vtkRenderWindow::GetEventPending
virtual vtkTypeBool GetEventPending()
Check to see if a mouse button has been pressed.
Definition: vtkRenderWindow.h:556
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:30
vtkWin32OpenGLRenderWindow::GetGenericWindowId
void * GetGenericWindowId() override
Definition: vtkWin32OpenGLRenderWindow.h:153
vtkWin32OpenGLRenderWindow::GetPlatformSupportsRenderWindowSharing
bool GetPlatformSupportsRenderWindowSharing() override
Does this platform support render window data sharing.
Definition: vtkWin32OpenGLRenderWindow.h:181
vtkRenderWindow::SetCurrentCursor
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
vtkWindow::GetScreenSize
virtual int * GetScreenSize()
Get the current size of the screen in pixels.
Definition: vtkWindow.h:104
vtkWin32OpenGLRenderWindow::DeviceContext
HDC DeviceContext
Definition: vtkWin32OpenGLRenderWindow.h:305
vtkRenderWindow::SetStereoCapableWindow
virtual void SetStereoCapableWindow(vtkTypeBool capable)
vtkRenderWindow::SetParentId
void SetParentId(void *) override
Definition: vtkRenderWindow.h:617
vtkWin32OpenGLRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Definition: vtkWin32OpenGLRenderWindow.h:154
vtkOpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkOpenGLRenderWindow::SetSize
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkRenderWindow::SetCursorPosition
virtual void SetCursorPosition(int, int)
Definition: vtkRenderWindow.h:212
vtkWin32OpenGLRenderWindow::DCStack
std::stack< HDC > DCStack
Definition: vtkWin32OpenGLRenderWindow.h:313
vtkOpenGLRenderWindow::Frame
void Frame() override
A termination method performed at the end of the rendering process to do things like swapping buffers...
vtkRenderWindow::SetFullScreen
virtual void SetFullScreen(vtkTypeBool)
Turn on/off rendering full screen window size.
Definition: vtkRenderWindow.h:227
vtkOpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
vtkWindow::SetShowWindow
virtual void SetShowWindow(bool)
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:51
vtkWin32OpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Definition: vtkWin32OpenGLRenderWindow.h:156
vtkWin32OpenGLRenderWindow::SetPosition
void SetPosition(int a[2]) override
Definition: vtkWin32OpenGLRenderWindow.h:116
vtkRenderWindow::IsCurrent
virtual bool IsCurrent()
Tells if this window is the current graphics context for the calling thread.
Definition: vtkRenderWindow.h:657
vtkWin32OpenGLRenderWindow::ForceMakeCurrent
vtkTypeBool ForceMakeCurrent
Definition: vtkWin32OpenGLRenderWindow.h:320
vtkRenderWindow::New
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on,...
vtkOpenGLRenderWindow::PushContext
virtual void PushContext()
Ability to push and pop this window's context as the current context.
Definition: vtkOpenGLRenderWindow.h:373
vtkWin32OpenGLRenderWindow::MFChandledWindow
BOOL MFChandledWindow
Definition: vtkWin32OpenGLRenderWindow.h:306
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkOpenGLRenderWindow::Initialize
virtual void Initialize(void)
Initialize the rendering window.
Definition: vtkOpenGLRenderWindow.h:342
vtkOpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkWin32OpenGLRenderWindow::ContextStack
std::stack< HGLRC > ContextStack
Definition: vtkWin32OpenGLRenderWindow.h:312
vtkOpenGLRenderWindow.h