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 =========================================================================*/
31 #ifndef vtkXOpenGLRenderWindow_h
32 #define vtkXOpenGLRenderWindow_h
33 
34 #include "vtkRenderingOpenGL2Module.h" // For export macro
35 #include <stack> // for ivar
36 #include "vtkOpenGLRenderWindow.h"
37 #include <X11/Xlib.h> // Needed for X types used in the public interface
38 #include <X11/Xutil.h> // Needed for X types used in the public interface
39 
40 class vtkIdList;
41 class vtkXOpenGLRenderWindowInternal;
42 
43 class VTKRENDERINGOPENGL2_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
44 {
45 public:
48  void PrintSelf(ostream& os, vtkIndent indent);
49 
53  virtual void Start(void);
54 
58  virtual void Frame(void);
59 
63  virtual void WindowInitialize(void);
64 
71  virtual void Initialize(void);
72 
78  virtual void Finalize(void);
79 
83  virtual void SetFullScreen(int);
84 
88  virtual void WindowRemap(void);
89 
93  virtual void PrefFullScreen(void);
94 
98  virtual void SetSize(int,int);
99  virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);}
100 
102 
105  virtual Colormap GetDesiredColormap();
106  virtual Visual *GetDesiredVisual();
107  virtual XVisualInfo *GetDesiredVisualInfo();
108  virtual int GetDesiredDepth();
110 
117  virtual void SetStereoCapableWindow(int capable);
118 
122  void MakeCurrent();
123 
127  virtual bool IsCurrent();
128 
135 
139  const char *ReportCapabilities();
140 
144  int IsDirect();
145 
149  virtual void *GetGenericDisplayId()
150  {
151  return this->GetDisplayId();
152  }
153 
154  virtual void *GetGenericWindowId();
155  virtual void *GetGenericParentId()
156  {
157  return reinterpret_cast<void *>(this->ParentId);
158  }
159 
160  virtual void *GetGenericContext();
161  virtual void *GetGenericDrawable()
162  {
163  return reinterpret_cast<void *>(this->WindowId);
164  }
165 
169  virtual int *GetScreenSize();
170 
174  virtual int *GetPosition();
175 
179  Display *GetDisplayId();
180 
182 
186  void SetDisplayId(Display *);
187  void SetDisplayId(void *);
189 
193  Window GetParentId();
194 
196 
199  void SetParentId(Window);
200  void SetParentId(void *);
202 
206  Window GetWindowId();
207 
209 
212  void SetWindowId(Window);
213  void SetWindowId(void *);
215 
219  void SetNextWindowId(Window);
220 
226  void SetNextWindowId(void *);
227 
228  void SetWindowName(const char *);
229 
235 
237 
240  void SetPosition(int,int);
241  void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);};
243 
245 
249  void HideCursor();
250  void ShowCursor();
252 
256  virtual void SetCurrentCursor(int);
257 
263  virtual int GetEventPending();
264 
268  void SetWindowInfo(char *info);
269 
273  void SetNextWindowInfo(char *info);
274 
278  void SetParentInfo(char *info);
279 
284  void Render();
285 
290 
292 
299  virtual void PushContext();
300  virtual void PopContext();
302 
303 protected:
306 
307  vtkXOpenGLRenderWindowInternal *Internal;
308 
309  Window ParentId;
310  Window WindowId;
311  Window NextWindowId;
312  Display *DisplayId;
313  Colormap ColorMap;
314  int OwnWindow;
315  int OwnDisplay;
316  int ScreenSize[2];
317  int CursorHidden;
318  int ForceMakeCurrent;
319  int UsingHardware;
320  char *Capabilities;
321 
322  std::stack<Display *> DisplayStack;
323  std::stack<Drawable> DrawableStack;
324  std::stack<void *> ContextStack;
325 
326  // we must keep track of the cursors we are using
327  Cursor XCCrosshair;
328  Cursor XCArrow;
329  Cursor XCSizeAll;
330  Cursor XCSizeNS;
331  Cursor XCSizeWE;
332  Cursor XCSizeNE;
333  Cursor XCSizeNW;
334  Cursor XCSizeSE;
335  Cursor XCSizeSW;
336  Cursor XCHand;
337 
338 
341  void CreateOffScreenWindow(int width, int height);
343  void ResizeOffScreenWindow(int width, int height);
344  void CloseDisplay();
345 
346 
347 private:
348  vtkXOpenGLRenderWindow(const vtkXOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
349  void operator=(const vtkXOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
350 };
351 
352 
353 
354 #endif
list of point or cell ids
Definition: vtkIdList.h:37
a simple class to control print indentation
Definition: vtkIndent.h:40
OpenGL rendering window.
OpenGL rendering window.
virtual void Initialize(void)
Initialize the rendering window.
virtual void PushContext()
Ability to push and pop this window's context as the current context.
const char * ReportCapabilities()
Get report of capabilities for the render window.
virtual Colormap GetDesiredColormap()
Get the X properties of an ideal rendering window.
void ResizeOffScreenWindow(int width, int height)
virtual void * GetGenericParentId()
void SetNextWindowId(Window)
Specify the X window id to use if a WindowRemap is done.
void SetForceMakeCurrent()
If called, allow MakeCurrent() to skip cache-check when called.
void SetParentInfo(char *info)
Sets the X window id of the window that WILL BE created.
void Render()
This computes the size of the render window before calling the supper classes render.
int IsDirect()
Is this render window using hardware acceleration? 0-false, 1-true.
virtual void SetFullScreen(int)
Change the window to fill the entire screen.
void SetPosition(int, int)
Move the window to a new position on the display.
Window GetParentId()
Get this RenderWindow's parent X window id.
virtual void * GetGenericDisplayId()
Xwindow get set functions.
std::stack< void * > ContextStack
virtual int * GetPosition()
Get the position in screen coordinates (pixels) of the window.
virtual void * GetGenericWindowId()
virtual int GetDesiredDepth()
virtual void SetStereoCapableWindow(int capable)
Prescribe that the window be created in a stereo-capable mode.
virtual bool IsCurrent()
Tells if this window is the current OpenGL context for the calling thread.
virtual void * GetGenericDrawable()
Window GetWindowId()
Get this RenderWindow's X window id.
virtual XVisualInfo * GetDesiredVisualInfo()
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
virtual void SetSize(int, int)
Specify the size of the rendering window in pixels.
void MakeCurrent()
Make this window the current OpenGL context.
virtual void Finalize(void)
"Deinitialize" the rendering window.
virtual int * GetScreenSize()
Get the current size of the screen in pixels.
virtual void PrefFullScreen(void)
Set the preferred window size to full screen.
virtual Visual * GetDesiredVisual()
void SetParentId(void *)
std::stack< Drawable > DrawableStack
virtual void Frame(void)
End the rendering process and display the image.
void SetOffScreenRendering(int i)
Render without displaying the window.
virtual void SetCurrentCursor(int)
Change the shape of the cursor.
virtual int GetEventPending()
Check to see if a mouse button has been pressed or mouse wheel activated.
virtual void WindowRemap(void)
Resize the window.
static vtkXOpenGLRenderWindow * New()
void SetDisplayId(void *)
Dummy stubs for vtkWindow API.
virtual void * GetGenericContext()
void SetWindowId(void *)
virtual void WindowInitialize(void)
Initialize the window for rendering.
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 SetNextWindowInfo(char *info)
Set the window info that will be used after WindowRemap()
void SetDisplayId(Display *)
Set the X display id for this RenderWindow to use to a pre-existing X display id.
virtual void Start(void)
Begin the rendering process.
void SetWindowName(const char *)
Display * GetDisplayId()
Get this RenderWindow's X display id.
void CreateAWindow()
Create a not-off-screen window.
void DestroyWindow()
Destroy a not-off-screen window.
virtual bool InitializeFromCurrentContext()
Initialize the render window from the information associated with the currently activated OpenGL cont...
void SetParentId(Window)
Sets the parent of the window that WILL BE created.
void CreateOffScreenWindow(int width, int height)
void SetWindowInfo(char *info)
Set this RenderWindow's X window id to a pre-existing window.
virtual void SetSize(int a[2])
Set the size of the window in screen coordinates in pixels.
virtual void PopContext()
std::stack< Display * > DisplayStack
void SetNextWindowId(void *)
Set the window id of the new window once a WindowRemap is done.
void SetWindowId(Window)
Set this RenderWindow's X window id to a pre-existing window.
@ info
Definition: vtkX3D.h:376
@ height
Definition: vtkX3D.h:254