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
vtkWin32OpenGLRenderWindow::GetGenericDrawable
virtual void * GetGenericDrawable()
Definition: vtkWin32OpenGLRenderWindow.h:139
vtkOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkRenderWindow::SetNextWindowInfo
virtual void SetNextWindowInfo(char *)=0
vtkWin32OpenGLRenderWindow
OpenGL rendering window.
Definition: vtkWin32OpenGLRenderWindow.h:35
vtkRenderWindow::Start
virtual void Start()=0
Initialize the rendering process.
vtkRenderWindow::SetStereoCapableWindow
virtual void SetStereoCapableWindow(int capable)
vtkWin32OpenGLRenderWindow::Palette
HPALETTE Palette
Definition: vtkWin32OpenGLRenderWindow.h:285
vtkWin32OpenGLRenderWindow::GetGenericDisplayId
virtual void * GetGenericDisplayId()
Definition: vtkWin32OpenGLRenderWindow.h:135
vtkWin32OpenGLRenderWindow::NextWindowId
HWND NextWindowId
Definition: vtkWin32OpenGLRenderWindow.h:292
vtkWin32OpenGLRenderWindow::GetGenericParentId
virtual void * GetGenericParentId()
Definition: vtkWin32OpenGLRenderWindow.h:137
vtkRenderWindow::ShowCursor
virtual void ShowCursor()=0
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(void *foo)
Definition: vtkWin32OpenGLRenderWindow.h:151
vtkRenderWindow::SetFullScreen
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
vtkWin32OpenGLRenderWindow::MemoryBuffer
HBITMAP MemoryBuffer
Definition: vtkWin32OpenGLRenderWindow.h:298
vtkWindow::GetSize
virtual int * GetSize()
Set/Get the size of the window in screen coordinates in pixels.
vtkRenderWindow::SetDisplayId
virtual void SetDisplayId(void *)=0
Dummy stubs for vtkWindow API.
vtkWin32OpenGLRenderWindow::WindowIdReferenceCount
int WindowIdReferenceCount
Definition: vtkWin32OpenGLRenderWindow.h:321
vtkOpenGLRenderWindow::SupportsOpenGL
virtual int SupportsOpenGL()
Does this render window support OpenGL? 0-false, 1-true.
vtkWin32OpenGLRenderWindow::WindowId
HWND WindowId
Definition: vtkWin32OpenGLRenderWindow.h:290
vtkWin32OpenGLRenderWindow::ContextId
HGLRC ContextId
Definition: vtkWin32OpenGLRenderWindow.h:287
vtkRenderWindow::HideCursor
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...
vtkWin32OpenGLRenderWindow::ApplicationInstance
HINSTANCE ApplicationInstance
Definition: vtkWin32OpenGLRenderWindow.h:284
vtkRenderWindow::Finalize
virtual void Finalize()=0
Finalize the rendering process.
vtkRenderWindow::SetWindowInfo
virtual void SetWindowInfo(char *)=0
vtkWindow::GetScreenSize
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
vtkRenderWindow::IsCurrent
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
vtkWindow::DetectDPI
virtual bool DetectDPI()
Attempt to detect and set the DPI of the display device by querying the system.
Definition: vtkWindow.h:164
vtkRenderWindow::WindowRemap
virtual void WindowRemap()=0
Remap the rendering window.
vtkWin32OpenGLRenderWindow::Capabilities
char * Capabilities
Definition: vtkWin32OpenGLRenderWindow.h:320
vtkWin32OpenGLRenderWindow::ScreenMapped
int ScreenMapped
Definition: vtkWin32OpenGLRenderWindow.h:302
vtkWin32OpenGLRenderWindow::ParentId
HWND ParentId
Definition: vtkWin32OpenGLRenderWindow.h:291
vtkWin32OpenGLRenderWindow::GetGenericContext
virtual void * GetGenericContext()
Definition: vtkWin32OpenGLRenderWindow.h:138
vtkWin32OpenGLRenderWindow::CreatingOffScreenWindow
int CreatingOffScreenWindow
Definition: vtkWin32OpenGLRenderWindow.h:308
vtkX3D::height
Definition: vtkX3D.h:254
vtkWin32OpenGLRenderWindow::OldPalette
HPALETTE OldPalette
Definition: vtkWin32OpenGLRenderWindow.h:286
vtkWindow::SetWindowName
virtual void SetWindowName(const char *)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkWin32OpenGLRenderWindow::MemoryHdc
HDC MemoryHdc
Definition: vtkWin32OpenGLRenderWindow.h:300
vtkWin32OpenGLRenderWindow::ScreenContextId
HGLRC ScreenContextId
Definition: vtkWin32OpenGLRenderWindow.h:306
vtkWin32OpenGLRenderWindow::OwnWindow
int OwnWindow
Definition: vtkWin32OpenGLRenderWindow.h:293
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkRenderWindow::SetCurrentCursor
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
vtkRenderWindow::ReportCapabilities
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
Definition: vtkRenderWindow.h:646
vtkWin32OpenGLRenderWindow::DeviceContext
HDC DeviceContext
Definition: vtkWin32OpenGLRenderWindow.h:288
vtkWin32OpenGLRenderWindow::SetPosition
virtual void SetPosition(int a[2])
Definition: vtkWin32OpenGLRenderWindow.h:102
vtkRenderWindow::SetWindowId
virtual void SetWindowId(void *)=0
vtkWindow::GetPosition
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
vtkWin32OpenGLRenderWindow::MemoryDataHeader
BITMAPINFO MemoryDataHeader
Definition: vtkWin32OpenGLRenderWindow.h:297
vtkWin32OpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
Definition: vtkWin32OpenGLRenderWindow.h:91
vtkRenderWindow::SetCursorPosition
virtual void SetCursorPosition(int, int)
Definition: vtkRenderWindow.h:195
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(void *foo)
Definition: vtkWin32OpenGLRenderWindow.h:163
vtkRenderWindow::SetParentInfo
virtual void SetParentInfo(char *)=0
vtkRenderWindow::SetParentId
virtual void SetParentId(void *)=0
vtkRenderWindow::MakeCurrent
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
vtkOpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
vtkWin32OpenGLRenderWindow::GetMemoryData
unsigned char * GetMemoryData()
Definition: vtkWin32OpenGLRenderWindow.h:237
vtkRenderWindow::IsDirect
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
Definition: vtkRenderWindow.h:656
vtkWin32OpenGLRenderWindow::GetGenericWindowId
virtual void * GetGenericWindowId()
Definition: vtkWin32OpenGLRenderWindow.h:136
vtkWin32OpenGLRenderWindow::CursorHidden
int CursorHidden
Definition: vtkWin32OpenGLRenderWindow.h:317
vtkWin32OpenGLRenderWindow::MemoryData
unsigned char * MemoryData
Definition: vtkWin32OpenGLRenderWindow.h:299
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:41
vtkWin32OpenGLRenderWindow::ScreenDoubleBuffer
int ScreenDoubleBuffer
Definition: vtkWin32OpenGLRenderWindow.h:305
vtkRenderWindow::InitializeFromCurrentContext
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
Definition: vtkRenderWindow.h:614
vtkWindow::SetPosition
virtual void SetPosition(int, int)
vtkRenderWindow::Frame
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
vtkRenderWindow::SetNextWindowId
virtual void SetNextWindowId(void *)=0
vtkRenderWindow::New
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on,...
vtkWin32OpenGLRenderWindow::ForceMakeCurrent
int ForceMakeCurrent
Definition: vtkWin32OpenGLRenderWindow.h:318
vtkWindow::SetOffScreenRendering
virtual void SetOffScreenRendering(int)
Create a window in memory instead of on the screen.
vtkWin32OpenGLRenderWindow::MFChandledWindow
BOOL MFChandledWindow
Definition: vtkWin32OpenGLRenderWindow.h:289
vtkWin32OpenGLRenderWindow::ScreenDeviceContext
HDC ScreenDeviceContext
Definition: vtkWin32OpenGLRenderWindow.h:304
vtkRenderWindow::GetEventPending
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
vtkOpenGLRenderWindow::Initialize
virtual void Initialize(void)
Initialize the rendering window.
Definition: vtkOpenGLRenderWindow.h:344
vtkOpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkOpenGLRenderWindow.h
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.