VTK  9.0.2
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
list of point or cell ids
Definition: vtkIdList.h:31
a simple class to control print indentation
Definition: vtkIndent.h:34
OpenGL rendering window.
OpenGL rendering window.
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...
bool IsCurrent() override
Tells if this window is the current OpenGL context for the calling thread.
vtkTypeBool IsDirect() override
Is this render window using hardware acceleration? 0-false, 1-true.
void DestroyWindow() override
Destroy a not-off-screen window.
void PopContext() override
void SetForceMakeCurrent() override
If called, allow MakeCurrent() to skip cache-check when called.
virtual Colormap GetDesiredColormap()
Get the X properties of an ideal rendering window.
void ShowCursor() override
void Initialize() override
Initialize the rendering window.
void SetSize(int a[2]) override
void SetSize(int width, int height) override
Set the size (width and height) of the rendering window in screen coordinates (in pixels).
void CreateAWindow() override
Create a not-off-screen window.
void * GetGenericWindowId() override
void SetParentInfo(const char *info) override
Sets the X window id of the window that WILL BE created.
void Start() override
Begin the rendering process.
bool SetSwapControl(int i) override
Set the number of vertical syncs required between frames.
void SetFullScreen(vtkTypeBool) override
Change the window to fill the entire screen.
virtual int GetDesiredDepth()
void MakeCurrent() override
Make this window the current OpenGL context.
vtkTypeBool GetEventPending() override
Check to see if a mouse button has been pressed or mouse wheel activated.
void SetWindowInfo(const char *info) override
Set this RenderWindow's X window id to a pre-existing window.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetCurrentCursor(int) override
Change the shape of the cursor.
void * GetGenericDrawable() override
void SetSizeNoXResize(int, int)
Specify the size of the rendering window in pixels but do not resize the XWindow.
virtual Visual * GetDesiredVisual()
int * GetScreenSize() override
Get the current size of the screen in pixels.
vtkXOpenGLRenderWindowInternal * Internal
const char * ReportCapabilities() override
Get report of capabilities for the render window.
void Finalize() override
"Deinitialize" the rendering window.
void * GetGenericParentId() override
void SetNextWindowInfo(const char *info) override
Set the window info that will be used after WindowRemap()
void Frame() override
End the rendering process and display the image.
std::stack< Drawable > DrawableStack
void * GetGenericContext() override
~vtkXOpenGLRenderWindow() override
virtual vtkXVisualInfo * GetDesiredVisualInfo()
static vtkXOpenGLRenderWindow * New()
virtual void PrefFullScreen()
Set the preferred window size to full screen.
void WindowRemap() override
Resize the window.
void SetStereoCapableWindow(vtkTypeBool capable) override
Prescribe that the window be created in a stereo-capable mode.
virtual void WindowInitialize()
Initialize the window for rendering.
void SetPosition(int a[2]) override
std::stack< void * > ContextStack
void Render() override
This computes the size of the render window before calling the supper classes render.
void SetPosition(int x, int y) override
Set the position (x and y) of the rendering window in screen coordinates (in pixels).
std::stack< Display * > DisplayStack
void SetShowWindow(bool val) override
void PushContext() override
Ability to push and pop this window's context as the current context.
void * GetGenericDisplayId() override
Xwindow get set functions.
@ info
Definition: vtkX3D.h:382
@ height
Definition: vtkX3D.h:260
int vtkTypeBool
Definition: vtkABI.h:69
#define VTK_SIZEHINT(...)