#ifndef __IMAGEMPR__H__
#define __IMAGEMPR__H__
-// Standard stuff
#include <map>
-#include <set>
+#include <vector>
// Qt stuff
+#include <QApplication>
#include <QMainWindow>
// vtk stuff
#include <cpExtensions/Visualization/MPRObjects.h>
// Plugins interface
-#include <cpPlugins/Interface/Interface.h>
-#include <cpPlugins/Interface/ProcessObject.h>
+#include <cpPlugins/Interface/BaseApplication.h>
+#include <cpPlugins/Interface/Plugins.h>
#include <cpPlugins/Interface/Image.h>
#include <cpPlugins/Interface/Mesh.h>
class ImageMPR;
}
+//==========================================================================
+// Plugins types
+//typedef cpPlugins::Interface::Interface TPluginsInterface;
+//typedef cpPlugins::Interface::Object TPluginObject;
+//typedef cpPlugins::Interface::DataObject TPluginData;
+//typedef cpPlugins::Interface::Image TPluginImage;
+//typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
+//typedef cpPlugins::Interface::Mesh TPluginMesh;
+//typedef cpPlugins::Interface::ProcessObject TPluginFilter;
+//typedef cpPlugins::Interface::Parameters TParameters;
+//
+//typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
+
+
+
+
+//class MementoState
+//{
+//private:
+// long m_Id;
+//
+//public:
+//
+// MementoState()
+// {
+// m_Id = 0;
+// };
+//
+// MementoState(long id, TPluginImage* _img)
+// {
+// char * base = "state";
+// std::ostringstream oss;
+// oss << id;
+// std::string str = oss.str();
+// auto complement = str.c_str();
+//
+// std::string fileName(base);
+// fileName.append(complement);
+// fileName.append(".mhd");
+//
+// std::string fileNameRaw(base);
+// fileNameRaw.append(complement);
+// fileNameRaw.append(".raw");
+// save(fileName, fileNameRaw, _img);
+// }
+//
+// vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
+// {
+// char * base = "state";
+// std::ostringstream oss;
+// oss << id;
+// std::string str = oss.str();
+// auto complement = str.c_str();
+//
+// std::string fileName(base);
+// fileName.append(complement);
+// fileName.append(".mhd");
+// return load(fileName);
+// }
+//
+// void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
+// vtkSmartPointer<vtkMetaImageWriter> writer =
+// vtkSmartPointer<vtkMetaImageWriter>::New();
+// writer->SetInputData(img->GetVTK< vtkImageData >());
+// writer->SetFileName(filename.c_str());
+// writer->SetRAWFileName(filenameRaw.c_str());
+// writer->Write();
+// }
+//
+// vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
+// vtkSmartPointer<vtkMetaImageReader> reader =
+// vtkSmartPointer<vtkMetaImageReader>::New();
+// reader->SetFileName(filename.c_str());
+// reader->Update();
+// return reader;
+// }
+//
+//};
+
+//==========================================================================
+
// -------------------------------------------------------------------------
/**
*/
class ImageMPR
- : public QMainWindow
+ : public QMainWindow,
+ public cpPlugins::Interface::BaseApplication
{
Q_OBJECT;
public:
- // Plugins types
- typedef cpPlugins::Interface::Interface TPluginsInterface;
- typedef cpPlugins::Interface::Object TPluginObject;
- typedef cpPlugins::Interface::DataObject TPluginData;
- typedef cpPlugins::Interface::Image TPluginImage;
- typedef cpPlugins::Interface::Mesh TPluginMesh;
- typedef cpPlugins::Interface::ProcessObject TPluginFilter;
- typedef cpPlugins::Interface::Parameters TParameters;
-
- typedef std::set< std::string > TStringContainer;
+ typedef ImageMPR Self;
+ typedef QMainWindow Superclass;
+
typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
+ typedef cpPlugins::Interface::Plugins TPlugins;
+ typedef cpPlugins::Interface::DataObject TDataObject;
+ typedef cpPlugins::Interface::Image TImage;
+ typedef cpPlugins::Interface::Mesh TMesh;
+
+ // Plugins types
+ /*
+ typedef cpPlugins::Interface::Interface TPluginsInterface;
+ typedef cpPlugins::Interface::Object TPluginObject;
+ typedef cpPlugins::Interface::Image TPluginImage;
+ typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
+ typedef cpPlugins::Interface::Mesh TPluginMesh;
+ typedef cpPlugins::Interface::ProcessObject TPluginFilter;
+ typedef cpPlugins::Interface::Parameters TParameters;
+ typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
+ */
public:
explicit ImageMPR( QWidget* parent = 0 );
virtual ~ImageMPR( );
+ virtual void UpdateActualFilter( );
+
+ /* TODO
+ protected:
+ inline void _Block( )
+ {
+ QApplication::setOverrideCursor( Qt::WaitCursor );
+ this->setEnabled( false );
+ }
+ inline void _Unblock( )
+ {
+ QApplication::restoreOverrideCursor( );
+ this->setEnabled( true );
+ }
+ */
+
protected:
- bool _LoadPlugins( const std::string& filename );
+ void _AssociatePluginsToMenu( );
+ /*
+ bool _LoadPlugins( const std::string& filename );
+ std::string _LoadImage( TPluginImage::Pointer& image );
+ std::string _ConfigureMeshActors( );
+ */
private slots:
- void _triggered_actionOpenPlugins( );
- void _triggered_actionOpenInputImage( );
- void _triggered_actionOpenSegmentation( );
- void _triggered_actionOpenInputPolyData( );
- void _triggered_actionImageToImage( );
- void _triggered_actionImageToMesh( );
+ void _aOpenImage( );
+ void _aOpenDICOMSeries( );
+ void _aOpenSegmentation( );
+ void _aOpenPolyData( );
+ void _aSaveImage( );
+ void _aSaveSegmentation( );
+ void _aSavePolyData( );
+ void _aUndo( );
+ void _aRedo( );
+ void _aLoadPlugins( );
+ void _aShowPlugins( );
+
+ void _execPlugin( );
private:
Ui::ImageMPR* m_UI;
+ TPlugins m_Plugins;
+ std::string m_ActiveFilterMainInput;
+
+ // Objects
+ /*
+ typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode;
+ typedef std::map< std::string, TTreeNode > TTree;
+ TTree m_Objects;
+
+ // Active filter (for modal configuration)
+ TPlugins::TProcessObject::Pointer m_ActiveFilter;
+ */
// Plugins objects
- TPluginsInterface m_Plugins;
-
- // Needed object from plugins
- std::string m_ImageReaderClass;
- std::string m_ImageWriterClass;
- std::string m_MeshReaderClass;
- std::string m_MeshWriterClass;
- TStringContainer m_ImageToImageFilters;
- TStringContainer m_ImageToMeshFilters;
-
- // Real data
- TPluginImage::Pointer m_InputImage;
- TPluginImage::Pointer m_InputSegmentation;
- TPluginMesh::Pointer m_InputMesh;
-
- // Visualization stuff
- vtkSmartPointer< TMPRObjects > m_MPRObjects;
+ /*
+ TPluginsInterface m_Plugins;
+
+ // Needed object from plugins
+ std::string m_ImageReaderClass;
+ std::string m_ImageWriterClass;
+ std::string m_MeshReaderClass;
+ std::string m_MeshWriterClass;
+ std::string m_MeshCutterClass;
+
+ // Real data
+ TPluginImage::Pointer m_Image;
+ TPluginImage::Pointer m_Segmentation;
+ TPluginMesh::Pointer m_Mesh;
+
+ // Cutters
+ TPluginFilter::Pointer m_Cutters[ 3 ];
+ TPluginImplicitFunction::Pointer m_Planes[ 3 ];
+
+ // Visualization stuff
+ vtkSmartPointer< TMPRObjects > m_MPRObjects;
+
+ // Memento stuff
+ unsigned long m_state;
+ unsigned long m_max_state;
+ */
/* TODO
vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;