00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00053
#ifndef __vtkRenderWindow_h
00054
#define __vtkRenderWindow_h
00055
00056
#include "vtkWindow.h"
00057
00058
class vtkFloatArray;
00059
class vtkRenderWindowInteractor;
00060
class vtkRenderer;
00061
class vtkRendererCollection;
00062
class vtkUnsignedCharArray;
00063
00064
00065 #define VTK_STEREO_CRYSTAL_EYES 1
00066 #define VTK_STEREO_RED_BLUE 2
00067 #define VTK_STEREO_INTERLACED 3
00068 #define VTK_STEREO_LEFT 4
00069 #define VTK_STEREO_RIGHT 5
00070 #define VTK_STEREO_DRESDEN 6
00071
00072 #define VTK_CURSOR_DEFAULT 0
00073 #define VTK_CURSOR_ARROW 1
00074 #define VTK_CURSOR_SIZENE 2
00075 #define VTK_CURSOR_SIZENW 3
00076 #define VTK_CURSOR_SIZESW 4
00077 #define VTK_CURSOR_SIZESE 5
00078 #define VTK_CURSOR_SIZENS 6
00079 #define VTK_CURSOR_SIZEWE 7
00080 #define VTK_CURSOR_SIZEALL 8
00081 #define VTK_CURSOR_HAND 9
00082
00083 class VTK_RENDERING_EXPORT vtkRenderWindow :
public vtkWindow
00084 {
00085
public:
00086 vtkTypeRevisionMacro(vtkRenderWindow,
vtkWindow);
00087
void PrintSelf(ostream& os,
vtkIndent indent);
00088
00092
static vtkRenderWindow *
New();
00093
00095
virtual void AddRenderer(
vtkRenderer *);
00096
00098
void RemoveRenderer(
vtkRenderer *);
00099
00101
static const char *GetRenderLibrary();
00102
00104 vtkRendererCollection *GetRenderers() {
return this->Renderers;};
00105
00108
virtual void Render();
00109
00111
virtual void Start() = 0;
00112
00115
virtual void Frame() = 0;
00116
00119
virtual void CopyResultFrame();
00120
00124
virtual vtkRenderWindowInteractor *MakeRenderWindowInteractor();
00125
00127
00130
virtual void HideCursor() = 0;
00131
virtual void ShowCursor() = 0;
00132 virtual void SetCursorPosition(
int ,
int ) {};
00134
00136
00137 vtkSetMacro(CurrentCursor,
int);
00138 vtkGetMacro(CurrentCursor,
int);
00140
00142
00143
virtual void SetFullScreen(
int) = 0;
00144 vtkGetMacro(FullScreen,
int);
00145 vtkBooleanMacro(FullScreen,
int);
00147
00149
00152 vtkSetMacro(Borders,
int);
00153 vtkGetMacro(Borders,
int);
00154 vtkBooleanMacro(Borders,
int);
00156
00158
00160 vtkGetMacro(StereoCapableWindow,
int);
00161 vtkBooleanMacro(StereoCapableWindow,
int);
00162
virtual void SetStereoCapableWindow(
int capable);
00164
00166
00167 vtkGetMacro(StereoRender,
int);
00168
void SetStereoRender(
int stereo);
00169 vtkBooleanMacro(StereoRender,
int);
00171
00173
00175 vtkSetMacro(PointSmoothing,
int);
00176 vtkGetMacro(PointSmoothing,
int);
00177 vtkBooleanMacro(PointSmoothing,
int);
00179
00181
00183 vtkSetMacro(LineSmoothing,
int);
00184 vtkGetMacro(LineSmoothing,
int);
00185 vtkBooleanMacro(LineSmoothing,
int);
00187
00189
00191 vtkSetMacro(PolygonSmoothing,
int);
00192 vtkGetMacro(PolygonSmoothing,
int);
00193 vtkBooleanMacro(PolygonSmoothing,
int);
00195
00197
00198 vtkGetMacro(StereoType,
int);
00199 vtkSetMacro(StereoType,
int);
00200 void SetStereoTypeToCrystalEyes()
00201 {this->SetStereoType(
VTK_STEREO_CRYSTAL_EYES);};
00202 void SetStereoTypeToRedBlue()
00203 {this->SetStereoType(
VTK_STEREO_RED_BLUE);};
00204 void SetStereoTypeToInterlaced()
00205 {this->SetStereoType(
VTK_STEREO_INTERLACED);};
00206 void SetStereoTypeToLeft()
00207 {this->SetStereoType(
VTK_STEREO_LEFT);};
00208 void SetStereoTypeToRight()
00209 {this->SetStereoType(
VTK_STEREO_RIGHT);};
00210 void SetStereoTypeToDresden()
00211 {this->SetStereoType(
VTK_STEREO_DRESDEN);};
00212
char *GetStereoTypeAsString();
00214
00218
virtual void StereoUpdate();
00219
00222
virtual void StereoMidpoint();
00223
00226
virtual void StereoRenderComplete();
00227
00231
virtual void WindowRemap() = 0;
00232
00234
00235 vtkSetMacro(SwapBuffers,
int);
00236 vtkGetMacro(SwapBuffers,
int);
00237 vtkBooleanMacro(SwapBuffers,
int);
00239
00241
00249
virtual int SetPixelData(
int,
int,
int,
int,
unsigned char *,
int) = 0;
00250
virtual int SetPixelData(
int,
int,
int,
int,
vtkUnsignedCharArray*,
00251
int ) = 0;
00253
00255
00260
virtual float *GetRGBAPixelData(
int ,
int ,
int ,
int ,
int ) = 0;
00261
virtual int GetRGBAPixelData(
int,
int,
int,
int,
int,
vtkFloatArray* ) = 0;
00262
virtual int SetRGBAPixelData(
int ,
int ,
int ,
int ,
float *,
int,
00263
int blend=0) = 0;
00264
virtual int SetRGBAPixelData(
int,
int,
int,
int,
vtkFloatArray*,
00265
int,
int blend=0) = 0;
00266
virtual void ReleaseRGBAPixelData(
float *data)=0;
00267
virtual unsigned char *GetRGBACharPixelData(
int ,
int ,
int ,
int ,
int ) = 0;
00268
virtual int GetRGBACharPixelData(
int ,
int,
int,
int,
int,
00269
vtkUnsignedCharArray*) = 0;
00270
virtual int SetRGBACharPixelData(
int ,
int ,
int ,
int ,
unsigned char *,
int,
00271
int blend=0) = 0;
00272
virtual int SetRGBACharPixelData(
int,
int,
int,
int,
00273
vtkUnsignedCharArray *,
00274
int,
int blend=0) = 0;
00276
00278
00279
virtual float *GetZbufferData(
int,
int,
int,
int ) = 0;
00280
virtual int GetZbufferData(
int,
int,
int,
int,
vtkFloatArray*) = 0;
00281
virtual int SetZbufferData(
int,
int,
int,
int,
float *) = 0;
00282
virtual int SetZbufferData(
int,
int,
int,
int,
vtkFloatArray * ) = 0;
00284
00286
00289 vtkGetMacro(AAFrames,
int);
00290 vtkSetMacro(AAFrames,
int);
00292
00294
00299 vtkGetMacro(FDFrames,
int);
00300 vtkSetMacro(FDFrames,
int);
00302
00304
00309 vtkGetMacro(SubFrames,
int);
00310 vtkSetMacro(SubFrames,
int);
00312
00314
00315 vtkGetMacro(NeverRendered,
int);
00317
00319
00321 vtkGetMacro(AbortRender,
int);
00322 vtkSetMacro(AbortRender,
int);
00323 vtkGetMacro(InAbortCheck,
int);
00324 vtkSetMacro(InAbortCheck,
int);
00325
virtual int CheckAbortStatus();
00327
00328 vtkGetMacro(IsPicking,
int);
00329 vtkSetMacro(IsPicking,
int);
00330 vtkBooleanMacro(IsPicking,
int);
00331
00336
virtual int GetEventPending() = 0;
00337
00339 virtual int CheckInRenderStatus() {
return this->InRender; }
00340
00342 virtual void ClearInRenderStatus() { this->InRender = 0; }
00343
00345
00346
#ifndef VTK_REMOVE_LEGACY_CODE
00347
void SetAbortCheckMethod(
void (*f)(
void *),
void *arg);
00348
void SetAbortCheckMethodArgDelete(
void (*f)(
void *));
00350
#endif
00351
00353
00358
void SetDesiredUpdateRate(
float);
00359 vtkGetMacro(DesiredUpdateRate,
float);
00361
00363
00367 vtkGetMacro(NumberOfLayers,
int);
00368 vtkSetClampMacro(NumberOfLayers,
int, 1, VTK_LARGE_INTEGER);
00370
00372
00373 vtkGetObjectMacro(Interactor,
vtkRenderWindowInteractor);
00374
void SetInteractor(
vtkRenderWindowInteractor *);
00376
00379
virtual void UnRegister(
vtkObjectBase *o);
00380
00382
00383
virtual void SetDisplayId(
void *) = 0;
00384
virtual void SetWindowId(
void *) = 0;
00385
virtual void SetParentId(
void *) = 0;
00386
virtual void *
GetGenericDisplayId() = 0;
00387
virtual void *
GetGenericWindowId() = 0;
00388
virtual void *
GetGenericParentId() = 0;
00389
virtual void *
GetGenericContext() = 0;
00390
virtual void *
GetGenericDrawable() = 0;
00391
virtual void SetWindowInfo(
char *) = 0;
00392
virtual void SetParentInfo(
char *) = 0;
00394
00396
virtual void MakeCurrent() = 0;
00397
00401 virtual void SetForceMakeCurrent() {};
00402
00404 virtual const char *ReportCapabilities() {
return "Not Implemented";};
00405
00407 virtual int SupportsOpenGL() {
return 0;};
00408
00410 virtual int IsDirect() {
return 0;};
00411
00414
virtual int GetDepthBufferSize() = 0;
00415
00416
protected:
00417 vtkRenderWindow();
00418 ~vtkRenderWindow();
00419
00420
virtual void DoStereoRender();
00421
virtual void DoFDRender();
00422
virtual void DoAARender();
00423
00424 vtkRendererCollection *Renderers;
00425 int Borders;
00426 int FullScreen;
00427 int OldScreen[5];
00428 int PointSmoothing;
00429 int LineSmoothing;
00430 int PolygonSmoothing;
00431 int StereoRender;
00432 int StereoType;
00433 int StereoStatus;
00434 int StereoCapableWindow;
00435 vtkRenderWindowInteractor *Interactor;
00436 unsigned char* StereoBuffer;
00437 float *AccumulationBuffer;
00438 unsigned int AccumulationBufferSize;
00439 int AAFrames;
00440 int FDFrames;
00441 int SubFrames;
00442 int CurrentSubFrame;
00443 unsigned char *ResultFrame;
00444 int SwapBuffers;
00445 float DesiredUpdateRate;
00446 int AbortRender;
00447 int InAbortCheck;
00448 int InRender;
00449 int NeverRendered;
00450 int NumberOfLayers;
00451 void (*AbortCheckMethod)(
void *);
00452 void (*AbortCheckMethodArgDelete)(
void *);
00453 void *AbortCheckMethodArg;
00454 int CurrentCursor;
00455 int IsPicking;
00456
00457
private:
00458 vtkRenderWindow(
const vtkRenderWindow&);
00459
void operator=(
const vtkRenderWindow&);
00460 };
00461
00463 inline char *
vtkRenderWindow::GetStereoTypeAsString(
void)
00464 {
00465
switch ( this->
StereoType )
00466 {
00467
case VTK_STEREO_CRYSTAL_EYES:
00468
return (
char *)
"CrystalEyes";
00469
case VTK_STEREO_RED_BLUE:
00470
return (
char *)
"RedBlue";
00471
case VTK_STEREO_LEFT:
00472
return (
char *)
"Left";
00473
case VTK_STEREO_RIGHT:
00474
return (
char *)
"Right";
00475
case VTK_STEREO_DRESDEN:
00476
return (
char *)
"DresdenDisplay";
00477
default:
00478
return (
char *)
"";
00479 }
00480 }
00481
00482
#endif
00483
00484