59#ifndef vtkCubeAxesActor_h
60#define vtkCubeAxesActor_h
63#include "vtkRenderingAnnotationModule.h"
97 vtkSetMacro(RebuildAxes,
bool);
98 vtkGetMacro(RebuildAxes,
bool);
108 vtkSetVector6Macro(Bounds,
double);
109 using Superclass::GetBounds;
131 vtkSetVector2Macro(XAxisRange,
double);
132 vtkSetVector2Macro(YAxisRange,
double);
133 vtkSetVector2Macro(ZAxisRange,
double);
134 vtkGetVector2Macro(XAxisRange,
double);
135 vtkGetVector2Macro(YAxisRange,
double);
146 vtkGetVector2Macro(ZAxisRange,
double);
155 vtkGetMacro(ScreenSize,
double);
164 vtkGetMacro(LabelOffset,
double);
173 vtkGetMacro(TitleOffset,
double);
187 VTK_FLY_OUTER_EDGES = 0,
188 VTK_FLY_CLOSEST_TRIAD = 1,
189 VTK_FLY_FURTHEST_TRIAD = 2,
190 VTK_FLY_STATIC_TRIAD = 3,
191 VTK_FLY_STATIC_EDGES = 4
200 vtkSetClampMacro(
FlyMode,
int, VTK_FLY_OUTER_EDGES, VTK_FLY_STATIC_EDGES);
214 vtkSetStringMacro(XTitle);
215 vtkGetStringMacro(XTitle);
216 vtkSetStringMacro(XUnits);
217 vtkGetStringMacro(XUnits);
218 vtkSetStringMacro(YTitle);
219 vtkGetStringMacro(YTitle);
220 vtkSetStringMacro(YUnits);
221 vtkGetStringMacro(YUnits);
222 vtkSetStringMacro(ZTitle);
223 vtkGetStringMacro(ZTitle);
224 vtkSetStringMacro(ZUnits);
225 vtkGetStringMacro(ZUnits);
233 vtkSetStringMacro(XLabelFormat);
234 vtkGetStringMacro(XLabelFormat);
235 vtkSetStringMacro(YLabelFormat);
236 vtkGetStringMacro(YLabelFormat);
237 vtkSetStringMacro(ZLabelFormat);
238 vtkGetStringMacro(ZLabelFormat);
248 vtkGetMacro(Inertia,
int);
257 vtkSetMacro(CornerOffset,
double);
258 vtkGetMacro(CornerOffset,
double);
272 vtkSetMacro(EnableDistanceLOD,
int);
273 vtkGetMacro(EnableDistanceLOD,
int);
280 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
281 vtkGetMacro(DistanceLODThreshold,
double);
288 vtkSetMacro(EnableViewAngleLOD,
int);
289 vtkGetMacro(EnableViewAngleLOD,
int);
296 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
297 vtkGetMacro(ViewAngleLODThreshold,
double);
462 VTK_TICKS_INSIDE = 0,
463 VTK_TICKS_OUTSIDE = 1,
509 vtkSetVector6Macro(OrientedBounds,
double);
510 vtkGetVector6Macro(OrientedBounds,
double);
517 vtkSetMacro(UseOrientedBounds,
int);
518 vtkGetMacro(UseOrientedBounds,
int);
525 vtkSetVector3Macro(AxisBaseForX,
double);
526 vtkGetVector3Macro(AxisBaseForX,
double);
533 vtkSetVector3Macro(AxisBaseForY,
double);
534 vtkGetVector3Macro(AxisBaseForY,
double);
541 vtkSetVector3Macro(AxisBaseForZ,
double);
542 vtkGetVector3Macro(AxisBaseForZ,
double);
550 vtkSetVector3Macro(AxisOrigin,
double);
551 vtkGetVector3Macro(AxisOrigin,
double);
558 vtkSetMacro(UseAxisOrigin,
int);
559 vtkGetMacro(UseAxisOrigin,
int);
566 vtkSetMacro(GridLineLocation,
int);
567 vtkGetMacro(GridLineLocation,
int);
596 VTK_GRID_LINES_ALL = 0,
597 VTK_GRID_LINES_CLOSEST = 1,
598 VTK_GRID_LINES_FURTHEST = 2
611 vtkViewport* viewport,
const double bounds[6],
double sphereCenter[3],
double& sphereRadius);
623 unsigned int pointIndex,
unsigned int& xBit,
unsigned int& yBit,
unsigned int& zBit);
628 static void GetBoundsPoint(
unsigned int pointIndex,
const double bounds[6],
double point[3]);
635 double MaxOf(
double,
double,
double,
double);
655 void FindBoundaryEdge(
int& indexOfAxisX,
int& indexOfAxisY,
int& indexOfAxisZ,
double pts[8][3]);
705 NUMBER_OF_ALIGNED_AXIS = 4
793 double RenderedBounds[6];
794 double OrientedBounds[6];
797 double AxisOrigin[3];
800 double AxisBaseForX[3];
801 double AxisBaseForY[3];
802 double AxisBaseForZ[3];
808 vtkSetStringMacro(ActualXLabel);
809 vtkSetStringMacro(ActualYLabel);
810 vtkSetStringMacro(ActualZLabel);
813 int LastUseOrientedBounds;
822 bool AutoLabelScaling;
828 double LastXRange[2];
829 double LastYRange[2];
830 double LastZRange[2];
831 double LastBounds[6];
835 int RenderAxesX[NUMBER_OF_ALIGNED_AXIS];
836 int RenderAxesY[NUMBER_OF_ALIGNED_AXIS];
837 int RenderAxesZ[NUMBER_OF_ALIGNED_AXIS];
843 bool MustAdjustXValue;
844 bool MustAdjustYValue;
845 bool MustAdjustZValue;
847 bool ForceXLabelReset;
848 bool ForceYLabelReset;
849 bool ForceZLabelReset;
851 double XAxisRange[2];
852 double YAxisRange[2];
853 double ZAxisRange[2];
867 double MajorStart[3];
868 double DeltaMajor[3];
871 int RenderGeometry(
bool& initialRender,
vtkViewport* viewport,
bool checkAxisVisibility,
874 void TransformBounds(
vtkViewport* viewport,
const double bounds[6],
double pts[8][3]);
875 void AdjustAxes(
double bounds[6],
double xCoords[NUMBER_OF_ALIGNED_AXIS][6],
876 double yCoords[NUMBER_OF_ALIGNED_AXIS][6],
double zCoords[NUMBER_OF_ALIGNED_AXIS][6],
877 double xRange[2],
double yRange[2],
double zRange[2]);
879 bool ComputeTickSize(
double bounds[6]);
880 void AdjustValues(
const double xRange[2],
const double yRange[2],
const double zRange[2]);
881 void AdjustRange(
const double bounds[6]);
884 void SetNonDependentAttributes(
void);
885 void BuildLabels(
vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS]);
886 void AdjustTicksComputeRange(
887 vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS],
double rangeMin,
double rangeMax);
891 double AutoScale(
vtkViewport* viewport,
double screenSize,
double position[3]);
represents an object (geometry & properties) in a rendered scene
Create an axis with tick marks and labels.
a virtual camera for 3D rendering
create a plot of a bounding box edges - used for navigation
void FindBoundaryEdge(int &indexOfAxisX, int &indexOfAxisY, int &indexOfAxisZ, double pts[8][3])
void SetTickLocationToInside(void)
vtkProperty * GetZAxesGridpolysProperty()
Get/Set axes gridPolys actors properties.
int EnableDistanceLOD
If enabled the actor will not be visible at a certain distance from the camera.
vtkTypeBool DrawZGridlines
void SetXAxesGridlinesProperty(vtkProperty *)
Get/Set axes (outer) gridlines actors properties.
void GetViewportLimitedBounds(vtkViewport *viewport, double bounds[6])
Get bounds such that the axes are entirely within a viewport.
void UpdateGridLineVisibility(int axisIndex)
This will Update AxisActors with GridVisibility when those should be dynamaic regarding the viewport.
void SetScreenSize(double screenSize)
Explicitly specify the screen size of title and label text.
int RenderOverlay(vtkViewport *) override
Draw the axes as per the vtkProp superclass' API.
vtkTypeBool CenterStickyAxes
Flag for centering sticky axes.
virtual int RenderTranslucentGeometry(vtkViewport *)
Draw the axes as per the vtkProp superclass' API.
vtkTypeBool DrawYGridlines
double FSign(double, double)
void SetYAxesInnerGridlinesProperty(vtkProperty *)
Get/Set axes inner gridlines actors properties.
vtkTypeBool YAxisVisibility
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
void SetUse2DMode(int val)
Get/Set 2D mode NB: Use vtkTextActor for titles in 2D instead of vtkAxisFollower.
vtkTypeBool DrawXGridpolys
vtkProperty * GetZAxesGridlinesProperty()
Get/Set axes (outer) gridlines actors properties.
vtkTypeBool DrawXInnerGridlines
void SetFlyModeToOuterEdges()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
vtkTypeBool HasTranslucentPolygonalGeometry() override
Draw the axes as per the vtkProp superclass' API.
vtkProperty * GetXAxesLinesProperty()
Get/Set axes actors properties.
vtkTypeBool DrawZInnerGridlines
vtkProperty * GetXAxesInnerGridlinesProperty()
Get/Set axes inner gridlines actors properties.
int EnableViewAngleLOD
If enabled the actor will not be visible at a certain view angle.
vtkProperty * XAxesInnerGridlinesProperty
void SetXAxesGridpolysProperty(vtkProperty *)
Get/Set axes gridPolys actors properties.
void SetTitleOffset(double offset)
Explicitly specify the distance between title and labels.
int GetUseTextActor3D()
Use or not vtkTextActor3D for titles and labels.
void SetZAxesGridpolysProperty(vtkProperty *)
Get/Set axes gridPolys actors properties.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkProperty * YAxesLinesProperty
double * GetBounds() override
Explicitly specify the region in space around which to draw the bounds.
void SetFlyModeToClosestTriad()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
void SetYAxesGridpolysProperty(vtkProperty *)
Get/Set axes gridPolys actors properties.
void SetZAxesInnerGridlinesProperty(vtkProperty *)
Get/Set axes inner gridlines actors properties.
void SetZAxesGridlinesProperty(vtkProperty *)
Get/Set axes (outer) gridlines actors properties.
double ViewAngleLODThreshold
This determines at what view angle to geometry will make the geometry not visible.
~vtkCubeAxesActor() override
void SetAxisLabels(int axis, vtkStringArray *value)
Explicitly specify the axis labels along an axis as an array of strings instead of using the values.
static vtkCubeAxesActor * New()
Instantiate object with label format "6.3g" and the number of labels per axis set to 3.
int FindClosestAxisIndex(double pts[8][3])
int RenderOpaqueGeometry(vtkViewport *) override
Draw the axes as per the vtkProp superclass' API.
vtkProperty * YAxesInnerGridlinesProperty
void ComputeStickyAxesBoundingSphere(vtkViewport *viewport, const double bounds[6], double sphereCenter[3], double &sphereRadius)
Computes a bounding sphere used to determine the sticky bounding box.
static void GetBoundsPoint(unsigned int pointIndex, const double bounds[6], double point[3])
Get a point on the bounding box by point index.
vtkTypeBool DrawYInnerGridlines
vtkProperty * YAxesGridlinesProperty
void SetLabelOffset(double offset)
Explicitly specify the distance between labels and the axis.
vtkTypeBool YAxisLabelVisibility
vtkTypeBool XAxisVisibility
vtkProperty * GetXAxesGridlinesProperty()
Get/Set axes (outer) gridlines actors properties.
vtkTypeBool StickyAxes
Flag for axes stickiness.
vtkTypeBool XAxisTickVisibility
vtkTypeBool YAxisTickVisibility
vtkTextProperty * GetLabelTextProperty(int)
Returns the text property for the labels on an axis.
void SetZAxesLinesProperty(vtkProperty *)
Get/Set axes actors properties.
vtkTypeBool DrawYGridpolys
void SetFlyModeToStaticEdges()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
vtkTypeBool YAxisMinorTickVisibility
void SetFlyModeToStaticTriad()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
void SetYAxesLinesProperty(vtkProperty *)
Get/Set axes actors properties.
vtkStringArray * GetAxisLabels(int axis)
Explicitly specify the axis labels along an axis as an array of strings instead of using the values.
virtual double * GetRenderedBounds()
Method used to properly return the bounds of the cube axis itself with all its labels.
vtkProperty * GetYAxesGridlinesProperty()
Get/Set axes (outer) gridlines actors properties.
vtkProperty * GetZAxesLinesProperty()
Get/Set axes actors properties.
void SetSaveTitlePosition(int val)
For 2D mode only: save axis title positions for later use.
vtkTextProperty * GetTitleTextProperty(int)
Returns the text property for the title on an axis.
vtkProperty * YAxesGridpolysProperty
vtkProperty * XAxesGridlinesProperty
static void GetBoundsPointBits(unsigned int pointIndex, unsigned int &xBit, unsigned int &yBit, unsigned int &zBit)
Get the bits for a bounds point.
int GetUse2DMode()
Get/Set 2D mode NB: Use vtkTextActor for titles in 2D instead of vtkAxisFollower.
void SetXAxesInnerGridlinesProperty(vtkProperty *)
Get/Set axes inner gridlines actors properties.
void SetLabelScaling(bool, int, int, int)
void SetTickLocationToOutside(void)
vtkProperty * ZAxesLinesProperty
void SetUseTextActor3D(int val)
Use or not vtkTextActor3D for titles and labels.
int FindFurtherstAxisIndex(double pts[8][3])
vtkTypeBool DrawZGridpolys
vtkProperty * XAxesGridpolysProperty
vtkProperty * GetXAxesGridpolysProperty()
Get/Set axes gridPolys actors properties.
vtkProperty * ZAxesGridlinesProperty
vtkTypeBool DrawXGridlines
vtkProperty * ZAxesInnerGridlinesProperty
double MaxOf(double, double, double, double)
int GetNumTicks(double range, double fxt)
void UpdateLabels(vtkAxisActor **axis, int index)
vtkTypeBool ZAxisTickVisibility
vtkProperty * GetYAxesInnerGridlinesProperty()
Get/Set axes inner gridlines actors properties.
vtkProperty * XAxesLinesProperty
int Digits(double min, double max)
vtkTypeBool XAxisLabelVisibility
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the axes as per the vtkProp superclass' API.
vtkProperty * GetZAxesInnerGridlinesProperty()
Get/Set axes inner gridlines actors properties.
vtkTypeBool ZAxisVisibility
vtkTypeBool ZAxisMinorTickVisibility
virtual void SetCamera(vtkCamera *)
Set/Get the camera to perform scaling and translation of the vtkCubeAxesActor.
virtual void GetRenderedBounds(double rBounds[6])
Method used to properly return the bounds of the cube axis itself with all its labels.
double MaxOf(double, double)
vtkTypeBool XAxisMinorTickVisibility
vtkProperty * GetYAxesLinesProperty()
Get/Set axes actors properties.
int LabelExponent(double min, double max)
vtkProperty * ZAxesGridpolysProperty
void SetXAxesLinesProperty(vtkProperty *)
Get/Set axes actors properties.
void SetYAxesGridlinesProperty(vtkProperty *)
Get/Set axes (outer) gridlines actors properties.
vtkProperty * GetYAxesGridpolysProperty()
Get/Set axes gridPolys actors properties.
void SetTickLocationToBoth(void)
void SetFlyModeToFurthestTriad()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
vtkTypeBool ZAxisLabelVisibility
double DistanceLODThreshold
Default is 0.80 This determines at what fraction of camera far clip range, actor is not visible.
a simple class to control print indentation
represent surface properties of a geometric object
a vtkAbstractArray subclass for strings
represent text properties.
record modification and/or execution time
abstract specification for Viewports
window superclass for vtkRenderWindow
#define VTK_SIZEHINT(...)