Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes

mitk::CoreObjectFactory Class Reference

#include <mitkCoreObjectFactory.h>

Inheritance diagram for mitk::CoreObjectFactory:
Inheritance graph
[legend]
Collaboration diagram for mitk::CoreObjectFactory:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 mitkClassMacro (CoreObjectFactory, CoreObjectFactoryBase)
 itkFactorylessNewMacro (CoreObjectFactory)
virtual Mapper::Pointer CreateMapper (mitk::DataNode *node, MapperSlotId slotId)
virtual void SetDefaultProperties (mitk::DataNode *node)
virtual const char * GetFileExtensions ()
 This method gets the supported (open) file extensions as string. This string is can then used by the QT QFileDialog widget.
virtual MultimapType GetFileExtensionsMap ()
 get the defined (open) file extension map
virtual const char * GetSaveFileExtensions ()
 This method gets the supported (save) file extensions as string. This string is can then used by the QT QFileDialog widget.
virtual MultimapType GetSaveFileExtensionsMap ()
 get the defined (save) file extension map
virtual FileWriterList GetFileWriters ()
virtual void MapEvent (const mitk::Event *event, const int eventID)
virtual void RegisterExtraFactory (CoreObjectFactoryBase *factory)

Static Public Member Functions

static Pointer GetInstance ()

Protected Types

typedef std::list
< mitk::CoreObjectFactoryBase::Pointer > 
ExtraFactoriesList

Protected Member Functions

 CoreObjectFactory ()
void MergeFileExtensions (MultimapType &fileExtensionsMap, MultimapType inputMap)
 Merge the input map into the fileExtensionsMap. Duplicate entries are removed.
void CreateFileExtensionsMap ()
 initialze the file extension entries for open and save
void CreateSaveFileExtensions ()

Protected Attributes

ExtraFactoriesList m_ExtraFactories
std::string m_FileExtensions
MultimapType m_FileExtensionsMap
std::string m_SaveFileExtensions
MultimapType m_SaveFileExtensionsMap

Static Protected Attributes

static FileWriterList m_FileWriters

Detailed Description

Definition at line 30 of file mitkCoreObjectFactory.h.


Member Typedef Documentation

typedef std::list<mitk::CoreObjectFactoryBase::Pointer> mitk::CoreObjectFactory::ExtraFactoriesList [protected]

Definition at line 50 of file mitkCoreObjectFactory.h.


Constructor & Destructor Documentation

mitk::CoreObjectFactory::CoreObjectFactory (  ) [protected]

Definition at line 119 of file mitkCoreObjectFactory.cpp.

References MITK_INFO, mitk::ImageWriterFactory::RegisterOneFactory(), mitk::PointSetWriterFactory::RegisterOneFactory(), and mitk::SurfaceVtkWriterFactory::RegisterOneFactory().

