VTK
vtkXOpenGLRenderWindow.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkXOpenGLRenderWindow.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 =========================================================================*/
31 #ifndef vtkXOpenGLRenderWindow_h
32 #define vtkXOpenGLRenderWindow_h
33 
34 #include "vtkRenderingOpenGL2Module.h" // For export macro
35 #include <stack> // for ivar
36 #include "vtkOpenGLRenderWindow.h"
37 #include <X11/Xlib.h> // Needed for X types used in the public interface
38 #include <X11/Xutil.h> // Needed for X types used in the public interface
39 
40 class vtkIdList;
41 class vtkXOpenGLRenderWindowInternal;
42 
43 class VTKRENDERINGOPENGL2_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
44 {
45 public:
46  static vtkXOpenGLRenderWindow *New();
48  void PrintSelf(ostream& os, vtkIndent indent);
49 
53  virtual void Start(void);
54 
58  virtual void Frame(void);
59 
63  virtual void WindowInitialize(void);
64 
71  virtual void Initialize(void);
72 
78  virtual void Finalize(void);
79 
83  virtual void SetFullScreen(int);
84 
88  virtual void WindowRemap(void);
89 
93  virtual void PrefFullScreen(void);
94 
98  virtual void SetSize(int,int);
99  virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);}
100 
102 
105  virtual Colormap GetDesiredColormap();
106  virtual Visual *GetDesiredVisual();
107  virtual XVisualInfo *GetDesiredVisualInfo();
108  virtual int GetDesiredDepth();
110 
117  virtual void SetStereoCapableWindow(int capable);
118 
122  void MakeCurrent();
123 
127  virtual bool IsCurrent();
128 
134  void SetForceMakeCurrent();
135 
139  const char *ReportCapabilities();
140 
144  int IsDirect();
145 
149  virtual void *GetGenericDisplayId()
150  {
151  return this->GetDisplayId();
152  }
153 
154  virtual void *GetGenericWindowId();
155  virtual void *GetGenericParentId()
156  {
157  return reinterpret_cast<void *>(this->ParentId);
158  }
159 
160  virtual void *GetGenericContext();
161  virtual void *GetGenericDrawable()
162  {
163  return reinterpret_cast<void *>(this->WindowId);
164  }
165 
169  virtual int *GetScreenSize();
170 
174  virtual int *GetPosition();
175 
179  Display *GetDisplayId();
180 
182 
186  void SetDisplayId(Display *);
187  void SetDisplayId(void *);
189 
193  Window GetParentId();
194 
196 
199  void SetParentId(Window);
200  void SetParentId(void *);
202 
206  Window GetWindowId();
207 
209 
212  void SetWindowId(Window);
213  void SetWindowId(void *);
215 
219  void SetNextWindowId(Window);
220 
226  void SetNextWindowId(void *);
227 
228  void SetWindowName(const char *);
229 
234  virtual bool InitializeFromCurrentContext();
235 
237 
240  void SetPosition(int,int);
241  void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);};
243 
245 
249  void HideCursor();
250  void ShowCursor();
252 
256  virtual void SetCurrentCursor(int);
257 
263  virtual int GetEventPending();
264 
268  void SetWindowInfo(char *info);
269 
273  void SetNextWindowInfo(char *info);
274 
278  void SetParentInfo(char *info);
279 
284  void Render();
285 
289  void SetOffScreenRendering(int i);
290 
292 
299  virtual void PushContext();
300  virtual void PopContext();
302 
303 protected:
306 
307  vtkXOpenGLRenderWindowInternal *Internal;
308 
309  Window ParentId;
310  Window WindowId;
311  Window NextWindowId;
312  Display *DisplayId;
313  Colormap ColorMap;
314  int OwnWindow;
315  int OwnDisplay;
316  int ScreenSize[2];
317  int CursorHidden;
318  int ForceMakeCurrent;
319  int UsingHardware;
320  char *Capabilities;
321 
322  std::stack<Display *> DisplayStack;
323  std::stack<Drawable> DrawableStack;
324  std::stack<void *> ContextStack;
325 
326  // we must keep track of the cursors we are using
327  Cursor XCCrosshair;
328  Cursor XCArrow;
329  Cursor XCSizeAll;
330  Cursor XCSizeNS;
331  Cursor XCSizeWE;
332  Cursor XCSizeNE;
333  Cursor XCSizeNW;
334  Cursor XCSizeSE;
335  Cursor XCSizeSW;
336  Cursor XCHand;
337 
338 
339  void CreateAWindow();
340  void DestroyWindow();
341  void CreateOffScreenWindow(int width, int height);
342  void DestroyOffScreenWindow();
343  void ResizeOffScreenWindow(int width, int height);
344  void CloseDisplay();
345 
346 
347 private:
348  vtkXOpenGLRenderWindow(const vtkXOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
349  void operator=(const vtkXOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
350 };
351 
352 
353 
354 #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 SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
virtual void SetWindowInfo(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 * GetGenericParentId()
Dummy stubs for vtkWindow API.
virtual void WindowRemap()=0
Remap the rendering window.
virtual void * GetGenericContext()=0
Dummy stubs for vtkWindow API.
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...
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 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.
OpenGL rendering window.
virtual void * GetGenericDrawable()
Dummy stubs for vtkWindow API.
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
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.
std::stack< Display * > DisplayStack
list of point or cell ids
Definition: vtkIdList.h:36
virtual void SetDisplayId(void *)=0
Dummy stubs for vtkWindow API.
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
std::stack< Drawable > DrawableStack
virtual void SetNextWindowId(void *)=0
Dummy stubs for vtkWindow API.
virtual void * GetGenericDisplayId()
Xwindow get set functions.
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
virtual void PushContext()
Ability to push and pop this window's context as the current context.
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
void SetPosition(int a[2])
Move the window to a new position on the display.
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
std::stack< void * > ContextStack
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 Render()
Ask each renderer owned by this RenderWindow to render its image and synchronize this process...
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
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...
virtual void * GetGenericWindowId()=0
Dummy stubs for vtkWindow API.