VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkCubeAxesActor.h 00005 Language: C++ 00006 00007 Copyright (c) 1993-2001 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserve 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 =========================================================================*/ 00040 #ifndef __vtkPolarAxesActor_h 00041 #define __vtkPolarAxesActor_h 00042 00043 #define VTK_MAXIMUM_NUMBER_OF_RADIAL_AXES 50 00044 #define VTK_DEFAULT_NUMBER_OF_RADIAL_AXES 5 00045 #define VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS 200 00046 #define VTK_POLAR_ARC_RESOLUTION_PER_DEG 0.2 00047 00048 #include "vtkActor.h" 00049 00050 class vtkAxisActor; 00051 class vtkCamera; 00052 class vtkPolyData; 00053 class vtkPolyDataMapper; 00054 class vtkTextProperty; 00055 00056 class VTK_HYBRID_EXPORT vtkPolarAxesActor : public vtkActor 00057 { 00058 public: 00059 vtkTypeMacro(vtkPolarAxesActor,vtkActor); 00060 void PrintSelf(ostream& os, vtkIndent indent); 00061 00064 static vtkPolarAxesActor *New(); 00065 00067 00068 virtual int RenderOpaqueGeometry(vtkViewport*); 00069 virtual int RenderTranslucentPolygonalGeometry(vtkViewport*) {return 0;}; 00071 00073 00074 virtual void SetPole( double[3] ); 00075 virtual void SetPole( double, double, double ); 00076 vtkGetVector3Macro( Pole, double ); 00078 00080 00081 virtual void SetNumberOfRadialAxes( vtkIdType ); 00082 vtkGetMacro( NumberOfRadialAxes, vtkIdType ); 00084 00086 00088 vtkSetClampMacro( NumberOfPolarAxisTicks, vtkIdType, 0, VTK_MAXIMUM_NUMBER_OF_POLAR_AXIS_TICKS ); 00089 vtkGetMacro( NumberOfPolarAxisTicks, vtkIdType ); 00091 00093 00095 vtkSetMacro( AutoSubdividePolarAxis, bool ); 00096 vtkGetMacro( AutoSubdividePolarAxis, bool ); 00097 vtkBooleanMacro( AutoSubdividePolarAxis, bool ); 00099 00101 00102 virtual void SetMaximumRadius( double ); 00103 vtkGetMacro( MaximumRadius, double ); 00105 00107 00109 vtkSetMacro( AutoScaleRadius,bool ); 00110 vtkGetMacro( AutoScaleRadius,bool ); 00112 00114 00115 virtual void SetMinimumAngle( double ); 00116 vtkGetMacro( MinimumAngle, double ); 00118 00120 00121 virtual void SetMaximumAngle( double ); 00122 vtkGetMacro( MaximumAngle, double ); 00124 00126 00128 vtkSetClampMacro( SmallestVisiblePolarAngle, double, 0., 5. ); 00129 vtkGetMacro( SmallestVisiblePolarAngle, double ); 00131 00133 00134 vtkSetMacro( RadialUnits, bool ); 00135 vtkGetMacro( RadialUnits, bool ); 00137 00139 00142 void SetScreenSize( double screenSize ); 00143 vtkGetMacro( ScreenSize, double ); 00145 00147 00149 virtual void SetCamera(vtkCamera*); 00150 vtkGetObjectMacro( Camera,vtkCamera ); 00152 00154 00155 vtkSetStringMacro( PolarAxisTitle ); 00156 vtkGetStringMacro( PolarAxisTitle ); 00158 00160 00161 vtkSetStringMacro( PolarLabelFormat ); 00162 vtkGetStringMacro( PolarLabelFormat ); 00164 00168 void ReleaseGraphicsResources( vtkWindow* ); 00169 00171 00173 vtkSetMacro( EnableDistanceLOD, int ); 00174 vtkGetMacro( EnableDistanceLOD, int ); 00176 00178 00179 vtkSetClampMacro( DistanceLODThreshold, double, 0.0, 1.0 ); 00180 vtkGetMacro( DistanceLODThreshold, double); 00182 00184 00186 vtkSetMacro( EnableViewAngleLOD, int ); 00187 vtkGetMacro( EnableViewAngleLOD, int ); 00189 00191 00192 vtkSetClampMacro( ViewAngleLODThreshold, double, 0., 1. ); 00193 vtkGetMacro( ViewAngleLODThreshold, double ); 00195 00197 00198 vtkSetMacro( PolarAxisVisibility, int ); 00199 vtkGetMacro( PolarAxisVisibility, int ); 00200 vtkBooleanMacro( PolarAxisVisibility, int ); 00202 00204 00205 vtkSetMacro( PolarTitleVisibility, int ); 00206 vtkGetMacro( PolarTitleVisibility, int ); 00207 vtkBooleanMacro( PolarTitleVisibility, int ); 00209 00211 00212 vtkSetMacro( PolarLabelVisibility, int ); 00213 vtkGetMacro( PolarLabelVisibility, int ); 00214 vtkBooleanMacro( PolarLabelVisibility, int ); 00216 00218 00219 vtkSetMacro( PolarTickVisibility, int ); 00220 vtkGetMacro( PolarTickVisibility, int ); 00221 vtkBooleanMacro( PolarTickVisibility, int ); 00223 00225 00226 vtkSetMacro( RadialAxesVisibility, int ); 00227 vtkGetMacro( RadialAxesVisibility, int ); 00228 vtkBooleanMacro( RadialAxesVisibility, int ); 00230 00232 00233 vtkSetMacro( RadialTitleVisibility, int ); 00234 vtkGetMacro( RadialTitleVisibility, int ); 00235 vtkBooleanMacro( RadialTitleVisibility, int ); 00237 00239 00240 vtkSetMacro( PolarArcsVisibility, int ); 00241 vtkGetMacro( PolarArcsVisibility, int ); 00242 vtkBooleanMacro( PolarArcsVisibility, int ); 00244 00246 00247 virtual void SetPolarAxisTitleTextProperty(vtkTextProperty *p); 00248 vtkGetObjectMacro(PolarAxisTitleTextProperty,vtkTextProperty); 00250 00252 00253 virtual void SetPolarAxisLabelTextProperty(vtkTextProperty *p); 00254 vtkGetObjectMacro(PolarAxisLabelTextProperty,vtkTextProperty); 00256 00258 00259 virtual void SetPolarAxisProperty(vtkProperty *); 00260 vtkProperty* GetPolarAxisProperty(); 00262 00264 00265 virtual void SetRadialAxesProperty(vtkProperty *); 00266 vtkProperty* GetRadialAxesProperty(); 00268 00270 00271 virtual void SetPolarArcsProperty(vtkProperty *); 00272 vtkProperty* GetPolarArcsProperty(); 00274 00276 00280 vtkSetVector6Macro(Bounds,double); 00281 double *GetBounds(); 00282 void GetBounds(double& xmin, double& xmax, double& ymin, double& ymax, 00283 double& zmin, double& zmax); 00284 void GetBounds(double bounds[6]); 00286 00287 protected: 00288 vtkPolarAxesActor(); 00289 ~vtkPolarAxesActor(); 00290 00292 void BuildAxes( vtkViewport * ); 00293 00295 void CalculateBounds(); 00296 00298 void SetCommonAxisAttributes( vtkAxisActor* ); 00299 00301 void CreateRadialAxes(); 00302 00304 void BuildRadialAxes(); 00305 00307 void BuildPolarAxisTicks( double ); 00308 00310 void BuildPolarAxisLabelsArcs(); 00311 00313 00314 double FFix(double ); 00315 double FSign(double, double ); 00317 00320 void AutoScale( vtkViewport* viewport ); 00321 00323 double Pole[3]; 00324 00326 int NumberOfRadialAxes; 00327 00329 int NumberOfPolarAxisTicks; 00330 00333 bool AutoSubdividePolarAxis; 00334 00336 double MaximumRadius; 00337 00340 bool AutoScaleRadius; 00341 00343 double MinimumAngle; 00344 00346 double MaximumAngle; 00347 00349 double SmallestVisiblePolarAngle; 00350 00352 double Bounds[6]; 00353 00355 00356 vtkPolyData *PolarArcs; 00357 vtkPolyDataMapper *PolarArcsMapper; 00358 vtkActor *PolarArcsActor; 00360 00362 vtkCamera *Camera; 00363 00365 vtkAxisActor* PolarAxis; 00366 00368 vtkAxisActor** RadialAxes; 00369 00371 00373 char *PolarAxisTitle; 00374 char *PolarLabelFormat; 00376 00378 bool RadialUnits; 00379 00382 int EnableDistanceLOD; 00383 00386 double DistanceLODThreshold; 00387 00390 int EnableViewAngleLOD; 00391 00394 double ViewAngleLODThreshold; 00395 00397 00398 int PolarAxisVisibility; 00399 int PolarTitleVisibility; 00400 int PolarLabelVisibility; 00401 int PolarTickVisibility; 00403 00405 00406 int RadialAxesVisibility; 00407 int RadialTitleVisibility; 00409 00411 int PolarArcsVisibility; 00412 00413 int RenderCount; 00414 00415 int RenderSomething; 00416 00418 00419 vtkTextProperty *PolarAxisTitleTextProperty; 00420 vtkTextProperty *PolarAxisLabelTextProperty; 00422 00424 vtkProperty* PolarAxisProperty; 00425 00427 vtkProperty* RadialAxesProperty; 00428 00429 vtkTimeStamp BuildTime; 00430 00432 double TitleScale; 00433 00435 double LabelScale; 00436 00438 double LabelScreenOffset; 00439 00441 double ScreenSize; 00442 00443 private: 00444 vtkPolarAxesActor( const vtkPolarAxesActor& ); // Not implemented 00445 void operator=( const vtkPolarAxesActor& ); // Not implemented 00446 }; 00447 00448 00449 #endif