VTK
vtkWin32OpenGLRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkWin32OpenGLRenderWindow.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 "vtkRenderingOpenGLModule.h" // For export macro
31 #include "vtkOpenGLRenderWindow.h"
32 
33 class vtkIdList;
34 
35 class VTKRENDERINGOPENGL_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 
90  virtual void SetSize(int width, int height);
91  virtual void SetSize(int a[2]) { vtkOpenGLRenderWindow::SetSize(a); }
92 
96  virtual int *GetSize();
97 
101  virtual void SetPosition(int x, int y);
102  virtual void SetPosition(int a[2]) { vtkOpenGLRenderWindow::SetPosition(a); }
103 
107  virtual int *GetScreenSize();
108 
112  virtual int *GetPosition();
113 
118  virtual void SetWindowName(const char*);
119 
123  void SetWindowInfo(char*);
124 
128  void SetNextWindowInfo(char*);
129 
133  void SetParentInfo(char*);
134 
135  virtual void *GetGenericDisplayId() { return (void*)this->ContextId; }
136  virtual void *GetGenericWindowId() { return (void*)this->WindowId; }
137  virtual void *GetGenericParentId() { return (void*)this->ParentId; }
138  virtual void *GetGenericContext() { return (void*)this->DeviceContext; }
139  virtual void *GetGenericDrawable() { return (void*)this->WindowId; }
140  virtual void SetDisplayId(void*);
141 
145  virtual HWND GetWindowId();
146 
150  virtual void SetWindowId(HWND);
151  void SetWindowId(void *foo) { this->SetWindowId((HWND)foo); }
152 
157  virtual bool InitializeFromCurrentContext();
158 
162  virtual void SetParentId(HWND);
163  void SetParentId(void *foo) { this->SetParentId((HWND)foo); }
164 
168  void SetContextId(HGLRC);
169 
173  void SetDeviceContext(HDC);
174 
178  virtual void SetNextWindowId(HWND);
179 
185  virtual void SetNextWindowId(void *arg);
186 
193  virtual void SetStereoCapableWindow(int capable);
194 
198  void MakeCurrent();
199 
203  virtual bool IsCurrent();
204 
208  const char *ReportCapabilities();
209 
213  int SupportsOpenGL();
214 
218  int IsDirect();
219 
225  virtual int GetEventPending();
226 
228 
233  void SetupMemoryRendering(int x, int y, HDC prn);
234  void SetupMemoryRendering(HBITMAP hbmp);
235  void ResumeScreenRendering(void);
236  HDC GetMemoryDC();
237  unsigned char *GetMemoryData() { return this->MemoryData; }
239 
241 
244  virtual void SetupPalette(HDC hDC);
245  virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
246  int bpp = 16, int zbpp = 16);
248 
252  void Clean();
253 
255 
259  void HideCursor();
260  void ShowCursor();
262 
265  void SetCursorPosition(int x, int y);
266 
270  virtual void SetCurrentCursor(int);
271 
272  virtual bool DetectDPI();
273 
278  virtual void SetOffScreenRendering(int offscreen);
279 
280 protected:
283 
285  HPALETTE Palette;
286  HPALETTE OldPalette;
287  HGLRC ContextId;
290  HWND WindowId;
291  HWND ParentId;
294  int ScreenSize[2];
295 
296  // the following is used to support rendering into memory
297  BITMAPINFO MemoryDataHeader;
298  HBITMAP MemoryBuffer;
299  unsigned char *MemoryData; // the data in the DIBSection
301 
303  int ScreenWindowSize[2];
307 
308  int CreatingOffScreenWindow; // to avoid recursion (and memory leaks...)
309 
310  // message handler
311  virtual LRESULT MessageProc(HWND hWnd, UINT message,
312  WPARAM wParam, LPARAM lParam);
313 
314  static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
315  WPARAM wParam, LPARAM lParam);
316 
319 
322  void ResizeWhileOffscreen(int xsize, int ysize);
323  virtual void CreateAWindow();
324  virtual void DestroyWindow();
325  void InitializeApplication();
326  void CleanUpOffScreenRendering(void);
327  void CreateOffScreenDC(int xsize, int ysize, HDC aHdc);
328  void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
329  void CreateOffScreenWindow(int width, int height);
330  void SaveScreenRendering();
331  void CleanUpRenderers();
332 
333 private:
334  vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
335  void operator=(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
336 };
337 
338 #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.
unsigned char * GetMemoryData()
These methods can be used by MFC applications to support print preview and printing, or more general rendering into memory.
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/Get the position in screen coordinates of the rendering window.
void SetWindowId(void *foo)
Dummy stubs for vtkWindow API.
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)
Dummy stubs for vtkWindow API.
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 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:164
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 int SupportsOpenGL()
Does this render window support OpenGL? 0-false, 1-true.
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates 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...