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 =========================================================================*/
26 #ifndef vtkWin32OpenGLRenderWindow_h
27 #define vtkWin32OpenGLRenderWindow_h
28 
29 #include "vtkRenderingOpenGLModule.h" // For export macro
30 #include "vtkOpenGLRenderWindow.h"
31 
32 class vtkIdList;
33 
35 {
36 public:
39  void PrintSelf(ostream& os, vtkIndent indent);
40 
42  virtual void Start(void);
43 
45  void Frame(void);
46 
48  virtual void WindowInitialize(void);
49 
54  virtual void Initialize(void);
55 
60  virtual void Finalize(void);
61 
63  virtual void SetFullScreen(int);
64 
66  virtual void WindowRemap(void);
67 
69  virtual void PrefFullScreen(void);
70 
72 
73  virtual void SetSize(int width, int height);
74  virtual void SetSize(int a[2]) { vtkOpenGLRenderWindow::SetSize(a); }
76 
78  virtual int *GetSize();
79 
81 
82  virtual void SetPosition(int x, int y);
83  virtual void SetPosition(int a[2]) { vtkOpenGLRenderWindow::SetPosition(a); }
85 
87  virtual int *GetScreenSize();
88 
90  virtual int *GetPosition();
91 
94  virtual void SetWindowName(const char*);
95 
97  void SetWindowInfo(char*);
98 
100  void SetNextWindowInfo(char*);
101 
103  void SetParentInfo(char*);
104 
105  //BTX
106  virtual void *GetGenericDisplayId() { return (void*)this->ContextId; }
107  virtual void *GetGenericWindowId() { return (void*)this->WindowId; }
108  virtual void *GetGenericParentId() { return (void*)this->ParentId; }
109  virtual void *GetGenericContext() { return (void*)this->DeviceContext; }
110  virtual void *GetGenericDrawable() { return (void*)this->WindowId; }
111  virtual void SetDisplayId(void*);
112 
114  virtual HWND GetWindowId();
115 
117 
118  virtual void SetWindowId(HWND);
119  void SetWindowId(void *foo) { this->SetWindowId((HWND)foo); }
121 
124  virtual bool InitializeFromCurrentContext();
125 
127 
128  virtual void SetParentId(HWND);
129  void SetParentId(void *foo) { this->SetParentId((HWND)foo); }
131 
133  void SetContextId(HGLRC);
134 
136  void SetDeviceContext(HDC);
137 
139  virtual void SetNextWindowId(HWND);
140 
143  virtual void SetNextWindowId(void *arg);
144 
145  //ETX
146 
151  virtual void SetStereoCapableWindow(int capable);
152 
154  void MakeCurrent();
155 
158  virtual bool IsCurrent();
159 
161  const char *ReportCapabilities();
162 
164  int SupportsOpenGL();
165 
167  int IsDirect();
168 
172  virtual int GetEventPending();
173 
175 
177  void SetupMemoryRendering(int x, int y, HDC prn);
178  void SetupMemoryRendering(HBITMAP hbmp);
179  void ResumeScreenRendering(void);
180  HDC GetMemoryDC();
181  unsigned char *GetMemoryData() { return this->MemoryData; }
183 
185 
186  virtual void SetupPalette(HDC hDC);
187  virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
188  int bpp = 16, int zbpp = 16);
190 
192  void Clean();
193 
195 
197  void HideCursor();
198  void ShowCursor();
200 
202  void SetCursorPosition(int x, int y);
203 
205  virtual void SetCurrentCursor(int);
206 
207  virtual bool DetectDPI();
208 
211  virtual void SetOffScreenRendering(int offscreen);
212 
213 protected:
216 
218  HPALETTE Palette;
219  HPALETTE OldPalette;
220  HGLRC ContextId;
223  HWND WindowId;
224  HWND ParentId;
227  int ScreenSize[2];
228 
229  // the following is used to support rendering into memory
230  BITMAPINFO MemoryDataHeader;
231  HBITMAP MemoryBuffer;
232  unsigned char *MemoryData; // the data in the DIBSection
234 
236  int ScreenWindowSize[2];
240 
241  int CreatingOffScreenWindow; // to avoid recursion (and memory leaks...)
242 
243  //BTX
244  // message handler
245  virtual LRESULT MessageProc(HWND hWnd, UINT message,
246  WPARAM wParam, LPARAM lParam);
247 
248  static LRESULT APIENTRY WndProc(HWND hWnd, UINT message,
249  WPARAM wParam, LPARAM lParam);
250  //ETX
253 
256  void ResizeWhileOffscreen(int xsize, int ysize);
257  virtual void CreateAWindow();
258  virtual void DestroyWindow();
259  void InitializeApplication();
260  void CleanUpOffScreenRendering(void);
261  void CreateOffScreenDC(int xsize, int ysize, HDC aHdc);
262  void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
263  void CreateOffScreenWindow(int width, int height);
264  void SaveScreenRendering();
265  void CleanUpRenderers();
266 
267 private:
268  vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&); // Not implemented.
269  void operator=(const vtkWin32OpenGLRenderWindow&); // Not implemented.
270 };
271 
272 #endif
OpenGL rendering window.
virtual void SetOffScreenRendering(int)
virtual void Finalize()=0
virtual void SetWindowInfo(char *)=0
virtual void WindowRemap()=0
void PrintSelf(ostream &os, vtkIndent indent)
virtual void HideCursor()=0
static vtkRenderWindow * New()
virtual int * GetScreenSize()=0
virtual void SetWindowId(void *)=0
virtual void SetCurrentCursor(int)
virtual void SetNextWindowInfo(char *)=0
virtual void SetFullScreen(int)=0
virtual int GetEventPending()=0
virtual void SetSize(int, int)
virtual void SetStereoCapableWindow(int capable)
virtual const char * ReportCapabilities()
virtual int IsDirect()
virtual int SupportsOpenGL()
virtual void SetParentInfo(char *)=0
virtual bool IsCurrent()=0
virtual void SetParentId(void *)=0
a simple class to control print indentation
Definition: vtkIndent.h:38
virtual void DestroyWindow()=0
list of point or cell ids
Definition: vtkIdList.h:35
virtual void SetDisplayId(void *)=0
#define VTKRENDERINGOPENGL_EXPORT
virtual void MakeCurrent()=0
virtual void SetNextWindowId(void *)=0
virtual void SetCursorPosition(int, int)
virtual int * GetPosition()
virtual void Frame()=0
virtual bool DetectDPI()
Definition: vtkWindow.h:139
virtual int * GetSize()
virtual bool InitializeFromCurrentContext()
virtual void Start()=0
virtual void SetWindowName(const char *)
virtual void SetPosition(int, int)
virtual void CreateAWindow()=0
virtual void ShowCursor()=0