ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cvConstrainedDistanceWidget Class Reference

Line/Distance Widget with XYZL constraint support (100% consistent with ParaView) More...

#include <cvConstrainedDistanceWidget.h>

Inheritance diagram for cvConstrainedDistanceWidget:
Collaboration diagram for cvConstrainedDistanceWidget:

Public Member Functions

 vtkTypeMacro (cvConstrainedDistanceWidget, vtkLineWidget2)
 
void PrintSelf (ostream &os, vtkIndent indent) override
 
void SetInteractor (vtkRenderWindowInteractor *iren) override
 Set interactor - override to register keyboard events Copied from ParaView vtkLineWidget2. More...
 
void SetEnabled (int enabling) override
 Override SetEnabled to manage keyboard event observers We need to remove the parent class's keyboard handler to avoid conflicts. More...
 

Static Public Member Functions

static cvConstrainedDistanceWidgetNew ()
 

Protected Member Functions

 cvConstrainedDistanceWidget ()
 
 ~cvConstrainedDistanceWidget () override
 

Static Protected Member Functions

static void ProcessKeyEvents (vtkObject *object, unsigned long event, void *clientdata, void *calldata)
 Keyboard event handler - directly copied from ParaView vtkLineWidget2::ProcessKeyEvents. More...
 

Detailed Description

Line/Distance Widget with XYZL constraint support (100% consistent with ParaView)

Migrated from ParaView vtkLineWidget2, supports keyboard constraints:

  • X: Constrain to X axis (VTK 9.2+)
  • Y: Constrain to Y axis (VTK 9.2+)
  • Z: Constrain to Z axis (VTK 9.2+)
  • L: Constrain to line direction (VTK 9.3+ automatically enabled)

Releasing the key automatically removes constraints

Note
Comparison with ParaView vtkLineWidget2:
  1. Fully inherits from vtkLineWidget2 (ParaView native widget)
  2. Includes LineHandle support (middle handle)
  3. 100% copy of ParaView ProcessKeyEvents code
L key functionality automatically enabled/disabled based on VTK version:
  • VTK >= 9.3: Full L key support
  • VTK < 9.3: L key has no effect

Definition at line 50 of file cvConstrainedDistanceWidget.h.

Constructor & Destructor Documentation

◆ cvConstrainedDistanceWidget()

cvConstrainedDistanceWidget::cvConstrainedDistanceWidget ( )
protected

Definition at line 37 of file cvConstrainedDistanceWidget.cpp.

◆ ~cvConstrainedDistanceWidget()

cvConstrainedDistanceWidget::~cvConstrainedDistanceWidget ( )
overrideprotected

Definition at line 43 of file cvConstrainedDistanceWidget.cpp.

Member Function Documentation

◆ New()

static cvConstrainedDistanceWidget* cvConstrainedDistanceWidget::New ( )
static

◆ PrintSelf()

void cvConstrainedDistanceWidget::PrintSelf ( ostream &  os,
vtkIndent  indent 
)
override

Definition at line 318 of file cvConstrainedDistanceWidget.cpp.

◆ ProcessKeyEvents()

void cvConstrainedDistanceWidget::ProcessKeyEvents ( vtkObject *  object,
unsigned long  event,
void *  clientdata,
void *  calldata 
)
staticprotected

Keyboard event handler - directly copied from ParaView vtkLineWidget2::ProcessKeyEvents.

This is the core method of the control layer:

  1. Receive keyboard events
  2. Get handles (data layer) through representation (middle layer)
  3. Set constraint state of handles

Definition at line 132 of file cvConstrainedDistanceWidget.cpp.

References event, cvCustomAxisHandleRepresentation::SetCustomTranslationAxisOff(), cvCustomAxisHandleRepresentation::SetCustomTranslationAxisOn(), and CVLog::Warning().

Referenced by SetEnabled().

◆ SetEnabled()

void cvConstrainedDistanceWidget::SetEnabled ( int  enabling)
override

Override SetEnabled to manage keyboard event observers We need to remove the parent class's keyboard handler to avoid conflicts.

Definition at line 67 of file cvConstrainedDistanceWidget.cpp.

References ProcessKeyEvents().

◆ SetInteractor()

void cvConstrainedDistanceWidget::SetInteractor ( vtkRenderWindowInteractor *  iren)
override

Set interactor - override to register keyboard events Copied from ParaView vtkLineWidget2.

Definition at line 60 of file cvConstrainedDistanceWidget.cpp.

◆ vtkTypeMacro()

cvConstrainedDistanceWidget::vtkTypeMacro ( cvConstrainedDistanceWidget  ,
vtkLineWidget2   
)

The documentation for this class was generated from the following files: