VTK  9.2.6
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:
43  static vtkXOpenGLRenderWindow* New();
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 
173  void* GetGenericFBConfig();
174 
179  int* GetScreenSize() VTK_SIZEHINT(2) override;
180 
185  int* GetPosition() VTK_SIZEHINT(2) override;
186 
190  Display* GetDisplayId();
191 
193 
197  void SetDisplayId(Display*);
198  void SetDisplayId(void*) override;
200 
204  Window GetParentId();
205 
207 
210  void SetParentId(Window);
211  void SetParentId(void*) override;
213 
217  Window GetWindowId();
218 
220 
223  void SetWindowId(Window);
224  void SetWindowId(void*) override;
226 
230  void SetNextWindowId(Window);
231 
237  void SetNextWindowId(void*) override;
238 
242  void SetWindowName(const char*) override;
243 
248  void SetIcon(vtkImageData* img) override;
249 
254  bool InitializeFromCurrentContext() override;
255 
259  bool GetPlatformSupportsRenderWindowSharing() override { return true; }
260 
262 
267  void SetPosition(int x, int y) override;
268  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
270 
272 
276  void HideCursor() override;
277  void ShowCursor() override;
279 
283  void SetCurrentCursor(int) override;
284 
290  vtkTypeBool GetEventPending() override;
291 
295  void SetWindowInfo(const char* info) override;
296 
300  void SetNextWindowInfo(const char* info) override;
301 
305  void SetParentInfo(const char* info) override;
306 
311  void Render() override;
312 
314 
321  void PushContext() override;
322  void PopContext() override;
324 
334  bool SetSwapControl(int i) override;
335 
336 protected:
338  ~vtkXOpenGLRenderWindow() override;
339 
340  vtkXOpenGLRenderWindowInternal* Internal;
341 
342  Window ParentId;
343  Window WindowId;
344  Window NextWindowId;
345  Display* DisplayId;
346  Colormap ColorMap;
352 
353  std::stack<Display*> DisplayStack;
354  std::stack<Drawable> DrawableStack;
355  std::stack<void*> ContextStack;
356 
357  // we must keep track of the cursors we are using
358  Cursor XCCrosshair;
359  Cursor XCArrow;
360  Cursor XCSizeAll;
361  Cursor XCSizeNS;
362  Cursor XCSizeWE;
363  Cursor XCSizeNE;
364  Cursor XCSizeNW;
365  Cursor XCSizeSE;
366  Cursor XCSizeSW;
367  Cursor XCHand;
368  Cursor XCCustom;
369 
370  void CreateAWindow() override;
371  void DestroyWindow() override;
372  void CloseDisplay();
373 
374 private:
376  void operator=(const vtkXOpenGLRenderWindow&) = delete;
377 };
378 
379 #endif
OpenGL rendering window.
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
virtual void SetFullScreen(vtkTypeBool)
Turn on/off rendering full screen window size.
vtkXOpenGLRenderWindowInternal * Internal
void * GetGenericContext() override
Dummy stubs for vtkWindow API.
virtual void WindowRemap()
Remap the rendering window.
void Start(void) override
Begin the rendering process.
virtual void HideCursor()
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
void Render() override
Handle opengl specific code and calls superclass.
void * GetGenericParentId() override
Dummy stubs for vtkWindow API.
static vtkRenderWindow * New()
Construct an instance of vtkRenderWindow with its screen size set to 300x300, borders turned on...
void * GetGenericWindowId() override
Dummy stubs for vtkWindow API.
void SetWindowInfo(const char *) override
Dummy stubs for vtkWindow API.
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
virtual void SetPosition(int x, int y)
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
virtual bool IsCurrent()
Tells if this window is the current graphics context for the calling thread.
virtual void Finalize()
Finalize the rendering process.
virtual void SetShowWindow(bool)
Show or not Show the window.
OpenGL rendering window.
std::stack< Display * > DisplayStack
int vtkTypeBool
Definition: vtkABI.h:69
virtual void SetStereoCapableWindow(vtkTypeBool capable)
Prescribe that the window be created in a stereo-capable mode.
virtual void SetNextWindowInfo(const char *)
Dummy stubs for vtkWindow API.
virtual void SetSize(int width, int height)
Set the size (width and height) of the rendering window in screen coordinates (in pixels)...
void SetSize(int a[2]) override
Get the size (width and height) of the rendering window in screen coordinates (in pixels)...
std::stack< void * > ContextStack
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
topologically and geometrically regular array of data
Definition: vtkImageData.h:53
list of point or cell ids
Definition: vtkIdList.h:33
virtual void ShowCursor()
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
void SetPosition(int a[2]) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
virtual int * GetScreenSize()
Get the current size of the screen in pixels.
Definition: vtkWindow.h:105
std::stack< Drawable > DrawableStack
virtual void MakeCurrent()
Make the window current.
Definition: vtkWindow.h:246
virtual void PushContext()
Ability to push and pop this window's context as the current context.
#define VTK_SIZEHINT(...)
const char * ReportCapabilities() override
Get report of capabilities for the render window.
virtual bool SetSwapControl(int)
Set the number of vertical syncs required between frames.
void Frame() override
A termination method performed at the end of the rendering process to do things like swapping buffers...
virtual vtkTypeBool GetEventPending()
Check to see if a mouse button has been pressed.
virtual void ReleaseCurrent()
Release the current context.
Definition: vtkWindow.h:252
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetParentInfo(const char *) override
Dummy stubs for vtkWindow API.
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
virtual vtkTypeBool IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
void * GetGenericDisplayId() override
Xwindow get set functions.
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.