VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkAxesActor.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00053 #ifndef __vtkAxesActor_h 00054 #define __vtkAxesActor_h 00055 00056 #include "vtkProp3D.h" 00057 00058 class vtkActor; 00059 class vtkCaptionActor2D; 00060 class vtkConeSource; 00061 class vtkCylinderSource; 00062 class vtkLineSource; 00063 class vtkPolyData; 00064 class vtkPropCollection; 00065 class vtkProperty; 00066 class vtkRenderer; 00067 class vtkSphereSource; 00068 00069 class VTK_HYBRID_EXPORT vtkAxesActor : public vtkProp3D 00070 { 00071 public: 00072 static vtkAxesActor *New(); 00073 vtkTypeMacro(vtkAxesActor,vtkProp3D); 00074 void PrintSelf(ostream& os, vtkIndent indent); 00075 00079 virtual void GetActors(vtkPropCollection *); 00080 00082 00083 virtual int RenderOpaqueGeometry(vtkViewport *viewport); 00084 virtual int RenderTranslucentPolygonalGeometry(vtkViewport *viewport); 00085 virtual int RenderOverlay(vtkViewport *viewport); 00087 00089 virtual int HasTranslucentPolygonalGeometry(); 00090 00092 void ShallowCopy(vtkProp *prop); 00093 00097 void ReleaseGraphicsResources(vtkWindow *); 00098 00100 00103 void GetBounds(double bounds[6]); 00104 double *GetBounds(); 00106 00108 unsigned long int GetMTime(); 00109 00114 virtual unsigned long GetRedrawMTime(); 00115 00117 00118 void SetTotalLength( double v[3] ) 00119 { this->SetTotalLength( v[0], v[1], v[2] ); } 00120 void SetTotalLength( double x, double y, double z ); 00121 vtkGetVectorMacro( TotalLength, double, 3 ); 00123 00125 00126 void SetNormalizedShaftLength( double v[3] ) 00127 { this->SetNormalizedShaftLength( v[0], v[1], v[2] ); } 00128 void SetNormalizedShaftLength( double x, double y, double z ); 00129 vtkGetVectorMacro( NormalizedShaftLength, double, 3 ); 00131 00133 00135 void SetNormalizedTipLength( double v[3] ) 00136 { this->SetNormalizedTipLength( v[0], v[1], v[2] ); } 00137 void SetNormalizedTipLength( double x, double y, double z ); 00138 vtkGetVectorMacro( NormalizedTipLength, double, 3 ); 00140 00142 00144 void SetNormalizedLabelPosition( double v[3] ) 00145 { this->SetNormalizedLabelPosition( v[0], v[1], v[2] ); } 00146 void SetNormalizedLabelPosition( double x, double y, double z ); 00147 vtkGetVectorMacro( NormalizedLabelPosition, double, 3 ); 00149 00151 00152 vtkSetClampMacro(ConeResolution, int, 3, 128); 00153 vtkGetMacro(ConeResolution, int); 00154 vtkSetClampMacro(SphereResolution, int, 3, 128); 00155 vtkGetMacro(SphereResolution, int); 00156 vtkSetClampMacro(CylinderResolution, int, 3, 128); 00157 vtkGetMacro(CylinderResolution, int); 00159 00161 00162 vtkSetClampMacro(ConeRadius, double, 0, VTK_LARGE_FLOAT); 00163 vtkGetMacro(ConeRadius, double); 00164 vtkSetClampMacro(SphereRadius, double, 0, VTK_LARGE_FLOAT); 00165 vtkGetMacro(SphereRadius, double); 00166 vtkSetClampMacro(CylinderRadius, double, 0, VTK_LARGE_FLOAT); 00167 vtkGetMacro(CylinderRadius, double); 00169 00171 00173 void SetShaftType( int type ); 00174 void SetShaftTypeToCylinder() 00175 { this->SetShaftType( vtkAxesActor::CYLINDER_SHAFT ); } 00176 void SetShaftTypeToLine() 00177 { this->SetShaftType( vtkAxesActor::LINE_SHAFT ); } 00178 void SetShaftTypeToUserDefined() 00179 { this->SetShaftType( vtkAxesActor::USER_DEFINED_SHAFT ); } 00180 vtkGetMacro(ShaftType, int); 00182 00184 00185 void SetTipType( int type ); 00186 void SetTipTypeToCone() 00187 { this->SetTipType( vtkAxesActor::CONE_TIP ); } 00188 void SetTipTypeToSphere() 00189 { this->SetTipType( vtkAxesActor::SPHERE_TIP ); } 00190 void SetTipTypeToUserDefined() 00191 { this->SetTipType( vtkAxesActor::USER_DEFINED_TIP ); } 00192 vtkGetMacro(TipType, int); 00194 00196 00197 void SetUserDefinedTip( vtkPolyData * ); 00198 vtkGetObjectMacro( UserDefinedTip, vtkPolyData ); 00200 00202 00203 void SetUserDefinedShaft( vtkPolyData * ); 00204 vtkGetObjectMacro( UserDefinedShaft, vtkPolyData ); 00206 00208 00209 vtkProperty *GetXAxisTipProperty(); 00210 vtkProperty *GetYAxisTipProperty(); 00211 vtkProperty *GetZAxisTipProperty(); 00213 00215 00216 vtkProperty *GetXAxisShaftProperty(); 00217 vtkProperty *GetYAxisShaftProperty(); 00218 vtkProperty *GetZAxisShaftProperty(); 00220 00222 00224 vtkCaptionActor2D *GetXAxisCaptionActor2D() 00225 {return this->XAxisLabel;} 00226 vtkCaptionActor2D *GetYAxisCaptionActor2D() 00227 {return this->YAxisLabel;} 00228 vtkCaptionActor2D *GetZAxisCaptionActor2D() 00229 {return this->ZAxisLabel;} 00231 00233 00234 vtkSetStringMacro( XAxisLabelText ); 00235 vtkGetStringMacro( XAxisLabelText ); 00236 vtkSetStringMacro( YAxisLabelText ); 00237 vtkGetStringMacro( YAxisLabelText ); 00238 vtkSetStringMacro( ZAxisLabelText ); 00239 vtkGetStringMacro( ZAxisLabelText ); 00241 00243 00244 vtkSetMacro(AxisLabels, int); 00245 vtkGetMacro(AxisLabels, int); 00246 vtkBooleanMacro(AxisLabels, int); 00248 00249 //BTX 00250 enum 00251 { 00252 CYLINDER_SHAFT, 00253 LINE_SHAFT, 00254 USER_DEFINED_SHAFT 00255 }; 00256 00257 enum 00258 { 00259 CONE_TIP, 00260 SPHERE_TIP, 00261 USER_DEFINED_TIP 00262 }; 00263 //ETX 00264 00265 protected: 00266 vtkAxesActor(); 00267 ~vtkAxesActor(); 00268 00269 vtkCylinderSource *CylinderSource; 00270 vtkLineSource *LineSource; 00271 vtkConeSource *ConeSource; 00272 vtkSphereSource *SphereSource; 00273 00274 vtkActor *XAxisShaft; 00275 vtkActor *YAxisShaft; 00276 vtkActor *ZAxisShaft; 00277 00278 vtkActor *XAxisTip; 00279 vtkActor *YAxisTip; 00280 vtkActor *ZAxisTip; 00281 00282 void UpdateProps(); 00283 00284 double TotalLength[3]; 00285 double NormalizedShaftLength[3]; 00286 double NormalizedTipLength[3]; 00287 double NormalizedLabelPosition[3]; 00288 00289 int ShaftType; 00290 int TipType; 00291 00292 vtkPolyData *UserDefinedTip; 00293 vtkPolyData *UserDefinedShaft; 00294 00295 char *XAxisLabelText; 00296 char *YAxisLabelText; 00297 char *ZAxisLabelText; 00298 00299 vtkCaptionActor2D *XAxisLabel; 00300 vtkCaptionActor2D *YAxisLabel; 00301 vtkCaptionActor2D *ZAxisLabel; 00302 00303 int AxisLabels; 00304 00305 00306 int ConeResolution; 00307 int SphereResolution; 00308 int CylinderResolution; 00309 00310 double ConeRadius; 00311 double SphereRadius; 00312 double CylinderRadius; 00313 00314 private: 00315 vtkAxesActor(const vtkAxesActor&); // Not implemented. 00316 void operator=(const vtkAxesActor&); // Not implemented. 00317 }; 00318 00319 #endif 00320