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 =========================================================================*/
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 
145  void SetForceMakeCurrent() override;
146 
150  const char* ReportCapabilities() override;
151 
155  vtkTypeBool IsDirect() override;
156 
160  void* GetGenericDisplayId() override { return this->GetDisplayId(); }
161 
162  void* GetGenericWindowId() override;
163  void* GetGenericParentId() override { return reinterpret_cast<void*>(this->ParentId); }
164 
165  void* GetGenericContext() override;
166  void* GetGenericDrawable() override { return reinterpret_cast<void*>(this->WindowId); }
167 
172  int* GetScreenSize() VTK_SIZEHINT(2) override;
173 
178  int* GetPosition() VTK_SIZEHINT(2) override;
179 
183  Display* GetDisplayId();
184 
186 
190  void SetDisplayId(Display*);
191  void SetDisplayId(void*) override;
193 
197  Window GetParentId();
198 
200 
203  void SetParentId(Window);
204  void SetParentId(void*) override;
206 
210  Window GetWindowId();
211 
213 
216  void SetWindowId(Window);
217  void SetWindowId(void*) override;
219 
223  void SetNextWindowId(Window);
224 
230  void SetNextWindowId(void*) override;
231 
235  void SetWindowName(const char*) override;
236 
241  bool InitializeFromCurrentContext() override;
242 
246  bool GetPlatformSupportsRenderWindowSharing() override { return true; }
247 
249 
254  void SetPosition(int x, int y) override;
255  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
257 
259 
263  void HideCursor() override;
264  void ShowCursor() override;
266 
270  void SetCurrentCursor(int) override;
271 
278 
282  void SetWindowInfo(const char* info) override;
283 
287  void SetNextWindowInfo(const char* info) override;
288 
292  void SetParentInfo(const char* info) override;
293 
298  void Render() override;
299 
301 
308  void PushContext() override;
309  void PopContext() override;
311 
321  bool SetSwapControl(int i) override;
322 
323 protected:
326 
327  vtkXOpenGLRenderWindowInternal* Internal;
328 
329  Window ParentId;
330  Window WindowId;
331  Window NextWindowId;
332  Display* DisplayId;
333  Colormap ColorMap;
339 
340  std::stack<Display*> DisplayStack;
341  std::stack<Drawable> DrawableStack;
342  std::stack<void*> ContextStack;
343 
344  // we must keep track of the cursors we are using
345  Cursor XCCrosshair;
346  Cursor XCArrow;
347  Cursor XCSizeAll;
348  Cursor XCSizeNS;
349  Cursor XCSizeWE;
350  Cursor XCSizeNE;
351  Cursor XCSizeNW;
352  Cursor XCSizeSE;
353  Cursor XCSizeSW;
354  Cursor XCHand;
355 
356  void CreateAWindow() override;
357  void DestroyWindow() override;
358  void CloseDisplay();
359 
360 private:
362  void operator=(const vtkXOpenGLRenderWindow&) = delete;
363 };
364 
365 #endif
vtkXOpenGLRenderWindow::DestroyWindow
void DestroyWindow() override
Destroy a not-off-screen window.
vtkXOpenGLRenderWindow::DisplayId
Display * DisplayId
Definition: vtkXOpenGLRenderWindow.h:332
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:333
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:340
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:341
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:353
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:348
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:330
VTK_SIZEHINT
#define VTK_SIZEHINT(...)
Definition: vtkWrappingHints.h:45
vtkXOpenGLRenderWindow::ForceMakeCurrent
vtkTypeBool ForceMakeCurrent
Definition: vtkXOpenGLRenderWindow.h:337
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:336
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.
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::GetDesiredVisualInfo
virtual vtkXVisualInfo * GetDesiredVisualInfo()
vtkXOpenGLRenderWindow::XCHand
Cursor XCHand
Definition: vtkXOpenGLRenderWindow.h:354
vtkXOpenGLRenderWindow::XCCrosshair
Cursor XCCrosshair
Definition: vtkXOpenGLRenderWindow.h:345
vtkXOpenGLRenderWindow::New
static vtkXOpenGLRenderWindow * New()
vtkXOpenGLRenderWindow::XCArrow
Cursor XCArrow
Definition: vtkXOpenGLRenderWindow.h:346
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:329
vtkXOpenGLRenderWindow::GetGenericDisplayId
void * GetGenericDisplayId() override
Xwindow get set functions.
Definition: vtkXOpenGLRenderWindow.h:160
vtkXOpenGLRenderWindow::GetGenericDrawable
void * GetGenericDrawable() override
Definition: vtkXOpenGLRenderWindow.h:166
vtkXOpenGLRenderWindow::vtkXOpenGLRenderWindow
vtkXOpenGLRenderWindow()
vtkXOpenGLRenderWindow::ContextStack
std::stack< void * > ContextStack
Definition: vtkXOpenGLRenderWindow.h:342
vtkXOpenGLRenderWindow::XCSizeNE
Cursor XCSizeNE
Definition: vtkXOpenGLRenderWindow.h:350
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:335
vtkXOpenGLRenderWindow::WindowRemap
void WindowRemap() override
Resize the window.
vtkXOpenGLRenderWindow::XCSizeSE
Cursor XCSizeSE
Definition: vtkXOpenGLRenderWindow.h:352
vtkXOpenGLRenderWindow::OwnWindow
vtkTypeBool OwnWindow
Definition: vtkXOpenGLRenderWindow.h:334
vtkXOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkXOpenGLRenderWindow.h:41
vtkXOpenGLRenderWindow::XCSizeAll
Cursor XCSizeAll
Definition: vtkXOpenGLRenderWindow.h:347
vtkXOpenGLRenderWindow::Frame
void Frame() override
End the rendering process and display the image.
vtkXOpenGLRenderWindow::XCSizeWE
Cursor XCSizeWE
Definition: vtkXOpenGLRenderWindow.h:349
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:104
vtkXOpenGLRenderWindow::MakeCurrent
void MakeCurrent() override
Make this window the current OpenGL context.
vtkXOpenGLRenderWindow::UsingHardware
vtkTypeBool UsingHardware
Definition: vtkXOpenGLRenderWindow.h:338
vtkOpenGLRenderWindow
OpenGL rendering window.
Definition: vtkOpenGLRenderWindow.h:52
vtkXOpenGLRenderWindow::Internal
vtkXOpenGLRenderWindowInternal * Internal
Definition: vtkXOpenGLRenderWindow.h:327
vtkXOpenGLRenderWindow::SetPosition
void SetPosition(int a[2]) override
Definition: vtkXOpenGLRenderWindow.h:255
vtkXOpenGLRenderWindow::GetGenericParentId
void * GetGenericParentId() override
Definition: vtkXOpenGLRenderWindow.h:163
vtkXOpenGLRenderWindow::NextWindowId
Window NextWindowId
Definition: vtkXOpenGLRenderWindow.h:331
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:351