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 =========================================================================*/
24 #ifndef vtkWin32OpenGLRenderWindow_h
25 #define vtkWin32OpenGLRenderWindow_h
26 
27 #include "vtkRenderingOpenGLModule.h" // For export macro
28 #include "vtkOpenGLRenderWindow.h"
29 
30 class vtkIdList;
31 
32 class VTKRENDERINGOPENGL_EXPORT vtkWin32OpenGLRenderWindow : public vtkOpenGLRenderWindow
33 {
34 public:
37  void PrintSelf(ostream& os, vtkIndent indent);
38 
42  virtual void Start(void);
43 
47  void Frame(void);
48 
52  virtual void WindowInitialize(void);
53 
60  virtual void Initialize(void);
61 
67  virtual void Finalize(void);
68 
72  virtual void SetFullScreen(int);
73 
77  virtual void WindowRemap(void);
78 
82  virtual void PrefFullScreen(void);
83 
87  virtual void SetSize(int width, int height);
88  virtual void SetSize(int a[2]) { vtkOpenGLRenderWindow::SetSize(a); }
89 
93  virtual int *GetSize();
94 
98  virtual void SetPosition(int x, int y);
99  virtual void SetPosition(int a[2]) { vtkOpenGLRenderWindow::SetPosition(a); }
100 
104  virtual int *GetScreenSize();
105 
109  virtual int *GetPosition();
110 
115  virtual void SetWindowName(const char*);
116 
120  void SetWindowInfo(char*);
121 
125  void SetNextWindowInfo(char*);
126 
130  void SetParentInfo(char*);
131 
132  virtual void *GetGenericDisplayId() { return (void*)this->ContextId; }
133  virtual void *GetGenericWindowId() { return (void*)this->WindowId; }
134  virtual void *GetGenericParentId() { return (void*)this->ParentId; }
135  virtual void *GetGenericContext() { return (void*)this->DeviceContext; }
136  virtual void *GetGenericDrawable() { return (void*)this->WindowId; }
137  virtual void SetDisplayId(void*);
138 
142  virtual HWND GetWindowId();
143 
147  virtual void SetWindowId(HWND);
148  void SetWindowId(void *foo) { this->SetWindowId((HWND)foo); }
149 
154  virtual bool InitializeFromCurrentContext();
155 
159  virtual void SetParentId(HWND);
160  void SetParentId(void *foo) { this->SetParentId((HWND)foo); }
161 
165  void SetContextId(HGLRC);
166 
170  void SetDeviceContext(HDC);
171 
175  virtual void SetNextWindowId(HWND);
176 
182  virtual void SetNextWindowId(void *arg);
183 
190  virtual void SetStereoCapableWindow(int capable);
191 
195  void MakeCurrent();
196 
200  virtual bool IsCurrent();
201 
205  const char *ReportCapabilities();
206 
210  int SupportsOpenGL();
211 
215  int IsDirect();
216 
222  virtual int GetEventPending();
223 
225 
230  void SetupMemoryRendering(int x, int y, HDC prn);
231  void SetupMemoryRendering(HBITMAP hbmp);
232  void ResumeScreenRendering(void);
233  HDC GetMemoryDC();
234  unsigned char *GetMemoryData() { return this->MemoryData; }
236 
238 
241  virtual void SetupPalette(HDC hDC);
242  virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
243  int bpp = 16, int zbpp = 16);
245 
249  void Clean();
250 
252 
256  void HideCursor();
257  void ShowCursor();
259 
262  void SetCursorPosition(int x, int y);
263 
267  virtual void SetCurrentCursor(int);
268 
269  virtual bool DetectDPI();
270 
275  virtual void SetOffScreenRendering(int offscreen);
276 
277 protected:
280 
282  HPALETTE Palette;
283  HPALETTE OldPalette;
284  HGLRC ContextId;
287  HWND WindowId;
288  HWND ParentId;
291  int ScreenSize[2];
292 
293  // the following is used to support rendering into memory
294  BITMAPINFO MemoryDataHeader;
295  HBITMAP MemoryBuffer;
296  unsigned char *MemoryData; // the data in the DIBSection
298 
300  int ScreenWindowSize[2];
304 
305  int CreatingOffScreenWindow; // to avoid recursion (and memory leaks...)
306 
307  // message handler
308  virtual LRESULT MessageProc(HWND hWnd, UINT message,
309  WPARAM wParam, LPARAM lParam);
310 
311  static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
312  WPARAM wParam, LPARAM lParam);
313 
316 
319  void ResizeWhileOffscreen(int xsize, int ysize);
320  virtual void CreateAWindow();
321  virtual void DestroyWindow();
322  void InitializeApplication();
323  void CleanUpOffScreenRendering(void);
324  void CreateOffScreenDC(int xsize, int ysize, HDC aHdc);
325  void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
326  void CreateOffScreenWindow(int width, int height);
327  void SaveScreenRendering();
328  void CleanUpRenderers();
329 
330 private:
331  vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
332  void operator=(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
333 };
334 
335 #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: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 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...