VTK  9.6.1
vtkBorderRepresentation.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
29
30#ifndef vtkBorderRepresentation_h
31#define vtkBorderRepresentation_h
32
33#include "vtkCoordinate.h" //Because of the viewport coordinate macro
34#include "vtkInteractionWidgetsModule.h" // For export macro
36#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
37
38#include "vtkNew.h" // for ivars
39
40VTK_ABI_NAMESPACE_BEGIN
41class vtkPoints;
42class vtkPolyData;
43class vtkTransform;
46class vtkActor2D;
47class vtkProperty2D;
48class vtkCellArray;
49
50class VTKINTERACTIONWIDGETS_EXPORT VTK_MARSHALAUTO vtkBorderRepresentation
52{
53public:
58
60
64 void PrintSelf(ostream& os, vtkIndent indent) override;
66
68
77 vtkViewportCoordinateMacro(Position);
78 vtkViewportCoordinateMacro(Position2);
80
81 enum
82 {
86 };
87
89
100 virtual void SetShowBorder(int border);
103 virtual int GetShowBorder();
108
110
116 vtkGetMacro(ShowVerticalBorder, int);
118
120
126 vtkGetMacro(ShowHorizontalBorder, int);
128
130
133 vtkGetObjectMacro(BorderProperty, vtkProperty2D);
135
137
142 virtual void SetShowPolygon(int border);
143 virtual int GetShowPolygon();
148
150
156 vtkGetMacro(ShowPolygonBackground, int);
158
160
172
174
187
189
196 vtkSetVector2Macro(MinimumNormalizedViewportSize, double);
197 vtkGetVector2Macro(MinimumNormalizedViewportSize, double);
199
201
208 vtkSetVector2Macro(MinimumSize, int);
209 vtkGetVector2Macro(MinimumSize, int);
210 vtkSetVector2Macro(MaximumSize, int);
211 vtkGetVector2Macro(MaximumSize, int);
213
215
222 vtkSetClampMacro(Tolerance, int, 1, 10);
223 vtkGetMacro(Tolerance, int);
225
227
231 vtkGetVectorMacro(SelectionPoint, double, 2);
233
235
240 vtkSetMacro(Moving, vtkTypeBool);
241 vtkGetMacro(Moving, vtkTypeBool);
242 vtkBooleanMacro(Moving, vtkTypeBool);
244
245 enum
246 {
254 };
255
257
268 virtual void SetWindowLocation(int enumLocation);
269 vtkGetMacro(WindowLocation, int);
271
278 virtual void UpdateWindowLocation();
279
296
297 vtkSetClampMacro(InteractionState, int, 0, AdjustingE3);
298
304
306
310 void BuildRepresentation() override;
311 void StartWidgetInteraction(double eventPos[2]) override;
312 void WidgetInteraction(double eventPos[2]) override;
313 virtual void GetSize(double size[2])
314 {
315 size[0] = 1.0;
316 size[1] = 1.0;
317 }
318 int ComputeInteractionState(int X, int Y, int modify = 0) override;
320
322
333
336
338
342 vtkSetVector3Macro(BorderColor, double);
343 vtkGetVector3Macro(BorderColor, double);
345
347
351 vtkSetClampMacro(BorderThickness, float, 0, VTK_FLOAT_MAX);
352 vtkGetMacro(BorderThickness, float);
354
356
364 vtkSetClampMacro(CornerRadiusStrength, double, 0.0, 1.0);
365 vtkGetMacro(CornerRadiusStrength, double);
367
369
374 vtkSetClampMacro(CornerResolution, int, 0, 1000);
375 vtkGetMacro(CornerResolution, int);
377
379
383 vtkSetVector3Macro(PolygonColor, double);
384 vtkGetVector3Macro(PolygonColor, double);
386
388
392 vtkSetClampMacro(PolygonOpacity, double, 0.0, 1.0);
393 vtkGetMacro(PolygonOpacity, double);
395
397
400 void SetPolygonRGBA(double rgba[4]);
401 void SetPolygonRGBA(double r, double g, double b, double a);
402
406 void GetPolygonRGBA(double rgba[4]);
407 void GetPolygonRGBA(double& r, double& g, double& b, double& a);
409
410protected:
413
414 // Ivars
422 int Tolerance = 3;
424 double SelectionPoint[2] = { 0.0, 0.0 };
425
426 // Layout (position of lower left and upper right corners of border)
429
430 // Window location by enumeration
432
433 // Sometimes subclasses must negotiate with their superclasses
434 // to achieve the correct layout.
436 virtual void NegotiateLayout();
437
438 // Update the border visibility based on InteractionState.
439 // See Also: SetShowHorizontalBorder(), SetShowHorizontalBorder(),
440 // ComputeInteractionState()
441 virtual void UpdateShowBorder();
442
443 // Keep track of start position when moving border
444 double StartPosition[2];
445
446 // Border representation. Subclasses may use the BWTransform class
447 // to transform their geometry into the region surrounded by the border.
458
459 // Constraints on size
460 double MinimumNormalizedViewportSize[2] = { 0.0, 0.0 };
461 int MinimumSize[2] = { 1, 1 };
463
464 // Properties of the border
465 double BorderColor[3] = { 1.0, 1.0, 1.0 };
466 float BorderThickness = 1.0;
469
470 // Properties of the inner polygon (ie. the background)
471 double PolygonColor[3] = { 1.0, 1.0, 1.0 };
472 double PolygonOpacity = 0.0;
473
478
486 void ComputeOneRoundCorner(vtkCellArray* polys, vtkPoints* points, double radius, vtkIdType xPt,
487 vtkIdType yPt, double startAngle);
488
489private:
491 void operator=(const vtkBorderRepresentation&) = delete;
492};
493
494VTK_ABI_NAMESPACE_END
495#endif
a actor that draws 2D data
Definition vtkActor2D.h:36
virtual void GetSize(double size[2])
Subclasses should implement these methods.
void ComputeOneRoundCorner(vtkCellArray *polys, vtkPoints *points, double radius, vtkIdType xPt, vtkIdType yPt, double startAngle)
Create a quarter circle centered in point[idCenterX].x, point[idCenterY].y), of radius 'radius' with ...
void SetPolygonRGBA(double r, double g, double b, double a)
Convenience method to set the background color and the opacity at once.
void GetPolygonRGBA(double rgba[4])
Convenience method to get the background color and the opacity at once.
vtkNew< vtkProperty2D > BorderProperty
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
These methods are necessary to make this representation behave as a vtkProp.
virtual int GetShowBorderMinValue()
Specify when and if the border should appear.
vtkNew< vtkPolyDataMapper2D > BWMapperEdges
void SetShowPolygonToOn()
Specify when and if the border's polygon background should appear.
void GetPolygonRGBA(double &r, double &g, double &b, double &a)
Convenience method to set the background color and the opacity at once.
vtkNew< vtkActor2D > BWActorPolygon
void SetShowBorderToActive()
Specify when and if the border should appear.
void WidgetInteraction(double eventPos[2]) override
Subclasses should implement these methods.
void GetActors2D(vtkPropCollection *) override
These methods are necessary to make this representation behave as a vtkProp.
void SetShowPolygonToOff()
Specify when and if the border's polygon background should appear.
virtual void SetWindowLocation(int enumLocation)
Set the representation position, by enumeration ( AnyLocation = 0, LowerLeftCorner,...
void SetBWActorDisplayOverlayPolygon(bool)
~vtkBorderRepresentation() override
static vtkBorderRepresentation * New()
Instantiate this class.
vtkNew< vtkCoordinate > PositionCoordinate
void ComputeRoundCorners()
Create all 4 round corners with the specified radius and resolution.
vtkNew< vtkCoordinate > Position2Coordinate
virtual void NegotiateLayout()
vtkTypeBool HasTranslucentPolygonalGeometry() override
These methods are necessary to make this representation behave as a vtkProp.
int ComputeInteractionState(int X, int Y, int modify=0) override
Subclasses should implement these methods.
void SetShowBorderToOn()
Specify when and if the border should appear.
InteractionStateType
Define the various states that the representation can be in.
virtual void SetShowBorder(int border)
Specify when and if the border should appear.
void StartWidgetInteraction(double eventPos[2]) override
Subclasses should implement these methods.
vtkNew< vtkProperty2D > PolygonProperty
vtkNew< vtkTransform > BWTransform
int RenderOpaqueGeometry(vtkViewport *) override
These methods are necessary to make this representation behave as a vtkProp.
virtual int GetShowPolygon()
Specify when and if the border's polygon background should appear.
virtual int GetShowBorderMaxValue()
Specify when and if the border should appear.
void PrintSelf(ostream &os, vtkIndent indent) override
Define standard methods.
virtual void UpdateWindowLocation()
Update window location if a window location is set.
void SetShowPolygonToActive()
Specify when and if the border's polygon background should appear.
vtkNew< vtkPolyDataMapper2D > BWMapperPolygon
int RenderOverlay(vtkViewport *) override
These methods are necessary to make this representation behave as a vtkProp.
void BuildRepresentation() override
Subclasses should implement these methods.
void SetBWActorDisplayOverlayEdges(bool)
virtual void SetShowPolygon(int border)
Specify when and if the border's polygon background should appear.
virtual int GetShowBorder()
Specify when and if the border should appear.
vtkNew< vtkPolyData > PolyDataEdges
void SetPolygonRGBA(double rgba[4])
Convenience method to set the background color and the opacity at once.
vtkNew< vtkActor2D > BWActorEdges
vtkNew< vtkTransformPolyDataFilter > BWTransformFilter
vtkNew< vtkPolyData > BWPolyData
void SetShowBorderToOff()
Specify when and if the border should appear.
vtkNew< vtkPolyData > PolyDataPolygon
void ReleaseGraphicsResources(vtkWindow *) override
These methods are necessary to make this representation behave as a vtkProp.
vtkMTimeType GetMTime() override
Return the MTime of this object.
virtual void UpdateShowBorder()
object to represent cell connectivity
a simple class to control print indentation
Definition vtkIndent.h:29
Allocate and hold a VTK object.
Definition vtkNew.h:58
represent and manipulate 3D points
Definition vtkPoints.h:30
draw vtkPolyData onto the image plane
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition vtkPolyData.h:72
an ordered list of Props
represent surface properties of a 2D image
transform points and associated normals and vectors for polygonal dataset
describes linear transformations via a 4x4 matrix
abstract specification for Viewports
Definition vtkViewport.h:47
window superclass for vtkRenderWindow
Definition vtkWindow.h:29
int vtkTypeBool
Definition vtkABI.h:64
int vtkIdType
Definition vtkType.h:368
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:323
#define VTK_INT_MAX
Definition vtkType.h:197
#define VTK_FLOAT_MAX
Definition vtkType.h:205
#define VTK_MARSHALAUTO