VTK  9.2.6
vtkFinitePlaneRepresentation.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkFinitePlaneRepresentation.h
5 
6  Copyright (c)
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
34 #ifndef vtkFinitePlaneRepresentation_h
35 #define vtkFinitePlaneRepresentation_h
36 
37 #include "vtkDeprecation.h" // For VTK_DEPRECATED_IN_9_2_0
38 #include "vtkInteractionWidgetsModule.h" // For export macro
40 
41 class vtkActor;
42 class vtkBox;
43 class vtkCellPicker;
44 class vtkConeSource;
45 class vtkFeatureEdges;
46 class vtkLineSource;
47 class vtkPolyData;
48 class vtkPolyDataMapper;
49 class vtkProperty;
50 class vtkSphereSource;
51 class vtkTransform;
52 class vtkTubeFilter;
53 
54 class VTKINTERACTIONWIDGETS_EXPORT vtkFinitePlaneRepresentation : public vtkWidgetRepresentation
55 {
56 public:
61 
63 
67  void PrintSelf(ostream& os, vtkIndent indent) override;
69 
74  void GetPolyData(vtkPolyData* pd);
75 
77 
82  vtkGetObjectMacro(V1HandleProperty, vtkProperty);
83  vtkGetObjectMacro(V2HandleProperty, vtkProperty);
84  vtkGetObjectMacro(SelectedHandleProperty, vtkProperty);
86 
88 
93  vtkGetObjectMacro(PlaneProperty, vtkProperty);
94  vtkGetObjectMacro(SelectedPlaneProperty, vtkProperty);
96 
98 
102  vtkSetMacro(Tubing, bool);
103  vtkGetMacro(Tubing, bool);
104  vtkBooleanMacro(Tubing, bool);
106 
108 
114  void SetDrawPlane(bool plane);
115  vtkGetMacro(DrawPlane, bool);
116  vtkBooleanMacro(DrawPlane, bool);
118 
120 
124  void SetHandles(bool handles);
125  virtual void HandlesOn();
126  virtual void HandlesOff();
128 
130 
133  void PlaceWidget(double bounds[6]) override;
134  void BuildRepresentation() override;
135  int ComputeInteractionState(int X, int Y, int modify = 0) override;
136  void StartWidgetInteraction(double e[2]) override;
137  void WidgetInteraction(double e[2]) override;
138  double* GetBounds() override;
140 
142 
145  void ReleaseGraphicsResources(vtkWindow*) override;
146  int RenderOpaqueGeometry(vtkViewport*) override;
150 
151  vtkSetClampMacro(InteractionState, int, Outside, Pushing);
152 
154 
157  void SetOrigin(double x, double y, double z);
158  void SetOrigin(double x[3]);
159  vtkGetVector3Macro(Origin, double);
161 
163 
166  void SetNormal(double x, double y, double z);
167  void SetNormal(double n[3]);
168  vtkGetVector3Macro(Normal, double);
170 
172 
175  void SetV1(double x, double y);
176  void SetV1(double x[2]);
177  vtkGetVector2Macro(V1, double);
179 
181 
184  void SetV2(double x, double y);
185  void SetV2(double x[2]);
186  vtkGetVector2Macro(V2, double);
188 
190 
194  virtual void SetRepresentationState(int);
195  vtkGetMacro(RepresentationState, int);
197 
199 
202  vtkGetObjectMacro(NormalProperty, vtkProperty);
203  vtkGetObjectMacro(SelectedNormalProperty, vtkProperty);
205 
206  // Methods to manipulate the plane
207  void TranslateOrigin(double* p1, double* p2);
208  void MovePoint1(double* p1, double* p2);
209  void MovePoint2(double* p1, double* p2);
210  void Push(double* p1, double* p2);
211  void Rotate(int X, int Y, double* p1, double* p2, double* vpn);
212 
214  {
215  Outside = 0,
221  Pushing
222  };
223 #if !defined(VTK_LEGACY_REMOVE)
224  VTK_DEPRECATED_IN_9_2_0("because leading underscore is reserved")
226 #endif
227 
228  /*
229  * Register internal Pickers within PickingManager
230  */
231  void RegisterPickers() override;
232 
233 protected:
235  ~vtkFinitePlaneRepresentation() override;
236 
237  virtual void CreateDefaultProperties();
238 
239  // Size the glyphs representing hot spots (e.g., handles)
240  virtual void SizeHandles();
241 
242  void SetHighlightNormal(int highlight);
243  void SetHighlightPlane(int highlight);
244  void SetHighlightHandle(vtkProp* prop);
245 
246  double LastEventPosition[3];
247 
248  // the representation state
250 
251  // the origin
255  double Origin[3];
256 
257  // the normal
258  double Normal[3];
259 
260  // the previous normal
261  double PreviousNormal[3];
262 
263  // the rotation transform
265 
266  // the X Vector
270  double V1[3];
271 
272  // the Y Vector
276  double V2[3];
277 
278  // The + normal cone
282 
283  // The + normal line
287 
288  // The - normal cone
292 
293  // The - normal line
297 
298  // The finite plane
302 
303  // Optional tubes are represented by extracting boundary edges
308  bool Tubing; // control whether tubing is on
309  bool DrawPlane; // control whether plane is on
310 
311  // Picking objects
314 
315  // Transform the planes (used for rotations)
317 
318  // Support GetBounds() method
320 
321  // Properties used to control the appearance of selected objects and
322  // the manipulator in general.
331 
332 private:
334  void operator=(const vtkFinitePlaneRepresentation&) = delete;
335 };
336 
337 #endif
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:56
void PrintSelf(ostream &os, vtkIndent indent) override
Standard methods for instances of this class.
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:51
virtual void PlaceWidget(double vtkNotUsed(bounds)[6])
The following is a suggested API for widget representations.
virtual int ComputeInteractionState(int X, int Y, int modify=0)
abstract specification for Viewports
Definition: vtkViewport.h:55
represent surface properties of a geometric object
Definition: vtkProperty.h:67
virtual void StartWidgetInteraction(double eventPos[2])
#define VTK_DEPRECATED_IN_9_2_0(reason)
generate polygonal cone
Definition: vtkConeSource.h:44
describes linear transformations via a 4x4 matrix
Definition: vtkTransform.h:60
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:90
abstract class defines interface between the widget and widget representation classes ...
virtual void BuildRepresentation()=0
Subclasses of vtkWidgetRepresentation must implement these methods.
double * GetBounds() override
Methods to make this class behave as a vtkProp.
int vtkTypeBool
Definition: vtkABI.h:69
window superclass for vtkRenderWindow
Definition: vtkWindow.h:38
create a polygonal sphere centered at the origin
int RenderTranslucentPolygonalGeometry(vtkViewport *vtkNotUsed(viewport)) override
filter that generates tubes around lines
Definition: vtkTubeFilter.h:85
a simple class to control print indentation
Definition: vtkIndent.h:39
virtual void RegisterPickers()
Register internal Pickers in the Picking Manager.
extract interior, boundary, non-manifold, and/or sharp edges from polygonal data
represent the vtkFinitePlaneWidget.
void ReleaseGraphicsResources(vtkWindow *) override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE Release any graphics resources that are being...
virtual void WidgetInteraction(double newEventPos[2])
int RenderOpaqueGeometry(vtkViewport *vtkNotUsed(viewport)) override
create a line defined by two end points
Definition: vtkLineSource.h:63
map vtkPolyData to graphics primitives
vtkTypeBool HasTranslucentPolygonalGeometry() override
WARNING: INTERNAL METHOD - NOT INTENDED FOR GENERAL USE DO NOT USE THESE METHODS OUTSIDE OF THE RENDE...
ray-cast cell picker for all kinds of Prop3Ds
Definition: vtkCellPicker.h:72
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...
implicit function for a bounding box
Definition: vtkBox.h:41