00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00039 #ifndef __vtkLODProp3D_h
00040 #define __vtkLODProp3D_h
00041
00042 #include "vtkProp3D.h"
00043
00044 class vtkRenderer;
00045 class vtkMapper;
00046 class vtkVolumeMapper;
00047 class vtkAbstractMapper3D;
00048 class vtkProperty;
00049 class vtkVolumeProperty;
00050 class vtkTexture;
00051
00052 typedef struct
00053 {
00054 vtkProp3D *Prop3D;
00055 int Prop3DType;
00056 int ID;
00057 float EstimatedTime;
00058 int State;
00059 float Level;
00060 } vtkLODProp3DEntry;
00061
00062 class VTK_RENDERING_EXPORT vtkLODProp3D : public vtkProp3D
00063 {
00064 public:
00066 static vtkLODProp3D *New();
00067
00068 vtkTypeRevisionMacro(vtkLODProp3D,vtkProp3D);
00069 void PrintSelf(ostream& os, vtkIndent indent);
00070
00072
00073 float *GetBounds();
00074 void GetBounds(float bounds[6]) { this->vtkProp3D::GetBounds( bounds ); };
00076
00078
00085 int AddLOD( vtkMapper *m, vtkProperty *p, vtkProperty *back, vtkTexture *t, float time );
00086 int AddLOD( vtkMapper *m, vtkProperty *p, vtkTexture *t, float time );
00087 int AddLOD( vtkMapper *m, vtkProperty *p, vtkProperty *back, float time );
00088 int AddLOD( vtkMapper *m, vtkProperty *p, float time );
00089 int AddLOD( vtkMapper *m, vtkTexture *t, float time );
00090 int AddLOD( vtkMapper *m, float time );
00091 int AddLOD( vtkVolumeMapper *m, vtkVolumeProperty *p, float time );
00092 int AddLOD( vtkVolumeMapper *m, float time );
00094
00096
00097 vtkGetMacro(NumberOfLODs, int);
00099
00101
00105 vtkGetMacro(CurrentIndex, int);
00107
00110 void RemoveLOD( int id );
00111
00113
00117 void SetLODProperty( int id, vtkProperty *p );
00118 void GetLODProperty( int id, vtkProperty **p );
00119 void SetLODProperty( int id, vtkVolumeProperty *p );
00120 void GetLODProperty( int id, vtkVolumeProperty **p );
00122
00124
00128 void SetLODMapper( int id, vtkMapper *m );
00129 void GetLODMapper( int id, vtkMapper **m );
00130 void SetLODMapper( int id, vtkVolumeMapper *m );
00131 void GetLODMapper( int id, vtkVolumeMapper **m );
00133
00137 vtkAbstractMapper3D *GetLODMapper(int id);
00138
00140
00142 void SetLODBackfaceProperty( int id, vtkProperty *t );
00143 void GetLODBackfaceProperty( int id, vtkProperty **t );
00145
00147
00149 void SetLODTexture( int id, vtkTexture *t );
00150 void GetLODTexture( int id, vtkTexture **t );
00152
00154
00157 void EnableLOD( int id );
00158 void DisableLOD( int id );
00159 int IsLODEnabled( int id );
00161
00163
00168 void SetLODLevel( int id, float level );
00169 float GetLODLevel( int id );
00170 float GetLODIndexLevel( int index );
00172
00174
00177 float GetLODEstimatedRenderTime( int id );
00178 float GetLODIndexEstimatedRenderTime( int index );
00180
00182
00185 vtkSetClampMacro( AutomaticLODSelection, int, 0, 1 );
00186 vtkGetMacro( AutomaticLODSelection, int );
00187 vtkBooleanMacro( AutomaticLODSelection, int );
00189
00191
00193 vtkSetMacro( SelectedLODID, int );
00194 vtkGetMacro( SelectedLODID, int );
00196
00199 int GetLastRenderedLODID();
00200
00202 int GetPickLODID(void);
00203
00207 virtual void GetActors(vtkPropCollection *);
00208
00210
00212 void SetPickMethod(void (*f)(void *), void *arg);
00213 void SetPickMethodArgDelete(void (*f)(void *));
00215
00217
00219 void SetSelectedPickLODID(int id);
00220 vtkGetMacro( SelectedPickLODID, int );
00222
00224
00227 vtkSetClampMacro( AutomaticPickLODSelection, int, 0, 1 );
00228 vtkGetMacro( AutomaticPickLODSelection, int );
00229 vtkBooleanMacro( AutomaticPickLODSelection, int );
00231
00233 void ShallowCopy(vtkProp *prop);
00234
00235
00236
00238
00239 int RenderOpaqueGeometry(vtkViewport *viewport);
00240 int RenderTranslucentGeometry(vtkViewport *viewport);
00242
00246 void ReleaseGraphicsResources(vtkWindow *);
00247
00251 void SetAllocatedRenderTime( float t, vtkViewport *vp );
00252
00257 void RestoreEstimatedRenderTime( );
00258
00261 virtual void AddEstimatedRenderTime( float t, vtkViewport *vp );
00262
00263
00264
00265 protected:
00266 vtkLODProp3D();
00267 ~vtkLODProp3D();
00268
00269 int GetAutomaticPickPropIndex(void);
00270
00271 vtkLODProp3DEntry *LODs;
00272 int NumberOfEntries;
00273 int NumberOfLODs;
00274 int CurrentIndex;
00275
00276 int GetNextEntryIndex();
00277 int ConvertIDToIndex( int id );
00278 int SelectedLODIndex;
00279
00280 int AutomaticLODSelection;
00281 int SelectedLODID;
00282 int SelectedPickLODID;
00283 int AutomaticPickLODSelection;
00284 vtkProp* PreviousPickProp;
00285 void (*PreviousPickMethod)(void *);
00286 void * PreviousPickMethodArg;
00287 private:
00288 vtkLODProp3D(const vtkLODProp3D&);
00289 void operator=(const vtkLODProp3D&);
00290 };
00291
00292 #endif
00293