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
vtkXOpenGLRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkXOpenGLRenderWindow.h:324
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
vtkRenderWindow::Start
virtual void Start()=0
Initialize the rendering process.
vtkRenderWindow::SetStereoCapableWindow
virtual void SetStereoCapableWindow(int capable)
vtkRenderWindow::ShowCursor
virtual void ShowCursor()=0
vtkRenderWindow::SetFullScreen
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
vtkXOpenGLRenderWindow::DrawableStack
std::stack< Drawable > DrawableStack
Definition: vtkXOpenGLRenderWindow.h:323
vtkRenderWindow::SetDisplayId
virtual void SetDisplayId(void *)=0
Dummy stubs for vtkWindow API.
vtkXOpenGLRenderWindow::GetGenericDisplayId
virtual void * GetGenericDisplayId()
Xwindow get set functions.
Definition: vtkXOpenGLRenderWindow.h:149
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...
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.
vtkXOpenGLRenderWindow::GetGenericParentId
virtual void * GetGenericParentId()
Definition: vtkXOpenGLRenderWindow.h:155
vtkRenderWindow::SetForceMakeCurrent
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
Definition: vtkRenderWindow.h:641
vtkRenderWindow::WindowRemap
virtual void WindowRemap()=0
Remap the rendering window.
vtkOpenGLRenderWindow::PopContext
virtual void PopContext()
Definition: vtkOpenGLRenderWindow.h:379
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int a[2])
Definition: vtkXOpenGLRenderWindow.h:241
vtkOpenGLRenderWindow.h
vtkX3D::height
@ height
Definition: vtkX3D.h:254
vtkWindow::SetWindowName
virtual void SetWindowName(const char *)
vtkRenderWindow::Render
virtual void Render()
Ask each renderer owned by this RenderWindow to render its image and synchronize this process.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:36
vtkRenderWindow::SetCurrentCursor
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
vtkXOpenGLRenderWindow::GetGenericDrawable
virtual void * GetGenericDrawable()
Definition: vtkXOpenGLRenderWindow.h:161
vtkRenderWindow::ReportCapabilities
virtual const char * ReportCapabilities()
Get report of capabilities for the render window.
Definition: vtkRenderWindow.h:646
vtkRenderWindow::SetWindowId
virtual void SetWindowId(void *)=0
vtkWindow::GetPosition
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
vtkXOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
Definition: vtkXOpenGLRenderWindow.h:99
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkRenderWindow::GetGenericWindowId
virtual void * GetGenericWindowId()=0
vtkRenderWindow::SetParentInfo
virtual void SetParentInfo(char *)=0
vtkRenderWindow::SetParentId
virtual void SetParentId(void *)=0
vtkXOpenGLRenderWindow::DisplayStack
std::stack< Display * > DisplayStack
Definition: vtkXOpenGLRenderWindow.h:322
vtkRenderWindow::MakeCurrent
virtual void MakeCurrent()=0
Attempt to make this window the current graphics context for the calling thread.
vtkXOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkXOpenGLRenderWindow.h:36
vtkRenderWindow::GetGenericContext
virtual void * GetGenericContext()=0
vtkOpenGLRenderWindow::DestroyWindow
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
vtkRenderWindow::IsDirect
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
Definition: vtkRenderWindow.h:656
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:38
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,...
vtkOpenGLRenderWindow::PushContext
virtual void PushContext()
Ability to push and pop this window's context as the current context.
Definition: vtkOpenGLRenderWindow.h:378
vtkWindow::SetOffScreenRendering
virtual void SetOffScreenRendering(int)
Create a window in memory instead of on the screen.
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:347
vtkOpenGLRenderWindow::CreateAWindow
virtual void CreateAWindow()=0
Create a not-off-screen window.
vtkOpenGLRenderWindow::SetSize
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.