diff --git a/src/Vtk/HEP/Detectors/testing/vtkDetectorChamberTest.cpp b/src/Vtk/HEP/Detectors/testing/vtkDetectorChamberTest.cpp index 2f126a7..cb5da5c 100644 --- a/src/Vtk/HEP/Detectors/testing/vtkDetectorChamberTest.cpp +++ b/src/Vtk/HEP/Detectors/testing/vtkDetectorChamberTest.cpp @@ -40,7 +40,6 @@ BOOST_AUTO_TEST_CASE(vtkDetectorChamberTest) { d2.SetPosition(uLib::Vector3f(0, 0, 20)); uLib::Vtk::vtkDetectorChamber vtkDetectorChamber(&d1); - uLib::Vtk::vtkDetectorChamber vtkDetectorChamber2(&d2); if (!vtkDetectorChamber.GetProp()) { diff --git a/src/Vtk/testing/vtkContainerBoxTest.cpp b/src/Vtk/testing/vtkContainerBoxTest.cpp index 7c477ef..5b99c5e 100644 --- a/src/Vtk/testing/vtkContainerBoxTest.cpp +++ b/src/Vtk/testing/vtkContainerBoxTest.cpp @@ -23,8 +23,6 @@ //////////////////////////////////////////////////////////////////////////////*/ - - #include "Vtk/uLibVtkViewer.h" #include "Math/ContainerBox.h" @@ -35,19 +33,18 @@ using namespace uLib; int main() { - BEGIN_TESTING(vtk ContainerBox Test); + BEGIN_TESTING(vtk ContainerBox Test); + ContainerBox box; + box.SetSize(Vector3f(2, 3, 4)); + box.SetPosition(Vector3f(1, 2, 3)); + Vtk::vtkContainerBox v_box(&box); + + if (std::getenv("CTEST_PROJECT_NAME") == nullptr) { Vtk::Viewer v_viewer; - - ContainerBox box; - box.SetSize(Vector3f(2,3,4)); - box.SetPosition(Vector3f(1,2,3)); - - Vtk::vtkContainerBox v_box(box); - v_viewer.AddPuppet(v_box); v_viewer.Start(); + } - - END_TESTING; + END_TESTING; } diff --git a/src/Vtk/uLibVtkViewer.cpp b/src/Vtk/uLibVtkViewer.cpp index d089cd0..847da36 100644 --- a/src/Vtk/uLibVtkViewer.cpp +++ b/src/Vtk/uLibVtkViewer.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -61,11 +62,14 @@ namespace Vtk { //////////////////////////////////////////////////////////////////////////////// ///// VTK VIEWER ////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// - Viewer::Viewer() : m_RenderWindow(vtkRenderWindow::New()), m_Renderer(vtkRenderer::New()), m_Annotation(vtkCornerAnnotation::New()), - m_Marker(vtkOrientationMarkerWidget::New()) { + m_Marker(vtkOrientationMarkerWidget::New()), m_CameraWidget(nullptr) { +#if VTK_MAJOR_VERSION >= 9 || \ + (VTK_MAJOR_VERSION == 8 && VTK_MINOR_VERSION >= 90) + m_CameraWidget = vtkCameraOrientationWidget::New(); +#endif InstallPipe(); } @@ -74,6 +78,8 @@ Viewer::~Viewer() { m_Annotation->Delete(); m_Marker->Delete(); + if (m_CameraWidget) + m_CameraWidget->Delete(); m_Renderer->Delete(); m_RenderWindow->Delete(); } @@ -105,6 +111,13 @@ void Viewer::InstallPipe() { m_Marker->SetEnabled(true); m_Marker->InteractiveOff(); + // camera orientation widget // + if (m_CameraWidget) { + m_CameraWidget->SetParentRenderer(m_Renderer); + m_CameraWidget->SetInteractor(renderWindowInteractor); + m_CameraWidget->On(); + } + // Must be rendered here in Vtk-6.0 or seg-fault // m_RenderWindow->Render(); } @@ -135,6 +148,17 @@ void Viewer::RemovePuppet(Puppet &prop) { m_Renderer->Render(); } +vtkSmartPointer +Viewer::MakeCameraOrientationWidget(vtkRenderWindowInteractor *interactor, + vtkRenderer *renderer) { + vtkSmartPointer widget = + vtkSmartPointer::New(); + widget->SetParentRenderer(renderer); + widget->SetInteractor(interactor); + widget->On(); + return widget; +} + void Viewer::Start() { m_RenderWindow->GetInteractor()->Start(); } vtkCornerAnnotation *Viewer::GetAnnotation() { return m_Annotation; } @@ -145,6 +169,8 @@ vtkRenderWindowInteractor *Viewer::GetInteractor() { return m_RenderWindow->GetInteractor(); } +vtkCameraOrientationWidget *Viewer::GetCameraWidget() { return m_CameraWidget; } + void Viewer::Reset() { this->ZoomAuto(); m_Renderer->Render(); diff --git a/src/Vtk/uLibVtkViewer.h b/src/Vtk/uLibVtkViewer.h index b846540..4185d2b 100644 --- a/src/Vtk/uLibVtkViewer.h +++ b/src/Vtk/uLibVtkViewer.h @@ -33,12 +33,14 @@ #include #include #include +#include class vtkProp; class vtk3DWidget; class vtkCornerAnnotation; class vtkRenderWindowInteractor; class vtkRenderer; +class vtkCameraOrientationWidget; namespace uLib { namespace Vtk { @@ -62,6 +64,10 @@ public: void AddWidget(vtk3DWidget *widget); + static vtkSmartPointer + MakeCameraOrientationWidget(vtkRenderWindowInteractor *interactor, + vtkRenderer *renderer); + void Reset(); void ZoomAuto(); @@ -73,6 +79,8 @@ public: vtkRenderWindowInteractor *GetInteractor(); + vtkCameraOrientationWidget *GetCameraWidget(); + void addProp(vtkProp *prop); void RemoveProp(vtkProp *prop); @@ -85,6 +93,7 @@ private: vtkRenderWindow *m_RenderWindow; vtkCornerAnnotation *m_Annotation; vtkOrientationMarkerWidget *m_Marker; + vtkCameraOrientationWidget *m_CameraWidget; }; template <> class Tie { diff --git a/src/Vtk/vtkContainerBox.h b/src/Vtk/vtkContainerBox.h index 7d2d02e..23a3b0b 100644 --- a/src/Vtk/vtkContainerBox.h +++ b/src/Vtk/vtkContainerBox.h @@ -47,7 +47,8 @@ protected: vtkActor *m_Cube; vtkActor *m_Axes; vtkActor *m_Pivot; - vtkContainerBox::Content *m_Content; + + Content *m_Content; }; } // namespace Vtk diff --git a/src/Vtk/vtkHandlerWidget.cpp b/src/Vtk/vtkHandlerWidget.cpp index 41e3475..e039565 100644 --- a/src/Vtk/vtkHandlerWidget.cpp +++ b/src/Vtk/vtkHandlerWidget.cpp @@ -24,6 +24,7 @@ //////////////////////////////////////////////////////////////////////////////*/ #include "vtkHandlerWidget.h" +#include #include #include #include