VTK  9.1.0
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 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 
167  HWND GetWindowId();
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 
242  vtkTypeBool IsDirect() override;
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 
307 protected:
310 
312  HPALETTE Palette;
313  HPALETTE OldPalette;
314  HGLRC ContextId;
317  HWND WindowId;
318  HWND ParentId;
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 
343 private:
345  void operator=(const vtkWin32OpenGLRenderWindow&) = delete;
346 };
347 
348 #endif
vtkWin32OpenGLRenderWindow::GetGenericContext
void * GetGenericContext() override
Dummy stubs for vtkWindow API.
Definition: vtkWin32OpenGLRenderWindow.h:160
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
Ability to push and pop this window's context as the current context.
vtkWin32OpenGLRenderWindow::ShowCursor
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...
vtkWin32OpenGLRenderWindow::SetCurrentCursor
void SetCurrentCursor(int) override
Change the shape of the cursor.
vtkWin32OpenGLRenderWindow
Definition: vtkWin32OpenGLRenderWindow.h:39
vtkWin32OpenGLRenderWindow::Repositioning
vtkTypeBool Repositioning
Definition: vtkWin32OpenGLRenderWindow.h:322
vtkWin32OpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkWin32OpenGLRenderWindow::Palette
HPALETTE Palette
Definition: vtkWin32OpenGLRenderWindow.h:312
vtkWin32OpenGLRenderWindow::NextWindowId
HWND NextWindowId
Definition: vtkWin32OpenGLRenderWindow.h:319
vtkWin32OpenGLRenderWindow::OwnWindow
vtkTypeBool OwnWindow
Definition: vtkWin32OpenGLRenderWindow.h:320
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(void *foo) override
Set the window id to a pre-existing window.
Definition: vtkWin32OpenGLRenderWindow.h:174
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:332
vtkWin32OpenGLRenderWindow::SetSwapControl
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
vtkWin32OpenGLRenderWindow::WindowIdReferenceCount
int WindowIdReferenceCount
Definition: vtkWin32OpenGLRenderWindow.h:335
vtkWin32OpenGLRenderWindow::WindowId
HWND WindowId
Definition: vtkWin32OpenGLRenderWindow.h:317
vtkWin32OpenGLRenderWindow::ContextId
HGLRC ContextId
Definition: vtkWin32OpenGLRenderWindow.h:314
vtkWin32OpenGLRenderWindow::ApplicationInstance
HINSTANCE ApplicationInstance
Definition: vtkWin32OpenGLRenderWindow.h:311
vtkWin32OpenGLRenderWindow::VTKRegisterClass
void VTKRegisterClass()
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(void *foo) override
Set the window's parent id to a pre-existing window.
Definition: vtkWin32OpenGLRenderWindow.h:193
vtkWin32OpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
Definition: vtkWin32OpenGLRenderWindow.h:100
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
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:48
vtkWin32OpenGLRenderWindow::ParentId
HWND ParentId
Definition: vtkWin32OpenGLRenderWindow.h:318
vtkX3D::height
@ height
Definition: vtkX3D.h:260
vtkWin32OpenGLRenderWindow::OldPalette
HPALETTE OldPalette
Definition: vtkWin32OpenGLRenderWindow.h:313
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::Resizing
vtkTypeBool Resizing
Definition: vtkWin32OpenGLRenderWindow.h:321
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.
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
vtkWin32OpenGLRenderWindow::SetContextId
void SetContextId(HGLRC)
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:140
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
Dummy stubs for vtkWindow API.
Definition: vtkWin32OpenGLRenderWindow.h:158
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:186
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:315
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.
vtkX3D::string
@ string
Definition: vtkX3D.h:496
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
Dummy stubs for vtkWindow API.
Definition: vtkWin32OpenGLRenderWindow.h:159
vtkWin32OpenGLRenderWindow::DEFAULT_BASE_WINDOW_NAME
static const std::string DEFAULT_BASE_WINDOW_NAME
Definition: vtkWin32OpenGLRenderWindow.h:323
vtkWin32OpenGLRenderWindow::DCStack
std::stack< HDC > DCStack
Definition: vtkWin32OpenGLRenderWindow.h:326
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)
Initialize OpenGL for this window.
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:83
vtkWin32OpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
Definition: vtkWin32OpenGLRenderWindow.h:161
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
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
Definition: vtkWin32OpenGLRenderWindow.h:116
vtkWin32OpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this windows OpenGL context the current context.
vtkWin32OpenGLRenderWindow::ForceMakeCurrent
vtkTypeBool ForceMakeCurrent
Definition: vtkWin32OpenGLRenderWindow.h:333
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::ReleaseCurrent
void ReleaseCurrent() override
Release the current context.
vtkWin32OpenGLRenderWindow::MFChandledWindow
BOOL MFChandledWindow
Definition: vtkWin32OpenGLRenderWindow.h:316
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:325
vtkOpenGLRenderWindow.h