76 #ifndef vtkCubeAxesActor_h
77 #define vtkCubeAxesActor_h
82 #include "vtkRenderingAnnotationModule.h"
85 VTK_ABI_NAMESPACE_BEGIN
119 vtkSetMacro(RebuildAxes,
bool);
120 vtkGetMacro(RebuildAxes,
bool);
130 vtkSetVector6Macro(Bounds,
double);
153 vtkSetVector2Macro(XAxisRange,
double);
154 vtkSetVector2Macro(YAxisRange,
double);
155 vtkSetVector2Macro(ZAxisRange,
double);
156 vtkGetVector2Macro(XAxisRange,
double);
157 vtkGetVector2Macro(YAxisRange,
double);
168 vtkGetVector2Macro(ZAxisRange,
double);
178 vtkGetMacro(ScreenSize,
double);
187 vtkGetMacro(LabelOffset,
double);
196 void SetTitleOffset(
double titleOffsetY);
198 double GetTitleOffset();
199 void SetTitleOffset(
double titleOffset[2]);
201 void GetTitleOffset(
double& titleOffsetX,
double& titleOffsetY);
215 VTK_FLY_OUTER_EDGES = 0,
216 VTK_FLY_CLOSEST_TRIAD = 1,
217 VTK_FLY_FURTHEST_TRIAD = 2,
218 VTK_FLY_STATIC_TRIAD = 3,
219 VTK_FLY_STATIC_EDGES = 4
229 vtkSetClampMacro(
FlyMode,
int, VTK_FLY_OUTER_EDGES, VTK_FLY_STATIC_EDGES);
243 vtkSetStringMacro(XTitle);
244 vtkGetStringMacro(XTitle);
245 vtkSetStringMacro(XUnits);
246 vtkGetStringMacro(XUnits);
247 vtkSetStringMacro(YTitle);
248 vtkGetStringMacro(YTitle);
249 vtkSetStringMacro(YUnits);
250 vtkGetStringMacro(YUnits);
251 vtkSetStringMacro(ZTitle);
252 vtkGetStringMacro(ZTitle);
253 vtkSetStringMacro(ZUnits);
254 vtkGetStringMacro(ZUnits);
262 vtkSetStringMacro(XLabelFormat);
263 vtkGetStringMacro(XLabelFormat);
264 vtkSetStringMacro(YLabelFormat);
265 vtkGetStringMacro(YLabelFormat);
266 vtkSetStringMacro(ZLabelFormat);
267 vtkGetStringMacro(ZLabelFormat);
278 vtkGetMacro(Inertia,
int);
288 vtkSetMacro(CornerOffset,
double);
289 vtkGetMacro(CornerOffset,
double);
304 vtkSetMacro(EnableDistanceLOD,
bool);
305 vtkGetMacro(EnableDistanceLOD,
bool);
313 vtkSetClampMacro(DistanceLODThreshold,
double, 0.0, 1.0);
314 vtkGetMacro(DistanceLODThreshold,
double);
322 vtkSetMacro(EnableViewAngleLOD,
bool);
323 vtkGetMacro(EnableViewAngleLOD,
bool);
331 vtkSetClampMacro(ViewAngleLODThreshold,
double, 0., 1.);
332 vtkGetMacro(ViewAngleLODThreshold,
double);
340 vtkSetMacro(XAxisVisibility,
bool);
341 vtkGetMacro(XAxisVisibility,
bool);
342 vtkBooleanMacro(XAxisVisibility,
bool);
344 vtkSetMacro(YAxisVisibility,
bool);
345 vtkGetMacro(YAxisVisibility,
bool);
346 vtkBooleanMacro(YAxisVisibility,
bool);
348 vtkSetMacro(ZAxisVisibility,
bool);
349 vtkGetMacro(ZAxisVisibility,
bool);
350 vtkBooleanMacro(ZAxisVisibility,
bool);
358 vtkSetMacro(XAxisLabelVisibility,
bool);
359 vtkGetMacro(XAxisLabelVisibility,
bool);
360 vtkBooleanMacro(XAxisLabelVisibility,
bool);
362 vtkSetMacro(YAxisLabelVisibility,
bool);
363 vtkGetMacro(YAxisLabelVisibility,
bool);
364 vtkBooleanMacro(YAxisLabelVisibility,
bool);
366 vtkSetMacro(ZAxisLabelVisibility,
bool);
367 vtkGetMacro(ZAxisLabelVisibility,
bool);
368 vtkBooleanMacro(ZAxisLabelVisibility,
bool);
376 vtkSetMacro(XAxisTickVisibility,
bool);
377 vtkGetMacro(XAxisTickVisibility,
bool);
378 vtkBooleanMacro(XAxisTickVisibility,
bool);
380 vtkSetMacro(YAxisTickVisibility,
bool);
381 vtkGetMacro(YAxisTickVisibility,
bool);
382 vtkBooleanMacro(YAxisTickVisibility,
bool);
384 vtkSetMacro(ZAxisTickVisibility,
bool);
385 vtkGetMacro(ZAxisTickVisibility,
bool);
386 vtkBooleanMacro(ZAxisTickVisibility,
bool);
394 vtkSetMacro(XAxisMinorTickVisibility,
bool);
395 vtkGetMacro(XAxisMinorTickVisibility,
bool);
396 vtkBooleanMacro(XAxisMinorTickVisibility,
bool);
398 vtkSetMacro(YAxisMinorTickVisibility,
bool);
399 vtkGetMacro(YAxisMinorTickVisibility,
bool);
400 vtkBooleanMacro(YAxisMinorTickVisibility,
bool);
402 vtkSetMacro(ZAxisMinorTickVisibility,
bool);
403 vtkGetMacro(ZAxisMinorTickVisibility,
bool);
404 vtkBooleanMacro(ZAxisMinorTickVisibility,
bool);
412 vtkSetMacro(DrawXGridlines,
bool);
413 vtkGetMacro(DrawXGridlines,
bool);
414 vtkBooleanMacro(DrawXGridlines,
bool);
416 vtkSetMacro(DrawYGridlines,
bool);
417 vtkGetMacro(DrawYGridlines,
bool);
418 vtkBooleanMacro(DrawYGridlines,
bool);
420 vtkSetMacro(DrawZGridlines,
bool);
421 vtkGetMacro(DrawZGridlines,
bool);
422 vtkBooleanMacro(DrawZGridlines,
bool);
430 vtkSetMacro(DrawXInnerGridlines,
bool);
431 vtkGetMacro(DrawXInnerGridlines,
bool);
432 vtkBooleanMacro(DrawXInnerGridlines,
bool);
434 vtkSetMacro(DrawYInnerGridlines,
bool);
435 vtkGetMacro(DrawYInnerGridlines,
bool);
436 vtkBooleanMacro(DrawYInnerGridlines,
bool);
438 vtkSetMacro(DrawZInnerGridlines,
bool);
439 vtkGetMacro(DrawZInnerGridlines,
bool);
440 vtkBooleanMacro(DrawZInnerGridlines,
bool);
448 vtkSetMacro(DrawXGridpolys,
bool);
449 vtkGetMacro(DrawXGridpolys,
bool);
450 vtkBooleanMacro(DrawXGridpolys,
bool);
452 vtkSetMacro(DrawYGridpolys,
bool);
453 vtkGetMacro(DrawYGridpolys,
bool);
454 vtkBooleanMacro(DrawYGridpolys,
bool);
456 vtkSetMacro(DrawZGridpolys,
bool);
457 vtkGetMacro(DrawZGridpolys,
bool);
458 vtkBooleanMacro(DrawZGridpolys,
bool);
521 VTK_TICKS_INSIDE = 0,
522 VTK_TICKS_OUTSIDE = 1,
570 vtkSetVector6Macro(OrientedBounds,
double);
571 vtkGetVector6Macro(OrientedBounds,
double);
579 vtkSetMacro(UseOrientedBounds,
bool);
580 vtkGetMacro(UseOrientedBounds,
bool);
588 vtkSetVector3Macro(AxisBaseForX,
double);
589 vtkGetVector3Macro(AxisBaseForX,
double);
597 vtkSetVector3Macro(AxisBaseForY,
double);
598 vtkGetVector3Macro(AxisBaseForY,
double);
606 vtkSetVector3Macro(AxisBaseForZ,
double);
607 vtkGetVector3Macro(AxisBaseForZ,
double);
616 vtkSetVector3Macro(AxisOrigin,
double);
617 vtkGetVector3Macro(AxisOrigin,
double);
625 vtkSetMacro(UseAxisOrigin,
bool);
626 vtkGetMacro(UseAxisOrigin,
bool);
634 vtkSetMacro(GridLineLocation,
int);
635 vtkGetMacro(GridLineLocation,
int);
645 vtkSetMacro(StickyAxes,
bool);
646 vtkGetMacro(StickyAxes,
bool);
647 vtkBooleanMacro(StickyAxes,
bool);
659 vtkSetMacro(CenterStickyAxes,
bool);
660 vtkGetMacro(CenterStickyAxes,
bool);
661 vtkBooleanMacro(CenterStickyAxes,
bool);
666 VTK_GRID_LINES_ALL = 0,
667 VTK_GRID_LINES_CLOSEST = 1,
668 VTK_GRID_LINES_FURTHEST = 2
681 vtkViewport* viewport,
const double bounds[6],
double sphereCenter[3],
double& sphereRadius);
693 unsigned int pointIndex,
unsigned int& xBit,
unsigned int& yBit,
unsigned int& zBit);
705 double MaxOf(
double,
double,
double,
double);
725 void FindBoundaryEdge(
int& indexOfAxisX,
int& indexOfAxisY,
int& indexOfAxisZ,
double pts[8][3]);
737 int GridLineLocation = VTK_GRID_LINES_ALL;
742 bool StickyAxes =
false;
747 bool CenterStickyAxes =
true;
753 bool EnableDistanceLOD =
true;
759 double DistanceLODThreshold = 0.8;
765 bool EnableViewAngleLOD =
true;
771 double ViewAngleLODThreshold = 0.2;
775 NUMBER_OF_ALIGNED_AXIS = 4
788 bool RebuildAxes =
true;
790 char* XTitle =
nullptr;
791 char* XUnits =
nullptr;
792 char* YTitle =
nullptr;
793 char* YUnits =
nullptr;
794 char* ZTitle =
nullptr;
795 char* ZUnits =
nullptr;
797 char* ActualXLabel =
nullptr;
798 char* ActualYLabel =
nullptr;
799 char* ActualZLabel =
nullptr;
803 bool XAxisVisibility =
true;
804 bool YAxisVisibility =
true;
805 bool ZAxisVisibility =
true;
807 bool XAxisTickVisibility =
true;
808 bool YAxisTickVisibility =
true;
809 bool ZAxisTickVisibility =
true;
811 bool XAxisMinorTickVisibility =
true;
812 bool YAxisMinorTickVisibility =
true;
813 bool ZAxisMinorTickVisibility =
true;
815 bool XAxisLabelVisibility =
true;
816 bool YAxisLabelVisibility =
true;
817 bool ZAxisLabelVisibility =
true;
819 bool DrawXGridlines =
false;
820 bool DrawYGridlines =
false;
821 bool DrawZGridlines =
false;
823 bool DrawXInnerGridlines =
false;
824 bool DrawYInnerGridlines =
false;
825 bool DrawZInnerGridlines =
false;
827 bool DrawXGridpolys =
false;
828 bool DrawYGridpolys =
false;
829 bool DrawZGridpolys =
false;
831 char* XLabelFormat =
nullptr;
832 char* YLabelFormat =
nullptr;
833 char* ZLabelFormat =
nullptr;
835 double CornerOffset = 0.0;
841 int InertiaLocs[3] = { -1, -1, -1 };
843 bool RenderSomething =
false;
862 double RenderedBounds[6] = { -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 };
863 double OrientedBounds[6] = { -1.0, 1.0, -1.0, 1.0, -1.0, 1.0 };
864 bool UseOrientedBounds =
false;
866 double AxisOrigin[3] = { 0.0, 0.0, 0.0 };
867 bool UseAxisOrigin =
false;
869 double AxisBaseForX[3] = { 1.0, 0.0, 0.0 };
870 double AxisBaseForY[3] = { 0.0, 1.0, 0.0 };
871 double AxisBaseForZ[3] = { 0.0, 0.0, 1.0 };
877 vtkSetStringMacro(ActualXLabel);
878 vtkSetStringMacro(ActualYLabel);
879 vtkSetStringMacro(ActualZLabel);
882 bool LastUseOrientedBounds =
false;
891 bool AutoLabelScaling =
true;
893 int LastXAxisDigits = 3;
894 int LastYAxisDigits = 3;
895 int LastZAxisDigits = 3;
903 int LastFlyMode = -1;
905 int RenderAxesX[NUMBER_OF_ALIGNED_AXIS] = { 0, 1, 2, 3 };
906 int RenderAxesY[NUMBER_OF_ALIGNED_AXIS] = { 0, 1, 2, 3 };
907 int RenderAxesZ[NUMBER_OF_ALIGNED_AXIS] = { 0, 1, 2, 3 };
909 int NumberOfAxesX = 1;
910 int NumberOfAxesY = 1;
911 int NumberOfAxesZ = 1;
913 bool MustAdjustXValue =
false;
914 bool MustAdjustYValue =
false;
915 bool MustAdjustZValue =
false;
917 bool ForceXLabelReset =
false;
918 bool ForceYLabelReset =
false;
919 bool ForceZLabelReset =
false;
925 double LabelScale = -1.0;
926 double TitleScale = -1.0;
928 double ScreenSize = 10.0;
929 double LabelOffset = 20.0;
930 double TitleOffset[2] = { 20.0, 20.0 };
937 double MajorStart[3] = { 0.0, 0.0, 0.0 };
938 double DeltaMajor[3] = { 0.0, 0.0, 0.0 };
941 int RenderGeometry(
bool& initialRender,
vtkViewport* viewport,
bool checkAxisVisibility,
944 void TransformBounds(
vtkViewport* viewport,
const double bounds[6],
double pts[8][3]);
945 void AdjustAxes(
double bounds[6],
double xCoords[NUMBER_OF_ALIGNED_AXIS][6],
946 double yCoords[NUMBER_OF_ALIGNED_AXIS][6],
double zCoords[NUMBER_OF_ALIGNED_AXIS][6],
947 double xRange[2],
double yRange[2],
double zRange[2]);
949 bool ComputeTickSize(
double bounds[6]);
950 void AdjustValues(
const double xRange[2],
const double yRange[2],
const double zRange[2]);
951 void AdjustRange(
const double bounds[6]);
954 void SetNonDependentAttributes();
955 void BuildLabels(
vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS]);
956 void AdjustTicksComputeRange(
957 vtkAxisActor* axes[NUMBER_OF_ALIGNED_AXIS],
double rangeMin,
double rangeMax);
964 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(...)