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 "vtkRenderingOpenGLModule.h" // For export macro
32 #include "vtkOpenGLRenderWindow.h"
33 #include <X11/Xlib.h> // Needed for X types used in the public interface
34 #include <X11/Xutil.h> // Needed for X types used in the public interface
35 
36 class vtkIdList;
37 class vtkXOpenGLRenderWindowInternal;
38 
39 class VTKRENDERINGOPENGL_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
40 {
41 public:
42  static vtkXOpenGLRenderWindow *New();
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
49  void Start() override;
50 
54  void Frame() override;
55 
59  virtual void WindowInitialize();
60 
67  virtual void Initialize();
68 
74  void Finalize() override;
75 
79  void SetFullScreen(int) override;
80 
84  void WindowRemap() override;
85 
89  virtual void PrefFullScreen();
90 
92 
95  void SetSize(int,int) override;
96  void SetSize(int a[2]) override { this->SetSize(a[0], a[1]); }
98 
100 
103  virtual Colormap GetDesiredColormap();
104  virtual Visual *GetDesiredVisual();
105  virtual XVisualInfo *GetDesiredVisualInfo();
106  virtual int GetDesiredDepth();
108 
115  void SetStereoCapableWindow(int capable) override;
116 
120  void MakeCurrent() override;
121 
125  bool IsCurrent() override;
126 
132  void SetForceMakeCurrent() override;
133 
137  const char *ReportCapabilities() override;
138 
142  int SupportsOpenGL() override;
143 
147  int IsDirect() override;
148 
152  void *GetGenericDisplayId() override
153  {
154  return this->GetDisplayId();
155  }
156 
157  void *GetGenericWindowId() override;
158  void *GetGenericParentId() override
159  {
160  return reinterpret_cast<void *>(this->ParentId);
161  }
162 
163  void *GetGenericContext() override;
164  void *GetGenericDrawable() override
165  {
166  return reinterpret_cast<void *>(this->WindowId);
167  }
168 
172  int *GetScreenSize() override;
173 
177  int *GetPosition() override;
178 
182  Display *GetDisplayId();
183 
185 
189  void SetDisplayId(Display *);
190  void SetDisplayId(void *) override;
192 
196  Window GetParentId();
197 
199 
202  void SetParentId(Window);
203  void SetParentId(void *) override;
205 
209  Window GetWindowId();
210 
212 
215  void SetWindowId(Window);
216  void SetWindowId(void *) override;
218 
222  void SetNextWindowId(Window);
223 
229  void SetNextWindowId(void *) override;
230 
234  void SetWindowName(const char *) override;
235 
240  bool InitializeFromCurrentContext() override;
241 
243 
246  void SetPosition(int,int) override;
247  void SetPosition(int a[2]) override { this->SetPosition(a[0], a[1]); }
249 
251 
255  void HideCursor() override;
256  void ShowCursor() override;
258 
262  void SetCurrentCursor(int) override;
263 
269  int GetEventPending() override;
270 
274  void SetWindowInfo(char *info) override;
275 
279  void SetNextWindowInfo(char *info) override;
280 
284  void SetParentInfo(char *info) override;
285 
290  void Render() override;
291 
295  void SetOffScreenRendering(int i) override;
296 
297 protected:
299  ~vtkXOpenGLRenderWindow() override;
300 
301  vtkXOpenGLRenderWindowInternal *Internal;
302 
303  Window ParentId;
304  Window WindowId;
305  Window NextWindowId;
306  Display *DisplayId;
307  Colormap ColorMap;
310  int ScreenSize[2];
315 
316  // we must keep track of the cursors we are using
317  Cursor XCCrosshair;
318  Cursor XCArrow;
319  Cursor XCSizeAll;
320  Cursor XCSizeNS;
321  Cursor XCSizeWE;
322  Cursor XCSizeNE;
323  Cursor XCSizeNW;
324  Cursor XCSizeSE;
325  Cursor XCSizeSW;
326  Cursor XCHand;
327 
328 
329  void CreateAWindow() override;
330  void DestroyWindow() override;
331  void CreateOffScreenWindow(int width, int height);
332  void DestroyOffScreenWindow();
333  void ResizeOffScreenWindow(int width, int height);
334 
335 
336 private:
338  void operator=(const vtkXOpenGLRenderWindow&) = delete;
339 };
340 
341 
342 
343 #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.
vtkXOpenGLRenderWindowInternal * Internal
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
Specify the size of the rendering window 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.
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.
int SupportsOpenGL() override
Does this render window support OpenGL? 0-false, 1-true.
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 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.
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.
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.