vtkGridAxes2DActor.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
3 // SPDX-License-Identifier: BSD-3-Clause
20 #ifndef vtkGridAxes2DActor_h
21 #define vtkGridAxes2DActor_h
22 
23 #include "vtkProp3D.h"
24 #include "vtkRemotingViewsModule.h" //needed for exports
25 
26 #include "vtkGridAxesHelper.h" // needed of Helper
27 #include "vtkGridAxesPlane2DActor.h" // needed for inline methods
28 #include "vtkNew.h" // needed for vtkNew.
29 #include "vtkSmartPointer.h" // needed for vtkSmartPointer.
30 
31 #include <functional> // for std::function
32 
33 class vtkAxis;
34 class vtkContextScene;
35 class vtkDoubleArray;
36 class vtkProperty;
37 class vtkTextProperty;
38 
39 class VTKREMOTINGVIEWS_EXPORT vtkGridAxes2DActor : public vtkProp3D
40 {
41 public:
42  static vtkGridAxes2DActor* New();
43  vtkTypeMacro(vtkGridAxes2DActor, vtkProp3D);
44  void PrintSelf(ostream& os, vtkIndent indent) override;
45 
47 
52  vtkSetVector6Macro(GridBounds, double);
53  vtkGetVector6Macro(GridBounds, double);
55 
56  // These are in the same order as the faces of a vtkVoxel.
57  enum Faces
58  {
65  };
66 
68 
71  vtkSetClampMacro(Face, int, MIN_YZ, MAX_XY);
72  vtkGetMacro(Face, int);
74 
79  {
86  };
87 
89 
95  vtkSetMacro(LabelMask, unsigned int);
96  vtkGetMacro(LabelMask, unsigned int);
98 
107  void GetActors(vtkPropCollection*) override;
108 
113  void UpdateGeometry(vtkViewport* viewport, bool doRegularUpdate);
114 
116 
120  void SetProperty(vtkProperty*);
121  vtkProperty* GetProperty();
123 
125 
129  void SetTitleTextProperty(int axis, vtkTextProperty*);
130  vtkTextProperty* GetTitleTextProperty(int axis);
132 
134 
138  void SetLabelTextProperty(int axis, vtkTextProperty*);
139  vtkTextProperty* GetLabelTextProperty(int axis);
141 
143 
146  void SetTitle(int axis, const std::string& title);
147  const std::string& GetTitle(int axis);
149 
151 
155  void SetNotation(int axis, int notation);
156  int GetNotation(int axis);
158 
160 
163  void SetPrecision(int axis, int val);
164  int GetPrecision(int axis);
166 
168 
174  void SetTickLabelFunction(int axis, std::function<double(double)> func);
175  std::function<double(double)> GetTickLabelFunction(int axis);
177 
183  void SetCustomTickPositions(int axis, vtkDoubleArray* positions);
184 
185  //---------------------------------------------------------------------------
186  // *** Properties to control grid rendering ***
187  //---------------------------------------------------------------------------
188 
190 
193  void SetGenerateGrid(bool val) { this->PlaneActor->SetGenerateGrid(val); }
194  bool GetGenerateGrid() { return this->PlaneActor->GetGenerateGrid(); }
195  vtkBooleanMacro(GenerateGrid, bool);
197 
199 
202  void SetGenerateEdges(bool val) { this->PlaneActor->SetGenerateEdges(val); }
203  bool GetGenerateEdges() { return this->PlaneActor->GetGenerateEdges(); }
204  vtkBooleanMacro(GenerateEdges, bool);
206 
208 
212  void SetGenerateTicks(bool val) { this->PlaneActor->SetGenerateTicks(val); }
213  bool GetGenerateTicks() { return this->PlaneActor->GetGenerateTicks(); }
214  vtkBooleanMacro(GenerateTicks, bool);
216 
217  //--------------------------------------------------------------------------
218  // Methods for vtkProp3D API.
219  //--------------------------------------------------------------------------
220 
222 
225  double* GetBounds() override
226  {
227  this->GetGridBounds(this->Bounds);
228  return this->Bounds;
229  }
231 
233 
236  vtkSetMacro(ForceOpaque, bool);
237  vtkGetMacro(ForceOpaque, bool);
238  vtkBooleanMacro(ForceOpaque, bool);
240 
241  int RenderOpaqueGeometry(vtkViewport*) override;
242  int RenderTranslucentPolygonalGeometry(vtkViewport* viewport) override;
243  int RenderOverlay(vtkViewport* viewport) override;
244  int HasTranslucentPolygonalGeometry() override;
245  void ReleaseGraphicsResources(vtkWindow*) override;
246 
250  vtkMTimeType GetMTime() override;
251 
252 protected:
254  ~vtkGridAxes2DActor() override;
255 
256  bool Update(vtkViewport* viewport);
257  void UpdateTextProperties(vtkViewport* viewport);
258  void UpdateLabelPositions(vtkViewport* viewport);
259  void UpdateTextActors(vtkViewport* viewport);
260  friend class vtkGridAxes3DActor;
261 
262  double GridBounds[6];
263  int Face;
264  unsigned int LabelMask;
265 
269 
272  vtkNew<vtkAxis> AxisHelpers[3];
275 
277  std::function<double(double)> TickLabelFunction[3] = { nullptr, nullptr, nullptr };
278 
279 private:
280  vtkGridAxes2DActor(const vtkGridAxes2DActor&) = delete;
281  void operator=(const vtkGridAxes2DActor&) = delete;
282 
283  class vtkLabels;
284  vtkLabels* Labels;
285  friend class vtkLabels;
286 
287  bool DoRender;
288 };
289 
290 #endif
vtkObjectBase::operator=
void operator=(const vtkObjectBase &)
vtkGridAxes3DActor::GridBounds
double GridBounds[6]
Definition: vtkGridAxes3DActor.h:291
double
double
vtkGridAxes2DActor::Faces
Faces
Definition: vtkGridAxes2DActor.h:57
vtkGridAxesHelper::MIN_ZX
@ MIN_ZX
Definition: vtkGridAxesHelper.h:48
vtkProp3D
vtkProp3D::GetMTime
vtkMTimeType GetMTime()
vtkProp::RenderOverlay
virtual int RenderOverlay(vtkViewport *)
vtkObject::New
static vtkObject * New()
vtkGridAxes2DActor::LabelMasks
LabelMasks
Valid values for LabelMask.
Definition: vtkGridAxes2DActor.h:78
vtkTimeStamp
vtkGridAxesHelper::MAX_ZX
@ MAX_ZX
Definition: vtkGridAxesHelper.h:51
vtkProp::RenderOpaqueGeometry
virtual int RenderOpaqueGeometry(vtkViewport *)
vtkGridAxes2DActor::SetGenerateEdges
void SetGenerateEdges(bool val)
Turn off to not generate the polydata for the plane's edges.
Definition: vtkGridAxes2DActor.h:202
vtkGridAxes2DActor::SetGenerateTicks
void SetGenerateTicks(bool val)
Turn off to not generate the markers for the tick positions.
Definition: vtkGridAxes2DActor.h:212
vtkSmartPointer< vtkGridAxesPlane2DActor >
vtkGridAxesHelper::MAX_YZ
@ MAX_YZ
Definition: vtkGridAxesHelper.h:50
vtkGridAxes2DActor::Helper
vtkNew< vtkGridAxesHelper > Helper
Definition: vtkGridAxes2DActor.h:270
vtkGridAxesHelper::MAX_Z
@ MAX_Z
Definition: vtkGridAxesHelper.h:73
vtkGridAxes2DActor::AxisHelperScene
vtkNew< vtkContextScene > AxisHelperScene
Definition: vtkGridAxes2DActor.h:273
vtkProp3D::Bounds
double Bounds[6]
vtkGridAxesHelper::MIN_YZ
@ MIN_YZ
Definition: vtkGridAxesHelper.h:47
vtkWindow
vtkMTimeType
vtkTypeUInt64 vtkMTimeType
vtkProp3D::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkGridAxesHelper.h
Update
virtual void Update()
vtkGridAxes2DActor::GetGenerateTicks
bool GetGenerateTicks()
Turn off to not generate the markers for the tick positions.
Definition: vtkGridAxes2DActor.h:213
vtkContextScene
vtkProp::GetActors
virtual void GetActors(vtkPropCollection *)
vtkGridAxes2DActor::UpdateLabelTextPropertiesMTime
vtkTimeStamp UpdateLabelTextPropertiesMTime
Definition: vtkGridAxes2DActor.h:274
vtkGridAxesPlane2DActor.h
vtkGridAxes2DActor::LabelMask
unsigned int LabelMask
Definition: vtkGridAxes2DActor.h:264
vtkIndent
vtkGridAxes2DActor::SetGenerateGrid
void SetGenerateGrid(bool val)
Turn off to not generate polydata for the plane's grid.
Definition: vtkGridAxes2DActor.h:193
vtkGridAxes3DActor
actor for a cube-axes like prop in the 3D view.
Definition: vtkGridAxes3DActor.h:30
vtkSmartPointer.h
vtkGridAxes2DActor::GetGenerateGrid
bool GetGenerateGrid()
Turn off to not generate polydata for the plane's grid.
Definition: vtkGridAxes2DActor.h:194
vtkNew< vtkGridAxesHelper >
vtkGridAxes2DActor::Face
int Face
Definition: vtkGridAxes2DActor.h:263
vtkGridAxes2DActor::GetBounds
double * GetBounds() override
Returns the prop bounds.
Definition: vtkGridAxes2DActor.h:225
vtkGridAxesHelper::MIN_X
@ MIN_X
Definition: vtkGridAxesHelper.h:68
vtkGridAxes2DActor::GetGenerateEdges
bool GetGenerateEdges()
Turn off to not generate the polydata for the plane's edges.
Definition: vtkGridAxes2DActor.h:203
vtkGridAxesHelper::MAX_XY
@ MAX_XY
Definition: vtkGridAxesHelper.h:52
vtkViewport
vtkGridAxes2DActor::TitleTextProperty
vtkTuple< vtkSmartPointer< vtkTextProperty >, 3 > TitleTextProperty
Definition: vtkGridAxes2DActor.h:266
vtkProp::RenderTranslucentPolygonalGeometry
virtual int RenderTranslucentPolygonalGeometry(vtkViewport *)
vtkTextProperty
vtkGridAxesHelper::MIN_Z
@ MIN_Z
Definition: vtkGridAxesHelper.h:70
vtkGridAxesHelper::MAX_Y
@ MAX_Y
Definition: vtkGridAxesHelper.h:72
vtkNew.h
vtkGridAxes2DActor::LabelTextProperty
vtkTuple< vtkSmartPointer< vtkTextProperty >, 3 > LabelTextProperty
Definition: vtkGridAxes2DActor.h:267
vtkAxis
vtkGridAxes2DActor
actor for an axes plane in a 3D view.
Definition: vtkGridAxes2DActor.h:39
vtkDoubleArray
vtkProperty
vtkGridAxesHelper::MIN_Y
@ MIN_Y
Definition: vtkGridAxesHelper.h:69
vtkTuple
vtkPropCollection
vtkGridAxesHelper::MIN_XY
@ MIN_XY
Definition: vtkGridAxesHelper.h:49
vtkProp::ReleaseGraphicsResources
virtual void ReleaseGraphicsResources(vtkWindow *)
vtkProp::HasTranslucentPolygonalGeometry
virtual int HasTranslucentPolygonalGeometry()
vtkGridAxes2DActor::Titles
vtkTuple< std::string, 3 > Titles
Definition: vtkGridAxes2DActor.h:268
vtkGridAxes2DActor::ForceOpaque
bool ForceOpaque
Definition: vtkGridAxes2DActor.h:276
vtkProp3D.h
vtkGridAxesHelper::MAX_X
@ MAX_X
Definition: vtkGridAxesHelper.h:71
vtkGridAxes2DActor::PlaneActor
vtkSmartPointer< vtkGridAxesPlane2DActor > PlaneActor
Definition: vtkGridAxes2DActor.h:271