#ifndef __MAINWND__H__ #define __MAINWND__H__ #include #include #include #include #include #include #include #include #include #include "InteractorStyleImage.h" #include "VolumeActors.h" /* #include #include */ // ------------------------------------------------------------------------- namespace Ui { class MainWnd; } // ------------------------------------------------------------------------- /** */ class MainWnd : public QMainWindow { Q_OBJECT; public: // Plugins types typedef cpmPluginsInterface::FilterProvider TFilterProvider; typedef cpmPluginsInterface::Filter TFilterObject; typedef TFilterObject::TParameters TParameters; typedef cpmPluginsInterface::Interface< TFilterProvider, TFilterObject > TFilterPlugins; // Data types static const unsigned int Dimension = 3; typedef short TPixel; typedef double TScalar; typedef itk::Image< TPixel, Dimension > TImage; typedef itk::ImageToVTKImageFilter< TImage > TVTKImage; typedef cpm::DataStructures::QuadEdgeMesh< TScalar, Dimension > TMesh; /* typedef cpm::VTK::MeshMapper< TTriangulation > TTriangulationMapper; typedef cpm::Algorithms::QuadEdge::MeshPlaneCutterFilter< TTriangulation > TCutter; */ public: explicit MainWnd( QWidget* parent = 0 ); virtual ~MainWnd( ); protected: void _UpdateEnabledFlags( ); bool _ParametersDialog( TParameters& parameters ); template< class I > bool _LoadImage( typename I::Pointer& image ); /* void _SliceMesh( int axis ); static void _SliceEventCallback( vtkObject* caller, long unsigned int eventId, void* clientData, void* callData ); */ private slots: void triggered_aSwitchMode( ); void triggered_aReloadPlugins( ); void triggered_aOpenInputImage( ); void triggered_aOpenSegmentedImage( ); void triggered_aFilterSegmentedImage( ); void triggered_aSegmentedImageToMesh( ); /* void triggered_aLoadInputImage( ); void triggered_aLoadSegmentedImage( ); */ private: Ui::MainWnd* m_UI; // Plugins objects std::string m_PluginsConfigurationFile; TFilterPlugins m_FilterPlugins; // Inputs std::string m_LastOpenedFile; TImage::Pointer m_Image; TImage::Pointer m_Segmentation; TMesh::Pointer m_Mesh; TVTKImage::Pointer m_VTKImage; TVTKImage::Pointer m_VTKSegmentation; // Renderers vtkSmartPointer< vtkRenderer > m_3DRenderer; vtkSmartPointer< vtkRenderer > m_XPlaneRenderer; vtkSmartPointer< vtkRenderer > m_YPlaneRenderer; vtkSmartPointer< vtkRenderer > m_ZPlaneRenderer; vtkSmartPointer< vtkRenderer > m_AuxRenderer; vtkSmartPointer< idms::VolumeActors > m_ImageActors; vtkSmartPointer< idms::InteractorStyleImage > m_XStyle; vtkSmartPointer< idms::InteractorStyleImage > m_YStyle; vtkSmartPointer< idms::InteractorStyleImage > m_ZStyle; vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget; /* TTriangulation::Pointer m_Mesh; vtkSmartPointer< TTriangulationMapper > m_MeshMapper; vtkSmartPointer< vtkActor > m_MeshActor; TCutter::Pointer m_ZCutter; */ }; #endif // __MAINWND__H__ // eof - $RCSfile$