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
OpenGL rendering window.
virtual void SetOffScreenRendering(int)
Create a window in memory instead of on the screen.
virtual void Finalize()=0
Finalize the rendering process.
virtual void SetWindowInfo(char *)=0
Dummy stubs for vtkWindow API.
virtual void WindowRemap()=0
Remap the rendering window.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
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...
virtual void SetPosition(int a[2])
Set the position of the window.
void SetWindowId(void *foo)
Set the window id to a pre-existing window.
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on...
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
virtual void * GetGenericDrawable()
Dummy stubs for vtkWindow API.
virtual void SetWindowId(void *)=0
Dummy stubs for vtkWindow API.
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
virtual void SetNextWindowInfo(char *)=0
Dummy stubs for vtkWindow API.
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
virtual void * GetGenericParentId()
Dummy stubs for vtkWindow API.
virtual void * GetGenericContext()
Dummy stubs for vtkWindow API.
virtual void SetStereoCapableWindow(int capable)
Prescribe that the window be created in a stereo-capable mode.
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual void SetParentInfo(char *)=0
Dummy stubs for vtkWindow API.
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
virtual void SetParentId(void *)=0
Dummy stubs for vtkWindow API.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
void SetParentId(void *foo)
Set the window's parent id to a pre-existing window.
list of point or cell ids
Definition: vtkIdList.h:36
virtual void SetDisplayId(void *)=0
Dummy stubs for vtkWindow API.
virtual void * GetGenericDisplayId()
Dummy stubs for vtkWindow API.
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
virtual void SetNextWindowId(void *)=0
Dummy stubs for vtkWindow API.
virtual void SetCursorPosition(int, int)
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
virtual void PushContext()
Ability to push and pop this window's context as the current context.
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
virtual bool DetectDPI()
Attempt to detect and set the DPI of the display device by querying the system.
Definition: vtkWindow.h:167
virtual int * GetSize()
Set/Get the size of the window in screen coordinates in pixels.
virtual void * GetGenericWindowId()
Dummy stubs for vtkWindow API.
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
virtual void Start()=0
Initialize the rendering process.
virtual void SetWindowName(const char *)
Get name of rendering window.
virtual void SetPosition(int, int)
Set/Get the position in screen coordinates of the rendering window.
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
virtual void SetSize(int a[2])
Set the size of the window in pixels.
virtual void ShowCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...