00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkXMesaRenderWindow.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00042 #ifndef __vtkXMesaRenderWindow_h 00043 #define __vtkXMesaRenderWindow_h 00044 00045 #include "vtkMesaRenderWindow.h" 00046 #include <X11/Xlib.h> // Needed for X types used in the public interface 00047 #include <X11/Xutil.h> // Needed for X types used in the public interface 00048 00049 class vtkIdList; 00050 class vtkXMesaRenderWindowInternal; 00051 00052 class VTK_RENDERING_EXPORT vtkXMesaRenderWindow : public vtkMesaRenderWindow 00053 { 00054 public: 00055 static vtkXMesaRenderWindow *New(); 00056 vtkTypeRevisionMacro(vtkXMesaRenderWindow,vtkMesaRenderWindow); 00057 void PrintSelf(ostream& os, vtkIndent indent); 00058 00060 virtual void Start(void); 00061 00063 virtual void Frame(void); 00064 00066 virtual void WindowInitialize(void); 00067 00069 virtual void Initialize(void); 00070 00072 virtual void SetFullScreen(int); 00073 00075 virtual void WindowRemap(void); 00076 00078 virtual void PrefFullScreen(void); 00079 00081 00082 virtual void SetSize(int,int); 00083 virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);}; 00085 00087 00088 virtual Colormap GetDesiredColormap(); 00089 virtual Visual *GetDesiredVisual(); 00090 virtual XVisualInfo *GetDesiredVisualInfo(); 00091 virtual int GetDesiredDepth(); 00093 00098 virtual void SetStereoCapableWindow(int capable); 00099 00101 void MakeCurrent(); 00102 00106 void SetForceMakeCurrent(); 00107 00109 const char *ReportCapabilities(); 00110 00112 int SupportsOpenGL(); 00113 00115 int IsDirect(); 00116 00118 00119 virtual void *GetGenericDisplayId() {return (void *)this->GetDisplayId();}; 00120 virtual void *GetGenericWindowId(); 00121 virtual void *GetGenericParentId() {return (void *)this->ParentId;}; 00122 virtual void *GetGenericContext(); 00123 virtual void *GetGenericDrawable() {return (void *)this->WindowId;}; 00125 00127 virtual int *GetScreenSize(); 00128 00130 virtual int *GetPosition(); 00131 00133 Display *GetDisplayId(); 00134 00136 00138 void SetDisplayId(Display *); 00139 void SetDisplayId(void *); 00141 00143 Window GetParentId(); 00144 00146 00147 void SetParentId(Window); 00148 void SetParentId(void *); 00150 00152 Window GetWindowId(); 00153 00155 00156 void SetWindowId(Window); 00157 void SetWindowId(void *); 00159 00161 00162 void SetNextWindowId(Window); 00163 void SetWindowName(const char *); 00165 00167 00168 void SetPosition(int,int); 00169 void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);}; 00171 00173 00175 void HideCursor(); 00176 void ShowCursor(); 00178 00180 virtual void SetCurrentCursor(int); 00181 00184 virtual int GetEventPending(); 00185 00187 void SetWindowInfo(char *info); 00188 00190 void SetParentInfo(char *info); 00191 00194 void Render(); 00195 00197 void SetOffScreenRendering(int i); 00198 00199 protected: 00200 vtkXMesaRenderWindow(); 00201 ~vtkXMesaRenderWindow(); 00202 00203 vtkXMesaRenderWindowInternal *Internal; 00204 00205 Window ParentId; 00206 Window WindowId; 00207 Window NextWindowId; 00208 Display *DisplayId; 00209 Colormap ColorMap; 00210 int OwnWindow; 00211 int OwnDisplay; 00212 int ScreenSize[2]; 00213 int CursorHidden; 00214 int ForceMakeCurrent; 00215 int UsingHardware; 00216 char *Capabilities; 00217 00218 // we must keep track of the cursors we are using 00219 Cursor XCArrow; 00220 Cursor XCSizeAll; 00221 Cursor XCSizeNS; 00222 Cursor XCSizeWE; 00223 Cursor XCSizeNE; 00224 Cursor XCSizeNW; 00225 Cursor XCSizeSE; 00226 Cursor XCSizeSW; 00227 00228 private: 00229 vtkXMesaRenderWindow(const vtkXMesaRenderWindow&); // Not implemented. 00230 void operator=(const vtkXMesaRenderWindow&); // Not implemented. 00231 }; 00232 00233 00234 00235 #endif