00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00038
#ifndef __vtkLODProp3D_h
00039
#define __vtkLODProp3D_h
00040
00041
#include "vtkProp3D.h"
00042
00043
class vtkRenderer;
00044
class vtkMapper;
00045
class vtkAbstractVolumeMapper;
00046
class vtkAbstractMapper3D;
00047
class vtkProperty;
00048
class vtkVolumeProperty;
00049
class vtkTexture;
00050
class vtkLODProp3DCallback;
00051
00052 typedef struct
00053
{
00054 vtkProp3D *Prop3D;
00055 int Prop3DType;
00056 int ID;
00057 double EstimatedTime;
00058 int State;
00059 double 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
double *
GetBounds();
00074 void GetBounds(
double bounds[6]) { this->
vtkProp3D::GetBounds( bounds ); };
00076
00078
00085
int AddLOD(
vtkMapper *m,
vtkProperty *p,
vtkProperty *back,
00086
vtkTexture *t,
double time );
00087
int AddLOD(
vtkMapper *m,
vtkProperty *p,
vtkTexture *t,
double time );
00088
int AddLOD(
vtkMapper *m,
vtkProperty *p,
vtkProperty *back,
double time );
00089
int AddLOD(
vtkMapper *m,
vtkProperty *p,
double time );
00090
int AddLOD(
vtkMapper *m,
vtkTexture *t,
double time );
00091
int AddLOD(
vtkMapper *m,
double time );
00092
int AddLOD(
vtkAbstractVolumeMapper *m,
vtkVolumeProperty *p,
double time );
00093
int AddLOD(
vtkAbstractVolumeMapper *m,
double time );
00095
00097
00098 vtkGetMacro(NumberOfLODs,
int);
00100
00102
00106 vtkGetMacro(CurrentIndex,
int);
00108
00111
void RemoveLOD(
int id );
00112
00114
00118
void SetLODProperty(
int id,
vtkProperty *p );
00119
void GetLODProperty(
int id,
vtkProperty **p );
00120
void SetLODProperty(
int id,
vtkVolumeProperty *p );
00121
void GetLODProperty(
int id,
vtkVolumeProperty **p );
00123
00125
00129
void SetLODMapper(
int id,
vtkMapper *m );
00130
void GetLODMapper(
int id,
vtkMapper **m );
00131
void SetLODMapper(
int id,
vtkAbstractVolumeMapper *m );
00132
void GetLODMapper(
int id,
vtkAbstractVolumeMapper **m );
00134
00138
vtkAbstractMapper3D *GetLODMapper(
int id);
00139
00141
00143
void SetLODBackfaceProperty(
int id,
vtkProperty *t );
00144
void GetLODBackfaceProperty(
int id,
vtkProperty **t );
00146
00148
00150
void SetLODTexture(
int id,
vtkTexture *t );
00151
void GetLODTexture(
int id,
vtkTexture **t );
00153
00155
00158
void EnableLOD(
int id );
00159
void DisableLOD(
int id );
00160
int IsLODEnabled(
int id );
00162
00164
00169
void SetLODLevel(
int id,
double level );
00170
double GetLODLevel(
int id );
00171
double GetLODIndexLevel(
int index );
00173
00175
00178
double GetLODEstimatedRenderTime(
int id );
00179
double GetLODIndexEstimatedRenderTime(
int index );
00181
00183
00186 vtkSetClampMacro( AutomaticLODSelection,
int, 0, 1 );
00187 vtkGetMacro( AutomaticLODSelection,
int );
00188 vtkBooleanMacro( AutomaticLODSelection,
int );
00190
00192
00194 vtkSetMacro( SelectedLODID,
int );
00195 vtkGetMacro( SelectedLODID,
int );
00197
00200
int GetLastRenderedLODID();
00201
00203
int GetPickLODID(
void);
00204
00208
virtual void GetActors(
vtkPropCollection *);
00209
00211
00213
void SetSelectedPickLODID(
int id);
00214 vtkGetMacro( SelectedPickLODID,
int );
00216
00218
00221 vtkSetClampMacro( AutomaticPickLODSelection,
int, 0, 1 );
00222 vtkGetMacro( AutomaticPickLODSelection,
int );
00223 vtkBooleanMacro( AutomaticPickLODSelection,
int );
00225
00227
void ShallowCopy(
vtkProp *prop);
00228
00229
00230
00232
00233
int RenderOpaqueGeometry(
vtkViewport *viewport);
00234
int RenderTranslucentGeometry(
vtkViewport *viewport);
00236
00240
void ReleaseGraphicsResources(
vtkWindow *);
00241
00245
void SetAllocatedRenderTime(
double t,
vtkViewport *vp );
00246
00251
void RestoreEstimatedRenderTime( );
00252
00255
virtual void AddEstimatedRenderTime(
double t,
vtkViewport *vp );
00256
00257
00258
00259
protected:
00260 vtkLODProp3D();
00261 ~vtkLODProp3D();
00262
00263
int GetAutomaticPickPropIndex(
void);
00264
00265 vtkLODProp3DEntry *LODs;
00266 int NumberOfEntries;
00267 int NumberOfLODs;
00268 int CurrentIndex;
00269
00270
int GetNextEntryIndex();
00271
int ConvertIDToIndex(
int id );
00272 int SelectedLODIndex;
00273
00274 int AutomaticLODSelection;
00275 int SelectedLODID;
00276 int SelectedPickLODID;
00277 int AutomaticPickLODSelection;
00278 vtkLODProp3DCallback *PickCallback;
00279
00280
private:
00281 vtkLODProp3D(
const vtkLODProp3D&);
00282
void operator=(
const vtkLODProp3D&);
00283 };
00284
00285
#endif
00286