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 
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 
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);
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();
324  void CreateOffScreenDC(int xsize, int ysize, HDC aHdc);
325  void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc);
326  void CreateOffScreenWindow(int width, int height);
329 
330 private:
331  vtkWin32OpenGLRenderWindow(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
332  void operator=(const vtkWin32OpenGLRenderWindow&) VTK_DELETE_FUNCTION;
333 };
334 
335 #endif
vtkWin32OpenGLRenderWindow::GetGenericDrawable
virtual void * GetGenericDrawable()
Definition: vtkWin32OpenGLRenderWindow.h:136
vtkWin32OpenGLRenderWindow::InitializeApplication
void InitializeApplication()
vtkWin32OpenGLRenderWindow::PrefFullScreen
virtual void PrefFullScreen(void)
Set the preferred window size to full screen.
vtkWin32OpenGLRenderWindow::ResizeWhileOffscreen
void ResizeWhileOffscreen(int xsize, int ysize)
vtkWin32OpenGLRenderWindow::Initialize
virtual void Initialize(void)
Initialize the rendering window.
vtkWin32OpenGLRenderWindow
OpenGL rendering window.
Definition: vtkWin32OpenGLRenderWindow.h:33
vtkWin32OpenGLRenderWindow::SetCurrentCursor
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
vtkWin32OpenGLRenderWindow::SetNextWindowInfo
void SetNextWindowInfo(char *)
Sets the WindowInfo that will be used after a WindowRemap.
vtkWin32OpenGLRenderWindow::SupportsOpenGL
int SupportsOpenGL()
Does this render window support OpenGL? 0-false, 1-true.
vtkWin32OpenGLRenderWindow::Palette
HPALETTE Palette
Definition: vtkWin32OpenGLRenderWindow.h:282
vtkWin32OpenGLRenderWindow::GetEventPending
virtual int GetEventPending()
Check to see if a mouse button has been pressed or mouse wheel activated.
vtkWin32OpenGLRenderWindow::GetGenericDisplayId
virtual void * GetGenericDisplayId()
Definition: vtkWin32OpenGLRenderWindow.h:132
vtkWin32OpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities()
Get report of capabilities for the render window.
vtkWin32OpenGLRenderWindow::NextWindowId
HWND NextWindowId
Definition: vtkWin32OpenGLRenderWindow.h:289
vtkWin32OpenGLRenderWindow::GetGenericParentId
virtual void * GetGenericParentId()
Definition: vtkWin32OpenGLRenderWindow.h:134
vtkWin32OpenGLRenderWindow::SetDeviceContext
void SetDeviceContext(HDC)
Set the window's device context.
vtkWin32OpenGLRenderWindow::SetSize
virtual void SetSize(int width, int height)
Set the size of the window in pixels.
vtkWin32OpenGLRenderWindow::SetStereoCapableWindow
virtual void SetStereoCapableWindow(int capable)
Prescribe that the window be created in a stereo-capable mode.
vtkWin32OpenGLRenderWindow::SetWindowId
void SetWindowId(void *foo)
Definition: vtkWin32OpenGLRenderWindow.h:148
vtkWin32OpenGLRenderWindow::MemoryBuffer
HBITMAP MemoryBuffer
Definition: vtkWin32OpenGLRenderWindow.h:295
vtkWin32OpenGLRenderWindow::SetWindowName
virtual void SetWindowName(const char *)
Set the name of the window.
vtkWin32OpenGLRenderWindow::Frame
void Frame(void)
End the rendering process and display the image.
vtkWin32OpenGLRenderWindow::ResumeScreenRendering
void ResumeScreenRendering(void)
vtkWin32OpenGLRenderWindow::WindowIdReferenceCount
int WindowIdReferenceCount
Definition: vtkWin32OpenGLRenderWindow.h:318
vtkWin32OpenGLRenderWindow::WindowId
HWND WindowId
Definition: vtkWin32OpenGLRenderWindow.h:287
vtkWin32OpenGLRenderWindow::~vtkWin32OpenGLRenderWindow
~vtkWin32OpenGLRenderWindow()
vtkWin32OpenGLRenderWindow::ContextId
HGLRC ContextId
Definition: vtkWin32OpenGLRenderWindow.h:284
vtkWin32OpenGLRenderWindow::ApplicationInstance
HINSTANCE ApplicationInstance
Definition: vtkWin32OpenGLRenderWindow.h:281
vtkWin32OpenGLRenderWindow::GetMemoryDC
HDC GetMemoryDC()
vtkWin32OpenGLRenderWindow::IsDirect
int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
vtkWin32OpenGLRenderWindow::SetNextWindowId
virtual void SetNextWindowId(void *arg)
Set the window id of the new window once a WindowRemap is done.
vtkWin32OpenGLRenderWindow::WindowRemap
virtual void WindowRemap(void)
Remap the window.
vtkWin32OpenGLRenderWindow::SetCursorPosition
void SetCursorPosition(int x, int y)
Set cursor position in window (note that (0,0) is the lower left corner).
vtkWin32OpenGLRenderWindow::WndProc
static LRESULT APIENTRY WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
vtkWin32OpenGLRenderWindow::MessageProc
virtual LRESULT MessageProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
vtkWin32OpenGLRenderWindow::SetupMemoryRendering
void SetupMemoryRendering(HBITMAP hbmp)
vtkWin32OpenGLRenderWindow::Start
virtual void Start(void)
Begin the rendering process.
vtkWin32OpenGLRenderWindow::GetSize
virtual int * GetSize()
Get the current size of the window in pixels.
vtkWin32OpenGLRenderWindow::SetParentId
virtual void SetParentId(HWND)
Set the window's parent id to a pre-existing window.
vtkWin32OpenGLRenderWindow::HideCursor
void HideCursor()
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
vtkWin32OpenGLRenderWindow::SetupMemoryRendering
void SetupMemoryRendering(int x, int y, HDC prn)
These methods can be used by MFC applications to support print preview and printing,...
vtkWin32OpenGLRenderWindow::SetWindowId
virtual void SetWindowId(HWND)
Set the window id to a pre-existing window.
vtkWin32OpenGLRenderWindow::Capabilities
char * Capabilities
Definition: vtkWin32OpenGLRenderWindow.h:317
vtkOpenGLRenderWindow.h
vtkWin32OpenGLRenderWindow::ScreenMapped
int ScreenMapped
Definition: vtkWin32OpenGLRenderWindow.h:299
vtkWin32OpenGLRenderWindow::ParentId
HWND ParentId
Definition: vtkWin32OpenGLRenderWindow.h:288
vtkWin32OpenGLRenderWindow::GetGenericContext
virtual void * GetGenericContext()
Definition: vtkWin32OpenGLRenderWindow.h:135
vtkWin32OpenGLRenderWindow::CreatingOffScreenWindow
int CreatingOffScreenWindow
Definition: vtkWin32OpenGLRenderWindow.h:305
vtkWin32OpenGLRenderWindow::DetectDPI
virtual bool DetectDPI()
Attempt to detect and set the DPI of the display device by querying the system.
vtkX3D::height
@ height
Definition: vtkX3D.h:254
vtkWin32OpenGLRenderWindow::OldPalette
HPALETTE OldPalette
Definition: vtkWin32OpenGLRenderWindow.h:283
vtkWin32OpenGLRenderWindow::IsCurrent
virtual bool IsCurrent()
Tells if this window is the current OpenGL context for the calling thread.
vtkWin32OpenGLRenderWindow::Clean
void Clean()
Clean up device contexts, rendering contexts, etc.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkWin32OpenGLRenderWindow::MemoryHdc
HDC MemoryHdc
Definition: vtkWin32OpenGLRenderWindow.h:297
vtkWin32OpenGLRenderWindow::SetContextId
void SetContextId(HGLRC)
Set the window's context id.
vtkWin32OpenGLRenderWindow::ScreenContextId
HGLRC ScreenContextId
Definition: vtkWin32OpenGLRenderWindow.h:303
vtkWin32OpenGLRenderWindow::OwnWindow
int OwnWindow
Definition: vtkWin32OpenGLRenderWindow.h:290
vtkWin32OpenGLRenderWindow::Finalize
virtual void Finalize(void)
Finalize the rendering window.
vtkWin32OpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()
Destroy a not-off-screen window.
vtkWin32OpenGLRenderWindow::SetOffScreenRendering
virtual void SetOffScreenRendering(int offscreen)
Override the default implementation so that we can actively switch between on and off screen renderin...
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:37
vtkWin32OpenGLRenderWindow::SetupPixelFormat
virtual void SetupPixelFormat(HDC hDC, DWORD dwFlags, int debug, int bpp=16, int zbpp=16)
vtkWin32OpenGLRenderWindow::SetNextWindowId
virtual void SetNextWindowId(HWND)
Set the window id of the new window once a WindowRemap is done.
vtkWin32OpenGLRenderWindow::SetFullScreen
virtual void SetFullScreen(int)
Change the window to fill the entire screen.
vtkWin32OpenGLRenderWindow::ShowCursor
void ShowCursor()
vtkWin32OpenGLRenderWindow::DeviceContext
HDC DeviceContext
Definition: vtkWin32OpenGLRenderWindow.h:285
vtkWin32OpenGLRenderWindow::New
static vtkWin32OpenGLRenderWindow * New()
vtkWin32OpenGLRenderWindow::SetPosition
virtual void SetPosition(int a[2])
Definition: vtkWin32OpenGLRenderWindow.h:99
vtkWin32OpenGLRenderWindow::CreateOffScreenDC
void CreateOffScreenDC(int xsize, int ysize, HDC aHdc)
vtkWin32OpenGLRenderWindow::CreateOffScreenWindow
void CreateOffScreenWindow(int width, int height)
vtkWin32OpenGLRenderWindow::CleanUpOffScreenRendering
void CleanUpOffScreenRendering(void)
vtkWin32OpenGLRenderWindow::MemoryDataHeader
BITMAPINFO MemoryDataHeader
Definition: vtkWin32OpenGLRenderWindow.h:294
vtkWin32OpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
Definition: vtkWin32OpenGLRenderWindow.h:88
vtkWin32OpenGLRenderWindow::SetupPalette
virtual void SetupPalette(HDC hDC)
Initialize OpenGL for this window.
vtkWin32OpenGLRenderWindow::SetParentId
void SetParentId(void *foo)
Definition: vtkWin32OpenGLRenderWindow.h:160
vtkWin32OpenGLRenderWindow::GetWindowId
virtual HWND GetWindowId()
Get the window id.
vtkWin32OpenGLRenderWindow::SetParentInfo
void SetParentInfo(char *)
Sets the HWND id of the window that WILL BE created.
vtkWin32OpenGLRenderWindow::InitializeFromCurrentContext
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
vtkWin32OpenGLRenderWindow::SaveScreenRendering
void SaveScreenRendering()
vtkWin32OpenGLRenderWindow::vtkWin32OpenGLRenderWindow
vtkWin32OpenGLRenderWindow()
vtkWin32OpenGLRenderWindow::MakeCurrent
void MakeCurrent()
Make this windows OpenGL context the current context.
vtkWin32OpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkWin32OpenGLRenderWindow::CreateOffScreenDC
void CreateOffScreenDC(HBITMAP hbmp, HDC aHdc)
vtkWin32OpenGLRenderWindow::GetMemoryData
unsigned char * GetMemoryData()
Definition: vtkWin32OpenGLRenderWindow.h:234
vtkWin32OpenGLRenderWindow::GetGenericWindowId
virtual void * GetGenericWindowId()
Definition: vtkWin32OpenGLRenderWindow.h:133
vtkWin32OpenGLRenderWindow::CursorHidden
int CursorHidden
Definition: vtkWin32OpenGLRenderWindow.h:314
vtkWin32OpenGLRenderWindow::MemoryData
unsigned char * MemoryData
Definition: vtkWin32OpenGLRenderWindow.h:296
vtkWin32OpenGLRenderWindow::CleanUpRenderers
void CleanUpRenderers()
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:39
vtkWin32OpenGLRenderWindow::ScreenDoubleBuffer
int ScreenDoubleBuffer
Definition: vtkWin32OpenGLRenderWindow.h:302
vtkWindow::SetPosition
virtual void SetPosition(int, int)
vtkWin32OpenGLRenderWindow::GetPosition
virtual int * GetPosition()
Get the position in screen coordinates of the window.
vtkWin32OpenGLRenderWindow::SetPosition
virtual void SetPosition(int x, int y)
Set the position of the window.
vtkWin32OpenGLRenderWindow::ForceMakeCurrent
int ForceMakeCurrent
Definition: vtkWin32OpenGLRenderWindow.h:315
vtkWin32OpenGLRenderWindow::SetDisplayId
virtual void SetDisplayId(void *)
Dummy stubs for vtkWindow API.
vtkWin32OpenGLRenderWindow::MFChandledWindow
BOOL MFChandledWindow
Definition: vtkWin32OpenGLRenderWindow.h:286
vtkWin32OpenGLRenderWindow::ScreenDeviceContext
HDC ScreenDeviceContext
Definition: vtkWin32OpenGLRenderWindow.h:301
vtkWin32OpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()
Create a not-off-screen window.
vtkWin32OpenGLRenderWindow::SetWindowInfo
void SetWindowInfo(char *)
Set this RenderWindow's window id to a pre-existing window.
vtkWin32OpenGLRenderWindow::GetScreenSize
virtual int * GetScreenSize()
Get the current size of the screen in pixels.
vtkWin32OpenGLRenderWindow::WindowInitialize
virtual void WindowInitialize(void)
Create the window.
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.