{
  static bool alreadyDone = false;
  if (!alreadyDone)
  {
    MITK_INFO << "CoreObjectFactory c'tor" << std::endl;

    itk::ObjectFactoryBase::RegisterFactory( PicFileIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( PointSetIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( STLFileIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( VtkSurfaceIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( VtkImageIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( VtiFileIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( ItkImageFileIOFactory::New() );
    itk::ObjectFactoryBase::RegisterFactory( PicVolumeTimeSeriesIOFactory::New() );

    mitk::SurfaceVtkWriterFactory::RegisterOneFactory();
    mitk::PointSetWriterFactory::RegisterOneFactory();
    mitk::ImageWriterFactory::RegisterOneFactory();

    CreateFileExtensionsMap();

    alreadyDone = true;
  }
}

Member Function Documentation

void mitk::CoreObjectFactory::CreateFileExtensionsMap (  ) [protected]

initialze the file extension entries for open and save

Definition at line 296 of file mitkCoreObjectFactory.cpp.

{
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.dcm", "DICOM files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.DCM", "DICOM files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.dc3", "DICOM files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.DC3", "DICOM files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.gdcm", "DICOM files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.seq", "DKFZ Pic"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.pic", "DKFZ Pic"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.pic.gz", "DKFZ Pic"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.mhd", "MetaImage"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.seq.gz", "DKFZ Pic"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.nrrd", "NRRD Vector Images"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.nhdr", "NRRD Vector Images"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.mps", "Point sets"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.pic", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.pic.gz", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.bmp", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.png", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.jpg", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.jpeg", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.dcm", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.gdcm", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.ima", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.tiff", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.tif", "Sets of 2D slices"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.stl", "Surface files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.vtk", "Surface files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.vtp", "Surface files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.obj", "Surface files"));
  m_FileExtensionsMap.insert(std::pair<std::string, std::string>("*.nii", "NIfTI format"));

  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.pic", "DKFZ Pic"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.mhd", "MetaImage"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.vtk", "Surface Files"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.vti", "VTK Image Data Files"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.hdr", "Image Header Files"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.png", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.tiff", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.tif", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.jpg", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.jpeg", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.bmp", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.dcm", "Sets of 2D slices"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.gipl", "UMDS GIPL Format Files"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.nii", "NIfTI format"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.nrrd", "NRRD Vector Images"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.nhdr", "NRRD Vector Images"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.spr", "Stimulate Files"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.lsm", "Microscope Images"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.dwi", "Diffusion Weighted Images"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.hdwi", "Diffusion Weighted Images"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.qbi", "Q-Ball Images"));
  m_SaveFileExtensionsMap.insert(std::pair<std::string, std::string>("*.hqbi", "Q-Ball Images"));

}
mitk::Mapper::Pointer mitk::CoreObjectFactory::CreateMapper ( mitk::DataNode node,
MapperSlotId  slotId 
) [virtual]

Implements mitk::CoreObjectFactoryBase.

Definition at line 145 of file mitkCoreObjectFactory.cpp.

References mitk::DataNode::GetData(), mitk::PointSetVtkMapper3D::New(), mitk::SurfaceVtkMapper3D::New(), mitk::Geometry2DDataVtkMapper3D::New(), mitk::VolumeDataVtkMapper3D::New(), mitk::PointSetGLMapper2D::New(), mitk::SurfaceGLMapper2D::New(), mitk::Geometry2DDataMapper2D::New(), mitk::ImageMapperGL2D::New(), mitk::SurfaceGLMapper2D::SetDataNode(), mitk::BaseRenderer::Standard2D, and mitk::BaseRenderer::Standard3D.

{
  mitk::Mapper::Pointer newMapper = NULL;
  mitk::Mapper::Pointer tmpMapper = NULL;

  // check whether extra factories provide mapper
  for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) {
    tmpMapper = (*it)->CreateMapper(node,id);
    if(tmpMapper.IsNotNull())
      newMapper = tmpMapper;
  }

  if (newMapper.IsNull()) 
  {

    mitk::BaseData *data = node->GetData();

    if ( id == mitk::BaseRenderer::Standard2D )
    {
      if((dynamic_cast<Image*>(data)!=NULL))
      {
        mitk::Image::Pointer image = dynamic_cast<mitk::Image*>(data);
        newMapper = mitk::ImageMapperGL2D::New();
        newMapper->SetDataNode(node);
      }
      else if((dynamic_cast<Geometry2DData*>(data)!=NULL))
      {
        newMapper = mitk::Geometry2DDataMapper2D::New();
        newMapper->SetDataNode(node);
      }
      else if((dynamic_cast<Surface*>(data)!=NULL))
      {
        newMapper = mitk::SurfaceGLMapper2D::New();
        // cast because SetDataNode is not virtual
        mitk::SurfaceGLMapper2D *castedMapper = dynamic_cast<mitk::SurfaceGLMapper2D*>(newMapper.GetPointer());
        castedMapper->SetDataNode(node);
      }
      else if((dynamic_cast<PointSet*>(data)!=NULL))
      {
        newMapper = mitk::PointSetGLMapper2D::New();
        newMapper->SetDataNode(node);
      }
    }
    else if ( id == mitk::BaseRenderer::Standard3D )
    {
      if((dynamic_cast<Image*>(data) != NULL))
      {
        newMapper = mitk::VolumeDataVtkMapper3D::New();
        newMapper->SetDataNode(node);
      }
      else if((dynamic_cast<Geometry2DData*>(data)!=NULL))
      {
        newMapper = mitk::Geometry2DDataVtkMapper3D::New();
        newMapper->SetDataNode(node);
      }
      else if((dynamic_cast<Surface*>(data)!=NULL))
      {
        newMapper = mitk::SurfaceVtkMapper3D::New();
        newMapper->SetDataNode(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->SetDataNode(node);
      }
    }
  }

  return newMapper;
}
void mitk::CoreObjectFactory::CreateSaveFileExtensions (  ) [protected]
const char * mitk::CoreObjectFactory::GetFileExtensions (  ) [virtual]

This method gets the supported (open) file extensions as string. This string is can then used by the QT QFileDialog widget.

Returns:
The c-string that contains the file extensions

Implements mitk::CoreObjectFactoryBase.

Definition at line 238 of file mitkCoreObjectFactory.cpp.

{
  MultimapType aMap;
  for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) 
  {
    aMap = (*it)->GetFileExtensionsMap();
    this->MergeFileExtensions(m_FileExtensionsMap, aMap);
  }
  this->CreateFileExtensions(m_FileExtensionsMap, m_FileExtensions);
  return m_FileExtensions.c_str();
}
mitk::CoreObjectFactoryBase::MultimapType mitk::CoreObjectFactory::GetFileExtensionsMap (  ) [virtual]

get the defined (open) file extension map

Returns:
the defined (open) file extension map

Implements mitk::CoreObjectFactoryBase.

Definition at line 288 of file mitkCoreObjectFactory.cpp.

{
  return m_FileExtensionsMap;
}
mitk::CoreObjectFactory::FileWriterList mitk::CoreObjectFactory::GetFileWriters (  ) [virtual]

Reimplemented from mitk::CoreObjectFactoryBase.

Definition at line 379 of file mitkCoreObjectFactory.cpp.

                                                                          {
  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;
}
mitk::CoreObjectFactory::Pointer mitk::CoreObjectFactory::GetInstance (  ) [static]
const char * mitk::CoreObjectFactory::GetSaveFileExtensions (  ) [virtual]

This method gets the supported (save) file extensions as string. This string is can then used by the QT QFileDialog widget.

Returns:
The c-string that contains the (save) file extensions

Implements mitk::CoreObjectFactoryBase.

Definition at line 358 of file mitkCoreObjectFactory.cpp.

                                                         {
  MultimapType aMap;
  for (ExtraFactoriesList::iterator it = m_ExtraFactories.begin(); it != m_ExtraFactories.end() ; it++ ) 
  {
    aMap = (*it)->GetSaveFileExtensionsMap();
    this->MergeFileExtensions(m_SaveFileExtensionsMap, aMap);

  }
  this->CreateFileExtensions(m_SaveFileExtensionsMap, m_SaveFileExtensions);
  return m_SaveFileExtensions.c_str();
};
mitk::CoreObjectFactoryBase::MultimapType mitk::CoreObjectFactory::GetSaveFileExtensionsMap (  ) [virtual]

get the defined (save) file extension map

Returns:
the defined (save) file extension map

Implements mitk::CoreObjectFactoryBase.

Definition at line 374 of file mitkCoreObjectFactory.cpp.

mitk::CoreObjectFactory::itkFactorylessNewMacro ( CoreObjectFactory   )
void mitk::CoreObjectFactory::MapEvent ( const mitk::Event event,
const int  eventID 
) [virtual]

Definition at line 387 of file mitkCoreObjectFactory.cpp.

                                                                {

}
void mitk::CoreObjectFactory::MergeFileExtensions ( MultimapType fileExtensionsMap,
MultimapType  inputMap 
) [protected]

Merge the input map into the fileExtensionsMap. Duplicate entries are removed.

Parameters:
fileExtensionsMapthe existing map, it contains value pairs like ("*.dcm", "DICOM files"),("*.dc3", "DICOM files"). This map is extented/merged with the values from the input map.
inputMapthe input map, it contains value pairs like ("*.dcm", "DICOM files"),("*.dc3", "DICOM files") returned by the extra factories.

Definition at line 258 of file mitkCoreObjectFactory.cpp.

{
  bool duplicateFound = false;
  std::pair<MultimapType::iterator, MultimapType::iterator> pairOfIter; 
  for (MultimapType::iterator it = inputMap.begin(); it != inputMap.end(); ++it)
  {
    duplicateFound = false;
    pairOfIter = fileExtensionsMap.equal_range((*it).first);
    for (MultimapType::iterator it2 = pairOfIter.first; it2 != pairOfIter.second; ++it2)
    {
      //cout << "  [" << (*it).first << ", " << (*it).second << "]" << endl;
      std::string aString = (*it2).second;
      if (aString.compare((*it).second) == 0)
      {
        //cout << "  DUP!! [" << (*it).first << ", " << (*it).second << "]" << endl;
        duplicateFound = true;
        break;
      }
    }
    if (!duplicateFound)
    {
      fileExtensionsMap.insert(std::pair<std::string, std::string>((*it).first, (*it).second));
    }
  }
}
mitk::CoreObjectFactory::mitkClassMacro ( CoreObjectFactory  ,
CoreObjectFactoryBase   
)
void mitk::CoreObjectFactory::RegisterExtraFactory ( CoreObjectFactoryBase factory ) [virtual]

Definition at line 71 of file mitkCoreObjectFactory.cpp.

References m_ExtraFactories, and MITK_INFO.

                                                                               {
  MITK_INFO << "CoreObjectFactory: registering extra factory of type " << factory->GetNameOfClass();
  m_ExtraFactories.push_back(CoreObjectFactoryBase::Pointer(factory));  
}
void mitk::CoreObjectFactory::SetDefaultProperties ( mitk::DataNode node ) [virtual]

Member Data Documentation

Definition at line 51 of file mitkCoreObjectFactory.h.

Referenced by RegisterExtraFactory().

Definition at line 53 of file mitkCoreObjectFactory.h.

Definition at line 54 of file mitkCoreObjectFactory.h.

Reimplemented from mitk::CoreObjectFactoryBase.

Definition at line 52 of file mitkCoreObjectFactory.h.

Definition at line 55 of file mitkCoreObjectFactory.h.

Definition at line 56 of file mitkCoreObjectFactory.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines