00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkXOpenGLRenderWindow.h,v $ 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 =========================================================================*/ 00033 #ifndef __vtkXOpenGLRenderWindow_h 00034 #define __vtkXOpenGLRenderWindow_h 00035 00036 #include "vtkOpenGLRenderWindow.h" 00037 #include <X11/Xlib.h> // Needed for X types used in the public interface 00038 #include <X11/Xutil.h> // Needed for X types used in the public interface 00039 00040 class vtkIdList; 00041 class vtkXOpenGLRenderWindowInternal; 00042 00043 class VTK_RENDERING_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow 00044 { 00045 public: 00046 static vtkXOpenGLRenderWindow *New(); 00047 vtkTypeRevisionMacro(vtkXOpenGLRenderWindow,vtkOpenGLRenderWindow); 00048 void PrintSelf(ostream& os, vtkIndent indent); 00049 00051 virtual void Start(void); 00052 00054 virtual void Frame(void); 00055 00057 virtual void WindowInitialize(void); 00058 00063 virtual void Initialize(void); 00064 00069 virtual void Finalize(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 void SetNextWindowId(Window); 00162 00165 void SetNextWindowId(void *); 00166 00167 void SetWindowName(const char *); 00168 00170 00171 void SetPosition(int,int); 00172 void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);}; 00174 00176 00178 void HideCursor(); 00179 void ShowCursor(); 00181 00183 virtual void SetCurrentCursor(int); 00184 00188 virtual int GetEventPending(); 00189 00191 void SetWindowInfo(char *info); 00192 00194 void SetNextWindowInfo(char *info); 00195 00197 void SetParentInfo(char *info); 00198 00201 void Render(); 00202 00204 void SetOffScreenRendering(int i); 00205 00206 protected: 00207 vtkXOpenGLRenderWindow(); 00208 ~vtkXOpenGLRenderWindow(); 00209 00210 vtkXOpenGLRenderWindowInternal *Internal; 00211 00212 Window ParentId; 00213 Window WindowId; 00214 Window NextWindowId; 00215 Display *DisplayId; 00216 Colormap ColorMap; 00217 int OwnWindow; 00218 int OwnDisplay; 00219 int ScreenSize[2]; 00220 int CursorHidden; 00221 int ForceMakeCurrent; 00222 int UsingHardware; 00223 char *Capabilities; 00224 00225 // we must keep track of the cursors we are using 00226 Cursor XCArrow; 00227 Cursor XCSizeAll; 00228 Cursor XCSizeNS; 00229 Cursor XCSizeWE; 00230 Cursor XCSizeNE; 00231 Cursor XCSizeNW; 00232 Cursor XCSizeSE; 00233 Cursor XCSizeSW; 00234 00235 private: 00236 vtkXOpenGLRenderWindow(const vtkXOpenGLRenderWindow&); // Not implemented. 00237 void operator=(const vtkXOpenGLRenderWindow&); // Not implemented. 00238 }; 00239 00240 00241 00242 #endif