00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkXOpenGLRenderWindow.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 =========================================================================*/ 00050 #ifndef __vtkXOpenGLRenderWindow_h 00051 #define __vtkXOpenGLRenderWindow_h 00052 00053 #include "vtkOpenGLRenderWindow.h" 00054 #include <X11/Xlib.h> // Needed for X types used in the public interface 00055 #include <X11/Xutil.h> // Needed for X types used in the public interface 00056 00057 class vtkIdList; 00058 class vtkXOpenGLRenderWindowInternal; 00059 00060 class VTK_RENDERING_EXPORT vtkXOpenGLRenderWindow : public vtkOpenGLRenderWindow 00061 { 00062 public: 00063 static vtkXOpenGLRenderWindow *New(); 00064 vtkTypeRevisionMacro(vtkXOpenGLRenderWindow,vtkOpenGLRenderWindow); 00065 void PrintSelf(ostream& os, vtkIndent indent); 00066 00068 virtual void Start(void); 00069 00071 virtual void Frame(void); 00072 00074 virtual void WindowInitialize(void); 00075 00077 virtual void Initialize(void); 00078 00080 virtual void SetFullScreen(int); 00081 00083 virtual void WindowRemap(void); 00084 00086 virtual void PrefFullScreen(void); 00087 00089 00090 virtual void SetSize(int,int); 00091 virtual void SetSize(int a[2]) {this->SetSize(a[0], a[1]);}; 00093 00095 00096 virtual Colormap GetDesiredColormap(); 00097 virtual Visual *GetDesiredVisual(); 00098 virtual XVisualInfo *GetDesiredVisualInfo(); 00099 virtual int GetDesiredDepth(); 00101 00106 virtual void SetStereoCapableWindow(int capable); 00107 00109 void MakeCurrent(); 00110 00114 void SetForceMakeCurrent(); 00115 00117 const char *ReportCapabilities(); 00118 00120 int SupportsOpenGL(); 00121 00123 int IsDirect(); 00124 00126 00127 virtual void *GetGenericDisplayId() {return (void *)this->GetDisplayId();}; 00128 virtual void *GetGenericWindowId(); 00129 virtual void *GetGenericParentId() {return (void *)this->ParentId;}; 00130 virtual void *GetGenericContext(); 00131 virtual void *GetGenericDrawable() {return (void *)this->WindowId;}; 00133 00135 virtual int *GetScreenSize(); 00136 00138 virtual int *GetPosition(); 00139 00141 Display *GetDisplayId(); 00142 00144 00146 void SetDisplayId(Display *); 00147 void SetDisplayId(void *); 00149 00151 Window GetParentId(); 00152 00154 00155 void SetParentId(Window); 00156 void SetParentId(void *); 00158 00160 Window GetWindowId(); 00161 00163 00164 void SetWindowId(Window); 00165 void SetWindowId(void *); 00167 00169 00170 void SetNextWindowId(Window); 00171 void SetWindowName(const char *); 00173 00175 00176 void SetPosition(int,int); 00177 void SetPosition(int a[2]) {this->SetPosition(a[0], a[1]);}; 00179 00181 00183 void HideCursor(); 00184 void ShowCursor(); 00186 00188 virtual void SetCurrentCursor(int); 00189 00193 virtual int GetEventPending(); 00194 00196 void SetWindowInfo(char *info); 00197 00199 void SetParentInfo(char *info); 00200 00203 void Render(); 00204 00206 void SetOffScreenRendering(int i); 00207 00208 protected: 00209 vtkXOpenGLRenderWindow(); 00210 ~vtkXOpenGLRenderWindow(); 00211 00212 vtkXOpenGLRenderWindowInternal *Internal; 00213 00214 Window ParentId; 00215 Window WindowId; 00216 Window NextWindowId; 00217 Display *DisplayId; 00218 Colormap ColorMap; 00219 int OwnWindow; 00220 int OwnDisplay; 00221 int ScreenSize[2]; 00222 int CursorHidden; 00223 int ForceMakeCurrent; 00224 int UsingHardware; 00225 char *Capabilities; 00226 00227 // we must keep track of the cursors we are using 00228 Cursor XCArrow; 00229 Cursor XCSizeAll; 00230 Cursor XCSizeNS; 00231 Cursor XCSizeWE; 00232 Cursor XCSizeNE; 00233 Cursor XCSizeNW; 00234 Cursor XCSizeSE; 00235 Cursor XCSizeSW; 00236 00237 private: 00238 vtkXOpenGLRenderWindow(const vtkXOpenGLRenderWindow&); // Not implemented. 00239 void operator=(const vtkXOpenGLRenderWindow&); // Not implemented. 00240 }; 00241 00242 00243 00244 #endif