00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #include "mitkNavigationDataSource.h" 00019 00020 00021 00022 mitk::NavigationDataSource::NavigationDataSource() 00023 : itk::ProcessObject() 00024 { 00025 } 00026 00027 00028 mitk::NavigationDataSource::~NavigationDataSource() 00029 { 00030 } 00031 00032 00033 mitk::NavigationData* mitk::NavigationDataSource::GetOutput() 00034 { 00035 if (this->GetNumberOfOutputs() < 1) 00036 return NULL; 00037 00038 return static_cast<NavigationData*>(this->ProcessObject::GetOutput(0)); 00039 } 00040 00041 00042 mitk::NavigationData* mitk::NavigationDataSource::GetOutput(unsigned int idx) 00043 { 00044 if (this->GetNumberOfOutputs() < 1) 00045 return NULL; 00046 return static_cast<NavigationData*>(this->ProcessObject::GetOutput(idx)); 00047 } 00048 00049 00050 mitk::NavigationData* mitk::NavigationDataSource::GetOutput(std::string navDataName) 00051 { 00052 DataObjectPointerArray& outputs = this->GetOutputs(); 00053 for (DataObjectPointerArray::iterator it = outputs.begin(); it != outputs.end(); ++it) 00054 if (navDataName == (static_cast<NavigationData*>(it->GetPointer()))->GetName()) 00055 return static_cast<NavigationData*>(it->GetPointer()); 00056 return NULL; 00057 } 00058 00059 itk::ProcessObject::DataObjectPointerArraySizeType mitk::NavigationDataSource::GetOutputIndex( std::string navDataName ) 00060 { 00061 DataObjectPointerArray& outputs = this->GetOutputs(); 00062 for (DataObjectPointerArray::size_type i = 0; i < outputs.size(); ++i) 00063 if (navDataName == (static_cast<NavigationData*>(outputs.at(i).GetPointer()))->GetName()) 00064 return i; 00065 throw std::invalid_argument("output name does not exist"); 00066 } 00067 00068 void mitk::NavigationDataSource::GraftOutput(itk::DataObject *graft) 00069 { 00070 this->GraftNthOutput(0, graft); 00071 } 00072 00073 00074 void mitk::NavigationDataSource::GraftNthOutput(unsigned int idx, itk::DataObject *graft) 00075 { 00076 if ( idx >= this->GetNumberOfOutputs() ) 00077 { 00078 itkExceptionMacro(<<"Requested to graft output " << idx << 00079 " but this filter only has " << this->GetNumberOfOutputs() << " Outputs."); 00080 } 00081 00082 if ( !graft ) 00083 { 00084 itkExceptionMacro(<<"Requested to graft output with a NULL pointer object" ); 00085 } 00086 00087 itk::DataObject* output = this->GetOutput(idx); 00088 if ( !output ) 00089 { 00090 itkExceptionMacro(<<"Requested to graft output that is a NULL pointer" ); 00091 } 00092 // Call Graft on NavigationData to copy member data 00093 output->Graft( graft ); 00094 } 00095 00096 00097 itk::ProcessObject::DataObjectPointer mitk::NavigationDataSource::MakeOutput( unsigned int /*idx */) 00098 { 00099 mitk::NavigationData::Pointer p = mitk::NavigationData::New(); 00100 return static_cast<itk::DataObject*>(p.GetPointer()); 00101 } 00102 00103 00104 mitk::PropertyList::ConstPointer mitk::NavigationDataSource::GetParameters() const 00105 { 00106 mitk::PropertyList::Pointer p = mitk::PropertyList::New(); 00107 // add properties to p like this: 00108 //p->SetProperty("MyFilter_MyParameter", mitk::PropertyDataType::New(m_MyParameter)); 00109 return mitk::PropertyList::ConstPointer(p); 00110 }