Page MenuHomePhabricator

modification_coreObjectFactory.diff

Authored By
fritzsck
Oct 12 2009, 10:03 AM
Size
10 KB
Referenced Files
None
Subscribers
None

modification_coreObjectFactory.diff

Index: mitkCoreObjectFactory.cpp
===================================================================
--- mitkCoreObjectFactory.cpp (revision 19441)
+++ mitkCoreObjectFactory.cpp (working copy)
@@ -122,6 +122,10 @@
return pointer;
}
+void mitk::CoreObjectFactory::RegisterExtraFactory(CoreObjectFactoryBase::Pointer factory) {
+ LOG_INFO << "Registering extra factory: " << factory->GetNameOfClass();
+ m_ExtraFactories.push_back(factory);
+}
mitk::CoreObjectFactory::Pointer mitk::CoreObjectFactory::GetInstance() {
static mitk::CoreObjectFactory::Pointer instance;
@@ -185,6 +189,9 @@
mitk::PointSetMapper2D::SetDefaultProperties(node);
mitk::PointSetVtkMapper3D::SetDefaultProperties(node);
}
+ for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) {
+ (*it)->SetDefaultProperties(node);
+ }
}
mitk::CoreObjectFactory::CoreObjectFactory()
@@ -214,82 +221,89 @@
mitk::Mapper::Pointer mitk::CoreObjectFactory::CreateMapper(mitk::DataTreeNode* node, MapperSlotId id)
{
mitk::Mapper::Pointer newMapper = NULL;
- mitk::BaseData *data = node->GetData();
+ for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) {
+ newMapper = (*it)->CreateMapper(node,id);
+ }
+ if (newMapper.IsNull()) {
+ mitk::BaseData *data = node->GetData();
- if ( id == mitk::BaseRenderer::Standard2D )
- {
- if((dynamic_cast<Image*>(data)!=NULL))
+ if ( id == mitk::BaseRenderer::Standard2D )
{
- mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(data);
- newMapper = mitk::ImageMapper2D::New();
- newMapper->SetDataTreeNode(node);
+ if((dynamic_cast<Image*>(data)!=NULL))
+ {
+ mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(data);
+ newMapper = mitk::ImageMapper2D::New();
+ newMapper->SetDataTreeNode(node);
+ }
+ else if((dynamic_cast<Geometry2DData*>(data)!=NULL))
+ {
+ newMapper = mitk::Geometry2DDataMapper2D::New();
+ newMapper->SetDataTreeNode(node);
+ }
+ else if((dynamic_cast<Surface*>(data)!=NULL))
+ {
+ newMapper = mitk::SurfaceMapper2D::New();
+ // cast because SetDataTreeNode is not virtual
+ mitk::SurfaceMapper2D *castedMapper = (mitk::SurfaceMapper2D*)newMapper.GetPointer();
+ castedMapper->SetDataTreeNode(node);
+ }
+ else if((dynamic_cast<PointSet*>(data)!=NULL))
+ {
+ newMapper = mitk::PointSetMapper2D::New();
+ newMapper->SetDataTreeNode(node);
+ }
}
- else if((dynamic_cast<Geometry2DData*>(data)!=NULL))
+ else if ( id == mitk::BaseRenderer::Standard3D )
{
- newMapper = mitk::Geometry2DDataMapper2D::New();
- newMapper->SetDataTreeNode(node);
- }
- else if((dynamic_cast<Surface*>(data)!=NULL))
- {
- newMapper = mitk::SurfaceMapper2D::New();
- // cast because SetDataTreeNode is not virtual
- mitk::SurfaceMapper2D *castedMapper = (mitk::SurfaceMapper2D*)newMapper.GetPointer();
- castedMapper->SetDataTreeNode(node);
- }
- else if((dynamic_cast<PointSet*>(data)!=NULL))
- {
- newMapper = mitk::PointSetMapper2D::New();
- newMapper->SetDataTreeNode(node);
- }
- }
- else if ( id == mitk::BaseRenderer::Standard3D )
- {
- if((dynamic_cast<Image*>(data) != NULL))
- {
- mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(data);
- if (image->GetPixelType().GetNumberOfComponents() <= 1)
+ if((dynamic_cast<Image*>(data) != NULL))
{
- newMapper = mitk::VolumeDataVtkMapper3D::New();
+ mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(data);
+ if (image->GetPixelType().GetNumberOfComponents() <= 1)
+ {
+ newMapper = mitk::VolumeDataVtkMapper3D::New();
+ newMapper->SetDataTreeNode(node);
+ }
+ else
+ {
+ //newMapper = mitk::VectorImageVtkGlyphMapper3D::New();
+ //newMapper->SetDataTreeNode(node);
+ }
+ }
+ else if((dynamic_cast<Geometry2DData*>(data)!=NULL))
+ {
+ newMapper = mitk::Geometry2DDataVtkMapper3D::New();
newMapper->SetDataTreeNode(node);
}
- else
+ else if((dynamic_cast<Surface*>(data)!=NULL))
{
- //newMapper = mitk::VectorImageVtkGlyphMapper3D::New();
- //newMapper->SetDataTreeNode(node);
+ newMapper = mitk::SurfaceVtkMapper3D::New();
+ newMapper->SetDataTreeNode(node);
}
+ else if((dynamic_cast<PointSet*>(data)!=NULL))
+ {
+ newMapper = mitk::PointSetVtkMapper3D::New();
+ //newMapper = mitk::EnhancedPointSetVtkMapper3D::New(); // <-- use this if you want to try the new work in progres point set mapper
+ newMapper->SetDataTreeNode(node);
+ }
}
- else if((dynamic_cast<Geometry2DData*>(data)!=NULL))
- {
- newMapper = mitk::Geometry2DDataVtkMapper3D::New();
- newMapper->SetDataTreeNode(node);
- }
- else if((dynamic_cast<Surface*>(data)!=NULL))
- {
- newMapper = mitk::SurfaceVtkMapper3D::New();
- newMapper->SetDataTreeNode(node);
- }
- else if((dynamic_cast<PointSet*>(data)!=NULL))
- {
- newMapper = mitk::PointSetVtkMapper3D::New();
- //newMapper = mitk::EnhancedPointSetVtkMapper3D::New(); // <-- use this if you want to try the new work in progres point set mapper
- newMapper->SetDataTreeNode(node);
- }
}
return newMapper;
}
#define EXTERNAL_FILE_EXTENSIONS \
- "All known formats(*.dcm *.DCM *.dc3 *.DC3 *.gdcm *.ima *.mhd *.mps *.pic *.pic.gz *.bmp *.png *.jpg *.tiff *.pvtk *.stl *.vtk *.vtp *.vtu *.obj *.vti *.hdr);;" \
+ "All known formats(*.dcm *.DCM *.dc3 *.DC3 *.gdcm *.ima *.mhd *.mps *.pic *.pic.gz *.bmp *.png *.jpg *.tiff *.pvtk *.stl *.vtk *.vtp *.vtu *.obj *.vti *.hdr *.nrrd *.nhdr *.dwi *.hdwi *.qball *.hqball);;" \
"DICOM files(*.dcm *.DCM *.dc3 *.DC3 *.gdcm);;" \
"DKFZ Pic (*.seq *.pic *.pic.gz *.seq.gz);;" \
+ "NRRD Vector Images (*.nrrd *.nhdr *.dwi *.hdwi *.qball *.hqball);;" \
"Point sets (*.mps);;" \
"Sets of 2D slices (*.pic *.pic.gz *.bmp *.png *.dcm *.gdcm *.ima *.tiff);;" \
"Surface files (*.stl *.vtk *.vtp *.obj)"
#define INTERNAL_FILE_EXTENSIONS \
- "all (*.seq *.mps *.pic *.pic.gz *.seq.gz *.pvtk *.stl *.vtk *.vtp *.vtu *.obj *.vti *.ves " \
+ "all (*.seq *.mps *.pic *.pic.gz *.seq.gz *.pvtk *.stl *.vtk *.vtp *.vtu *.obj *.vti *.ves *.nrrd *.nhdr " \
"*.uvg *.dvg *.par *.dcm *.dc3 *.gdcm *.ima *.mhd *.hdr hpsonos.db HPSONOS.DB *.ssm *msm *.bmp *.png *.jpg *.tiff);;" \
"DKFZ Pic (*.seq *.pic *.pic.gz *.seq.gz);;" \
+ "NRRD Vector Images (*.nrrd *.nhdr *.dwi *.hdwi *.qball *.hqball);;" \
"Point sets (*.mps);;" \
"surface files (*.stl *.vtk *.vtp *.obj);;" \
"stl files (*.stl);;" \
@@ -300,19 +314,35 @@
"DSR files (hpsonos.db HPSONOS.DB);;" \
"DICOM files (*.dcm *.gdcm *.dc3 *.ima)"
-#define SAVE_FILE_EXTENSIONS "all (*.pic *.mhd *.vtk *.vti *.hdr *.png *.tiff *.jpg *.hdr *.bmp *.dcm *.gipl *.nii *.nrrd *.spr *.lsm)"
+#define SAVE_FILE_EXTENSIONS "all (*.pic *.mhd *.vtk *.vti *.hdr *.png *.tiff *.jpg *.hdr *.bmp *.dcm *.gipl *.nii *.nrrd *.nhdr *.spr *.lsm *.dwi *.hdwi *.qball *.hqball)"
const char* mitk::CoreObjectFactory::GetFileExtensions()
{
- return EXTERNAL_FILE_EXTENSIONS;
+ std::string fileExtensions(EXTERNAL_FILE_EXTENSIONS);
+
+ for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) {
+ fileExtensions.append(";;").append((*it)->GetFileExtensions());
+ }
+ return fileExtensions.c_str();
};
const char* mitk::CoreObjectFactory::GetSaveFileExtensions() {
- return SAVE_FILE_EXTENSIONS;
+ std::string fileExtensions(SAVE_FILE_EXTENSIONS);
+
+ for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) {
+ fileExtensions.append(";;").append((*it)->GetFileExtensions());
+ }
+ return fileExtensions.c_str();
+
};
mitk::CoreObjectFactory::FileWriterList mitk::CoreObjectFactory::GetFileWriters() {
- return m_FileWriters;
+ FileWriterList allWriters = m_FileWriters;
+ for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) {
+ FileWriterList list2 = (*it)->GetFileWriters();
+ allWriters.merge(list2);
+ }
+ return allWriters;
}
void mitk::CoreObjectFactory::MapEvent(const mitk::Event*, const int) {
Index: mitkCoreObjectFactory.h
===================================================================
--- mitkCoreObjectFactory.h (revision 19441)
+++ mitkCoreObjectFactory.h (working copy)
@@ -32,7 +32,6 @@
public:
mitkClassMacro(CoreObjectFactory,CoreObjectFactoryBase);
itkFactorylessNewMacro(CoreObjectFactory);
- typedef std::list<mitk::FileWriterWithInformation::Pointer> FileWriterList;
virtual Mapper::Pointer CreateMapper(mitk::DataTreeNode* node, MapperSlotId slotId);
virtual void SetDefaultProperties(mitk::DataTreeNode* node);
virtual const char* GetFileExtensions();
@@ -40,10 +39,12 @@
virtual FileWriterList GetFileWriters();
virtual itk::Object::Pointer CreateCoreObject( const std::string& className );
virtual void MapEvent(const mitk::Event* event, const int eventID);
+ virtual void RegisterExtraFactory(CoreObjectFactoryBase::Pointer factory);
static Pointer GetInstance();
protected:
CoreObjectFactory();
-
+ typedef std::list<mitk::CoreObjectFactoryBase::Pointer> ExtraFactoriesList;
+ ExtraFactoriesList m_ExtraFactories;
static FileWriterList m_FileWriters;
};
Index: mitkCoreObjectFactoryBase.h
===================================================================
--- mitkCoreObjectFactoryBase.h (revision 19441)
+++ mitkCoreObjectFactoryBase.h (working copy)
@@ -21,6 +21,7 @@
#include "mitkMapper.h"
#include <itkObjectFactoryBase.h>
#include <itkVersion.h>
+#include "mitkFileWriterWithInformation.h"
namespace mitk {
@@ -31,11 +32,13 @@
//## This interface can be implemented by factories which add new mapper classes or extend the
//## data tree deserialization mechanism.
-class MITK_CORE_EXPORT CoreObjectFactoryBase : public itk::ObjectFactoryBase
+class CoreObjectFactoryBase : public itk::ObjectFactoryBase
{
public:
+ typedef std::list<mitk::FileWriterWithInformation::Pointer> FileWriterList;
mitkClassMacro(CoreObjectFactoryBase,itk::ObjectFactoryBase);
virtual Mapper::Pointer CreateMapper(mitk::DataTreeNode* node, MapperSlotId slotId) = 0;
+ virtual void SetDefaultProperties(mitk::DataTreeNode* node) = 0;
virtual itk::Object::Pointer CreateCoreObject( const std::string& className ) = 0;
virtual const char* GetFileExtensions() = 0;
virtual const char* GetSaveFileExtensions() = 0;
@@ -47,6 +50,11 @@
{
return "Core Object Factory";
}
+ FileWriterList GetFileWriters() {
+ return m_FileWriters;
+ }
+ protected:
+ FileWriterList m_FileWriters;
};
template <class T>

File Metadata

Mime Type
text/plain
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
209
Default Alt Text
modification_coreObjectFactory.diff (10 KB)

Event Timeline

core modification patch for coreObjectFactory