add vtkHandlerWidget

This commit is contained in:
AndreaRigoni
2026-03-17 11:13:35 +00:00
parent d8ef413216
commit 4569407d18
5 changed files with 545 additions and 94 deletions

View File

@@ -35,9 +35,10 @@
// Forward declarations of VTK classes in global namespace
class vtkActor;
class vtkCallbackCommand;
class vtkPropPicker;
class vtkCellPicker;
class vtkTransform;
class vtkObject;
class vtkPlane;
class vtkRenderWindowInteractor;
namespace uLib {
@@ -73,9 +74,22 @@ public:
ROT_Z,
SCALE_X,
SCALE_Y,
SCALE_Z
SCALE_Z,
ROT_CAM
};
enum ReferenceFrame {
GLOBAL = 0,
LOCAL,
CENTER,
CENTER_LOCAL,
NORMAL, // Not implemented
PARENT // Not implemented
};
void SetReferenceFrame(ReferenceFrame frame);
ReferenceFrame GetReferenceFrame() const { return this->m_Frame; }
using ::vtk3DWidget::PlaceWidget;
virtual void PlaceWidget(double bounds[6]) override;
virtual void PlaceWidget() override;
@@ -87,17 +101,27 @@ public:
protected:
void CreateGizmos();
void UpdateGizmoPosition();
void Highlight(::vtkProp *prop);
vtkSmartPointer<::vtkRenderer> m_OverlayRenderer;
ReferenceFrame m_Frame;
int Interaction;
::vtkProp *m_HighlightedProp;
double m_OriginalColor[3];
// Visual components //
vtkSmartPointer<::vtkActor> m_AxesX, m_AxesY, m_AxesZ; // Arrows
vtkSmartPointer<::vtkActor> m_RotX, m_RotY, m_RotZ; // Rings
vtkSmartPointer<::vtkActor> m_RotCam; // Camera ring
vtkSmartPointer<::vtkActor> m_ScaleX, m_ScaleY, m_ScaleZ; // Cubes
vtkSmartPointer<::vtkPropPicker> m_Picker;
vtkSmartPointer<::vtkPlane> m_ClipPlane;
vtkSmartPointer<::vtkCellPicker> m_Picker;
double StartEventPosition[2];
double m_StartPickPosition[3];
vtkSmartPointer<::vtkTransform> m_InitialTransform;
private: