13 #ifndef mitkDataCollectionSingleImageIterator_CXX 14 #define mitkDataCollectionSingleImageIterator_CXX 19 template <
typename TDataType,
int TImageDimension>
22 m_Collection(collection),
23 m_ImageName(imageName),
25 m_IteratingImages(true),
28 m_CurrentSingleCollectionIterator(nullptr)
33 template <
typename TDataType,
int TImageDimension>
40 m_IteratingImages =
false;
50 typename ImageType::Pointer itkImage = ImageType::New();
52 itk::DataObject::Pointer itkObject =
dynamic_cast<itk::DataObject*
>(itkImage.GetPointer());
53 m_Collection->
SetData(itkObject, m_ImageName);
62 if (m_Image ==
nullptr)
65 m_CurrentSingleCollectionIterator = GetNextDataCollectionIterator(m_CurrentElement);
66 if (m_Image ==
nullptr)
71 m_Image = m_CurrentSingleCollectionIterator->GetImage();
76 template <
typename TDataType,
int TImageDimension>
84 template <
typename TDataType,
int TImageDimension>
93 template <
typename TDataType,
int TImageDimension>
102 template <
typename TDataType,
int TImageDimension>
107 return m_CurrentIndex;
110 template <
typename TDataType,
int TImageDimension>
115 if (m_IteratingImages)
121 return m_Collection->
IndexToName(m_CurrentElement) +
"/" + m_CurrentSingleCollectionIterator->GetFilePrefix();
125 template <
typename TDataType,
int TImageDimension>
131 if (m_CurrentSingleCollectionIterator !=
nullptr)
133 delete m_CurrentSingleCollectionIterator;
134 m_CurrentSingleCollectionIterator =
nullptr;
136 m_CurrentElement = 0;
138 m_CurrentSingleCollectionIterator = GetNextDataCollectionIterator(m_CurrentElement);
139 if (m_CurrentSingleCollectionIterator ==
nullptr)
147 m_CurrentSingleCollectionIterator->NextObject();
148 if (m_CurrentSingleCollectionIterator->IsAtEnd())
150 delete m_CurrentSingleCollectionIterator;
151 m_CurrentSingleCollectionIterator = GetNextDataCollectionIterator(m_CurrentElement+1);
153 if (m_CurrentSingleCollectionIterator ==
nullptr)
161 template <
typename TDataType,
int TImageDimension>
169 template <
typename TDataType,
int TImageDimension>
176 itk::DataObject::Pointer dataObject =
dynamic_cast<itk::DataObject*
>(
image);
177 m_Collection->
AddData(dataObject, name);
180 m_CurrentSingleCollectionIterator->AddImage(image, name);
184 template <
typename TDataType,
int TImageDimension>
191 while (index < m_Collection->Size() && iterator ==
nullptr)
195 if (collection !=
nullptr)
210 m_CurrentElement = index;
211 if (iterator !=
nullptr)
vcl_size_t AddData(DataObject::Pointer data, std::string name, std::string filePath="")
AddData Add a data item.
DataCollectionSingleImageIterator(mitk::DataCollection *collection, std::string imageName)
itk::Image< TDataType, ImageDimension > ImageType
void SetData(itk::DataObject::Pointer data, vcl_size_t index)
SetData - set/update data item by index.
void AddImage(ImageType *image, std::string name)
bool HasElement(std::string name)
HasElement - check if element with this name exists in collection.
Image class for storing images.
mitk::Image::Pointer image
std::string IndexToName(vcl_size_t index) const
IndexToName - Get name from index.
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
std::string GetFilePrefix()
itk::DataObject::Pointer GetData(vcl_size_t index)
GetData Get original data by index.