Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

graphics/vtkMesaRenderWindow.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkMesaRenderWindow.h,v $
00005   Language:  C++
00006 
00007 
00008 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 
00009 All rights reserved.
00010 
00011 Redistribution and use in source and binary forms, with or without
00012 modification, are permitted provided that the following conditions are met:
00013 
00014  * Redistributions of source code must retain the above copyright notice,
00015    this list of conditions and the following disclaimer.
00016 
00017  * Redistributions in binary form must reproduce the above copyright notice,
00018    this list of conditions and the following disclaimer in the documentation
00019    and/or other materials provided with the distribution.
00020 
00021  * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names
00022    of any contributors may be used to endorse or promote products derived
00023    from this software without specific prior written permission.
00024 
00025  * Modified source versions must be plainly marked as such, and must not be
00026    misrepresented as being the original software.
00027 
00028 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
00029 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00030 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00031 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
00032 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00033 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00034 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00035 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00036 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00037 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00038 
00039 =========================================================================*/
00052 #ifndef __vtkMesaRenderWindow_h
00053 #define __vtkMesaRenderWindow_h
00054 
00055 #include <stdlib.h>
00056 #include <X11/Xlib.h>
00057 #include <X11/Xutil.h>
00058 #include "vtkXRenderWindow.h"
00059 
00060 // include Mesa header files
00061 #ifdef VTK_MANGLE_MESA
00062 #define USE_MGL_NAMESPACE
00063 #include "mesagl.h"
00064 #include "mesaglx.h"
00065 #else
00066 #include "GL/gl.h"
00067 #include "GL/glx.h"
00068 #endif
00069 
00070 // version 3.2 and newer do not #define MESA, so 
00071 // look for the only #define in gl.h that is unique to 
00072 // mesa, and if defined, then define MESA
00073 #ifdef GL_MESA_window_pos
00074 #define MESA
00075 #endif
00076 
00077 
00078 // if we really have the mesa headers then include off screen rendering
00079 #ifdef MESA
00080 #include "GL/osmesa.h"
00081 #endif
00082 
00083 class vtkIdList;
00084 
00085 class VTK_EXPORT vtkMesaRenderWindow : public vtkXRenderWindow
00086 {
00087 protected:
00088 // If mesa is not defined it means that vtk was configured with-mesa
00089 // but found non-mesa header files, so define OffScreenContextId as
00090 // a void*, so this class will compile anyway.
00091 #ifdef MESA
00092   OSMesaContext OffScreenContextId;
00093 #else
00094   void* OffScreenContextId;
00095 #endif
00096   GLXContext ContextId;
00097 
00098 public:
00099   static vtkMesaRenderWindow *New();
00100   vtkTypeMacro(vtkMesaRenderWindow,vtkXRenderWindow);
00101   void PrintSelf(ostream& os, vtkIndent indent);
00102 
00104   virtual void Start(void);
00105 
00107   virtual void Frame(void);
00108 
00110   virtual void WindowConfigure(void);
00111 
00113   virtual void WindowInitialize(void);
00114 
00116   virtual void Initialize(void);
00117 
00119   virtual void SetFullScreen(int);
00120 
00122   virtual void WindowRemap(void);
00123 
00125   virtual void PrefFullScreen(void);
00126 
00128   virtual void SetSize(int,int);
00129   virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);};
00130 
00132   virtual Colormap GetDesiredColormap();
00133   virtual Visual  *GetDesiredVisual();
00134   virtual XVisualInfo     *GetDesiredVisualInfo();
00135   virtual int      GetDesiredDepth();
00136 
00138   virtual void StereoUpdate();
00139 
00144   virtual void SetStereoCapableWindow(int capable);
00145 
00147   virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
00148   virtual void SetPixelData(int x,int y,int x2,int y2,unsigned char *,
00149              int front);
00150 
00152   virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
00153   virtual void SetRGBAPixelData(int x,int y,int x2,int y2,float *,int front,
00154                                 int blend=0);
00155 
00157   virtual unsigned char *GetRGBACharPixelData(int x,int y,int x2,int y2,int front);
00158   virtual void SetRGBACharPixelData(int x,int y,int x2,int y2,unsigned char *,
00159                 int front, int blend=0);  
00160   
00162   virtual float *GetZbufferData( int x1, int y1, int x2, int y2 );
00163   virtual void SetZbufferData( int x1, int y1, int x2, int y2, float *buffer );
00164 
00166   void MakeCurrent();
00167   
00169   void RegisterTextureResource (GLuint id);
00170   
00173   virtual void SetOffScreenRendering(int i);
00174   
00176   virtual void *GetGenericWindowId();
00177   virtual void *GetGenericContext();
00178 
00180   int GetDepthBufferSize();
00181   
00182 protected:
00183   void *OffScreenWindow;
00184   int ScreenDoubleBuffer;
00185   int ScreenMapped;
00186   vtkMesaRenderWindow();
00187   ~vtkMesaRenderWindow();
00188   vtkMesaRenderWindow(const vtkMesaRenderWindow&) {};
00189   void operator=(const vtkMesaRenderWindow&) {};
00190 
00191   vtkIdList *TextureResourceIds;
00192 };
00193 
00194 #endif

Generated on Wed Nov 21 12:27:01 2001 for VTK by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001