00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00024 #ifndef __vtkPVAxesActor_h
00025 #define __vtkPVAxesActor_h
00026
00027 #include "vtkProp3D.h"
00028
00029 class vtkRenderer;
00030 class vtkPropCollection;
00031 class vtkMapper;
00032 class vtkProperty;
00033 class vtkActor;
00034 class vtkFollower;
00035 class vtkCylinderSource;
00036 class vtkLineSource;
00037 class vtkConeSource;
00038 class vtkSphereSource;
00039 class vtkPolyData;
00040 class vtkVectorText;
00041
00042 class VTK_EXPORT vtkPVAxesActor : public vtkProp3D
00043 {
00044 public:
00045 static vtkPVAxesActor *New();
00046 vtkTypeRevisionMacro(vtkPVAxesActor,vtkProp3D);
00047 void PrintSelf(ostream& os, vtkIndent indent);
00048
00049
00053 virtual void GetActors(vtkPropCollection *);
00054
00056
00057 virtual int RenderOpaqueGeometry(vtkViewport *viewport);
00058 virtual int RenderTranslucentGeometry(vtkViewport *viewport);
00060
00062 void ShallowCopy(vtkProp *prop);
00063
00067 void ReleaseGraphicsResources(vtkWindow *);
00068
00070
00073 void GetBounds(double bounds[6]);
00074 double *GetBounds();
00076
00078 unsigned long int GetMTime();
00079
00084 virtual unsigned long GetRedrawMTime();
00085
00087
00088 void SetTotalLength( float v[3] )
00089 { this->SetTotalLength( v[0], v[1], v[2] ); }
00090 void SetTotalLength( float x, float y, float z );
00091 vtkGetVectorMacro( TotalLength, float, 3 );
00093
00095
00096 void SetNormalizedShaftLength( float v[3] )
00097 { this->SetNormalizedShaftLength( v[0], v[1], v[2] ); }
00098 void SetNormalizedShaftLength( float x, float y, float z );
00099 vtkGetVectorMacro( NormalizedShaftLength, float, 3 );
00101
00103
00104 void SetNormalizedTipLength( float v[3] )
00105 { this->SetNormalizedTipLength( v[0], v[1], v[2] ); }
00106 void SetNormalizedTipLength( float x, float y, float z );
00107 vtkGetVectorMacro( NormalizedTipLength, float, 3 );
00109
00111
00112 vtkSetClampMacro(ConeResolution, int, 3, 128);
00113 vtkGetMacro(ConeResolution, int);
00114 vtkSetClampMacro(SphereResolution, int, 3, 128);
00115 vtkGetMacro(SphereResolution, int);
00116 vtkSetClampMacro(CylinderResolution, int, 3, 128);
00117 vtkGetMacro(CylinderResolution, int);
00119
00121
00122 vtkSetClampMacro(ConeRadius, float, 0, VTK_LARGE_FLOAT);
00123 vtkGetMacro(ConeRadius, float);
00124 vtkSetClampMacro(SphereRadius, float, 0, VTK_LARGE_FLOAT);
00125 vtkGetMacro(SphereRadius, float);
00126 vtkSetClampMacro(CylinderRadius, float, 0, VTK_LARGE_FLOAT);
00127 vtkGetMacro(CylinderRadius, float);
00129
00131
00132 vtkSetClampMacro(XAxisLabelPosition, float, 0, 1);
00133 vtkGetMacro(XAxisLabelPosition, float);
00134 vtkSetClampMacro(YAxisLabelPosition, float, 0, 1);
00135 vtkGetMacro(YAxisLabelPosition, float);
00136 vtkSetClampMacro(ZAxisLabelPosition, float, 0, 1);
00137 vtkGetMacro(ZAxisLabelPosition, float);
00139
00141
00143 void SetShaftType( int type );
00144 void SetShaftTypeToCylinder()
00145 { this->SetShaftType( vtkPVAxesActor::CYLINDER_SHAFT ); }
00146 void SetShaftTypeToLine()
00147 { this->SetShaftType( vtkPVAxesActor::LINE_SHAFT ); }
00148 void SetShaftTypeToUserDefined()
00149 { this->SetShaftType( vtkPVAxesActor::USER_DEFINED_SHAFT ); }
00151
00153
00154 void SetTipType( int type );
00155 void SetTipTypeToCone()
00156 { this->SetTipType( vtkPVAxesActor::CONE_TIP ); }
00157 void SetTipTypeToSphere()
00158 { this->SetTipType( vtkPVAxesActor::SPHERE_TIP ); }
00159 void SetTipTypeToUserDefined()
00160 { this->SetTipType( vtkPVAxesActor::USER_DEFINED_TIP ); }
00162
00163
00165
00166 void SetUserDefinedTip( vtkPolyData * );
00167 vtkGetObjectMacro( UserDefinedTip, vtkPolyData );
00169
00171
00172 void SetUserDefinedShaft( vtkPolyData * );
00173 vtkGetObjectMacro( UserDefinedShaft, vtkPolyData );
00175
00177
00178 vtkProperty *GetXAxisTipProperty();
00179 vtkProperty *GetYAxisTipProperty();
00180 vtkProperty *GetZAxisTipProperty();
00182
00184
00185 vtkProperty *GetXAxisShaftProperty();
00186 vtkProperty *GetYAxisShaftProperty();
00187 vtkProperty *GetZAxisShaftProperty();
00189
00191
00192 vtkProperty *GetXAxisLabelProperty();
00193 vtkProperty *GetYAxisLabelProperty();
00194 vtkProperty *GetZAxisLabelProperty();
00195
00196
00197
00198
00199 vtkSetStringMacro( XAxisLabelText );
00200 vtkSetStringMacro( YAxisLabelText );
00201 vtkSetStringMacro( ZAxisLabelText );
00203
00204
00205 enum
00206 {
00207 CYLINDER_SHAFT,
00208 LINE_SHAFT,
00209 USER_DEFINED_SHAFT
00210 };
00211
00212
00213 enum
00214 {
00215 CONE_TIP,
00216 SPHERE_TIP,
00217 USER_DEFINED_TIP
00218 };
00219
00220
00221
00222 protected:
00223 vtkPVAxesActor();
00224 ~vtkPVAxesActor();
00225
00226 vtkCylinderSource *CylinderSource;
00227 vtkLineSource *LineSource;
00228 vtkConeSource *ConeSource;
00229 vtkSphereSource *SphereSource;
00230
00231 vtkActor *XAxisShaft;
00232 vtkActor *YAxisShaft;
00233 vtkActor *ZAxisShaft;
00234
00235 vtkActor *XAxisTip;
00236 vtkActor *YAxisTip;
00237 vtkActor *ZAxisTip;
00238
00239 void UpdateProps();
00240
00241 float TotalLength[3];
00242 float NormalizedShaftLength[3];
00243 float NormalizedTipLength[3];
00244
00245 int ShaftType;
00246 int TipType;
00247
00248 vtkPolyData *UserDefinedTip;
00249 vtkPolyData *UserDefinedShaft;
00250
00251 char *XAxisLabelText;
00252 char *YAxisLabelText;
00253 char *ZAxisLabelText;
00254
00255 vtkVectorText *XAxisVectorText;
00256 vtkVectorText *YAxisVectorText;
00257 vtkVectorText *ZAxisVectorText;
00258
00259 vtkFollower *XAxisLabel;
00260 vtkFollower *YAxisLabel;
00261 vtkFollower *ZAxisLabel;
00262
00263 int ConeResolution;
00264 int SphereResolution;
00265 int CylinderResolution;
00266
00267 float ConeRadius;
00268 float SphereRadius;
00269 float CylinderRadius;
00270
00271 float XAxisLabelPosition;
00272 float YAxisLabelPosition;
00273 float ZAxisLabelPosition;
00274
00275 private:
00276 vtkPVAxesActor(const vtkPVAxesActor&);
00277 void operator=(const vtkPVAxesActor&);
00278 };
00279
00280 #endif
00281