VTK  9.0.1
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 "vtkOpenGLRenderWindow.h"
29 #include "vtkRenderingOpenGL2Module.h" // For export macro
30 #include <X11/Xlib.h> // Needed for X types used in the public interface
31 #include <X11/Xutil.h> // Needed for X types used in the public interface
32 #include <stack> // for ivar
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 
84  // Call X funcs to map unmap
85  void SetShowWindow(bool val) override;
86 
90  virtual void PrefFullScreen();
91 
100  void SetSize(int width, int height) override;
101  void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
102 
107  void SetSizeNoXResize(int, int);
108 
110 
113  virtual Colormap GetDesiredColormap();
114  virtual Visual* GetDesiredVisual();
115  virtual XVisualInfo* GetDesiredVisualInfo();
116  virtual int GetDesiredDepth();
118 
125  void SetStereoCapableWindow(vtkTypeBool capable) override;
126 
130  void MakeCurrent() override;
131 
135  bool IsCurrent() override;
136 
142  void SetForceMakeCurrent() override;
143 
147  const char* ReportCapabilities() override;
148 
152  vtkTypeBool IsDirect() override;
153 
157  void* GetGenericDisplayId() override { return this->GetDisplayId(); }
158 
159  void* GetGenericWindowId() override;
160  void* GetGenericParentId() override { return reinterpret_cast<void*>(this->ParentId); }
161 
162  void* GetGenericContext() override;
163  void* GetGenericDrawable() override { return reinterpret_cast<void*>(this->WindowId); }
164 
169  int* GetScreenSize() VTK_SIZEHINT(2) override;
170 
175  int* GetPosition() VTK_SIZEHINT(2) override;
176 
180  Display* GetDisplayId();
181 
183 
187  void SetDisplayId(Display*);
188  void SetDisplayId(void*) override;
190 
194  Window GetParentId();
195 
197 
200  void SetParentId(Window);
201  void SetParentId(void*) override;
203 
207  Window GetWindowId();
208 
210 
213  void SetWindowId(Window);
214  void SetWindowId(void*) override;
216 
220  void SetNextWindowId(Window);
221 
227  void SetNextWindowId(void*) override;
228 
232  void SetWindowName(const char*) override;
233 
238  bool InitializeFromCurrentContext() override;
239 
243  bool GetPlatformSupportsRenderWindowSharing() override { return true; }
244 
246 
251  void SetPosition(int x, int y) override;
252  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
254 
256 
260  void HideCursor() override;
261  void ShowCursor() override;
263 
267  void SetCurrentCursor(int) override;
268 
275 
279  void SetWindowInfo(const char* info) override;
280 
284  void SetNextWindowInfo(const char* info) override;
285 
289  void SetParentInfo(const char* info) override;
290 
295  void Render() override;
296 
298 
305  void PushContext() override;
306  void PopContext() override;
308 
318  bool SetSwapControl(int i) override;
319 
320 protected:
323 
324  vtkXOpenGLRenderWindowInternal* Internal;
325 
326  Window ParentId;
327  Window WindowId;
328  Window NextWindowId;
329  Display* DisplayId;
330  Colormap ColorMap;
336 
337  std::stack<Display*> DisplayStack;
338  std::stack<Drawable> DrawableStack;
339  std::stack<void*> ContextStack;
340 
341  // we must keep track of the cursors we are using
342  Cursor XCCrosshair;
343  Cursor XCArrow;
344  Cursor XCSizeAll;
345  Cursor XCSizeNS;
346  Cursor XCSizeWE;
347  Cursor XCSizeNE;
348  Cursor XCSizeNW;
349  Cursor XCSizeSE;
350  Cursor XCSizeSW;
351  Cursor XCHand;
352 
353  void CreateAWindow() override;
354  void DestroyWindow() override;
355  void CloseDisplay();
356 
357 private:
359  void operator=(const vtkXOpenGLRenderWindow&) = delete;
360 };
361 
362 #endif
vtkXOpenGLRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkXOpenGLRenderWindow::DisplayId
Display * DisplayId
Definition: vtkXOpenGLRenderWindow.h:329
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::GetDesiredVisual
virtual Visual * GetDesiredVisual()
vtkXOpenGLRenderWindow::ColorMap
Colormap ColorMap
Definition: vtkXOpenGLRenderWindow.h:330
vtkXOpenGLRenderWindow::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkXOpenGLRenderWindow::DisplayStack
std::stack< Display * > DisplayStack
Definition: vtkXOpenGLRenderWindow.h:337
vtkXOpenGLRenderWindow::SetWindowInfo
void SetWindowInfo(const char *info) override
Set this RenderWindow's X window id to a pre-existing window.
vtkXOpenGLRenderWindow::SetSizeNoXResize
void SetSizeNoXResize(int, int)
Specify the size of the rendering window in pixels but do not resize the XWindow.
vtkXOpenGLRenderWindow::SetShowWindow
void SetShowWindow(bool val) override
vtkXOpenGLRenderWindow::DrawableStack
std::stack< Drawable > DrawableStack
Definition: vtkXOpenGLRenderWindow.h:338
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:350
vtkXOpenGLRenderWindow::IsDirect
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int x, int y) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
vtkXOpenGLRenderWindow::Finalize
void Finalize() override
"Deinitialize" the rendering window.
vtkXOpenGLRenderWindow::SetFullScreen
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
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:345
vtkXOpenGLRenderWindow::SetSize
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
vtkXOpenGLRenderWindow::PopContext
void PopContext() override
vtkXOpenGLRenderWindow::WindowId
Window WindowId
Definition: vtkXOpenGLRenderWindow.h:327
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkXOpenGLRenderWindow::ForceMakeCurrent
vtkTypeBool ForceMakeCurrent
Definition: vtkXOpenGLRenderWindow.h:334
vtkXOpenGLRenderWindow::CloseDisplay
void CloseDisplay()
vtkX3D::height
@ height
Definition: vtkX3D.h:260
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::CursorHidden
vtkTypeBool CursorHidden
Definition: vtkXOpenGLRenderWindow.h:333
vtkXOpenGLRenderWindow::ShowCursor
void ShowCursor() override
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkXOpenGLRenderWindow::Initialize
void Initialize() override
Initialize the rendering window.
vtkXOpenGLRenderWindow::GetEventPending
vtkTypeBool GetEventPending() override
Check to see if a mouse button has been pressed or mouse wheel activated.
vtkXOpenGLRenderWindow::GetDesiredVisualInfo
virtual XVisualInfo * GetDesiredVisualInfo()
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:31
vtkXOpenGLRenderWindow::PrefFullScreen
virtual void PrefFullScreen()
Set the preferred window size to full screen.
vtkXOpenGLRenderWindow::XCHand
Cursor XCHand
Definition: vtkXOpenGLRenderWindow.h:351
vtkXOpenGLRenderWindow::XCCrosshair
Cursor XCCrosshair
Definition: vtkXOpenGLRenderWindow.h:342
vtkXOpenGLRenderWindow::New
static vtkXOpenGLRenderWindow * New()
vtkXOpenGLRenderWindow::XCArrow
Cursor XCArrow
Definition: vtkXOpenGLRenderWindow.h:343
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:382
vtkXOpenGLRenderWindow::ParentId
Window ParentId
Definition: vtkXOpenGLRenderWindow.h:326
vtkXOpenGLRenderWindow::GetGenericDisplayId
void * GetGenericDisplayId() override
Xwindow get set functions.
Definition: vtkXOpenGLRenderWindow.h:157
vtkXOpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Definition: vtkXOpenGLRenderWindow.h:163
vtkXOpenGLRenderWindow::vtkXOpenGLRenderWindow
vtkXOpenGLRenderWindow()
vtkXOpenGLRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkXOpenGLRenderWindow.h:339
vtkXOpenGLRenderWindow::XCSizeNE
Cursor XCSizeNE
Definition: vtkXOpenGLRenderWindow.h:347
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::OwnDisplay
vtkTypeBool OwnDisplay
Definition: vtkXOpenGLRenderWindow.h:332
vtkXOpenGLRenderWindow::WindowRemap
void WindowRemap() override
Resize the window.
vtkXOpenGLRenderWindow::XCSizeSE
Cursor XCSizeSE
Definition: vtkXOpenGLRenderWindow.h:349
vtkXOpenGLRenderWindow::OwnWindow
vtkTypeBool OwnWindow
Definition: vtkXOpenGLRenderWindow.h:331
vtkXOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkXOpenGLRenderWindow.h:38
vtkXOpenGLRenderWindow::XCSizeAll
Cursor XCSizeAll
Definition: vtkXOpenGLRenderWindow.h:344
vtkXOpenGLRenderWindow::Frame
void Frame() override
End the rendering process and display the image.
vtkXOpenGLRenderWindow::XCSizeWE
Cursor XCSizeWE
Definition: vtkXOpenGLRenderWindow.h:346
vtkXOpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkXOpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Definition: vtkXOpenGLRenderWindow.h:101
vtkXOpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this window the current OpenGL context.
vtkXOpenGLRenderWindow::UsingHardware
vtkTypeBool UsingHardware
Definition: vtkXOpenGLRenderWindow.h:335
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:52
vtkXOpenGLRenderWindow::Internal
vtkXOpenGLRenderWindowInternal * Internal
Definition: vtkXOpenGLRenderWindow.h:324
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int a[2]) override
Definition: vtkXOpenGLRenderWindow.h:252
vtkXOpenGLRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Definition: vtkXOpenGLRenderWindow.h:160
vtkXOpenGLRenderWindow::NextWindowId
Window NextWindowId
Definition: vtkXOpenGLRenderWindow.h:328
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.
vtkTypeBool
int vtkTypeBool
Definition: vtkABI.h:69
vtkOpenGLRenderWindow.h
vtkXOpenGLRenderWindow::XCSizeNW
Cursor XCSizeNW
Definition: vtkXOpenGLRenderWindow.h:348