00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
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
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;
00432 int StereoCapableWindow;
00433 int AlphaBitPlanes;
00434 vtkRenderWindowInteractor *Interactor;
00435 unsigned char* StereoBuffer;
00436 float *AccumulationBuffer;
00437 unsigned int AccumulationBufferSize;
00438 int AAFrames;
00439 int FDFrames;
00440 int SubFrames;
00441 int CurrentSubFrame;
00442 unsigned char *ResultFrame;
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&);
00455 void operator=(const vtkRenderWindow&);
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