56 #ifndef vtkCubeAxesActor_h 
   57 #define vtkCubeAxesActor_h 
   60 #include "vtkRenderingAnnotationModule.h"  
   84   virtual int RenderTranslucentGeometry(
vtkViewport*);
 
   94   vtkSetMacro(RebuildAxes, 
bool);
 
   95   vtkGetMacro(RebuildAxes, 
bool);
 
  105   vtkSetVector6Macro(Bounds, 
double);
 
  115   virtual void GetRenderedBounds(
double rBounds[6]);
 
  116   virtual double* GetRenderedBounds();
 
  128   vtkSetVector2Macro(XAxisRange, 
double);
 
  129   vtkSetVector2Macro(YAxisRange, 
double);
 
  130   vtkSetVector2Macro(ZAxisRange, 
double);
 
  131   vtkGetVector2Macro(XAxisRange, 
double);
 
  132   vtkGetVector2Macro(YAxisRange, 
double);
 
  143   vtkGetVector2Macro(ZAxisRange, 
double);
 
  151   void SetScreenSize(
double screenSize);
 
  152   vtkGetMacro(ScreenSize, 
double);
 
  160   void SetLabelOffset(
double offset);
 
  161   vtkGetMacro(LabelOffset, 
double);
 
  169   void SetTitleOffset(
double offset);
 
  170   vtkGetMacro(TitleOffset, 
double);
 
  184     VTK_FLY_OUTER_EDGES = 0,
 
  185     VTK_FLY_CLOSEST_TRIAD = 1,
 
  186     VTK_FLY_FURTHEST_TRIAD = 2,
 
  187     VTK_FLY_STATIC_TRIAD = 3,
 
  188     VTK_FLY_STATIC_EDGES = 4
 
  197   vtkSetClampMacro(FlyMode, 
int, VTK_FLY_OUTER_EDGES, VTK_FLY_STATIC_EDGES);
 
  198   vtkGetMacro(FlyMode, 
int);
 
  211   vtkSetStringMacro(XTitle);
 
  212   vtkGetStringMacro(XTitle);
 
  213   vtkSetStringMacro(XUnits);
 
  214   vtkGetStringMacro(XUnits);
 
  215   vtkSetStringMacro(YTitle);
 
  216   vtkGetStringMacro(YTitle);
 
  217   vtkSetStringMacro(YUnits);
 
  218   vtkGetStringMacro(YUnits);
 
  219   vtkSetStringMacro(ZTitle);
 
  220   vtkGetStringMacro(ZTitle);
 
  221   vtkSetStringMacro(ZUnits);
 
  222   vtkGetStringMacro(ZUnits);
 
  230   vtkSetStringMacro(XLabelFormat);
 
  231   vtkGetStringMacro(XLabelFormat);
 
  232   vtkSetStringMacro(YLabelFormat);
 
  233   vtkGetStringMacro(YLabelFormat);
 
  234   vtkSetStringMacro(ZLabelFormat);
 
  235   vtkGetStringMacro(ZLabelFormat);
 
  245   vtkGetMacro(Inertia, 
int);
 
  254   vtkSetMacro(CornerOffset, 
double);
 
  255   vtkGetMacro(CornerOffset, 
double);
 
  269   vtkSetMacro(EnableDistanceLOD, 
int);
 
  270   vtkGetMacro(EnableDistanceLOD, 
int);
 
  277   vtkSetClampMacro(DistanceLODThreshold, 
double, 0.0, 1.0);
 
  278   vtkGetMacro(DistanceLODThreshold, 
double);
 
  285   vtkSetMacro(EnableViewAngleLOD, 
int);
 
  286   vtkGetMacro(EnableViewAngleLOD, 
int);
 
  293   vtkSetClampMacro(ViewAngleLODThreshold, 
double, 0., 1.);
 
  294   vtkGetMacro(ViewAngleLODThreshold, 
double);
 
  318   vtkBooleanMacro(XAxisLabelVisibility, 
vtkTypeBool);
 
  323   vtkBooleanMacro(YAxisLabelVisibility, 
vtkTypeBool);
 
  327   vtkBooleanMacro(ZAxisLabelVisibility, 
vtkTypeBool);
 
  350   vtkSetMacro(XAxisMinorTickVisibility, 
vtkTypeBool);
 
  351   vtkGetMacro(XAxisMinorTickVisibility, 
vtkTypeBool);
 
  352   vtkBooleanMacro(XAxisMinorTickVisibility, 
vtkTypeBool);
 
  355   vtkSetMacro(YAxisMinorTickVisibility, 
vtkTypeBool);
 
  356   vtkGetMacro(YAxisMinorTickVisibility, 
vtkTypeBool);
 
  357   vtkBooleanMacro(YAxisMinorTickVisibility, 
vtkTypeBool);
 
  359   vtkSetMacro(ZAxisMinorTickVisibility, 
vtkTypeBool);
 
  360   vtkGetMacro(ZAxisMinorTickVisibility, 
vtkTypeBool);
 
  361   vtkBooleanMacro(ZAxisMinorTickVisibility, 
vtkTypeBool);
 
  459     VTK_TICKS_INSIDE = 0,
 
  460     VTK_TICKS_OUTSIDE = 1,
 
  468   vtkSetClampMacro(TickLocation, 
int, VTK_TICKS_INSIDE, VTK_TICKS_BOTH);
 
  469   vtkGetMacro(TickLocation, 
int);
 
  476   void SetLabelScaling(
bool, 
int, 
int, 
int);
 
  484   void SetUseTextActor3D(
int val);
 
  485   int GetUseTextActor3D();
 
  493   void SetUse2DMode(
int val);
 
  500   void SetSaveTitlePosition(
int val);
 
  506   vtkSetVector6Macro(OrientedBounds, 
double);
 
  507   vtkGetVector6Macro(OrientedBounds, 
double);
 
  514   vtkSetMacro(UseOrientedBounds, 
int);
 
  515   vtkGetMacro(UseOrientedBounds, 
int);
 
  522   vtkSetVector3Macro(AxisBaseForX, 
double);
 
  523   vtkGetVector3Macro(AxisBaseForX, 
double);
 
  530   vtkSetVector3Macro(AxisBaseForY, 
double);
 
  531   vtkGetVector3Macro(AxisBaseForY, 
double);
 
  538   vtkSetVector3Macro(AxisBaseForZ, 
double);
 
  539   vtkGetVector3Macro(AxisBaseForZ, 
double);
 
  547   vtkSetVector3Macro(AxisOrigin, 
double);
 
  548   vtkGetVector3Macro(AxisOrigin, 
double);
 
  555   vtkSetMacro(UseAxisOrigin, 
int);
 
  556   vtkGetMacro(UseAxisOrigin, 
int);
 
  563   vtkSetMacro(GridLineLocation, 
int);
 
  564   vtkGetMacro(GridLineLocation, 
int);
 
  593     VTK_GRID_LINES_ALL = 0,
 
  594     VTK_GRID_LINES_CLOSEST = 1,
 
  595     VTK_GRID_LINES_FURTHEST = 2
 
  607   void ComputeStickyAxesBoundingSphere(
 
  608     vtkViewport* viewport, 
const double bounds[6], 
double sphereCenter[3], 
double& sphereRadius);
 
  613   void GetViewportLimitedBounds(
vtkViewport* viewport, 
double bounds[6]);
 
  619   static void GetBoundsPointBits(
 
  620     unsigned int pointIndex, 
unsigned int& xBit, 
unsigned int& yBit, 
unsigned int& zBit);
 
  625   static void GetBoundsPoint(
unsigned int pointIndex, 
const double bounds[6], 
double point[3]);
 
  627   int LabelExponent(
double min, 
double max);
 
  629   int Digits(
double min, 
double max);
 
  631   double MaxOf(
double, 
double);
 
  632   double MaxOf(
double, 
double, 
double, 
double);
 
  635   double FSign(
double, 
double);
 
  636   int FRound(
double fnt);
 
  637   int GetNumTicks(
double range, 
double fxt);
 
  646   int FindClosestAxisIndex(
double pts[8][3]);
 
  649   int FindFurtherstAxisIndex(
double pts[8][3]);
 
  652   void FindBoundaryEdge(
int& indexOfAxisX, 
int& indexOfAxisY, 
int& indexOfAxisZ, 
double pts[8][3]);
 
  659   void UpdateGridLineVisibility(
int axisIndex);
 
  702     NUMBER_OF_ALIGNED_AXIS = 4
 
  790   double RenderedBounds[6];
 
  791   double OrientedBounds[6];
 
  794   double AxisOrigin[3];
 
  797   double AxisBaseForX[3];
 
  798   double AxisBaseForY[3];
 
  799   double AxisBaseForZ[3];
 
  805   vtkSetStringMacro(ActualXLabel);
 
  806   vtkSetStringMacro(ActualYLabel);
 
  807   vtkSetStringMacro(ActualZLabel);
 
  810   int LastUseOrientedBounds;
 
  819   bool AutoLabelScaling;
 
  825   double LastXRange[2];
 
  826   double LastYRange[2];
 
  827   double LastZRange[2];
 
  828   double LastBounds[6];
 
  832   int RenderAxesX[NUMBER_OF_ALIGNED_AXIS];
 
  833   int RenderAxesY[NUMBER_OF_ALIGNED_AXIS];
 
  834   int RenderAxesZ[NUMBER_OF_ALIGNED_AXIS];
 
  840   bool MustAdjustXValue;
 
  841   bool MustAdjustYValue;
 
  842   bool MustAdjustZValue;
 
  844   bool ForceXLabelReset;
 
  845   bool ForceYLabelReset;
 
  846   bool ForceZLabelReset;
 
  848   double XAxisRange[2];
 
  849   double YAxisRange[2];
 
  850   double ZAxisRange[2];
 
  864   double MajorStart[3];
 
  865   double DeltaMajor[3];
 
  868   int RenderGeometry(
bool& initialRender, 
vtkViewport* viewport, 
bool checkAxisVisibility,
 
  871   void TransformBounds(
vtkViewport* viewport, 
const double bounds[6], 
double pts[8][3]);
 
  872   void AdjustAxes(
double bounds[6], 
double xCoords[NUMBER_OF_ALIGNED_AXIS][6],
 
  873     double yCoords[NUMBER_OF_ALIGNED_AXIS][6], 
double zCoords[NUMBER_OF_ALIGNED_AXIS][6],
 
  874     double xRange[2], 
double yRange[2], 
double zRange[2]);
 
  876   bool ComputeTickSize(
double bounds[6]);
 
  877   void AdjustValues(
const double xRange[2], 
const double yRange[2], 
const double zRange[2]);
 
  878   void AdjustRange(
const double bounds[6]);
 
  881   void SetNonDependentAttributes(
void);
 
  882   void BuildLabels(
vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS]);
 
  883   void AdjustTicksComputeRange(
 
  884     vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS], 
double rangeMin, 
double rangeMax);