00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkCocoaRenderWindow.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 =========================================================================*/ 00036 #ifndef __vtkCocoaRenderWindow_h 00037 #define __vtkCocoaRenderWindow_h 00038 00039 #include "vtkOpenGLRenderWindow.h" 00040 00041 class VTK_RENDERING_EXPORT vtkCocoaRenderWindow : public vtkOpenGLRenderWindow 00042 { 00043 public: 00044 static vtkCocoaRenderWindow *New(); 00045 vtkTypeRevisionMacro(vtkCocoaRenderWindow,vtkOpenGLRenderWindow); 00046 void PrintSelf(ostream& os, vtkIndent indent); 00047 00049 virtual void Start(); 00050 00052 virtual void Frame(); 00053 00055 virtual void WindowConfigure(); 00056 00058 virtual void WindowInitialize(); 00059 00061 virtual void Initialize(); 00062 00064 virtual void SetFullScreen(int); 00065 00067 virtual void WindowRemap(); 00068 00070 virtual void PrefFullScreen(); 00071 00073 00074 virtual void SetSize(int*); 00075 virtual void SetSize(int,int); 00077 00079 virtual int *GetSize(); 00080 00082 00083 virtual void SetPosition(int*); 00084 virtual void SetPosition(int,int); 00086 00088 virtual int *GetScreenSize(); 00089 00091 virtual int *GetPosition(); 00092 00095 virtual void SetWindowName(const char *); 00096 00097 void SetNextWindowInfo(char *) 00098 { 00099 vtkWarningMacro("SetNextWindowInfo not implemented (WindowRemap not implemented)."); 00100 } 00101 00102 virtual void *GetGenericDisplayId() {return this->NSViewId;} 00103 virtual void *GetGenericWindowId() {return this->WindowId;} 00104 virtual void *GetGenericContext() {return this->ContextId;} 00105 00107 virtual void* GetDisplayId(); 00108 00117 virtual void SetDisplayId(void *); 00118 00119 virtual void SetParentId(void *) 00120 { 00121 vtkWarningMacro("Method not implemented."); 00122 } 00123 virtual void* GetGenericParentId() 00124 { 00125 vtkWarningMacro("Method not implemented."); 00126 return 0; 00127 } 00128 virtual void* GetGenericDrawable() 00129 { 00130 vtkWarningMacro("Method not implemented."); 00131 return 0; 00132 } 00133 virtual void SetWindowInfo(char*) 00134 { 00135 vtkWarningMacro("Method not implemented."); 00136 } 00137 virtual void SetParentInfo(char*) 00138 { 00139 vtkWarningMacro("Method not implemented."); 00140 } 00141 00143 virtual void *GetWindowId(); 00144 00153 virtual void SetWindowId(void *); 00154 00155 void SetNextWindowId(void*) 00156 { 00157 vtkWarningMacro("SetNextWindowId not implemented (WindowRemap not implemented)."); 00158 } 00159 00160 00162 virtual void StereoUpdate(); 00163 00168 virtual void SetStereoCapableWindow(int capable); 00169 00171 virtual void MakeCurrent(); 00172 00174 void UpdateContext(); 00175 00177 const char *ReportCapabilities(); 00178 00180 int SupportsOpenGL(); 00181 00183 int IsDirect(); 00184 00188 virtual void SetForceMakeCurrent(); 00189 00192 virtual int GetEventPending(); 00193 00195 00196 virtual void SetupPalette(void *hDC); 00197 virtual void SetupPixelFormat(void *hDC, void *dwFlags, int debug, 00198 int bpp=16, int zbpp=16); 00200 00202 void Finalize(); 00203 00205 void RegisterTextureResource (GLuint id); 00206 00208 int GetDepthBufferSize(); 00209 00211 00213 virtual void HideCursor(); 00214 virtual void ShowCursor(); 00216 00217 00218 protected: 00219 vtkCocoaRenderWindow(); 00220 ~vtkCocoaRenderWindow(); 00221 00222 void CreateGLContext(); 00223 00224 private: 00225 vtkCocoaRenderWindow(const vtkCocoaRenderWindow&); // Not implemented. 00226 void operator=(const vtkCocoaRenderWindow&); // Not implemented. 00227 00228 private: 00229 void *ContextId; // really an NSOpenGLContext* 00230 void *WindowId; // really an NSWindow* 00231 void *NSViewId; // really an NSView* (usually but not necessarily a vtkCocoaGLView*) 00232 void *PixelFormat; // really an NSOpenGLPixelFormat* 00233 00234 int WindowCreated; 00235 int ViewCreated; 00236 int CursorHidden; 00237 00238 void *AutoreleasePool; // really an NSAutoreleasePool* 00239 int ForceMakeCurrent; 00240 char *Capabilities; 00241 }; 00242 00243 #endif