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 "mitkNavigationDataDisplacementFilter.h" 00019 #include "mitkPropertyList.h" 00020 #include "mitkProperties.h" 00021 00022 mitk::NavigationDataDisplacementFilter::NavigationDataDisplacementFilter() 00023 : mitk::NavigationDataToNavigationDataFilter() 00024 { 00025 m_Offset[0] = 0.0; 00026 m_Offset[1] = 0.0; 00027 m_Offset[2] = 0.0; 00028 } 00029 00030 00031 mitk::NavigationDataDisplacementFilter::~NavigationDataDisplacementFilter() 00032 { 00033 } 00034 00035 00036 void mitk::NavigationDataDisplacementFilter::GenerateData() 00037 { 00038 /* update outputs with tracking data from tools */ 00039 for (unsigned int i = 0; i < this->GetNumberOfOutputs() ; ++i) 00040 { 00041 mitk::NavigationData* output = this->GetOutput(i); 00042 assert(output); 00043 const mitk::NavigationData* input = this->GetInput(i); 00044 assert(input); 00045 00046 if (input->IsDataValid() == false) 00047 { 00048 output->SetDataValid(false); 00049 continue; 00050 } 00051 output->Graft(input); // First, copy all information from input to output 00052 output->SetPosition(input->GetPosition() + m_Offset); // Then change the member(s): add offset to position of navigation data 00053 output->SetDataValid(true); // operation was successful, therefore data of output is valid. 00054 // don't change anything else here 00055 } 00056 } 00057 00058 00059 void mitk::NavigationDataDisplacementFilter::SetParameters( const mitk::PropertyList* p ) 00060 { 00061 if (p == NULL) 00062 return; 00063 mitk::Vector3D v; 00064 if (p->GetPropertyValue<mitk::Vector3D>("NavigationDataDisplacementFilter_Offset", v) == true) // search for Offset parameter 00065 this->SetOffset(v); // apply if found; 00066 } 00067 00068 00069 mitk::PropertyList::ConstPointer mitk::NavigationDataDisplacementFilter::GetParameters() const 00070 { 00071 mitk::PropertyList::Pointer p = mitk::PropertyList::New(); 00072 p->SetProperty("NavigationDataDisplacementFilter_Offset", mitk::Vector3DProperty::New(this->GetOffset())); // store Offset parameter 00073 return mitk::PropertyList::ConstPointer(p); 00074 }