00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00036 #ifndef __vtkProp_h
00037 #define __vtkProp_h
00038
00039 #include "vtkObject.h"
00040
00041 class vtkAssemblyPath;
00042 class vtkAssemblyPaths;
00043 class vtkMatrix4x4;
00044 class vtkPropCollection;
00045 class vtkViewport;
00046 class vtkWindow;
00047 class vtkInformation;
00048
00049 class VTK_COMMON_EXPORT vtkProp : public vtkObject
00050 {
00051 public:
00052 vtkTypeMacro(vtkProp,vtkObject);
00053 void PrintSelf(ostream& os, vtkIndent indent);
00054
00056
00059 virtual void GetActors(vtkPropCollection *) {}
00060 virtual void GetActors2D(vtkPropCollection *) {}
00061 virtual void GetVolumes(vtkPropCollection *) {}
00063
00065
00066 vtkSetMacro(Visibility, int);
00067 vtkGetMacro(Visibility, int);
00068 vtkBooleanMacro(Visibility, int);
00070
00072
00075 vtkSetMacro(Pickable,int);
00076 vtkGetMacro(Pickable,int);
00077 vtkBooleanMacro(Pickable,int);
00079
00081 virtual void Pick();
00082
00084
00090 vtkSetMacro(Dragable,int);
00091 vtkGetMacro(Dragable,int);
00092 vtkBooleanMacro(Dragable,int);
00094
00099 virtual unsigned long GetRedrawMTime() {return this->GetMTime();}
00100
00102
00106 vtkSetMacro(UseBounds,bool);
00107 vtkGetMacro(UseBounds,bool);
00108 vtkBooleanMacro(UseBounds,bool);
00110
00113 virtual double *GetBounds() {return NULL;}
00114
00116 virtual void ShallowCopy(vtkProp *prop);
00117
00119
00130 virtual void InitPathTraversal();
00131 virtual vtkAssemblyPath *GetNextPath();
00132 virtual int GetNumberOfPaths() {return 1;}
00134
00136
00139 virtual void PokeMatrix(vtkMatrix4x4 *vtkNotUsed(matrix)) {}
00140 virtual vtkMatrix4x4 *GetMatrix() {return NULL;}
00142
00144
00148 vtkGetObjectMacro(PropertyKeys,vtkInformation);
00149 virtual void SetPropertyKeys(vtkInformation *keys);
00151
00154 virtual bool HasKeys(vtkInformation *requiredKeys);
00155
00156
00158
00171 virtual int RenderOpaqueGeometry( vtkViewport *) { return 0; }
00172 virtual int RenderTranslucentPolygonalGeometry( vtkViewport *) { return 0; }
00173 virtual int RenderVolumetricGeometry( vtkViewport *) { return 0; }
00174 virtual int RenderOverlay( vtkViewport *) { return 0; }
00176
00178
00184 virtual bool RenderFilteredOpaqueGeometry(vtkViewport *v,
00185 vtkInformation *requiredKeys);
00187
00189
00195 virtual bool RenderFilteredTranslucentPolygonalGeometry(
00196 vtkViewport *v,
00197 vtkInformation *requiredKeys);
00199
00201
00207 virtual bool RenderFilteredVolumetricGeometry(vtkViewport *v,
00208 vtkInformation *requiredKeys);
00210
00212
00218 virtual bool RenderFilteredOverlay(vtkViewport *v,
00219 vtkInformation *requiredKeys);
00221
00230 virtual int HasTranslucentPolygonalGeometry() { return 0; }
00231
00236 virtual void ReleaseGraphicsResources(vtkWindow *) {}
00237
00239
00249 virtual double GetEstimatedRenderTime( vtkViewport * )
00250 { return this->EstimatedRenderTime; }
00251 virtual double GetEstimatedRenderTime(){ return this->EstimatedRenderTime; }
00253
00255
00259 virtual void SetEstimatedRenderTime(double t)
00260 {this->EstimatedRenderTime = t; this->SavedEstimatedRenderTime = t;}
00262
00264
00269 virtual void RestoreEstimatedRenderTime()
00270 { this->EstimatedRenderTime = this->SavedEstimatedRenderTime; }
00272
00273
00275
00285 virtual void AddEstimatedRenderTime(double t, vtkViewport *vtkNotUsed(vp))
00286 {this->EstimatedRenderTime+=t;}
00288
00290
00297 virtual void SetAllocatedRenderTime(double t, vtkViewport *vtkNotUsed(v))
00298 {
00299 this->AllocatedRenderTime = t;
00300 this->SavedEstimatedRenderTime = this->EstimatedRenderTime;
00301 this->EstimatedRenderTime = 0.0;
00302 }
00304
00306
00308 vtkGetMacro(AllocatedRenderTime, double);
00310
00312
00316 void SetRenderTimeMultiplier( double t ) { this->RenderTimeMultiplier = t; }
00317 vtkGetMacro(RenderTimeMultiplier, double);
00319
00323 virtual void BuildPaths(vtkAssemblyPaths *paths, vtkAssemblyPath *path);
00324
00326
00330 virtual bool GetSupportsSelection()
00331 { return false; }
00333
00335
00336 vtkGetMacro(NumberOfConsumers,int);
00338
00340
00341 void AddConsumer(vtkObject *c);
00342 void RemoveConsumer(vtkObject *c);
00343 vtkObject *GetConsumer(int i);
00344 int IsConsumer(vtkObject *c);
00346
00347
00348
00349 protected:
00350 vtkProp();
00351 ~vtkProp();
00352
00353 int Visibility;
00354 int Pickable;
00355 int Dragable;
00356 bool UseBounds;
00357
00358 double AllocatedRenderTime;
00359 double EstimatedRenderTime;
00360 double SavedEstimatedRenderTime;
00361 double RenderTimeMultiplier;
00362
00363
00364 int NumberOfConsumers;
00365 vtkObject **Consumers;
00366
00367
00368
00369 vtkAssemblyPaths *Paths;
00370
00371 vtkInformation *PropertyKeys;
00372
00373 private:
00374 vtkProp(const vtkProp&);
00375 void operator=(const vtkProp&);
00376 };
00377
00378 #endif
00379
00380