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);