00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00051 #ifndef __vtkLODProp3D_h
00052 #define __vtkLODProp3D_h
00053
00054 #include "vtkProp3D.h"
00055
00056 class vtkRenderer;
00057 class vtkMapper;
00058 class vtkVolumeMapper;
00059 class vtkAbstractMapper3D;
00060 class vtkProperty;
00061 class vtkVolumeProperty;
00062 class vtkTexture;
00063
00064 typedef struct
00065 {
00066 vtkProp3D *Prop3D;
00067 int Prop3DType;
00068 int ID;
00069 float EstimatedTime;
00070 int State;
00071 float Level;
00072 } vtkLODProp3DEntry;
00073
00074 class VTK_RENDERING_EXPORT vtkLODProp3D : public vtkProp3D
00075 {
00076 public:
00078 static vtkLODProp3D *New();
00079
00080 vtkTypeRevisionMacro(vtkLODProp3D,vtkProp3D);
00081 void PrintSelf(ostream& os, vtkIndent indent);
00082
00084
00085 float *GetBounds();
00086 void GetBounds(float bounds[6]) { this->vtkProp3D::GetBounds( bounds ); };
00088
00090
00097 int AddLOD( vtkMapper *m, vtkProperty *p, vtkProperty *back, vtkTexture *t, float time );
00098 int AddLOD( vtkMapper *m, vtkProperty *p, vtkTexture *t, float time );
00099 int AddLOD( vtkMapper *m, vtkProperty *p, vtkProperty *back, float time );
00100 int AddLOD( vtkMapper *m, vtkProperty *p, float time );
00101 int AddLOD( vtkMapper *m, vtkTexture *t, float time );
00102 int AddLOD( vtkMapper *m, float time );
00103 int AddLOD( vtkVolumeMapper *m, vtkVolumeProperty *p, float time );
00104 int AddLOD( vtkVolumeMapper *m, float time );
00106
00108
00109 vtkGetMacro(NumberOfLODs, int);
00111
00113
00117 vtkGetMacro(CurrentIndex, int);
00119
00122 void RemoveLOD( int id );
00123
00125
00129 void SetLODProperty( int id, vtkProperty *p );
00130 void GetLODProperty( int id, vtkProperty **p );
00131 void SetLODProperty( int id, vtkVolumeProperty *p );
00132 void GetLODProperty( int id, vtkVolumeProperty **p );
00134
00136
00140 void SetLODMapper( int id, vtkMapper *m );
00141 void GetLODMapper( int id, vtkMapper **m );
00142 void SetLODMapper( int id, vtkVolumeMapper *m );
00143 void GetLODMapper( int id, vtkVolumeMapper **m );
00145
00149 vtkAbstractMapper3D *GetLODMapper(int id);
00150
00152
00154 void SetLODBackfaceProperty( int id, vtkProperty *t );
00155 void GetLODBackfaceProperty( int id, vtkProperty **t );
00157
00159
00161 void SetLODTexture( int id, vtkTexture *t );
00162 void GetLODTexture( int id, vtkTexture **t );
00164
00166
00169 void EnableLOD( int id );
00170 void DisableLOD( int id );
00171 int IsLODEnabled( int id );
00173
00175
00180 void SetLODLevel( int id, float level );
00181 float GetLODLevel( int id );
00182 float GetLODIndexLevel( int index );
00184
00186
00189 float GetLODEstimatedRenderTime( int id );
00190 float GetLODIndexEstimatedRenderTime( int index );
00192
00194
00197 vtkSetClampMacro( AutomaticLODSelection, int, 0, 1 );
00198 vtkGetMacro( AutomaticLODSelection, int );
00199 vtkBooleanMacro( AutomaticLODSelection, int );
00201
00203
00205 vtkSetMacro( SelectedLODID, int );
00206 vtkGetMacro( SelectedLODID, int );
00208
00211 int GetLastRenderedLODID();
00212
00214 int GetPickLODID(void);
00215
00219 virtual void GetActors(vtkPropCollection *);
00220
00222
00224 void SetPickMethod(void (*f)(void *), void *arg);
00225 void SetPickMethodArgDelete(void (*f)(void *));
00227
00229
00231 void SetSelectedPickLODID(int id);
00232 vtkGetMacro( SelectedPickLODID, int );
00234
00236
00239 vtkSetClampMacro( AutomaticPickLODSelection, int, 0, 1 );
00240 vtkGetMacro( AutomaticPickLODSelection, int );
00241 vtkBooleanMacro( AutomaticPickLODSelection, int );
00243
00245 void ShallowCopy(vtkProp *prop);
00246
00247
00248
00250
00251 int RenderOpaqueGeometry(vtkViewport *viewport);
00252 int RenderTranslucentGeometry(vtkViewport *viewport);
00254
00258 void ReleaseGraphicsResources(vtkWindow *);
00259
00263 void SetAllocatedRenderTime( float t, vtkViewport *vp );
00264
00269 void RestoreEstimatedRenderTime( );
00270
00273 virtual void AddEstimatedRenderTime( float t, vtkViewport *vp );
00274
00275
00276
00277 protected:
00278 vtkLODProp3D();
00279 ~vtkLODProp3D();
00280
00281 int GetAutomaticPickPropIndex(void);
00282
00283 vtkLODProp3DEntry *LODs;
00284 int NumberOfEntries;
00285 int NumberOfLODs;
00286 int CurrentIndex;
00287
00288 int GetNextEntryIndex();
00289 int ConvertIDToIndex( int id );
00290 int SelectedLODIndex;
00291
00292 int AutomaticLODSelection;
00293 int SelectedLODID;
00294 int SelectedPickLODID;
00295 int AutomaticPickLODSelection;
00296 vtkProp* PreviousPickProp;
00297 void (*PreviousPickMethod)(void *);
00298 void * PreviousPickMethodArg;
00299 private:
00300 vtkLODProp3D(const vtkLODProp3D&);
00301 void operator=(const vtkLODProp3D&);
00302 };
00303
00304 #endif
00305