00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00051 #ifndef __vtkMesaImageWindow_h
00052 #define __vtkMesaImageWindow_h
00053 
00054 #include <stdlib.h>
00055 #include <X11/X.h>
00056 #include <X11/Xlib.h>
00057 #include <X11/Xutil.h>
00058 #include "vtkXImageWindow.h"
00059 
00060 #ifdef VTK_MANGLE_MESA
00061 #define USE_MGL_NAMESPACE
00062 #include "mesaglx.h"
00063 #else
00064 #include "GL/glx.h"
00065 #endif
00066 #include "GL/osmesa.h"
00067 
00068 
00069 class VTK_EXPORT vtkMesaImageWindow : public vtkXImageWindow
00070 {
00071 public:
00072   static vtkMesaImageWindow *New();
00073   vtkTypeMacro(vtkMesaImageWindow,vtkXImageWindow);
00074   void PrintSelf(ostream& os, vtkIndent indent);
00075 
00077   virtual void MakeDefaultWindow();
00078 
00080   void SwapBuffers();
00081 
00083   void Frame();
00084 
00086   void Render();
00087 
00089   virtual void *GetGenericDisplayId() {return (void *)this->DisplayId;};
00090   virtual void *GetGenericWindowId();
00091   virtual void *GetGenericParentId()  {return (void *)this->ParentId;};
00092   virtual void *GetGenericContext();
00093   virtual void *GetGenericDrawable()  {return (void *)this->WindowId;};
00094   
00096   virtual Colormap GetDesiredColormap();
00097   virtual Visual  *GetDesiredVisual();
00098   XVisualInfo     *GetDesiredVisualInfo();
00099   virtual int      GetDesiredDepth();
00100 
00102   virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
00103   virtual void SetPixelData(int x,int y,int x2,int y2,unsigned char *,
00104              int front);
00105 
00107   virtual float *GetRGBAPixelData(int x,int y,int x2,int y2,int front);
00108   virtual void SetRGBAPixelData(int x,int y,int x2,int y2,float *,int front,
00109                                 int blend=0);
00110 
00112   void MakeCurrent();
00113 
00115   virtual void EraseWindow() {this->vtkImageWindow::EraseWindow();};
00116 
00119   virtual void SetOffScreenRendering(int i);
00120 
00121 protected:
00122   vtkMesaImageWindow();
00123   ~vtkMesaImageWindow();
00124   vtkMesaImageWindow(const vtkMesaImageWindow&) {};
00125   void operator=(const vtkMesaImageWindow&) {};
00126 
00127   GLXContext ContextId;
00128   OSMesaContext OffScreenContextId;
00129   void *OffScreenWindow;
00130   int ScreenDoubleBuffer;
00131   int ScreenMapped;
00132 };
00133 
00134 
00135 #endif
00136