Skip to content

Commit

Permalink
Clean vtkBoneWidgetRepresentationAndInteractionTest
Browse files Browse the repository at this point in the history
The vtkBoneWidgetRepresentationAndInteractionTest needed cleaning. Note
that this is only preliminary work and this test is really more of an
example than a test right now. It will need more work to become a test.

See Issue #13720
  • Loading branch information
vovythevov committed Nov 29, 2012
1 parent ab34494 commit f3fbdd6
Showing 1 changed file with 25 additions and 88 deletions.
Expand Up @@ -77,150 +77,87 @@ class KeyPressInteractorStyle : public vtkInteractorStyleTrackballCamera
//do nothing
//I wanted this if to be explicit !
}
/*else if ( widgetState == vtkBoneWidget::Rest )
else if ( widgetState == vtkBoneWidget::Rest )
{
this->Widget->SetWidgetStateToPose();
}
else if ( widgetState == vtkBoneWidget::Pose )
{
this->Widget->SetWidgetStateToRest();
}*/
}
}
else if (key == "Tab")
{
vtkWidgetRepresentation* rep = Widget->GetRepresentation();

if (vtkCylinderBoneRepresentation::SafeDownCast(rep)) // switch to double cone
{
vtkSmartPointer<vtkDoubleConeBoneRepresentation> simsIconRep =
vtkSmartPointer<vtkDoubleConeBoneRepresentation>::New();
simsIconRep->SetNumberOfSides(10);
simsIconRep->SetRatio(0.2);
simsIconRep->SetCapping(1);
simsIconRep->GetConesProperty()->SetOpacity(0.3);
vtkDoubleConeBoneRepresentation* simsIconRep =
vtkDoubleConeBoneRepresentation::New();
Widget->SetRepresentation(simsIconRep);
simsIconRep->Delete();
}
else if (vtkDoubleConeBoneRepresentation::SafeDownCast(rep)) // switch to line
{
vtkSmartPointer<vtkBoneRepresentation> lineRep =
vtkSmartPointer<vtkBoneRepresentation>::New();

vtkBoneRepresentation* lineRep =
vtkBoneRepresentation::New();
Widget->SetRepresentation(lineRep);
lineRep->Delete();
}
else if (vtkBoneRepresentation::SafeDownCast(rep))
{
vtkSmartPointer<vtkCylinderBoneRepresentation> cylinderRep =
vtkSmartPointer<vtkCylinderBoneRepresentation>::New();
cylinderRep->SetNumberOfSides(10);
cylinderRep->GetCylinderProperty()->SetOpacity(0.3);
vtkCylinderBoneRepresentation* cylinderRep =
vtkCylinderBoneRepresentation::New();
Widget->SetRepresentation(cylinderRep);
cylinderRep->Delete();
}

Widget->GetBoneRepresentation()->GetLineProperty()->SetOpacity(0.3);
}
else if (key == "u")
{
// std::cout<<"here"<<std::endl;
// double axis[3];
// vtkSmartPointer<vtkTransform> transform = vtkSmartPointer<vtkTransform>::New();
// transform->Translate( Widget->GetTailRestWorldPosition() );

// double angle = vtkBoneWidget::QuaternionToAxisAngle(Widget->GetRestTransform(), axis);
// transform->RotateWXYZ(vtkMath::DegreesFromRadians(angle), axis[0], axis[1], axis[2]);

// Axes->SetUserTransform(transform);
}
else if (key == "h")
else if (key == "a")
{
Axes->SetVisibility( !Axes->GetVisibility() );
}
else if (key == "minus")
{
double op = Widget->GetBoneRepresentation()->GetLineProperty()->GetOpacity() - 0.1;
Widget->GetBoneRepresentation()->SetOpacity(op);
}
else if (key == "plus")
{
double op = Widget->GetBoneRepresentation()->GetLineProperty()->GetOpacity() + 0.1;
Widget->GetBoneRepresentation()->SetOpacity(op);
int show = Widget->GetShowAxes() + 1;
if (show > vtkBoneWidget::ShowPoseTransform)
{
show = vtkBoneWidget::Hidden;
}
Widget->SetShowAxes(show);
}

}

vtkAxesActor* Axes;
vtkBoneWidget* Widget;
};


class vtkSpy : public vtkCommand
{
public:
vtkTypeMacro(vtkSpy, vtkCommand);
static vtkSpy *New(){return new vtkSpy;}
virtual void Execute(vtkObject *caller, unsigned long eventId,
void *callData);
// List of node that should be updated when NodeAddedEvent is catched
std::map<unsigned long, unsigned int> CalledEvents;
std::map<unsigned long, unsigned long> LastEventMTime;
bool Verbose;
protected:
vtkSpy():Verbose(false){}
virtual ~vtkSpy(){}
};

//---------------------------------------------------------------------------
void vtkSpy::Execute(
vtkObject *vtkcaller, unsigned long eid, void *vtkNotUsed(calldata))
{
++this->CalledEvents[eid];
this->LastEventMTime[eid] = vtkTimeStamp();
if (this->Verbose)
{
std::cout << "vtkSpy: event:" << eid
<< " (" << vtkCommand::GetStringFromEventId(eid) << ")"
<< " count: " << this->CalledEvents[eid]
<< " time: " << this->LastEventMTime[eid]
<< std::endl;
}
}

vtkStandardNewMacro(KeyPressInteractorStyle);

int vtkBoneWidgetRepresentationAndInteractionTest(int, char *[])
{
vtkNew<vtkSpy> spy;
spy->Verbose = true;

// A renderer and render window
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer> renderer =
vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow =
vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);

// An interactor
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

vtkSmartPointer<vtkBoneWidget> BoneWidget =
vtkSmartPointer<vtkBoneWidget> boneWidget =
vtkSmartPointer<vtkBoneWidget>::New();
BoneWidget->SetInteractor(renderWindowInteractor);
boneWidget->SetInteractor(renderWindowInteractor);
//Test Line
BoneWidget->CreateDefaultRepresentation();
BoneWidget->SetWidgetStateToRest();
BoneWidget->AddObserver(vtkCommand::AnyEvent, spy.GetPointer());
boneWidget->CreateDefaultRepresentation();

//Setup callbacks
vtkSmartPointer<KeyPressInteractorStyle> style =
vtkSmartPointer<KeyPressInteractorStyle>::New();
renderWindowInteractor->SetInteractorStyle(style);
style->Widget = BoneWidget;
style->Widget = boneWidget;
style->SetCurrentRenderer(renderer);

// Render
renderWindow->Render();
BoneWidget->On();
boneWidget->On();
renderWindow->Render();

// Begin mouse interaction
Expand Down

0 comments on commit f3fbdd6

Please sign in to comment.