76 #ifndef vtkCubeAxesActor_h
77 #define vtkCubeAxesActor_h
82 #include "vtkRenderingAnnotationModule.h"
86 VTK_ABI_NAMESPACE_BEGIN
120 vtkSetMacro(RebuildAxes,
bool);
121 vtkGetMacro(RebuildAxes,
bool);
131 vtkSetVector6Macro(Bounds,
double);
154 vtkSetVector2Macro(XAxisRange,
double);
155 vtkSetVector2Macro(YAxisRange,
double);
156 vtkSetVector2Macro(ZAxisRange,
double);
157 vtkGetVector2Macro(XAxisRange,
double);
158 vtkGetVector2Macro(YAxisRange,
double);
169 vtkGetVector2Macro(ZAxisRange,
double);
179 vtkGetMacro(ScreenSize,
double);
188 vtkGetMacro(LabelOffset,
double);
197 void SetTitleOffset(
double titleOffsetY);
199 double GetTitleOffset();
200 void SetTitleOffset(
double titleOffset[2]);
202 void GetTitleOffset(
double& titleOffsetX,
double& titleOffsetY);
216 VTK_FLY_OUTER_EDGES = 0,
217 VTK_FLY_CLOSEST_TRIAD = 1,
218 VTK_FLY_FURTHEST_TRIAD = 2,
219 VTK_FLY_STATIC_TRIAD = 3,
220 VTK_FLY_STATIC_EDGES = 4
230 vtkSetClampMacro(
FlyMode,
int, VTK_FLY_OUTER_EDGES, VTK_FLY_STATIC_EDGES);
244 vtkSetStringMacro(XTitle);
245 vtkGetStringMacro(XTitle);
246 vtkSetStringMacro(XUnits);
247 vtkGetStringMacro(XUnits);
248 vtkSetStringMacro(YTitle);
249 vtkGetStringMacro(YTitle);
250 vtkSetStringMacro(YUnits);
251 vtkGetStringMacro(YUnits);
252 vtkSetStringMacro(ZTitle);
253 vtkGetStringMacro(ZTitle);
254 vtkSetStringMacro(ZUnits);
255 vtkGetStringMacro(ZUnits);
263 vtkSetStringMacro(XLabelFormat);
264 vtkGetStringMacro(XLabelFormat);
265 vtkSetStringMacro(YLabelFormat);
266 vtkGetStringMacro(YLabelFormat);
267 vtkSetStringMacro(ZLabelFormat);
268 vtkGetStringMacro(ZLabelFormat);
279 vtkGetMacro(Inertia,
int);
289 vtkSetMacro(CornerOffset,
double);
290 vtkGetMacro(CornerOffset,
double);
305 vtkSetMacro(EnableDistanceLOD,
bool);
306 vtkGetMacro(EnableDistanceLOD,
bool);
314 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
315 vtkGetMacro(DistanceLODThreshold,
double);
323 vtkSetMacro(EnableViewAngleLOD,
bool);
324 vtkGetMacro(EnableViewAngleLOD,
bool);
332 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
333 vtkGetMacro(ViewAngleLODThreshold,
double);
341 vtkSetMacro(XAxisVisibility,
bool);
342 vtkGetMacro(XAxisVisibility,
bool);
343 vtkBooleanMacro(XAxisVisibility,
bool);
345 vtkSetMacro(YAxisVisibility,
bool);
346 vtkGetMacro(YAxisVisibility,
bool);
347 vtkBooleanMacro(YAxisVisibility,
bool);
349 vtkSetMacro(ZAxisVisibility,
bool);
350 vtkGetMacro(ZAxisVisibility,
bool);
351 vtkBooleanMacro(ZAxisVisibility,
bool);
359 vtkSetMacro(XAxisLabelVisibility,
bool);
360 vtkGetMacro(XAxisLabelVisibility,
bool);
361 vtkBooleanMacro(XAxisLabelVisibility,
bool);
363 vtkSetMacro(YAxisLabelVisibility,
bool);
364 vtkGetMacro(YAxisLabelVisibility,
bool);
365 vtkBooleanMacro(YAxisLabelVisibility,
bool);
367 vtkSetMacro(ZAxisLabelVisibility,
bool);
368 vtkGetMacro(ZAxisLabelVisibility,
bool);
369 vtkBooleanMacro(ZAxisLabelVisibility,
bool);
377 vtkSetMacro(XAxisTickVisibility,
bool);
378 vtkGetMacro(XAxisTickVisibility,
bool);
379 vtkBooleanMacro(XAxisTickVisibility,
bool);
381 vtkSetMacro(YAxisTickVisibility,
bool);
382 vtkGetMacro(YAxisTickVisibility,
bool);
383 vtkBooleanMacro(YAxisTickVisibility,
bool);
385 vtkSetMacro(ZAxisTickVisibility,
bool);
386 vtkGetMacro(ZAxisTickVisibility,
bool);
387 vtkBooleanMacro(ZAxisTickVisibility,
bool);
395 vtkSetMacro(XAxisMinorTickVisibility,
bool);
396 vtkGetMacro(XAxisMinorTickVisibility,
bool);
397 vtkBooleanMacro(XAxisMinorTickVisibility,
bool);
399 vtkSetMacro(YAxisMinorTickVisibility,
bool);
400 vtkGetMacro(YAxisMinorTickVisibility,
bool);
401 vtkBooleanMacro(YAxisMinorTickVisibility,
bool);
403 vtkSetMacro(ZAxisMinorTickVisibility,
bool);
404 vtkGetMacro(ZAxisMinorTickVisibility,
bool);
405 vtkBooleanMacro(ZAxisMinorTickVisibility,
bool);
413 vtkSetMacro(DrawXGridlines,
bool);
414 vtkGetMacro(DrawXGridlines,
bool);
415 vtkBooleanMacro(DrawXGridlines,
bool);
417 vtkSetMacro(DrawYGridlines,
bool);
418 vtkGetMacro(DrawYGridlines,
bool);
419 vtkBooleanMacro(DrawYGridlines,
bool);
421 vtkSetMacro(DrawZGridlines,
bool);
422 vtkGetMacro(DrawZGridlines,
bool);
423 vtkBooleanMacro(DrawZGridlines,
bool);
431 vtkSetMacro(DrawXInnerGridlines,
bool);
432 vtkGetMacro(DrawXInnerGridlines,
bool);
433 vtkBooleanMacro(DrawXInnerGridlines,
bool);
435 vtkSetMacro(DrawYInnerGridlines,
bool);
436 vtkGetMacro(DrawYInnerGridlines,
bool);
437 vtkBooleanMacro(DrawYInnerGridlines,
bool);
439 vtkSetMacro(DrawZInnerGridlines,
bool);
440 vtkGetMacro(DrawZInnerGridlines,
bool);
441 vtkBooleanMacro(DrawZInnerGridlines,
bool);
449 vtkSetMacro(DrawXGridpolys,
bool);
450 vtkGetMacro(DrawXGridpolys,
bool);
451 vtkBooleanMacro(DrawXGridpolys,
bool);
453 vtkSetMacro(DrawYGridpolys,
bool);
454 vtkGetMacro(DrawYGridpolys,
bool);
455 vtkBooleanMacro(DrawYGridpolys,
bool);
457 vtkSetMacro(DrawZGridpolys,
bool);
458 vtkGetMacro(DrawZGridpolys,
bool);
459 vtkBooleanMacro(DrawZGridpolys,
bool);
522 VTK_TICKS_INSIDE = 0,
523 VTK_TICKS_OUTSIDE = 1,
571 vtkSetVector6Macro(OrientedBounds,
double);
572 vtkGetVector6Macro(OrientedBounds,
double);
580 vtkSetMacro(UseOrientedBounds,
bool);
581 vtkGetMacro(UseOrientedBounds,
bool);
589 vtkSetVector3Macro(AxisBaseForX,
double);
590 vtkGetVector3Macro(AxisBaseForX,
double);
598 vtkSetVector3Macro(AxisBaseForY,
double);
599 vtkGetVector3Macro(AxisBaseForY,
double);
607 vtkSetVector3Macro(AxisBaseForZ,
double);
608 vtkGetVector3Macro(AxisBaseForZ,
double);
617 vtkSetVector3Macro(AxisOrigin,
double);
618 vtkGetVector3Macro(AxisOrigin,
double);
626 vtkSetMacro(UseAxisOrigin,
bool);
627 vtkGetMacro(UseAxisOrigin,
bool);
635 vtkSetMacro(GridLineLocation,
int);
636 vtkGetMacro(GridLineLocation,
int);
646 vtkSetMacro(StickyAxes,
bool);
647 vtkGetMacro(StickyAxes,
bool);
648 vtkBooleanMacro(StickyAxes,
bool);
660 vtkSetMacro(CenterStickyAxes,
bool);
661 vtkGetMacro(CenterStickyAxes,
bool);
662 vtkBooleanMacro(CenterStickyAxes,
bool);
667 VTK_GRID_LINES_ALL = 0,
668 VTK_GRID_LINES_CLOSEST = 1,
669 VTK_GRID_LINES_FURTHEST = 2
682 vtkViewport* viewport,
const double bounds[6],
double sphereCenter[3],
double& sphereRadius);
694 unsigned int pointIndex,
unsigned int& xBit,
unsigned int& yBit,
unsigned int& zBit);
706 double MaxOf(
double,
double,
double,
double);
726 void FindBoundaryEdge(
int& indexOfAxisX,
int& indexOfAxisY,
int& indexOfAxisZ,
double pts[8][3]);
738 int GridLineLocation = VTK_GRID_LINES_ALL;
743 bool StickyAxes =
false;
748 bool CenterStickyAxes =
true;
754 bool EnableDistanceLOD =
true;
760 double DistanceLODThreshold = 0.8;
766 bool EnableViewAngleLOD =
true;
772 double ViewAngleLODThreshold = 0.2;
776 NUMBER_OF_ALIGNED_AXIS = 4
789 bool RebuildAxes =
true;
791 char* XTitle =
nullptr;
792 char* XUnits =
nullptr;
793 char* YTitle =
nullptr;
794 char* YUnits =
nullptr;
795 char* ZTitle =
nullptr;
796 char* ZUnits =
nullptr;
798 char* ActualXLabel =
nullptr;
799 char* ActualYLabel =
nullptr;
800 char* ActualZLabel =
nullptr;
804 bool XAxisVisibility =
true;
805 bool YAxisVisibility =
true;
806 bool ZAxisVisibility =
true;
808 bool XAxisTickVisibility =
true;
809 bool YAxisTickVisibility =
true;
810 bool ZAxisTickVisibility =
true;
812 bool XAxisMinorTickVisibility =
true;
813 bool YAxisMinorTickVisibility =
true;
814 bool ZAxisMinorTickVisibility =
true;
816 bool XAxisLabelVisibility =
true;
817 bool YAxisLabelVisibility =
true;
818 bool ZAxisLabelVisibility =
true;
820 bool DrawXGridlines =
false;
821 bool DrawYGridlines =
false;
822 bool DrawZGridlines =
false;
824 bool DrawXInnerGridlines =
false;
825 bool DrawYInnerGridlines =
false;
826 bool DrawZInnerGridlines =
false;
828 bool DrawXGridpolys =
false;
829 bool DrawYGridpolys =
false;
830 bool DrawZGridpolys =
false;
832 char* XLabelFormat =
nullptr;
833 char* YLabelFormat =
nullptr;
834 char* ZLabelFormat =
nullptr;
836 double CornerOffset = 0.0;
842 int InertiaLocs[3] = { -1, -1, -1 };
844 bool RenderSomething =
false;
863 double RenderedBounds[6] = { -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 };
864 double OrientedBounds[6] = { -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 };
865 bool UseOrientedBounds =
false;
867 double AxisOrigin[3] = { 0.0, 0.0, 0.0 };
868 bool UseAxisOrigin =
false;
870 double AxisBaseForX[3] = { 1.0, 0.0, 0.0 };
871 double AxisBaseForY[3] = { 0.0, 1.0, 0.0 };
872 double AxisBaseForZ[3] = { 0.0, 0.0, 1.0 };
878 vtkSetStringMacro(ActualXLabel);
879 vtkSetStringMacro(ActualYLabel);
880 vtkSetStringMacro(ActualZLabel);
883 bool LastUseOrientedBounds =
false;
892 bool AutoLabelScaling =
true;
894 int LastXAxisDigits = 3;
895 int LastYAxisDigits = 3;
896 int LastZAxisDigits = 3;
904 int LastFlyMode = -1;
906 int RenderAxesX[NUMBER_OF_ALIGNED_AXIS] = { 0, 1, 2, 3 };
907 int RenderAxesY[NUMBER_OF_ALIGNED_AXIS] = { 0, 1, 2, 3 };
908 int RenderAxesZ[NUMBER_OF_ALIGNED_AXIS] = { 0, 1, 2, 3 };
910 int NumberOfAxesX = 1;
911 int NumberOfAxesY = 1;
912 int NumberOfAxesZ = 1;
914 bool MustAdjustXValue =
false;
915 bool MustAdjustYValue =
false;
916 bool MustAdjustZValue =
false;
918 bool ForceXLabelReset =
false;
919 bool ForceYLabelReset =
false;
920 bool ForceZLabelReset =
false;
926 double LabelScale = -1.0;
927 double TitleScale = -1.0;
929 double ScreenSize = 10.0;
930 double LabelOffset = 20.0;
931 double TitleOffset[2] = { 20.0, 20.0 };
938 double MajorStart[3] = { 0.0, 0.0, 0.0 };
939 double DeltaMajor[3] = { 0.0, 0.0, 0.0 };
942 int RenderGeometry(
bool& initialRender,
vtkViewport* viewport,
bool checkAxisVisibility,
945 void TransformBounds(
vtkViewport* viewport,
const double bounds[6],
double pts[8][3]);
946 void AdjustAxes(
double bounds[6],
double xCoords[NUMBER_OF_ALIGNED_AXIS][6],
947 double yCoords[NUMBER_OF_ALIGNED_AXIS][6],
double zCoords[NUMBER_OF_ALIGNED_AXIS][6],
948 double xRange[2],
double yRange[2],
double zRange[2]);
950 bool ComputeTickSize(
double bounds[6]);
951 void AdjustValues(
const double xRange[2],
const double yRange[2],
const double zRange[2]);
952 void AdjustRange(
const double bounds[6]);
955 void SetNonDependentAttributes();
956 void BuildLabels(
vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS]);
957 void AdjustTicksComputeRange(
958 vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS],
double rangeMin,
double rangeMax);
965 VTK_ABI_NAMESPACE_END
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])
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.
bool GetUseTextActor3D()
Use or not vtkTextActor3D for titles and labels.
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.
vtkNew< vtkProperty > ZAxesGridlinesProperty
virtual int RenderTranslucentGeometry(vtkViewport *)
Draw the axes as per the vtkProp superclass' API.
double FSign(double, double)
void SetYAxesInnerGridlinesProperty(vtkProperty *)
Get/Set axes inner gridlines actors properties.
void ReleaseGraphicsResources(vtkWindow *) override
Release any graphics resources that are being consumed by this actor.
vtkSmartPointer< vtkCamera > Camera
vtkProperty * GetYAxesGridpolysProperty()
Get/Set axes gridPolys actors properties.
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 * GetXAxesInnerGridlinesProperty()
Get/Set axes inner gridlines actors properties.
void SetXAxesGridpolysProperty(vtkProperty *)
Get/Set axes gridPolys actors properties.
vtkProperty * GetZAxesInnerGridlinesProperty()
Get/Set axes inner gridlines actors properties.
vtkNew< vtkProperty > ZAxesInnerGridlinesProperty
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 * GetZAxesLinesProperty()
Get/Set axes actors properties.
vtkProperty * GetYAxesLinesProperty()
Get/Set axes actors properties.
static vtkCubeAxesActor * New()
Instantiate object with label format "6.3g" and the number of labels per axis set to 3.
void SetUse2DMode(bool enable)
Get/Set 2D mode NB: Use vtkTextActor for titles in 2D instead of vtkAxisFollower.
vtkNew< vtkProperty > YAxesGridpolysProperty
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.
vtkNew< vtkProperty > XAxesGridlinesProperty
void SetZAxesInnerGridlinesProperty(vtkProperty *)
Get/Set axes inner gridlines actors properties.
void SetZAxesGridlinesProperty(vtkProperty *)
Get/Set axes (outer) gridlines actors properties.
~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.
vtkNew< vtkProperty > YAxesGridlinesProperty
int FindClosestAxisIndex(double pts[8][3])
int RenderOpaqueGeometry(vtkViewport *) override
Draw the axes as per the vtkProp superclass' API.
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.
void SetTickLocationToBoth()
void SetLabelOffset(double offset)
Explicitly specify the offset between labels and the axis.
bool GetUse2DMode()
Get/Set 2D mode NB: Use vtkTextActor for titles in 2D instead of vtkAxisFollower.
vtkProperty * GetYAxesGridlinesProperty()
Get/Set axes (outer) gridlines actors properties.
void SetUseTextActor3D(bool enable)
Use or not vtkTextActor3D for titles and labels.
void SetTickLocationToOutside()
double * GetBounds() override
Explicitly specify the region in space around which to draw the bounds.
void SetZAxesLinesProperty(vtkProperty *)
Get/Set axes actors properties.
vtkProperty * GetXAxesGridlinesProperty()
Get/Set axes (outer) gridlines actors properties.
void SetFlyModeToStaticEdges()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
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.
vtkNew< vtkProperty > XAxesGridpolysProperty
vtkProperty * GetXAxesLinesProperty()
Get/Set axes actors properties.
vtkTextProperty * GetTitleTextProperty(int)
Returns the text property for the title on an axis.
vtkNew< vtkProperty > YAxesInnerGridlinesProperty
void SetSaveTitlePosition(int val)
For 2D mode only: save axis title positions for later use.
vtkNew< vtkProperty > ZAxesLinesProperty
vtkTextProperty * GetLabelTextProperty(int)
Returns the text property for the labels on an axis.
static void GetBoundsPointBits(unsigned int pointIndex, unsigned int &xBit, unsigned int &yBit, unsigned int &zBit)
Get the bits for a bounds point.
void SetXAxesInnerGridlinesProperty(vtkProperty *)
Get/Set axes inner gridlines actors properties.
void SetLabelScaling(bool, int, int, int)
vtkNew< vtkProperty > YAxesLinesProperty
vtkNew< vtkProperty > XAxesLinesProperty
vtkProperty * GetYAxesInnerGridlinesProperty()
Get/Set axes inner gridlines actors properties.
int FindFurtherstAxisIndex(double pts[8][3])
vtkNew< vtkProperty > XAxesInnerGridlinesProperty
vtkNew< vtkProperty > ZAxesGridpolysProperty
vtkProperty * GetXAxesGridpolysProperty()
Get/Set axes gridPolys actors properties.
double MaxOf(double, double, double, double)
vtkProperty * GetZAxesGridpolysProperty()
Get/Set axes gridPolys actors properties.
int GetNumTicks(double range, double fxt)
void UpdateLabels(vtkAxisActor **axis, int index)
int Digits(double min, double max)
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Draw the axes as per the vtkProp superclass' API.
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)
void SetTickLocationToInside()
int LabelExponent(double min, double max)
vtkProperty * GetZAxesGridlinesProperty()
Get/Set axes (outer) gridlines actors properties.
void SetXAxesLinesProperty(vtkProperty *)
Get/Set axes actors properties.
void SetYAxesGridlinesProperty(vtkProperty *)
Get/Set axes (outer) gridlines actors properties.
void SetFlyModeToFurthestTriad()
Specify a mode to control how the axes are drawn: either static, closest triad, furthest triad or out...
a simple class to control print indentation
double * GetBounds() override=0
Return a reference to the Prop3D's composite transform.
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_DEPRECATED_IN_9_3_0(reason)
#define VTK_SIZEHINT(...)