29#ifndef vtkImplicitAnnulusRepresentation_h
30#define vtkImplicitAnnulusRepresentation_h
32#include "vtkInteractionWidgetsModule.h"
37VTK_ABI_NAMESPACE_BEGIN
52#define VTK_MAX_ANNULUS_RESOLUTION 2048
94 void SetAxis(
double x,
double y,
double z);
128 vtkGetMacro(AlongXAxis,
bool);
129 vtkBooleanMacro(AlongXAxis,
bool);
131 vtkGetMacro(AlongYAxis,
bool);
132 vtkBooleanMacro(AlongYAxis,
bool);
134 vtkGetMacro(AlongZAxis,
bool);
135 vtkBooleanMacro(AlongZAxis,
bool);
146 vtkGetMacro(DrawAnnulus,
bool);
147 vtkBooleanMacro(DrawAnnulus,
bool);
159 vtkGetMacro(Resolution,
int);
169 vtkSetMacro(Tubing,
bool);
170 vtkGetMacro(Tubing,
bool);
171 vtkBooleanMacro(Tubing,
bool);
180 vtkSetMacro(OutlineTranslation,
bool);
181 vtkGetMacro(OutlineTranslation,
bool);
182 vtkBooleanMacro(OutlineTranslation,
bool);
191 vtkSetMacro(OutsideBounds,
bool);
192 vtkGetMacro(OutsideBounds,
bool);
193 vtkBooleanMacro(OutsideBounds,
bool);
203 vtkSetVector6Macro(WidgetBounds,
double);
215 vtkSetMacro(ConstrainToWidgetBounds,
bool);
216 vtkGetMacro(ConstrainToWidgetBounds,
bool);
217 vtkBooleanMacro(ConstrainToWidgetBounds,
bool);
225 vtkSetMacro(ScaleEnabled,
bool);
226 vtkGetMacro(ScaleEnabled,
bool);
227 vtkBooleanMacro(ScaleEnabled,
bool);
321 vtkSetClampMacro(BumpDistance,
double, 0.000001, 1);
322 vtkGetMacro(BumpDistance,
double);
373 vtkGetMacro(TranslationAxis,
int);
399 struct AxisHandleRepresentation
410 struct RadiusHandleRepresentation
418 vtkImplicitAnnulusRepresentation(
const vtkImplicitAnnulusRepresentation&) =
delete;
419 void operator=(
const vtkImplicitAnnulusRepresentation&) =
delete;
421 void HighlightAnnulus(
bool highlight);
422 void HighlightCenterHandle(
bool highlight);
423 void HighlightAxis(
bool highlight);
424 void HighlightOutline(
bool highlight);
425 void HighlightInnerRadiusHandle(
bool highlight);
426 void HighlightOuterRadiusHandle(
bool highlight);
430 double X,
double Y,
const vtkVector3d& p1,
const vtkVector3d& p2,
const vtkVector3d& vpn);
431 void TranslateAnnulus(
const vtkVector3d& p1,
const vtkVector3d& p2);
432 void TranslateOutline(
const vtkVector3d& p1,
const vtkVector3d& p2);
433 void TranslateCenter(
const vtkVector3d& p1,
const vtkVector3d& p2);
434 void TranslateCenterOnAxis(
const vtkVector3d& p1,
const vtkVector3d& p2);
435 void ScaleRadii(
const vtkVector3d& p1,
const vtkVector3d& p2);
436 void AdjustOuterRadius(
double X,
double Y,
const vtkVector3d& p1,
const vtkVector3d& p2);
437 void AdjustInnerRadius(
double X,
double Y,
const vtkVector3d& p1,
const vtkVector3d& p2);
438 void Scale(
const vtkVector3d& p1,
const vtkVector3d& p2,
double X,
double Y);
445 vtkNew<vtkAnnulus> Annulus;
447 InteractionStateType RepresentationState = InteractionStateType::Outside;
448 int TranslationAxis = Axis::NONE;
451 vtkVector3d LastEventPosition;
454 double BumpDistance = 0.01;
457 bool AlongXAxis =
false;
458 bool AlongYAxis =
false;
459 bool AlongZAxis =
false;
462 int Resolution = 128;
465 vtkNew<vtkImageData>
Box;
466 vtkNew<vtkOutlineFilter> Outline;
467 vtkNew<vtkPolyDataMapper> OutlineMapper;
468 vtkNew<vtkActor> OutlineActor;
469 bool OutlineTranslation =
true;
470 bool ScaleEnabled =
true;
471 bool OutsideBounds =
true;
472 vtkVector<double, 6> WidgetBounds;
473 bool ConstrainToWidgetBounds =
true;
475 vtkNew<vtkPolyData> AnnulusPD;
476 vtkNew<vtkPolyDataMapper> AnnulusMapper;
477 vtkNew<vtkActor> AnnulusActor;
478 bool DrawAnnulus =
true;
481 RadiusHandleRepresentation InnerRadiusRepresentation;
482 RadiusHandleRepresentation OuterRadiusRepresentation;
486 AxisHandleRepresentation LowerAxisRepresentation;
487 AxisHandleRepresentation UpperAxisRepresentation;
490 vtkNew<vtkSphereSource> CenterHandleSource;
491 vtkNew<vtkPolyDataMapper> CenterHandleMapper;
492 vtkNew<vtkActor> CenterHandleActor;
495 vtkNew<vtkCellPicker> Picker;
496 vtkNew<vtkCellPicker> AnnulusPicker;
500 vtkNew<vtkProperty> AxisProperty;
501 vtkNew<vtkProperty> SelectedAxisProperty;
502 vtkNew<vtkProperty> AnnulusProperty;
503 vtkNew<vtkProperty> SelectedAnnulusProperty;
504 vtkNew<vtkProperty> OutlineProperty;
505 vtkNew<vtkProperty> SelectedOutlineProperty;
506 vtkNew<vtkProperty> RadiusHandleProperty;
507 vtkNew<vtkProperty> SelectedRadiusHandleProperty;
508 vtkNew<vtkProperty> CenterHandleProperty;
509 vtkNew<vtkProperty> SelectedCenterHandleProperty;
511 vtkNew<vtkBox> BoundingBox;
represents an object (geometry & properties) in a rendered scene
implicit function for a annulus
implicit function for a bounding box
ray-cast cell picker for all kinds of Prop3Ds
topologically and geometrically regular array of data
vtkTypeBool HasTranslucentPolygonalGeometry() override
Methods supporting the rendering process.
double * GetWidgetBounds()
Set/Get the bounds of the widget representation.
void SetAlongYAxis(bool)
Force the annulus widget to be aligned with one of the x-y-z axes.
void UpdatePlacement()
Satisfies the superclass API.
void PushAnnulus(double distance)
Push the annulus the distance specified along the view vector.
void PlaceWidget(double bounds[6]) override
Methods to interface with the vtkImplicitAnnulusWidget.
static vtkImplicitAnnulusRepresentation * New()
void SetDrawAnnulus(bool draw)
Enable/disable the drawing of the annulus.
double * GetBounds() override
Methods supporting the rendering process.
void SetZTranslationAxisOn()
Toggles constraint translation axis on/off.
void GetAnnulus(vtkAnnulus *annulus) const
void BuildRepresentation() override
Methods to interface with the vtkImplicitAnnulusWidget.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetAlongZAxis(bool)
Force the annulus widget to be aligned with one of the x-y-z axes.
void SetOuterRadius(double r)
Set/Get the annulus outer radius.
void SetHandleColor(double c[3])
Set the color of all the widgets handles (edges, axis, selected annulus) and their color during inter...
void SetXTranslationAxisOn()
Toggles constraint translation axis on/off.
void SetInteractionColor(double c[3])
Set the color of all the widgets handles (edges, axis, selected annulus) and their color during inter...
void SetForegroundColor(double, double, double)
Set the color of all the widgets handles (edges, axis, selected annulus) and their color during inter...
void SetInteractionColor(double, double, double)
Set the color of all the widgets handles (edges, axis, selected annulus) and their color during inter...
double * GetCenter() const
Get the center of the annulus representation.
void SetTranslationAxisOff()
Toggles constraint translation axis on/off.
double GetOuterRadius() const
Set/Get the annulus outer radius.
vtkImplicitAnnulusRepresentation()
void BumpAnnulus(int dir, double factor)
Translate the annulus in the direction of the view vector by the specified BumpDistance.
void GetPolyData(vtkPolyData *pd)
Grab the polydata that defines the annulus.
void SetAxis(double x, double y, double z)
Set/Get the axis of rotation for the annulus.
void SetForegroundColor(double c[3])
Set the color of all the widgets handles (edges, axis, selected annulus) and their color during inter...
double GetInnerRadius() const
Set/Get the annulus inner radius.
bool IsTranslationConstrained()
Returns true if ConstrainedAxis.
void ReleaseGraphicsResources(vtkWindow *) override
Methods supporting the rendering process.
void RegisterPickers() override
Register internal Pickers in the Picking Manager.
int RenderTranslucentPolygonalGeometry(vtkViewport *) override
Methods supporting the rendering process.
int RenderOpaqueGeometry(vtkViewport *) override
Methods supporting the rendering process.
void SetCenter(double x[3])
Get the center of the annulus representation.
virtual void SetRepresentationState(InteractionStateType)
Sets the visual appearance of the representation based on the state it is in.
void SetAlongXAxis(bool)
Force the annulus widget to be aligned with one of the x-y-z axes.
void SetInnerRadius(double r)
Set/Get the annulus inner radius.
~vtkImplicitAnnulusRepresentation() override
void SetCenter(double x, double y, double z)
Get the center of the annulus representation.
int ComputeInteractionState(int X, int Y, int modify=0) override
Methods to interface with the vtkImplicitAnnulusWidget.
void EndWidgetInteraction(double newEventPos[2]) override
Methods to interface with the vtkImplicitAnnulusWidget.
void WidgetInteraction(double newEventPos[2]) override
Methods to interface with the vtkImplicitAnnulusWidget.
void SetHandleColor(double, double, double)
Set the color of all the widgets handles (edges, axis, selected annulus) and their color during inter...
void SetYTranslationAxisOn()
Toggles constraint translation axis on/off.
void GetActors(vtkPropCollection *pc) override
Methods supporting the rendering process.
void StartWidgetInteraction(double eventPos[2]) override
Methods to interface with the vtkImplicitAnnulusWidget.
double * GetAxis() const
Set/Get the axis of rotation for the annulus.
a simple class to control print indentation
create a line defined by two end points
Allocate and hold a VTK object.
create wireframe outline for an arbitrary data set or composite dataset
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
represent surface properties of a geometric object
create a polygonal sphere centered at the origin
filter that generates tubes around lines
abstract specification for Viewports
window superclass for vtkRenderWindow
#define VTK_MAX_ANNULUS_RESOLUTION
#define VTK_SIZEHINT(...)