Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Rendering/vtkRenderWindow.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkRenderWindow.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 =========================================================================*/ 00049 #ifndef __vtkRenderWindow_h 00050 #define __vtkRenderWindow_h 00051 00052 #include "vtkWindow.h" 00053 00054 class vtkFloatArray; 00055 class vtkRenderWindowInteractor; 00056 class vtkRenderer; 00057 class vtkRendererCollection; 00058 class vtkUnsignedCharArray; 00059 00060 // lets define the different types of stereo 00061 #define VTK_STEREO_CRYSTAL_EYES 1 00062 #define VTK_STEREO_RED_BLUE 2 00063 #define VTK_STEREO_INTERLACED 3 00064 #define VTK_STEREO_LEFT 4 00065 #define VTK_STEREO_RIGHT 5 00066 #define VTK_STEREO_DRESDEN 6 00067 00068 #define VTK_CURSOR_DEFAULT 0 00069 #define VTK_CURSOR_ARROW 1 00070 #define VTK_CURSOR_SIZENE 2 00071 #define VTK_CURSOR_SIZENW 3 00072 #define VTK_CURSOR_SIZESW 4 00073 #define VTK_CURSOR_SIZESE 5 00074 #define VTK_CURSOR_SIZENS 6 00075 #define VTK_CURSOR_SIZEWE 7 00076 #define VTK_CURSOR_SIZEALL 8 00077 #define VTK_CURSOR_HAND 9 00078 00079 class VTK_RENDERING_EXPORT vtkRenderWindow : public vtkWindow 00080 { 00081 public: 00082 vtkTypeRevisionMacro(vtkRenderWindow,vtkWindow); 00083 void PrintSelf(ostream& os, vtkIndent indent); 00084 00088 static vtkRenderWindow *New(); 00089 00091 virtual void AddRenderer(vtkRenderer *); 00092 00094 void RemoveRenderer(vtkRenderer *); 00095 00097 static const char *GetRenderLibrary(); 00098 00100 vtkRendererCollection *GetRenderers() {return this->Renderers;}; 00101 00104 virtual void Render(); 00105 00107 virtual void Start() = 0; 00108 00111 virtual void Frame() = 0; 00112 00115 virtual void CopyResultFrame(); 00116 00120 virtual vtkRenderWindowInteractor *MakeRenderWindowInteractor(); 00121 00123 00126 virtual void HideCursor() = 0; 00127 virtual void ShowCursor() = 0; 00128 virtual void SetCursorPosition(int , int ) {}; 00130 00132 00133 vtkSetMacro(CurrentCursor,int); 00134 vtkGetMacro(CurrentCursor,int); 00136 00138 00139 virtual void SetFullScreen(int) = 0; 00140 vtkGetMacro(FullScreen,int); 00141 vtkBooleanMacro(FullScreen,int); 00143 00145 00148 vtkSetMacro(Borders,int); 00149 vtkGetMacro(Borders,int); 00150 vtkBooleanMacro(Borders,int); 00152 00154 00156 vtkGetMacro(StereoCapableWindow,int); 00157 vtkBooleanMacro(StereoCapableWindow,int); 00158 virtual void SetStereoCapableWindow(int capable); 00160 00162 00163 vtkGetMacro(StereoRender,int); 00164 void SetStereoRender(int stereo); 00165 vtkBooleanMacro(StereoRender,int); 00167 00169 00170 vtkSetMacro(AlphaBitPlanes, int); 00171 vtkGetMacro(AlphaBitPlanes, int); 00172 vtkBooleanMacro(AlphaBitPlanes, int); 00174 00176 00178 vtkSetMacro(PointSmoothing,int); 00179 vtkGetMacro(PointSmoothing,int); 00180 vtkBooleanMacro(PointSmoothing,int); 00182 00184 00186 vtkSetMacro(LineSmoothing,int); 00187 vtkGetMacro(LineSmoothing,int); 00188 vtkBooleanMacro(LineSmoothing,int); 00190 00192 00194 vtkSetMacro(PolygonSmoothing,int); 00195 vtkGetMacro(PolygonSmoothing,int); 00196 vtkBooleanMacro(PolygonSmoothing,int); 00198 00200 00201 vtkGetMacro(StereoType,int); 00202 vtkSetMacro(StereoType,int); 00203 void SetStereoTypeToCrystalEyes() 00204 {this->SetStereoType(VTK_STEREO_CRYSTAL_EYES);}; 00205 void SetStereoTypeToRedBlue() 00206 {this->SetStereoType(VTK_STEREO_RED_BLUE);}; 00207 void SetStereoTypeToInterlaced() 00208 {this->SetStereoType(VTK_STEREO_INTERLACED);}; 00209 void SetStereoTypeToLeft() 00210 {this->SetStereoType(VTK_STEREO_LEFT);}; 00211 void SetStereoTypeToRight() 00212 {this->SetStereoType(VTK_STEREO_RIGHT);}; 00213 void SetStereoTypeToDresden() 00214 {this->SetStereoType(VTK_STEREO_DRESDEN);}; 00215 char *GetStereoTypeAsString(); 00217 00221 virtual void StereoUpdate(); 00222 00225 virtual void StereoMidpoint(); 00226 00229 virtual void StereoRenderComplete(); 00230 00234 virtual void WindowRemap() = 0; 00235 00237 00238 vtkSetMacro(SwapBuffers,int); 00239 vtkGetMacro(SwapBuffers,int); 00240 vtkBooleanMacro(SwapBuffers,int); 00242 00244 00252 virtual int SetPixelData(int, int, int, int, unsigned char *,int) = 0; 00253 virtual int SetPixelData(int, int, int, int, vtkUnsignedCharArray*, 00254 int ) = 0; 00256 00258 00263 virtual float *GetRGBAPixelData(int ,int ,int ,int ,int ) = 0; 00264 virtual int GetRGBAPixelData(int, int, int, int, int, vtkFloatArray* ) = 0; 00265 virtual int SetRGBAPixelData(int ,int ,int ,int ,float *,int, 00266 int blend=0) = 0; 00267 virtual int SetRGBAPixelData(int, int, int, int, vtkFloatArray*, 00268 int, int blend=0) = 0; 00269 virtual void ReleaseRGBAPixelData(float *data)=0; 00270 virtual unsigned char *GetRGBACharPixelData(int ,int ,int ,int ,int ) = 0; 00271 virtual int GetRGBACharPixelData(int ,int, int, int, int, 00272 vtkUnsignedCharArray*) = 0; 00273 virtual int SetRGBACharPixelData(int ,int ,int ,int ,unsigned char *, int, 00274 int blend=0) = 0; 00275 virtual int SetRGBACharPixelData(int, int, int, int, 00276 vtkUnsignedCharArray *, 00277 int, int blend=0) = 0; 00279 00281 00282 virtual float *GetZbufferData(int, int, int, int ) = 0; 00283 virtual int GetZbufferData( int, int, int, int, vtkFloatArray*) = 0; 00284 virtual int SetZbufferData(int, int, int, int, float *) = 0; 00285 virtual int SetZbufferData( int, int, int, int, vtkFloatArray * ) = 0; 00287 00289 00292 vtkGetMacro(AAFrames,int); 00293 vtkSetMacro(AAFrames,int); 00295 00297 00302 vtkGetMacro(FDFrames,int); 00303 vtkSetMacro(FDFrames,int); 00305 00307 00313 vtkGetMacro(SubFrames,int); 00314 virtual void SetSubFrames(int subFrames); 00316 00318 00319 vtkGetMacro(NeverRendered,int); 00321 00323 00325 vtkGetMacro(AbortRender,int); 00326 vtkSetMacro(AbortRender,int); 00327 vtkGetMacro(InAbortCheck,int); 00328 vtkSetMacro(InAbortCheck,int); 00329 virtual int CheckAbortStatus(); 00331 00332 vtkGetMacro(IsPicking,int); 00333 vtkSetMacro(IsPicking,int); 00334 vtkBooleanMacro(IsPicking,int); 00335 00340 virtual int GetEventPending() = 0; 00341 00343 virtual int CheckInRenderStatus() { return this->InRender; } 00344 00346 virtual void ClearInRenderStatus() { this->InRender = 0; } 00347 00349 00354 void SetDesiredUpdateRate(double); 00355 vtkGetMacro(DesiredUpdateRate,double); 00357 00359 00363 vtkGetMacro(NumberOfLayers, int); 00364 vtkSetClampMacro(NumberOfLayers, int, 1, VTK_LARGE_INTEGER); 00366 00368 00369 vtkGetObjectMacro(Interactor,vtkRenderWindowInteractor); 00370 void SetInteractor(vtkRenderWindowInteractor *); 00372 00375 virtual void UnRegister(vtkObjectBase *o); 00376 00378 00379 virtual void SetDisplayId(void *) = 0; 00380 virtual void SetWindowId(void *) = 0; 00381 virtual void SetNextWindowId(void *) = 0; 00382 virtual void SetParentId(void *) = 0; 00383 virtual void *GetGenericDisplayId() = 0; 00384 virtual void *GetGenericWindowId() = 0; 00385 virtual void *GetGenericParentId() = 0; 00386 virtual void *GetGenericContext() = 0; 00387 virtual void *GetGenericDrawable() = 0; 00388 virtual void SetWindowInfo(char *) = 0; 00389 virtual void SetNextWindowInfo(char *) = 0; 00390 virtual void SetParentInfo(char *) = 0; 00392 00394 virtual void MakeCurrent() = 0; 00395 00399 virtual void SetForceMakeCurrent() {}; 00400 00402 virtual const char *ReportCapabilities() { return "Not Implemented";}; 00403 00405 virtual int SupportsOpenGL() { return 0;}; 00406 00408 virtual int IsDirect() { return 0;}; 00409 00412 virtual int GetDepthBufferSize() = 0; 00413 00414 protected: 00415 vtkRenderWindow(); 00416 ~vtkRenderWindow(); 00417 00418 virtual void DoStereoRender(); 00419 virtual void DoFDRender(); 00420 virtual void DoAARender(); 00421 00422 vtkRendererCollection *Renderers; 00423 int Borders; 00424 int FullScreen; 00425 int OldScreen[5]; 00426 int PointSmoothing; 00427 int LineSmoothing; 00428 int PolygonSmoothing; 00429 int StereoRender; 00430 int StereoType; 00431 int StereoStatus; // used for keeping track of what's going on 00432 int StereoCapableWindow; 00433 int AlphaBitPlanes; 00434 vtkRenderWindowInteractor *Interactor; 00435 unsigned char* StereoBuffer; // used for red blue stereo 00436 float *AccumulationBuffer; // used for many techniques 00437 unsigned int AccumulationBufferSize; 00438 int AAFrames; 00439 int FDFrames; 00440 int SubFrames; // number of sub frames 00441 int CurrentSubFrame; // what one are we on 00442 unsigned char *ResultFrame; // used for any non immediate rendering 00443 int SwapBuffers; 00444 double DesiredUpdateRate; 00445 int AbortRender; 00446 int InAbortCheck; 00447 int InRender; 00448 int NeverRendered; 00449 int NumberOfLayers; 00450 int CurrentCursor; 00451 int IsPicking; 00452 00453 private: 00454 vtkRenderWindow(const vtkRenderWindow&); // Not implemented. 00455 void operator=(const vtkRenderWindow&); // Not implemented. 00456 }; 00457 00459 inline char *vtkRenderWindow::GetStereoTypeAsString(void) 00460 { 00461 switch ( this->StereoType ) 00462 { 00463 case VTK_STEREO_CRYSTAL_EYES: 00464 return (char *)"CrystalEyes"; 00465 case VTK_STEREO_RED_BLUE: 00466 return (char *)"RedBlue"; 00467 case VTK_STEREO_LEFT: 00468 return (char *)"Left"; 00469 case VTK_STEREO_RIGHT: 00470 return (char *)"Right"; 00471 case VTK_STEREO_DRESDEN: 00472 return (char *)"DresdenDisplay"; 00473 default: 00474 return (char *)""; 00475 } 00476 } 00477 00478 #endif 00479 00480