VTK  9.1.0
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 =========================================================================*/
28 #ifndef vtkXOpenGLRenderWindow_h
29 #define vtkXOpenGLRenderWindow_h
30 
31 #include "vtkOpenGLRenderWindow.h"
32 #include "vtkRenderingOpenGL2Module.h" // For export macro
33 #include <X11/Xlib.h> // Needed for X types used in the public interface
34 #include <stack> // for ivar
35 
36 class vtkIdList;
37 class vtkXOpenGLRenderWindowInternal;
38 struct vtkXVisualInfo;
39 
40 class VTKRENDERINGOPENGL2_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
41 {
42 public:
45  void PrintSelf(ostream& os, vtkIndent indent) override;
46 
50  void Start() override;
51 
55  void Frame() override;
56 
60  virtual void WindowInitialize();
61 
68  void Initialize() override;
69 
75  void Finalize() override;
76 
80  void SetFullScreen(vtkTypeBool) override;
81 
85  void WindowRemap() override;
86 
87  // Call X funcs to map unmap
88  void SetShowWindow(bool val) override;
89 
93  virtual void PrefFullScreen();
94 
103  void SetSize(int width, int height) override;
104  void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
105 
110  void SetSizeNoXResize(int, int);
111 
113 
116  virtual Colormap GetDesiredColormap();
117  virtual Visual* GetDesiredVisual();
118  virtual vtkXVisualInfo* GetDesiredVisualInfo();
119  virtual int GetDesiredDepth();
121 
128  void SetStereoCapableWindow(vtkTypeBool capable) override;
129 
133  void MakeCurrent() override;
134 
138  bool IsCurrent() override;
139 
143  void ReleaseCurrent() override;
144 
150  void SetForceMakeCurrent() override;
151 
155  const char* ReportCapabilities() override;
156 
160  vtkTypeBool IsDirect() override;
161 
165  void* GetGenericDisplayId() override { return this->GetDisplayId(); }
166 
167  void* GetGenericWindowId() override;
168  void* GetGenericParentId() override { return reinterpret_cast<void*>(this->ParentId); }
169 
170  void* GetGenericContext() override;
171  void* GetGenericDrawable() override { return reinterpret_cast<void*>(this->WindowId); }
172 
177  int* GetScreenSize() VTK_SIZEHINT(2) override;
178 
183  int* GetPosition() VTK_SIZEHINT(2) override;
184 
188  Display* GetDisplayId();
189 
191 
195  void SetDisplayId(Display*);
196  void SetDisplayId(void*) override;
198 
202  Window GetParentId();
203 
205 
208  void SetParentId(Window);
209  void SetParentId(void*) override;
211 
215  Window GetWindowId();
216 
218 
221  void SetWindowId(Window);
222  void SetWindowId(void*) override;
224 
228  void SetNextWindowId(Window);
229 
235  void SetNextWindowId(void*) override;
236 
240  void SetWindowName(const char*) override;
241 
246  void SetIcon(vtkImageData* img) override;
247 
252  bool InitializeFromCurrentContext() override;
253 
257  bool GetPlatformSupportsRenderWindowSharing() override { return true; }
258 
260 
265  void SetPosition(int x, int y) override;
266  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
268 
270 
274  void HideCursor() override;
275  void ShowCursor() override;
277 
281  void SetCurrentCursor(int) override;
282 
289 
293  void SetWindowInfo(const char* info) override;
294 
298  void SetNextWindowInfo(const char* info) override;
299 
303  void SetParentInfo(const char* info) override;
304 
309  void Render() override;
310 
312 
319  void PushContext() override;
320  void PopContext() override;
322 
332  bool SetSwapControl(int i) override;
333 
334 protected:
337 
338  vtkXOpenGLRenderWindowInternal* Internal;
339 
340  Window ParentId;
341  Window WindowId;
342  Window NextWindowId;
343  Display* DisplayId;
344  Colormap ColorMap;
350 
351  std::stack<Display*> DisplayStack;
352  std::stack<Drawable> DrawableStack;
353  std::stack<void*> ContextStack;
354 
355  // we must keep track of the cursors we are using
356  Cursor XCCrosshair;
357  Cursor XCArrow;
358  Cursor XCSizeAll;
359  Cursor XCSizeNS;
360  Cursor XCSizeWE;
361  Cursor XCSizeNE;
362  Cursor XCSizeNW;
363  Cursor XCSizeSE;
364  Cursor XCSizeSW;
365  Cursor XCHand;
366  Cursor XCCustom;
367 
368  void CreateAWindow() override;
369  void DestroyWindow() override;
370  void CloseDisplay();
371 
372 private:
374  void operator=(const vtkXOpenGLRenderWindow&) = delete;
375 };
376 
377 #endif
vtkXOpenGLRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkXOpenGLRenderWindow::DisplayId
Display * DisplayId
Definition: vtkXOpenGLRenderWindow.h:343
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
Dummy stubs for vtkWindow API.
vtkXOpenGLRenderWindow::Render
void Render() override
This computes the size of the render window before calling the supper classes render.
vtkXOpenGLRenderWindow::GetDesiredDepth
virtual int GetDesiredDepth()
Get the X properties of an ideal rendering window.
vtkXOpenGLRenderWindow::WindowInitialize
virtual void WindowInitialize()
Initialize the window for rendering.
vtkXOpenGLRenderWindow::GetDesiredVisual
virtual Visual * GetDesiredVisual()
Get the X properties of an ideal rendering window.
vtkXOpenGLRenderWindow::ColorMap
Colormap ColorMap
Definition: vtkXOpenGLRenderWindow.h:344
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:351
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
Show or not Show the window.
vtkXOpenGLRenderWindow::DrawableStack
std::stack< Drawable > DrawableStack
Definition: vtkXOpenGLRenderWindow.h:352
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:364
vtkXOpenGLRenderWindow::XCCustom
Cursor XCCustom
Definition: vtkXOpenGLRenderWindow.h:366
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:359
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
Ability to push and pop this window's context as the current context.
vtkXOpenGLRenderWindow::WindowId
Window WindowId
Definition: vtkXOpenGLRenderWindow.h:341
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:48
vtkXOpenGLRenderWindow::ForceMakeCurrent
vtkTypeBool ForceMakeCurrent
Definition: vtkXOpenGLRenderWindow.h:348
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:347
vtkXOpenGLRenderWindow::ShowCursor
void ShowCursor() override
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
vtkImageData
topologically and geometrically regular array of data
Definition: vtkImageData.h:157
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:113
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.
vtkIdList
list of point or cell ids
Definition: vtkIdList.h:140
vtkXOpenGLRenderWindow::PrefFullScreen
virtual void PrefFullScreen()
Set the preferred window size to full screen.
vtkXOpenGLRenderWindow::GetDesiredVisualInfo
virtual vtkXVisualInfo * GetDesiredVisualInfo()
Get the X properties of an ideal rendering window.
vtkXOpenGLRenderWindow::XCHand
Cursor XCHand
Definition: vtkXOpenGLRenderWindow.h:365
vtkXOpenGLRenderWindow::XCCrosshair
Cursor XCCrosshair
Definition: vtkXOpenGLRenderWindow.h:356
vtkXOpenGLRenderWindow::New
static vtkXOpenGLRenderWindow * New()
vtkXOpenGLRenderWindow::XCArrow
Cursor XCArrow
Definition: vtkXOpenGLRenderWindow.h:357
vtkXOpenGLRenderWindow::GetGenericContext
void * GetGenericContext() override
Dummy stubs for vtkWindow API.
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:340
vtkXOpenGLRenderWindow::GetGenericDisplayId
void * GetGenericDisplayId() override
Xwindow get set functions.
Definition: vtkXOpenGLRenderWindow.h:165
vtkXOpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.
Definition: vtkXOpenGLRenderWindow.h:171
vtkXOpenGLRenderWindow::vtkXOpenGLRenderWindow
vtkXOpenGLRenderWindow()
vtkXOpenGLRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkXOpenGLRenderWindow.h:353
vtkXOpenGLRenderWindow::XCSizeNE
Cursor XCSizeNE
Definition: vtkXOpenGLRenderWindow.h:361
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:346
vtkXOpenGLRenderWindow::WindowRemap
void WindowRemap() override
Resize the window.
vtkXOpenGLRenderWindow::XCSizeSE
Cursor XCSizeSE
Definition: vtkXOpenGLRenderWindow.h:363
vtkXOpenGLRenderWindow::OwnWindow
vtkTypeBool OwnWindow
Definition: vtkXOpenGLRenderWindow.h:345
vtkXOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkXOpenGLRenderWindow.h:41
vtkXOpenGLRenderWindow::XCSizeAll
Cursor XCSizeAll
Definition: vtkXOpenGLRenderWindow.h:358
vtkXOpenGLRenderWindow::Frame
void Frame() override
End the rendering process and display the image.
vtkXOpenGLRenderWindow::ReleaseCurrent
void ReleaseCurrent() override
Release the current context.
vtkXOpenGLRenderWindow::XCSizeWE
Cursor XCSizeWE
Definition: vtkXOpenGLRenderWindow.h:360
vtkXOpenGLRenderWindow::ReportCapabilities
const char * ReportCapabilities() override
Get report of capabilities for the render window.
vtkXOpenGLRenderWindow::SetSize
void SetSize(int a[2]) override
Get the size (width and height) of the rendering window in screen coordinates (in pixels).
Definition: vtkXOpenGLRenderWindow.h:104
vtkXOpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this window the current OpenGL context.
vtkXOpenGLRenderWindow::UsingHardware
vtkTypeBool UsingHardware
Definition: vtkXOpenGLRenderWindow.h:349
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:83
vtkXOpenGLRenderWindow::Internal
vtkXOpenGLRenderWindowInternal * Internal
Definition: vtkXOpenGLRenderWindow.h:338
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int a[2]) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
Definition: vtkXOpenGLRenderWindow.h:266
vtkXOpenGLRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
Definition: vtkXOpenGLRenderWindow.h:168
vtkXOpenGLRenderWindow::NextWindowId
Window NextWindowId
Definition: vtkXOpenGLRenderWindow.h:342
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:362