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 =========================================================================*/
25 #ifndef vtkXOpenGLRenderWindow_h
26 #define vtkXOpenGLRenderWindow_h
27 
28 #include "vtkRenderingOpenGL2Module.h" // For export macro
29 #include <stack> // for ivar
30 #include "vtkOpenGLRenderWindow.h"
31 #include <X11/Xlib.h> // Needed for X types used in the public interface
32 #include <X11/Xutil.h> // Needed for X types used in the public interface
33 
34 class vtkIdList;
35 class vtkXOpenGLRenderWindowInternal;
36 
37 class VTKRENDERINGOPENGL2_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
38 {
39 public:
42  void PrintSelf(ostream& os, vtkIndent indent) override;
43 
47  void Start() override;
48 
52  void Frame() override;
53 
57  virtual void WindowInitialize();
58 
65  void Initialize() override;
66 
72  void Finalize() override;
73 
77  void SetFullScreen(vtkTypeBool) override;
78 
82  void WindowRemap() override;
83 
87  virtual void PrefFullScreen();
88 
92  void SetSize(int,int) override;
93  void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
94 
96 
99  virtual Colormap GetDesiredColormap();
100  virtual Visual *GetDesiredVisual();
101  virtual XVisualInfo *GetDesiredVisualInfo();
102  virtual int GetDesiredDepth();
104 
111  void SetStereoCapableWindow(vtkTypeBool capable) override;
112 
116  void MakeCurrent() override;
117 
121  bool IsCurrent() override;
122 
128  void SetForceMakeCurrent() override;
129 
133  const char *ReportCapabilities() override;
134 
138  int IsDirect() override;
139 
143  void *GetGenericDisplayId() override
144  {
145  return this->GetDisplayId();
146  }
147 
148  void *GetGenericWindowId() override;
149  void *GetGenericParentId() override
150  {
151  return reinterpret_cast<void *>(this->ParentId);
152  }
153 
154  void *GetGenericContext() override;
155  void *GetGenericDrawable() override
156  {
157  return reinterpret_cast<void *>(this->WindowId);
158  }
159 
163  int *GetScreenSize() VTK_SIZEHINT(2) override;
164 
168  int *GetPosition() VTK_SIZEHINT(2) override;
169 
173  Display *GetDisplayId();
174 
176 
180  void SetDisplayId(Display *);
181  void SetDisplayId(void *) override;
183 
187  Window GetParentId();
188 
190 
193  void SetParentId(Window);
194  void SetParentId(void *) override;
196 
200  Window GetWindowId();
201 
203 
206  void SetWindowId(Window);
207  void SetWindowId(void *) override;
209 
213  void SetNextWindowId(Window);
214 
220  void SetNextWindowId(void *) override;
221 
225  void SetWindowName(const char *) override;
226 
231  bool InitializeFromCurrentContext() override;
232 
236  bool GetPlatformSupportsRenderWindowSharing() override { return true; };
237 
239 
242  void SetPosition(int,int) override;
243  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
245 
247 
251  void HideCursor() override;
252  void ShowCursor() override;
254 
258  void SetCurrentCursor(int) override;
259 
265  int GetEventPending() override;
266 
270  void SetWindowInfo(const char *info) override;
271 
275  void SetNextWindowInfo(const char *info) override;
276 
280  void SetParentInfo(const char *info) override;
281 
286  void Render() override;
287 
292 
294 
301  void PushContext() override;
302  void PopContext() override;
304 
314  bool SetSwapControl(int i) override;
315 
316 protected:
319 
320  vtkXOpenGLRenderWindowInternal *Internal;
321 
322  Window ParentId;
323  Window WindowId;
324  Window NextWindowId;
325  Display *DisplayId;
326  Colormap ColorMap;
329  int ScreenSize[2];
333 
334  std::stack<Display *> DisplayStack;
335  std::stack<Drawable> DrawableStack;
336  std::stack<void *> ContextStack;
337 
338  // we must keep track of the cursors we are using
339  Cursor XCCrosshair;
340  Cursor XCArrow;
341  Cursor XCSizeAll;
342  Cursor XCSizeNS;
343  Cursor XCSizeWE;
344  Cursor XCSizeNE;
345  Cursor XCSizeNW;
346  Cursor XCSizeSE;
347  Cursor XCSizeSW;
348  Cursor XCHand;
349 
350 
351  void CreateAWindow() override;
352  void DestroyWindow() override;
353  void CreateOffScreenWindow(int width, int height);
355  void ResizeOffScreenWindow(int width, int height);
356  void CloseDisplay();
357 
358 
359 private:
361  void operator=(const vtkXOpenGLRenderWindow&) = delete;
362 };
363 
364 
365 
366 #endif
vtkXOpenGLRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkXOpenGLRenderWindow.h:336
vtkXOpenGLRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkXOpenGLRenderWindow::DisplayId
Display * DisplayId
Definition: vtkXOpenGLRenderWindow.h:325
vtkXOpenGLRenderWindow::ForceMakeCurrent
int ForceMakeCurrent
Definition: vtkXOpenGLRenderWindow.h:331
vtkXOpenGLRenderWindow::SetCurrentCursor
void SetCurrentCursor(int) override
Change the shape of the cursor.
vtkXOpenGLRenderWindow::GetDesiredColormap
virtual Colormap GetDesiredColormap()
Get the X properties of an ideal rendering window.
vtkXOpenGLRenderWindow::GetGenericWindowId
void * GetGenericWindowId() override
vtkXOpenGLRenderWindow::Render
void Render() override
This computes the size of the render window before calling the supper classes render.
vtkXOpenGLRenderWindow::GetDesiredDepth
virtual int GetDesiredDepth()
vtkXOpenGLRenderWindow::WindowInitialize
virtual void WindowInitialize()
Initialize the window for rendering.
vtkXOpenGLRenderWindow::OwnDisplay
int OwnDisplay
Definition: vtkXOpenGLRenderWindow.h:328
vtkXOpenGLRenderWindow::GetDesiredVisual
virtual Visual * GetDesiredVisual()
vtkXOpenGLRenderWindow::ColorMap
Colormap ColorMap
Definition: vtkXOpenGLRenderWindow.h:326
vtkXOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkXOpenGLRenderWindow::SetWindowInfo
void SetWindowInfo(const char *info) override
Set this RenderWindow's X window id to a pre-existing window.
vtkXOpenGLRenderWindow::DestroyOffScreenWindow
void DestroyOffScreenWindow()
vtkXOpenGLRenderWindow::DrawableStack
std::stack< Drawable > DrawableStack
Definition: vtkXOpenGLRenderWindow.h:335
vtkXOpenGLRenderWindow::SetNextWindowInfo
void SetNextWindowInfo(const char *info) override
Set the window info that will be used after WindowRemap()
vtkXOpenGLRenderWindow::GetScreenSize
int * GetScreenSize() override
Get the current size of the screen in pixels.
vtkXOpenGLRenderWindow::SetForceMakeCurrent
void SetForceMakeCurrent() override
If called, allow MakeCurrent() to skip cache-check when called.
vtkXOpenGLRenderWindow::XCSizeSW
Cursor XCSizeSW
Definition: vtkXOpenGLRenderWindow.h:347
vtkXOpenGLRenderWindow::IsDirect
int IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
vtkXOpenGLRenderWindow::Finalize
void Finalize() override
"Deinitialize" the rendering window.
vtkXOpenGLRenderWindow::SetFullScreen
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
vtkXOpenGLRenderWindow::CursorHidden
int CursorHidden
Definition: vtkXOpenGLRenderWindow.h:330
vtkXOpenGLRenderWindow::IsCurrent
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
vtkXOpenGLRenderWindow::XCSizeNS
Cursor XCSizeNS
Definition: vtkXOpenGLRenderWindow.h:342
vtkXOpenGLRenderWindow::PopContext
void PopContext() override
vtkXOpenGLRenderWindow::WindowId
Window WindowId
Definition: vtkXOpenGLRenderWindow.h:323
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:42
vtkXOpenGLRenderWindow::CloseDisplay
void CloseDisplay()
vtkX3D::height
@ height
Definition: vtkX3D.h:254
vtkXOpenGLRenderWindow::CreateAWindow
void CreateAWindow() override
Create a not-off-screen window.
vtkXOpenGLRenderWindow::Start
void Start() override
Begin the rendering process.
vtkXOpenGLRenderWindow::SetStereoCapableWindow
void SetStereoCapableWindow(vtkTypeBool capable) override
Prescribe that the window be created in a stereo-capable mode.
vtkXOpenGLRenderWindow::ShowCursor
void ShowCursor() override
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkXOpenGLRenderWindow::ResizeOffScreenWindow
void ResizeOffScreenWindow(int width, int height)
vtkXOpenGLRenderWindow::Initialize
void Initialize() override
Initialize the rendering window.
vtkXOpenGLRenderWindow::CreateOffScreenWindow
void CreateOffScreenWindow(int width, int height)
vtkXOpenGLRenderWindow::SetOffScreenRendering
void SetOffScreenRendering(vtkTypeBool i) override
Render without displaying the window.
vtkXOpenGLRenderWindow::GetDesiredVisualInfo
virtual XVisualInfo * GetDesiredVisualInfo()
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:37
vtkXOpenGLRenderWindow::PrefFullScreen
virtual void PrefFullScreen()
Set the preferred window size to full screen.
vtkXOpenGLRenderWindow::XCHand
Cursor XCHand
Definition: vtkXOpenGLRenderWindow.h:348
vtkXOpenGLRenderWindow::XCCrosshair
Cursor XCCrosshair
Definition: vtkXOpenGLRenderWindow.h:339
vtkXOpenGLRenderWindow::New
static vtkXOpenGLRenderWindow * New()
vtkXOpenGLRenderWindow::XCArrow
Cursor XCArrow
Definition: vtkXOpenGLRenderWindow.h:340
vtkXOpenGLRenderWindow::GetGenericContext
void * GetGenericContext() override
vtkXOpenGLRenderWindow::SetParentInfo
void SetParentInfo(const char *info) override
Sets the X window id of the window that WILL BE created.
vtkX3D::info
@ info
Definition: vtkX3D.h:376
vtkXOpenGLRenderWindow::ParentId
Window ParentId
Definition: vtkXOpenGLRenderWindow.h:322
vtkXOpenGLRenderWindow::GetGenericDisplayId
void * GetGenericDisplayId() override
Xwindow get set functions.
Definition: vtkXOpenGLRenderWindow.h:143
vtkXOpenGLRenderWindow::UsingHardware
int UsingHardware
Definition: vtkXOpenGLRenderWindow.h:332
vtkXOpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Definition: vtkXOpenGLRenderWindow.h:155
vtkXOpenGLRenderWindow::vtkXOpenGLRenderWindow
vtkXOpenGLRenderWindow()
vtkXOpenGLRenderWindow::OwnWindow
int OwnWindow
Definition: vtkXOpenGLRenderWindow.h:327
vtkXOpenGLRenderWindow::XCSizeNE
Cursor XCSizeNE
Definition: vtkXOpenGLRenderWindow.h:344
vtkXOpenGLRenderWindow::DisplayStack
std::stack< Display * > DisplayStack
Definition: vtkXOpenGLRenderWindow.h:334
vtkXOpenGLRenderWindow::HideCursor
void HideCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int, int) override
Move the window to a new position on the display.
vtkXOpenGLRenderWindow::WindowRemap
void WindowRemap() override
Resize the window.
vtkXOpenGLRenderWindow::XCSizeSE
Cursor XCSizeSE
Definition: vtkXOpenGLRenderWindow.h:346
vtkXOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkXOpenGLRenderWindow.h:38
vtkXOpenGLRenderWindow::XCSizeAll
Cursor XCSizeAll
Definition: vtkXOpenGLRenderWindow.h:341
vtkXOpenGLRenderWindow::Frame
void Frame() override
End the rendering process and display the image.
vtkXOpenGLRenderWindow::XCSizeWE
Cursor XCSizeWE
Definition: vtkXOpenGLRenderWindow.h:343
vtkXOpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkXOpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Set the size of the window in screen coordinates in pixels.
Definition: vtkXOpenGLRenderWindow.h:93
vtkXOpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this window the current OpenGL context.
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:54
vtkXOpenGLRenderWindow::Internal
vtkXOpenGLRenderWindowInternal * Internal
Definition: vtkXOpenGLRenderWindow.h:320
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int a[2]) override
Definition: vtkXOpenGLRenderWindow.h:243
vtkXOpenGLRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Definition: vtkXOpenGLRenderWindow.h:149
vtkXOpenGLRenderWindow::NextWindowId
Window NextWindowId
Definition: vtkXOpenGLRenderWindow.h:324
vtkXOpenGLRenderWindow::PushContext
void PushContext() override
Ability to push and pop this window's context as the current context.
vtkXOpenGLRenderWindow::~vtkXOpenGLRenderWindow
~vtkXOpenGLRenderWindow() override
vtkXOpenGLRenderWindow::SetSwapControl
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
vtkXOpenGLRenderWindow::GetEventPending
int GetEventPending() override
Check to see if a mouse button has been pressed or mouse wheel activated.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkOpenGLRenderWindow.h
vtkXOpenGLRenderWindow::XCSizeNW
Cursor XCSizeNW
Definition: vtkXOpenGLRenderWindow.h:345
vtkXOpenGLRenderWindow::SetSize
void SetSize(int, int) override
Specify the size of the rendering window in pixels.