VTK
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 "vtkRenderingOpenGL2Module.h" // For export macro
32 #include <stack> // for ivar
33 #include "vtkOpenGLRenderWindow.h"
34 #include <X11/Xlib.h> // Needed for X types used in the public interface
35 #include <X11/Xutil.h> // Needed for X types used in the public interface
36 
37 class vtkIdList;
38 class vtkXOpenGLRenderWindowInternal;
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(int) override;
81 
85  void WindowRemap() override;
86 
90  virtual void PrefFullScreen();
91 
95  void SetSize(int,int) override;
96  void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
97 
99 
102  virtual Colormap GetDesiredColormap();
103  virtual Visual *GetDesiredVisual();
104  virtual XVisualInfo *GetDesiredVisualInfo();
105  virtual int GetDesiredDepth();
107 
114  void SetStereoCapableWindow(int capable) override;
115 
119  void MakeCurrent() override;
120 
124  bool IsCurrent() override;
125 
131  void SetForceMakeCurrent() override;
132 
136  const char *ReportCapabilities() override;
137 
141  int IsDirect() override;
142 
146  void *GetGenericDisplayId() override
147  {
148  return this->GetDisplayId();
149  }
150 
151  void *GetGenericWindowId() override;
152  void *GetGenericParentId() override
153  {
154  return reinterpret_cast<void *>(this->ParentId);
155  }
156 
157  void *GetGenericContext() override;
158  void *GetGenericDrawable() override
159  {
160  return reinterpret_cast<void *>(this->WindowId);
161  }
162 
166  int *GetScreenSize() override;
167 
171  int *GetPosition() override;
172 
176  Display *GetDisplayId();
177 
179 
183  void SetDisplayId(Display *);
184  void SetDisplayId(void *) override;
186 
190  Window GetParentId();
191 
193 
196  void SetParentId(Window);
197  void SetParentId(void *) override;
199 
203  Window GetWindowId();
204 
206 
209  void SetWindowId(Window);
210  void SetWindowId(void *) override;
212 
216  void SetNextWindowId(Window);
217 
223  void SetNextWindowId(void *) override;
224 
228  void SetWindowName(const char *) override;
229 
234  bool InitializeFromCurrentContext() override;
235 
237 
240  void SetPosition(int,int) override;
241  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
243 
245 
249  void HideCursor() override;
250  void ShowCursor() override;
252 
256  void SetCurrentCursor(int) override;
257 
263  int GetEventPending() override;
264 
268  void SetWindowInfo(char *info) override;
269 
273  void SetNextWindowInfo(char *info) override;
274 
278  void SetParentInfo(char *info) override;
279 
284  void Render() override;
285 
289  void SetOffScreenRendering(int i) override;
290 
292 
299  void PushContext() override;
300  void PopContext() override;
302 
312  bool SetSwapControl(int i) override;
313 
314 protected:
316  ~vtkXOpenGLRenderWindow() override;
317 
318  vtkXOpenGLRenderWindowInternal *Internal;
319 
320  Window ParentId;
321  Window WindowId;
322  Window NextWindowId;
323  Display *DisplayId;
324  Colormap ColorMap;
325  int OwnWindow;
326  int OwnDisplay;
327  int ScreenSize[2];
328  int CursorHidden;
329  int ForceMakeCurrent;
330  int UsingHardware;
331 
332  std::stack<Display *> DisplayStack;
333  std::stack<Drawable> DrawableStack;
334  std::stack<void *> ContextStack;
335 
336  // we must keep track of the cursors we are using
337  Cursor XCCrosshair;
338  Cursor XCArrow;
339  Cursor XCSizeAll;
340  Cursor XCSizeNS;
341  Cursor XCSizeWE;
342  Cursor XCSizeNE;
343  Cursor XCSizeNW;
344  Cursor XCSizeSE;
345  Cursor XCSizeSW;
346  Cursor XCHand;
347 
348 
349  void CreateAWindow() override;
350  void DestroyWindow() override;
351  void CreateOffScreenWindow(int width, int height);
352  void DestroyOffScreenWindow();
353  void ResizeOffScreenWindow(int width, int height);
354  void CloseDisplay();
355 
356 
357 private:
359  void operator=(const vtkXOpenGLRenderWindow&) = delete;
360 };
361 
362 
363 
364 #endif
OpenGL rendering window.
virtual void SetOffScreenRendering(int)
Create a window in memory instead of on the screen.
virtual void Finalize()=0
Finalize the rendering process.
virtual void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
virtual void WindowRemap()=0
Remap the rendering window.
virtual void HideCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
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...
bool InitializeFromCurrentContext() override
Initialize the render window from the information associated with the currently activated OpenGL cont...
virtual int * GetScreenSize()=0
Get the current size of the screen in pixels.
void * GetGenericContext() override=0
Dummy stubs for vtkWindow API.
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
void Render() override
Ask each renderer owned by this RenderWindow to render its image and synchronize this process...
virtual void SetNextWindowInfo(char *)=0
Dummy stubs for vtkWindow API.
virtual void SetFullScreen(int)=0
Turn on/off rendering full screen window size.
OpenGL rendering window.
virtual int GetEventPending()=0
Check to see if a mouse button has been pressed.
virtual void SetStereoCapableWindow(int capable)
Prescribe that the window be created in a stereo-capable mode.
virtual int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual bool IsCurrent()=0
Tells if this window is the current graphics context for the calling thread.
void SetSize(int a[2]) override
Set the size of the window in screen coordinates in pixels.
void SetWindowId(void *) override=0
Dummy stubs for vtkWindow API.
void SetDisplayId(void *) override=0
Dummy stubs for vtkWindow API.
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void DestroyWindow()=0
Destroy a not-off-screen window.
std::stack< Display * > DisplayStack
list of point or cell ids
Definition: vtkIdList.h:36
void SetWindowInfo(char *) override=0
Dummy stubs for vtkWindow API.
void SetPosition(int a[2]) override
Move the window to a new position on the display.
std::stack< Drawable > DrawableStack
virtual void SetNextWindowId(void *)=0
Dummy stubs for vtkWindow API.
virtual int * GetPosition()
Set/Get the position in screen coordinates of the rendering window.
virtual void PushContext()
Ability to push and pop this window&#39;s context as the current context.
virtual void Frame()=0
A termination method performed at the end of the rendering process to do things like swapping buffers...
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 SetParentId(void *) override=0
Dummy stubs for vtkWindow API.
void SetParentInfo(char *) override=0
Dummy stubs for vtkWindow API.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetSize(int a[2]) override
Set the size of the window in screen coordinates in pixels.
std::stack< void * > ContextStack
virtual void Start()=0
Initialize the rendering process.
virtual void SetWindowName(const char *)
Get name of rendering window.
void * GetGenericWindowId() override=0
Dummy stubs for vtkWindow API.
virtual void SetPosition(int, int)
Set/Get the position in screen coordinates of the rendering window.
virtual void Initialize(void)
Initialize the rendering window.
virtual void CreateAWindow()=0
Create a not-off-screen window.
void MakeCurrent() override=0
Attempt to make this window the current graphics context for the calling thread.
virtual void ShowCursor()=0
Hide or Show the mouse cursor, it is nice to be able to hide the default cursor if you want VTK to di...
void * GetGenericDisplayId() override
Xwindow get set functions.
void * GetGenericDrawable() override
Dummy stubs for vtkWindow API.