00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkXMesaRenderWindow.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00030 #ifndef __vtkXMesaRenderWindow_h 00031 #define __vtkXMesaRenderWindow_h 00032 00033 #include "vtkMesaRenderWindow.h" 00034 #include <X11/Xlib.h> // Needed for X types used in the public interface 00035 #include <X11/Xutil.h> // Needed for X types used in the public interface 00036 00037 class vtkIdList; 00038 class vtkXMesaRenderWindowInternal; 00039 00040 class VTK_RENDERING_EXPORT vtkXMesaRenderWindow : public vtkMesaRenderWindow 00041 { 00042 public: 00043 static vtkXMesaRenderWindow *New(); 00044 vtkTypeMacro(vtkXMesaRenderWindow,vtkMesaRenderWindow); 00045 void PrintSelf(ostream& os, vtkIndent indent); 00046 00048 virtual void Start(void); 00049 00051 virtual void Frame(void); 00052 00054 virtual void WindowInitialize(void); 00055 00057 virtual void Initialize(void); 00058 00060 virtual void Finalize(void); 00061 00063 virtual void SetFullScreen(int); 00064 00066 virtual void WindowRemap(void); 00067 00069 virtual void PrefFullScreen(void); 00070 00072 00073 virtual void SetSize(int,int); 00074 virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);}; 00076 00078 00079 virtual Colormap GetDesiredColormap(); 00080 virtual Visual *GetDesiredVisual(); 00081 virtual XVisualInfo *GetDesiredVisualInfo(); 00082 virtual int GetDesiredDepth(); 00084 00089 virtual void SetStereoCapableWindow(int capable); 00090 00092 void MakeCurrent(); 00093 00097 void SetForceMakeCurrent(); 00098 00100 const char *ReportCapabilities(); 00101 00103 int SupportsOpenGL(); 00104 00106 int IsDirect(); 00107 00109 00110 virtual void *GetGenericDisplayId() {return (void *)this->GetDisplayId();}; 00111 virtual void *GetGenericWindowId(); 00112 virtual void *GetGenericParentId() {return (void *)this->ParentId;}; 00113 virtual void *GetGenericContext(); 00114 virtual void *GetGenericDrawable() {return (void *)this->WindowId;}; 00116 00118 virtual int *GetScreenSize(); 00119 00121 virtual int *GetPosition(); 00122 00124 Display *GetDisplayId(); 00125 00127 00129 void SetDisplayId(Display *); 00130 void SetDisplayId(void *); 00132 00134 Window GetParentId(); 00135 00137 00138 void SetParentId(Window); 00139 void SetParentId(void *); 00141 00143 Window GetWindowId(); 00144 00146 00147 void SetWindowId(Window); 00148 void SetWindowId(void *); 00150 00152 00153 void SetNextWindowId(Window); 00154 void SetNextWindowId(void *); 00155 void SetWindowName(const char *); 00157 00159 00160 void SetPosition(int,int); 00161 void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);}; 00163 00165 00167 void HideCursor(); 00168 void ShowCursor(); 00170 00172 virtual void SetCurrentCursor(int); 00173 00176 virtual int GetEventPending(); 00177 00179 void SetWindowInfo(char *info); 00180 00181 void SetNextWindowInfo(char *); 00182 00184 void SetParentInfo(char *info); 00185 00188 void Render(); 00189 00191 void SetOffScreenRendering(int i); 00192 00193 protected: 00194 vtkXMesaRenderWindow(); 00195 ~vtkXMesaRenderWindow(); 00196 00197 vtkXMesaRenderWindowInternal *Internal; 00198 00199 Window ParentId; 00200 Window WindowId; 00201 Window NextWindowId; 00202 Display *DisplayId; 00203 Colormap ColorMap; 00204 int OwnWindow; 00205 int OwnDisplay; 00206 int ScreenSize[2]; 00207 int CursorHidden; 00208 int ForceMakeCurrent; 00209 int UsingHardware; 00210 char *Capabilities; 00211 00212 // we must keep track of the cursors we are using 00213 Cursor XCArrow; 00214 Cursor XCSizeAll; 00215 Cursor XCSizeNS; 00216 Cursor XCSizeWE; 00217 Cursor XCSizeNE; 00218 Cursor XCSizeNW; 00219 Cursor XCSizeSE; 00220 Cursor XCSizeSW; 00221 00222 00223 void CreateAWindow(); 00224 void DestroyWindow(); 00225 void CreateOffScreenWindow(int x, int y); 00226 void DestroyOffScreenWindow(); 00227 void ResizeOffScreenWindow(int x, int y); 00228 00229 private: 00230 vtkXMesaRenderWindow(const vtkXMesaRenderWindow&); // Not implemented. 00231 void operator=(const vtkXMesaRenderWindow&); // Not implemented. 00232 }; 00233 00234 00235 00236 #endif