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 =========================================================================*/
25 #ifndef vtkXOpenGLRenderWindow_h
26 #define vtkXOpenGLRenderWindow_h
27 
28 #include "vtkRenderingOpenGL2Module.h" // For export macro
29 #include <stack> // for ivar
30 #include "vtkOpenGLRenderWindow.h"
31 #include <X11/Xlib.h> // Needed for X types used in the public interface
32 #include <X11/Xutil.h> // Needed for X types used in the public interface
33 
34 class vtkIdList;
35 class vtkXOpenGLRenderWindowInternal;
36 
37 class VTKRENDERINGOPENGL2_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow
38 {
39 public:
42  void PrintSelf(ostream& os, vtkIndent indent);
43 
47  virtual void Start(void);
48 
52  virtual void Frame(void);
53 
57  virtual void WindowInitialize(void);
58 
65  virtual void Initialize(void);
66 
72  virtual void Finalize(void);
73 
77  virtual void SetFullScreen(int);
78 
82  virtual void WindowRemap(void);
83 
87  virtual void PrefFullScreen(void);
88 
92  virtual void SetSize(int,int);
93  virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);}
94 
96 
99  virtual Colormap GetDesiredColormap();
100  virtual Visual *GetDesiredVisual();
101  virtual XVisualInfo *GetDesiredVisualInfo();
102  virtual int GetDesiredDepth();
104 
111  virtual void SetStereoCapableWindow(int capable);
112 
116  void MakeCurrent();
117 
121  virtual bool IsCurrent();
122 
129 
133  const char *ReportCapabilities();
134 
138  int IsDirect();
139 
143  virtual void *GetGenericDisplayId()
144  {
145  return this->GetDisplayId();
146  }
147 
148  virtual void *GetGenericWindowId();
149  virtual void *GetGenericParentId()
150  {
151  return reinterpret_cast<void *>(this->ParentId);
152  }
153 
154  virtual void *GetGenericContext();
155  virtual void *GetGenericDrawable()
156  {
157  return reinterpret_cast<void *>(this->WindowId);
158  }
159 
163  virtual int *GetScreenSize();
164 
168  virtual int *GetPosition();
169 
173  Display *GetDisplayId();
174 
176 
180  void SetDisplayId(Display *);
181  void SetDisplayId(void *);
183 
187  Window GetParentId();
188 
190 
193  void SetParentId(Window);
194  void SetParentId(void *);
196 
200  Window GetWindowId();
201 
203 
206  void SetWindowId(Window);
207  void SetWindowId(void *);
209 
213  void SetNextWindowId(Window);
214 
220  void SetNextWindowId(void *);
221 
222  void SetWindowName(const char *);
223 
229 
231 
234  void SetPosition(int,int);
235  void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);};
237 
239 
243  void HideCursor();
244  void ShowCursor();
246 
250  virtual void SetCurrentCursor(int);
251 
257  virtual int GetEventPending();
258 
262  void SetWindowInfo(char *info);
263 
267  void SetNextWindowInfo(char *info);
268 
272  void SetParentInfo(char *info);
273 
278  void Render();
279 
284 
286 
293  virtual void PushContext();
294  virtual void PopContext();
296 
297 protected:
300 
301  vtkXOpenGLRenderWindowInternal *Internal;
302 
303  Window ParentId;
304  Window WindowId;
305  Window NextWindowId;
306  Display *DisplayId;
307  Colormap ColorMap;
308  int OwnWindow;
309  int OwnDisplay;
310  int ScreenSize[2];
311  int CursorHidden;
312  int ForceMakeCurrent;
313  int UsingHardware;
314  char *Capabilities;
315 
316  std::stack<Display *> DisplayStack;
317  std::stack<Drawable> DrawableStack;
318  std::stack<void *> ContextStack;
319 
320  // we must keep track of the cursors we are using
321  Cursor XCCrosshair;
322  Cursor XCArrow;
323  Cursor XCSizeAll;
324  Cursor XCSizeNS;
325  Cursor XCSizeWE;
326  Cursor XCSizeNE;
327  Cursor XCSizeNW;
328  Cursor XCSizeSE;
329  Cursor XCSizeSW;
330  Cursor XCHand;
331 
332 
335  void CreateOffScreenWindow(int width, int height);
337  void ResizeOffScreenWindow(int width, int height);
338  void CloseDisplay();
339 
340 
341 private:
342  vtkXOpenGLRenderWindow(const vtkXOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
343  void operator=(const vtkXOpenGLRenderWindow&) VTK_DELETE_FUNCTION;
344 };
345 
346 
347 
348 #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