source: trunk/src/testing/app/mframes/init_code/vtkXOpenGLOffScreenRenderWindow.h @ 4

Revision 4, 8.9 KB checked in by ajaworski, 13 years ago (diff)

Added modified SAGE sources

  • Property svn:executable set to *
Line 
1/******************************************************************************
2 * SAGE - Scalable Adaptive Graphics Environment
3 *
4 * Copyright (C) 2004 Electronic Visualization Laboratory,
5 * University of Illinois at Chicago
6 *
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 *  * Redistributions of source code must retain the above copyright
13 *    notice, this list of conditions and the following disclaimer.
14 *  * Redistributions in binary form must reproduce the above
15 *    copyright notice, this list of conditions and the following disclaimer
16 *    in the documentation and/or other materials provided with the distribution.
17 *  * Neither the name of the University of Illinois at Chicago nor
18 *    the names of its contributors may be used to endorse or promote
19 *    products derived from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 *
33 * Direct questions, comments etc about SAGE to http://www.evl.uic.edu/cavern/forum/
34 *
35 *****************************************************************************/
36
37/*=========================================================================
38
39  Program:   Visualization Toolkit
40  Module:    $RCSfile: vtkXOpenGLOffScreenRenderWindow.h,v $
41  Language:  C++
42  Date:      $Date: 2003/03/26 14:04:59 $
43  Version:   $Revision: 1.22 $
44
45  Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen
46  All rights reserved.
47  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
48
49     This software is distributed WITHOUT ANY WARRANTY; without even
50     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
51     PURPOSE.  See the above copyright notice for more information.
52
53=========================================================================*/
54// .NAME vtkXOpenGLOffScreenRenderWindow - OpenGL rendering window
55// .SECTION Description
56// vtkXOpenGLOffScreenRenderWindow is a concrete implementation of the abstract class
57// vtkRenderWindow. vtkOpenGLRenderer interfaces to the OpenGL graphics
58// library. Application programmers should normally use vtkRenderWindow
59// instead of the OpenGL specific version.
60
61#ifndef __vtkXOpenGLOffScreenRenderWindow_h
62#define __vtkXOpenGLOffScreenRenderWindow_h
63
64#include "vtk/vtkOpenGLRenderWindow.h"
65#include <X11/Xlib.h> // Needed for X types used in the public interface
66#include <X11/Xutil.h> // Needed for X types used in the public interface
67
68class vtkIdList;
69class vtkXOpenGLOffScreenRenderWindowInternal;
70
71class VTK_RENDERING_EXPORT vtkXOpenGLOffScreenRenderWindow : public vtkOpenGLRenderWindow
72{
73public:
74  static vtkXOpenGLOffScreenRenderWindow *New();
75  vtkTypeRevisionMacro(vtkXOpenGLOffScreenRenderWindow,vtkOpenGLRenderWindow);
76  void PrintSelf(ostream& os, vtkIndent indent);
77
78  // Description:
79  // Begin the rendering process.
80  virtual void Start(void);
81
82  // Description:
83  // End the rendering process and display the image.
84  virtual void Frame(void);
85
86  // Description:
87  // Initialize the window for rendering.
88  virtual void WindowInitialize(void);
89
90  // Description:
91  // Initialize the rendering window.
92  virtual void Initialize(void);
93
94  // Description:
95  // Change the window to fill the entire screen.
96  virtual void SetFullScreen(int);
97
98  // Description:
99  // Resize the window.
100  virtual void WindowRemap(void);
101
102  // Description:
103  // Set the preferred window size to full screen.
104  virtual void PrefFullScreen(void);
105
106  // Description:
107  // Specify the size of the rendering window.
108  virtual void SetSize(int,int);
109  virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);};
110
111  // Description:
112  // Get the X properties of an ideal rendering window.
113  virtual Colormap GetDesiredColormap();
114  virtual Visual  *GetDesiredVisual();
115  virtual XVisualInfo     *GetDesiredVisualInfo();
116  virtual int      GetDesiredDepth();
117
118  // Description:
119  // Prescribe that the window be created in a stereo-capable mode. This
120  // method must be called before the window is realized. This method
121  // overrides the superclass method since this class can actually check
122  // whether the window has been realized yet.
123  virtual void SetStereoCapableWindow(int capable);
124
125  // Description:
126  // Make this window the current OpenGL context.
127  void MakeCurrent();
128
129  // Description:
130  // If called, allow MakeCurrent() to skip cache-check when called.
131  // MakeCurrent() reverts to original behavior of cache-checking
132  // on the next render.
133  void SetForceMakeCurrent();
134
135  // Description:
136  // Get report of capabilities for the render window
137  const char *ReportCapabilities();
138
139  // Description:
140  // Does this render window support OpenGL? 0-false, 1-true
141  int SupportsOpenGL();
142
143  // Description:
144  // Is this render window using hardware acceleration? 0-false, 1-true
145  int IsDirect();
146
147  // Description:
148  // Xwindow get set functions
149  virtual void *GetGenericDisplayId() {return (void *)this->GetDisplayId();};
150  virtual void *GetGenericWindowId();
151  virtual void *GetGenericParentId()  {return (void *)this->ParentId;};
152  virtual void *GetGenericContext();
153  virtual void *GetGenericDrawable()  {return (void *)this->WindowId;};
154
155  // Description:
156  // Get the size of the screen in pixels
157  virtual int     *GetScreenSize();
158
159  // Description:
160  // Get this RenderWindow's X display id.
161  Display *GetDisplayId();
162
163  // Description:
164  // Create the default pixmap
165  Pixmap pixmap;
166
167  // Description:
168  // Set the X display id for this RenderWindow to use to a pre-existing
169  // X display id.
170  void     SetDisplayId(Display *);
171  void     SetDisplayId(void *);
172
173  // Description:
174  // Get this RenderWindow's parent X window id.
175  Window   GetParentId();
176
177  // Description:
178  // Sets the parent of the window that WILL BE created.
179  void     SetParentId(Window);
180  void     SetParentId(void *);
181
182  // Description:
183  // Get this RenderWindow's X window id.
184  Window   GetWindowId();
185
186  // Description:
187  // Set this RenderWindow's X window id to a pre-existing window.
188  void     SetWindowId(Window);
189  void     SetWindowId(void *);
190
191  // Description:
192  // Specify the X window id to use if a WindowRemap is done.
193  void     SetNextWindowId(Window);
194
195  // Description:
196  // Set the window id of the new window once a WindowRemap is done.
197  // This is the generic prototype as required by the vtkRenderWindow
198  // parent.
199  void     SetNextWindowId(void *);
200
201  void     SetWindowName(const char *);
202
203  // Description:
204  // Hide or Show the mouse cursor, it is nice to be able to hide the
205  // default cursor if you want VTK to display a 3D cursor instead.
206  void HideCursor();
207  void ShowCursor();
208
209  // Description:
210  // Change the shape of the cursor
211  virtual void SetCurrentCursor(int);
212
213  // Description:
214  // Check to see if a mouse button has been pressed.
215  // All other events are ignored by this method.
216  // This is a useful check to abort a long render.
217  virtual  int GetEventPending();
218
219  // Description:
220  // Set this RenderWindow's X window id to a pre-existing window.
221  void     SetWindowInfo(char *info);
222
223  // Description:
224  // Set the window info that will be used after WindowRemap()
225  void     SetNextWindowInfo(char *info);
226
227  // Description:
228  // Sets the X window id of the window that WILL BE created.
229  void     SetParentInfo(char *info);
230
231  // Description:
232  // This computes the size of the render window
233  // before calling the supper classes render
234  void Render();
235
236protected:
237  vtkXOpenGLOffScreenRenderWindow();
238  ~vtkXOpenGLOffScreenRenderWindow();
239
240  vtkXOpenGLOffScreenRenderWindowInternal *Internal;
241
242  Window   ParentId;
243  Window   WindowId;
244  Window   NextWindowId;
245  Display *DisplayId;
246  Colormap ColorMap;
247  int      OwnWindow;
248  int      OwnDisplay;
249  int      ScreenSize[2];
250  int      CursorHidden;
251  int      ForceMakeCurrent;
252  int      UsingHardware;
253  char    *Capabilities;
254
255  // we must keep track of the cursors we are using
256  Cursor XCArrow;
257  Cursor XCSizeAll;
258  Cursor XCSizeNS;
259  Cursor XCSizeWE;
260  Cursor XCSizeNE;
261  Cursor XCSizeNW;
262  Cursor XCSizeSE;
263  Cursor XCSizeSW;
264
265private:
266  vtkXOpenGLOffScreenRenderWindow(const vtkXOpenGLOffScreenRenderWindow&);  // Not implemented.
267  void operator=(const vtkXOpenGLOffScreenRenderWindow&);  // Not implemented.
268};
269
270
271
272#endif
Note: See TracBrowser for help on using the repository browser.