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