vtkRenderer.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00044 #ifndef __vtkRenderer_h
00045 #define __vtkRenderer_h
00046
00047 #include "vtkViewport.h"
00048
00049 #include "vtkVolumeCollection.h"
00050 #include "vtkActorCollection.h"
00051
00052 class vtkRenderWindow;
00053 class vtkVolume;
00054 class vtkCuller;
00055 class vtkActor;
00056 class vtkActor2D;
00057 class vtkCamera;
00058 class vtkLightCollection;
00059 class vtkCullerCollection;
00060 class vtkLight;
00061
00062 class VTK_RENDERING_EXPORT vtkRenderer : public vtkViewport
00063 {
00064 public:
00065 vtkTypeRevisionMacro(vtkRenderer,vtkViewport);
00066 void PrintSelf(ostream& os, vtkIndent indent);
00067
00071 static vtkRenderer *New();
00072
00074
00077 void AddActor(vtkProp *p) {this->AddProp(p);};
00078 void AddVolume(vtkProp *p) {this->AddProp(p);};
00079 void RemoveActor(vtkProp *p) {this->Actors->RemoveItem(p);this->RemoveProp(p);};
00080 void RemoveVolume(vtkProp *p) {this->Volumes->RemoveItem(p);this->RemoveProp(p);};
00082
00084 void AddLight(vtkLight *);
00085
00087 void RemoveLight(vtkLight *);
00088
00090 vtkLightCollection *GetLights();
00091
00093 void CreateLight(void);
00094
00098 virtual vtkLight *MakeLight();
00099
00101
00105 vtkGetMacro(TwoSidedLighting,int);
00106 vtkSetMacro(TwoSidedLighting,int);
00107 vtkBooleanMacro(TwoSidedLighting,int);
00109
00111
00121 vtkSetMacro(LightFollowCamera,int);
00122 vtkGetMacro(LightFollowCamera,int);
00123 vtkBooleanMacro(LightFollowCamera,int);
00125
00129 virtual int UpdateLightsGeometryToFollowCamera(void);
00130
00132 vtkVolumeCollection *GetVolumes();
00133
00135 vtkActorCollection *GetActors();
00136
00138 void SetActiveCamera(vtkCamera *);
00139
00141 vtkCamera *GetActiveCamera();
00142
00146 virtual vtkCamera *MakeCamera();
00147
00149 void AddCuller(vtkCuller *);
00150
00152 void RemoveCuller(vtkCuller *);
00153
00155 vtkCullerCollection *GetCullers();
00156
00158
00159 vtkSetVector3Macro(Ambient,float);
00160 vtkGetVectorMacro(Ambient,float,3);
00162
00164
00166 vtkSetMacro(AllocatedRenderTime,float);
00167 virtual float GetAllocatedRenderTime();
00169
00174 virtual float GetTimeFactor();
00175
00178 virtual void Render();
00179
00182 virtual void DeviceRender() =0;
00183
00185 virtual void Clear() {};
00186
00188 int VisibleActorCount();
00189
00191 int VisibleVolumeCount();
00192
00195 void ComputeVisiblePropBounds( float bounds[6] );
00196
00198 float *ComputeVisiblePropBounds();
00199
00202 void ResetCameraClippingRange();
00203
00205
00207 void ResetCameraClippingRange( float bounds[6] );
00208 void ResetCameraClippingRange( float xmin, float xmax,
00209 float ymin, float ymax,
00210 float zmin, float zmax);
00212
00218 void ResetCamera();
00219
00227 void ResetCamera(float bounds[6]);
00228
00230
00231 void ResetCamera(float xmin, float xmax, float ymin, float ymax,
00232 float zmin, float zmax);
00234
00236
00239 void SetRenderWindow(vtkRenderWindow *);
00240 vtkRenderWindow *GetRenderWindow() {return this->RenderWindow;};
00241 virtual vtkWindow *GetVTKWindow();
00243
00245
00248 vtkSetMacro(BackingStore,int);
00249 vtkGetMacro(BackingStore,int);
00250 vtkBooleanMacro(BackingStore,int);
00252
00254
00257 vtkSetMacro(Interactive,int);
00258 vtkGetMacro(Interactive,int);
00259 vtkBooleanMacro(Interactive,int);
00261
00263
00265 vtkSetMacro(Layer, int);
00266 vtkGetMacro(Layer, int);
00268
00271 int Transparent();
00272
00274 void WorldToView();
00275
00277
00278 void ViewToWorld();
00279 virtual void ViewToWorld(float &wx, float &wy, float &wz);
00281
00283 virtual void WorldToView(float &wx, float &wy, float &wz);
00284
00286 float GetZ (int x, int y);
00287
00289 unsigned long GetMTime();
00290
00292
00293 vtkGetMacro( LastRenderTimeInSeconds, float );
00295
00297
00301 vtkGetMacro( NumberOfPropsRendered, int );
00303
00309 vtkAssemblyPath* PickProp(float selectionX, float selectionY);
00310
00311 protected:
00312 vtkRenderer();
00313 ~vtkRenderer();
00314
00315
00316 virtual void PickRender(vtkPropCollection *props);
00317 virtual void PickGeometry();
00318
00319 vtkCamera *ActiveCamera;
00320 vtkLight *CreatedLight;
00321
00322 vtkLightCollection *Lights;
00323 vtkCullerCollection *Cullers;
00324
00325 vtkActorCollection *Actors;
00326 vtkVolumeCollection *Volumes;
00327
00328 float Ambient[3];
00329 vtkRenderWindow *RenderWindow;
00330 float AllocatedRenderTime;
00331 float TimeFactor;
00332 int TwoSidedLighting;
00333 int BackingStore;
00334 unsigned char *BackingImage;
00335 vtkTimeStamp RenderTime;
00336
00337 float LastRenderTimeInSeconds;
00338
00339 int LightFollowCamera;
00340
00341
00342 void AllocateTime();
00343
00344
00345
00346 int NumberOfPropsRendered;
00347
00348
00349
00350 vtkProp **PropArray;
00351 int PropArrayCount;
00352
00353
00354 vtkAssemblyPath **PathArray;
00355 int PathArrayCount;
00356
00357
00358
00359 int Interactive;
00360
00361
00362
00363 int Layer;
00364
00365
00366 float ComputedVisiblePropBounds[6];
00367
00371 virtual int UpdateGeometry(void);
00372
00375 virtual int UpdateCamera(void);
00376
00380 virtual int UpdateLightGeometry(void);
00381
00384 virtual int UpdateLights(void) {return 0;};
00385
00386 private:
00387 vtkRenderer(const vtkRenderer&);
00388 void operator=(const vtkRenderer&);
00389 };
00390
00391 inline vtkLightCollection *vtkRenderer::GetLights() {
00392 return this->Lights;
00393 }
00394
00396 inline vtkCullerCollection *vtkRenderer::GetCullers(){return this->Cullers;}
00397
00398
00399 #endif