#ifndef __MAINWND__H__
#define __MAINWND__H__
-#include <QMainWindow>
+// Standard stuff
+#include <map>
+#include <string>
-#include <itkImage.h>
-#include <itkImageToVTKImageFilter.h>
+// Qt stuff
+#include <QMainWindow>
+// vtk stuff
#include <vtkOrientationMarkerWidget.h>
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
-#include <cpm/DataStructures/QuadEdgeMesh.h>
-
-#include <cpmPluginsInterface/Interface.h>
-#include <cpmPluginsInterface/Filter.h>
+// Plugins interface
+#include <cpPlugins/Interface/Interface.h>
+#include <cpPlugins/Interface/ProcessObject.h>
+#include <cpPlugins/Interface/DataObject.h>
+// Local stuff
#include "InteractorStyleImage.h"
#include "VolumeActors.h"
+
/*
+ #include <itkImage.h>
+ #include <itkImageToVTKImageFilter.h>
+
+ #include <cpm/DataStructures/QuadEdgeMesh.h>
+
#include <cpm/VTK/MeshMapper.h>
#include <cpm/Algorithms/QuadEdge/MeshPlaneCutterFilter.h>
*/
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;
- */
+ typedef cpPlugins::Interface::Interface TPluginsInterface;
+ typedef cpPlugins::Interface::DataObject TPluginData;
+ typedef cpPlugins::Interface::ProcessObject TPlugin;
+ typedef TPlugin::TParameters TParameters;
public:
explicit MainWnd( QWidget* parent = 0 );
virtual ~MainWnd( );
protected:
+ void _LoadApplicationPreferences( );
+ TPluginData* _LoadImage(
+ const std::string& image_type, const std::string& image_dim
+ );
void _UpdateEnabledFlags( );
- bool _ParametersDialog( TParameters& parameters );
- template< class I >
- bool _LoadImage( typename I::Pointer& image );
+ /* TODO
+ bool _ParametersDialog( TParameters& parameters );
+ template< class I >
+ */
/*
void _SliceMesh( int axis );
*/
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( );
+ void _triggered_actionReloadPlugins( );
+ void _triggered_actionOpenInputImage( );
+ void _triggered_actionOpenSegmentedImage( );
+ void _triggered_actionSwitchMode( );
+
+ /* TODO
+ void triggered_aOpenSegmentedImage( );
+ void triggered_aFilterSegmentedImage( );
+ void triggered_aSegmentedImageToMesh( );
+ void triggered_aLoadInputImage( );
+ void triggered_aLoadSegmentedImage( );
*/
private:
Ui::MainWnd* m_UI;
+ // Application preferences
+ std::string m_ApplicationPreferencesFile;
+ std::map< std::string, std::string > m_ApplicationPreferences;
+
// 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
+ std::string m_PluginsConfigurationFile;
+ TPluginsInterface m_Plugins;
+
+ // Needed object from plugins
+ std::string m_ImageReaderClassName;
+ std::string m_ImageSeriesReaderClassName;
+ std::string m_ImageWriterClassName;
+
+ // Historic objects
+ std::string m_LastOpenedFile;
+
+ // Real data
+ TPluginData* m_InputImage;
+ TPluginData* m_SegmentedImage;
+
+ /* TODO
+ // Inputs
+ TImage::Pointer m_Image;
+ TImage::Pointer m_Segmentation;
+ TMesh::Pointer m_Mesh;
+ TVTKImage::Pointer m_VTKImage;
+ TVTKImage::Pointer m_VTKSegmentation;
+ */
+
+ // Visualization stuff
vtkSmartPointer< vtkRenderer > m_3DRenderer;
vtkSmartPointer< vtkRenderer > m_XPlaneRenderer;
vtkSmartPointer< vtkRenderer > m_YPlaneRenderer;
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;