VTK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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 =========================================================================*/
32 #ifndef __vtkWin32OpenGLRenderWindow_h
33 #define __vtkWin32OpenGLRenderWindow_h
34 
35 #include "vtkRenderingOpenGLModule.h" // For export macro
36 #include "vtkOpenGLRenderWindow.h"
37 
38 class vtkIdList;
39 
41 {
42 public:
45  void PrintSelf(ostream& os, vtkIndent indent);
46 
48  virtual void Start(void);
49 
51  void Frame(void);
52 
54  virtual void WindowInitialize(void);
55 
60  virtual void Initialize(void);
61 
66  virtual void Finalize(void);
67 
69  virtual void SetFullScreen(int);
70 
72  virtual void WindowRemap(void);
73 
75  virtual void PrefFullScreen(void);
76 
78 
79  virtual void SetSize(int,int);
80  virtual void SetSize(int a[2]) {vtkOpenGLRenderWindow::SetSize(a);};
82 
84  virtual int *GetSize();
85 
87 
88  virtual void SetPosition(int,int);
89  virtual void SetPosition(int a[2]) {vtkOpenGLRenderWindow::SetPosition(a);};
91 
93  virtual int *GetScreenSize();
94 
96  virtual int *GetPosition();
97 
100  virtual void SetWindowName(const char *);
101 
103  void SetWindowInfo(char *);
104 
106  void SetNextWindowInfo(char *);
107 
109  void SetParentInfo(char *);
110 
111  //BTX
112  virtual void *GetGenericDisplayId() {return (void *)this->ContextId;};
113  virtual void *GetGenericWindowId() {return (void *)this->WindowId;};
114  virtual void *GetGenericParentId() {return (void *)this->ParentId;};
115  virtual void *GetGenericContext() {return (void *)this->DeviceContext;};
116  virtual void *GetGenericDrawable() {return (void *)this->WindowId;};
117  virtual void SetDisplayId(void *);
118 
120  virtual HWND GetWindowId();
121 
123 
124  virtual void SetWindowId(HWND);
125  void SetWindowId(void *foo) {this->SetWindowId((HWND)foo);};
127 
130  virtual bool InitializeFromCurrentContext();
131 
133 
134  virtual void SetParentId(HWND);
135  void SetParentId(void *foo) {this->SetParentId((HWND)foo);};
137 
138  void SetContextId(HGLRC); // hsr
139  void SetDeviceContext(HDC); // hsr
140 
142  virtual void SetNextWindowId(HWND);
143 
146  virtual void SetNextWindowId(void *arg);
147 
148  //ETX
149 
154  virtual void SetStereoCapableWindow(int capable);
155 
157  void MakeCurrent();
158 
161  virtual bool IsCurrent();
162 
164  const char *ReportCapabilities();
165 
167  int SupportsOpenGL();
168 
170  int IsDirect();
171 
175  virtual int GetEventPending();
176 
178 
180  void SetupMemoryRendering(int x, int y, HDC prn);
181  void SetupMemoryRendering(HBITMAP hbmp);
182  void ResumeScreenRendering(void);
183  HDC GetMemoryDC();
184  unsigned char *GetMemoryData(){return this->MemoryData;};
186 
188 
189  virtual void SetupPalette(HDC hDC);
190  virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug,
191  int bpp=16, int zbpp=16);
193 
195  void Clean();
196 
198 
201  void HideCursor();
202  void ShowCursor();
203  void SetCursorPosition(int x, int y);
205 
207  virtual void SetCurrentCursor(int);
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 
273 #endif
274 
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
const GLenum BOOL
Definition: vtkgl.h:11943
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:619
virtual int GetEventPending()=0
virtual void SetSize(int, int)
GLint GLint GLsizei GLsizei height
Definition: vtkgl.h:11316
GLsizei GLenum GLuint GLuint GLsizei GLchar * message
Definition: vtkgl.h:19240
virtual void SetStereoCapableWindow(int capable)
virtual const char * ReportCapabilities()
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
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
GLint GLint GLsizei width
Definition: vtkgl.h:11316
virtual void MakeCurrent()=0
virtual void SetNextWindowId(void *)=0
virtual void SetCursorPosition(int, int)
virtual int * GetPosition()
virtual void Frame()=0
virtual int * GetSize()
GLboolean GLboolean GLboolean GLboolean a
Definition: vtkgl.h:12312
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
#define APIENTRY
Definition: vtkgl.h:34