VTK
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 "vtkRenderingOpenGL2Module.h" // For export macro
28 #include <stack> // for ivar
29 #include "vtkOpenGLRenderWindow.h"
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);
41 
45  virtual void Start(void);
46 
50  void Frame(void);
51 
55  virtual void WindowInitialize(void);
56 
63  virtual void Initialize(void);
64 
70  virtual void Finalize(void);
71 
75  virtual void SetFullScreen(int);
76 
80  virtual void WindowRemap(void);
81 
85  virtual void PrefFullScreen(void);
86 
88 
91  virtual void SetSize(int,int);
92  virtual void SetSize(int a[2]) {vtkOpenGLRenderWindow::SetSize(a);};
94 
98  virtual int *GetSize();
99 
101 
104  virtual void SetPosition(int,int);
105  virtual void SetPosition(int a[2]) {vtkOpenGLRenderWindow::SetPosition(a);};
107 
111  virtual int *GetScreenSize();
112 
116  virtual int *GetPosition();
117 
122  virtual void SetWindowName(const char *);
123 
127  void SetWindowInfo(char *);
128 
132  void SetNextWindowInfo(char *);
133 
137  void SetParentInfo(char *);
138 
139  virtual void *GetGenericDisplayId() {return (void *)this->ContextId;};
140  virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
141  virtual void *GetGenericParentId() {return (void *)this->ParentId;};
142  virtual void *GetGenericContext() {return (void *)this->DeviceContext;};
143  virtual void *GetGenericDrawable() {return (void *)this->WindowId;};
144  virtual void SetDisplayId(void *);
145 
149  virtual HWND GetWindowId();
150 
152 
155  virtual void SetWindowId(HWND);
156  void SetWindowId(void *foo) {this->SetWindowId((HWND)foo);};
158 
163  virtual bool InitializeFromCurrentContext();
164 
166 
169  virtual void SetParentId(HWND);
170  void SetParentId(void *foo) {this->SetParentId((HWND)foo);};
172 
173  void SetContextId(HGLRC); // hsr
174  void SetDeviceContext(HDC); // hsr
175 
179  virtual void SetNextWindowId(HWND);
180 
186  virtual void SetNextWindowId(void *arg);
187 
194  virtual void SetStereoCapableWindow(int capable);
195 
199  void MakeCurrent();
200 
204  virtual bool IsCurrent();
205 
209  const char *ReportCapabilities();
210 
214  int IsDirect();
215 
221  virtual int GetEventPending();
222 
224 
227  virtual void SetupPalette(HDC hDC);
228  virtual void SetupPixelFormatPaletteAndContext(
229  HDC hDC, DWORD dwFlags, int debug,
230  int bpp=16, int zbpp=16);
232 
236  void Clean();
237 
239 
245  void HideCursor();
246  void ShowCursor();
247  void SetCursorPosition(int x, int y);
249 
253  virtual void SetCurrentCursor(int);
254 
255  virtual bool DetectDPI();
256 
261  virtual void SetOffScreenRendering(int offscreen);
262 
264 
271  virtual void PushContext();
272  virtual void PopContext();
274 
275 protected:
278 
279  HINSTANCE ApplicationInstance;
280  HPALETTE Palette;
281  HPALETTE OldPalette;
282  HGLRC ContextId;
283  HDC DeviceContext;
284  BOOL MFChandledWindow;
285  HWND WindowId;
286  HWND ParentId;
287  HWND NextWindowId;
288  int OwnWindow;
289  int ScreenSize[2];
290 
291  std::stack<HGLRC> ContextStack;
292  std::stack<HDC> DCStack;
293 
294  int CreatingOffScreenWindow; // to avoid recursion (and memory leaks...)
295 
296  // message handler
297  virtual LRESULT MessageProc(HWND hWnd, UINT message,
298  WPARAM wParam, LPARAM lParam);
299 
300  static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
301  WPARAM wParam, LPARAM lParam);
302  int CursorHidden;
303  int ForceMakeCurrent;
304 
305  char *Capabilities;
306  int WindowIdReferenceCount;
307  void ResizeWhileOffscreen(int xsize, int ysize);
308  virtual void CreateAWindow();
309  virtual void DestroyWindow();
310  void InitializeApplication();
311  void CleanUpOffScreenRendering(void);
312  void CreateOffScreenWindow(int width,int height);
313  void CleanUpRenderers();
314  void VTKRegisterClass();
315 
316 private:
317  vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
318  void operator=(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
319 };
320 
321 
322 #endif
vtkWin32OpenGLRenderWindow::GetGenericDrawable
virtual void * GetGenericDrawable()
Definition: vtkWin32OpenGLRenderWindow.h:143
vtkOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkRenderWindow::SetNextWindowInfo
virtual void SetNextWindowInfo(char *)=0
vtkWin32OpenGLRenderWindow
OpenGL rendering window.
Definition: vtkWin32OpenGLRenderWindow.h:32
vtkRenderWindow::Start
virtual void Start()=0
Initialize the rendering process.
vtkRenderWindow::SetStereoCapableWindow
virtual void SetStereoCapableWindow(int capable)
vtkWin32OpenGLRenderWindow::GetGenericDisplayId
virtual void * GetGenericDisplayId()
Definition: vtkWin32OpenGLRenderWindow.h:139
vtkWin32OpenGLRenderWindow::GetGenericParentId
virtual void * GetGenericParentId()
Definition: vtkWin32OpenGLRenderWindow.h:141
vtkRenderWindow::ShowCursor
virtual void ShowCursor()=0
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(void *foo)
Definition: vtkWin32OpenGLRenderWindow.h:156
vtkRenderWindow::SetFullScreen
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
vtkWindow::GetSize
virtual int * GetSize()
Set/Get the size of the window in screen coordinates in pixels.
vtkRenderWindow::SetDisplayId
virtual void SetDisplayId(void *)=0
Dummy stubs for vtkWindow API.
vtkRenderWindow::HideCursor
virtual void HideCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
vtkRenderWindow::Finalize
virtual void Finalize()=0
Finalize the rendering process.
vtkRenderWindow::SetWindowInfo
virtual void SetWindowInfo(char *)=0
vtkWindow::GetScreenSize
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
vtkRenderWindow::IsCurrent
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
vtkWindow::DetectDPI
virtual bool DetectDPI()
Attempt to detect and set the DPI of the display device by querying the system.
Definition: vtkWindow.h:164
vtkRenderWindow::WindowRemap
virtual void WindowRemap()=0
Remap the rendering window.
vtkOpenGLRenderWindow::PopContext
virtual void PopContext()
Definition: vtkOpenGLRenderWindow.h:379
vtkOpenGLRenderWindow.h
vtkWin32OpenGLRenderWindow::GetGenericContext
virtual void * GetGenericContext()
Definition: vtkWin32OpenGLRenderWindow.h:142
vtkX3D::height
Definition: vtkX3D.h:254
vtkWindow::SetWindowName
virtual void SetWindowName(const char *)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkRenderWindow::SetCurrentCursor
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
vtkRenderWindow::ReportCapabilities
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
Definition: vtkRenderWindow.h:646
vtkWin32OpenGLRenderWindow::SetPosition
virtual void SetPosition(int a[2])
Definition: vtkWin32OpenGLRenderWindow.h:105
vtkRenderWindow::SetWindowId
virtual void SetWindowId(void *)=0
vtkWindow::GetPosition
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
vtkWin32OpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
Definition: vtkWin32OpenGLRenderWindow.h:92
vtkRenderWindow::SetCursorPosition
virtual void SetCursorPosition(int, int)
Definition: vtkRenderWindow.h:195
vtkWin32OpenGLRenderWindow::DCStack
std::stack< HDC > DCStack
Definition: vtkWin32OpenGLRenderWindow.h:292
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(void *foo)
Definition: vtkWin32OpenGLRenderWindow.h:170
vtkRenderWindow::SetParentInfo
virtual void SetParentInfo(char *)=0
vtkRenderWindow::SetParentId
virtual void SetParentId(void *)=0
vtkRenderWindow::MakeCurrent
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
vtkOpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
vtkRenderWindow::IsDirect
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
Definition: vtkRenderWindow.h:656
vtkWin32OpenGLRenderWindow::GetGenericWindowId
virtual void * GetGenericWindowId()
Definition: vtkWin32OpenGLRenderWindow.h:140
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:38
vtkRenderWindow::InitializeFromCurrentContext
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
Definition: vtkRenderWindow.h:614
vtkWindow::SetPosition
virtual void SetPosition(int, int)
vtkRenderWindow::Frame
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
vtkRenderWindow::SetNextWindowId
virtual void SetNextWindowId(void *)=0
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:378
vtkWindow::SetOffScreenRendering
virtual void SetOffScreenRendering(int)
Create a window in memory instead of on the screen.
vtkRenderWindow::GetEventPending
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
vtkOpenGLRenderWindow::Initialize
virtual void Initialize(void)
Initialize the rendering window.
Definition: vtkOpenGLRenderWindow.h:347
vtkOpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkWin32OpenGLRenderWindow::ContextStack
std::stack< HGLRC > ContextStack
Definition: vtkWin32OpenGLRenderWindow.h:291
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.