VTK  9.3.1
vtkZSpaceInteractorStyle.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
30 #ifndef vtkZSpaceInteractorStyle_h
31 #define vtkZSpaceInteractorStyle_h
32 
33 #include "vtkDataObject.h" // for vtkDataObject enums
34 #include "vtkEventData.h" // for enums
35 #include "vtkInteractorStyle3D.h"
36 #include "vtkNew.h" // for ivar
37 #include "vtkRenderingZSpaceModule.h" // for export macro
38 
39 VTK_ABI_NAMESPACE_BEGIN
40 
41 class vtkCell;
42 class vtkPlane;
43 class vtkSelection;
44 class vtkDataSet;
45 class vtkTextActor;
46 class vtkZSpaceRayActor;
48 
49 class VTKRENDERINGZSPACE_EXPORT vtkZSpaceInteractorStyle : public vtkInteractorStyle3D
50 {
51 public:
52  static vtkZSpaceInteractorStyle* New();
54  void PrintSelf(ostream& os, vtkIndent indent) override;
55 
57 
60  void OnPick3D(vtkEventData* edata) override;
61  void OnPositionProp3D(vtkEventData* edata) override;
62  void OnMove3D(vtkEventData* edata) override;
63  void OnSelect3D(vtkEventData* edata) override;
65 
67 
70  virtual void StartPick(vtkEventDataDevice3D*);
71  virtual void EndPick(vtkEventDataDevice3D*);
72  virtual void StartPositionProp(vtkEventDataDevice3D*);
73  virtual void EndPositionProp(vtkEventDataDevice3D*);
75 
77 
80  void ProbeData(vtkEventDataDevice3D*);
81  virtual void PositionProp(vtkEventData*, double* lwpos = nullptr, double* lwori = nullptr);
83 
85 
90  vtkSetMacro(HoverPick, bool);
91  vtkGetMacro(HoverPick, bool);
92  vtkBooleanMacro(HoverPick, bool);
94 
100  void UpdateRay(vtkEventDataDevice3D*);
101 
105  vtkSetMacro(ZSpaceRayActor, vtkZSpaceRayActor*);
106 
108 
112  vtkSetClampMacro(PickingFieldAssociation, int, vtkDataObject::FIELD_ASSOCIATION_POINTS,
114  vtkGetMacro(PickingFieldAssociation, int);
116 
117 protected:
119  ~vtkZSpaceInteractorStyle() override = default;
120 
126  void EndPickCallback(vtkSelection* sel);
127 
129 
132  void StartAction(int VTKIS_STATE, vtkEventDataDevice3D* edata);
133  void EndAction(int VTKIS_STATE, vtkEventDataDevice3D* edata);
135 
141  bool HardwareSelect(vtkEventDataDevice3D* edd, bool actorPassOnly);
142 
146  bool FindDataSet(vtkSelection* sel, vtkSmartPointer<vtkDataSet>& ds, vtkIdType& aid);
147 
152  std::string GetPickedText(vtkDataSet* ds, const vtkIdType& aid);
153 
157  void CreatePickCell(vtkCell* cell);
158 
162  void CreatePickPoint(double* point);
163 
168  void UpdatePickActor();
169 
173  void RemovePickActor();
174 
183  bool HoverPick = false;
184 
185  // Used to draw picked cells or points
187  // XXX Very good chance we can swap it with this->InteractionProp
188  // The text actor is linked to this prop
189  vtkProp3D* PickedInteractionProp = nullptr;
192 
193  // Used to do the actual picking action (not the interactive picking).
195 
196  // The field association used when picking with the ray
197  int PickingFieldAssociation = vtkDataObject::FIELD_ASSOCIATION_CELLS;
198 
199 private:
201  void operator=(const vtkZSpaceInteractorStyle&) = delete;
202 };
203 
204 VTK_ABI_NAMESPACE_END
205 
206 #endif
abstract class to specify dataset behavior
Definition: vtkDataSet.h:52
virtual void OnPositionProp3D(vtkEventData *)
vtkZSpaceInteractorStyle extends vtkInteractorStyle3D to override command methods.
extends interaction to support 3D input
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:49
represents an 3D object for placement in a rendered scene
Definition: vtkProp3D.h:38
int vtkIdType
Definition: vtkType.h:315
vtkNew< vtkZSpaceHardwarePicker > HardwarePicker
An actor that displays text.
Definition: vtkTextActor.h:45
abstract class to specify cell behavior
Definition: vtkCell.h:49
virtual void OnMove3D(vtkEventData *)
Generic 3D event bindings can be overridden in subclasses.
virtual void OnSelect3D(vtkEventData *)
a simple class to control print indentation
Definition: vtkIndent.h:28
An actor for displaying a ray.
perform various plane computations
Definition: vtkPlane.h:25
static vtkInteractorStyle3D * New()
vtkNew< vtkTextActor > TextActor
virtual void OnPick3D(vtkEventData *)
Pick an actor/prop given the stylus position and orientation.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void PositionProp(vtkEventData *, double *lwpos=nullptr, double *lwori=nullptr)