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 00019 #include "mitkSurfaceSource.h" 00020 #include "mitkSurface.h" 00021 00022 mitk::SurfaceSource::SurfaceSource() 00023 { 00024 // Create the output. We use static_cast<> here because we know the default 00025 // output must be of type TOutputImage 00026 mitk::Surface::Pointer output 00027 = static_cast<mitk::Surface*>(this->MakeOutput(0).GetPointer()); 00028 00029 Superclass::SetNumberOfRequiredOutputs(1); 00030 Superclass::SetNthOutput(0, output.GetPointer()); 00031 } 00032 00033 mitk::SurfaceSource::~SurfaceSource() 00034 { 00035 } 00036 00037 mitk::SurfaceSource::DataObjectPointer mitk::SurfaceSource::MakeOutput(unsigned int /*idx*/) 00038 { 00039 return static_cast<itk::DataObject*>(mitk::Surface::New().GetPointer()); 00040 } 00041 00042 mitk::Surface* mitk::SurfaceSource::GetOutput() 00043 { 00044 if (this->GetNumberOfOutputs() < 1) 00045 { 00046 return 0; 00047 } 00048 00049 return static_cast<mitk::Surface*> 00050 (this->BaseProcess::GetOutput(0)); 00051 } 00052 00053 mitk::Surface* mitk::SurfaceSource::GetOutput(unsigned int idx) 00054 { 00055 return static_cast<mitk::Surface*> 00056 (this->ProcessObject::GetOutput(idx)); 00057 } 00058 00059 void mitk::SurfaceSource::SetOutput(mitk::Surface* output) 00060 { 00061 itkWarningMacro(<< "SetOutput(): This method is slated to be removed from ITK. Please use GraftOutput() in possible combination with DisconnectPipeline() instead." ); 00062 BaseProcess::SetNthOutput(0, output); 00063 } 00064 00065 void mitk::SurfaceSource::GraftOutput(mitk::Surface* graft) 00066 { 00067 this->GraftNthOutput(0, graft); 00068 } 00069 00070 void mitk::SurfaceSource::GraftNthOutput(unsigned int idx, mitk::Surface *graft) 00071 { 00072 if (idx < this->GetNumberOfOutputs()) 00073 { 00074 mitk::Surface * output = this->GetOutput(idx); 00075 00076 if (output && graft) 00077 { 00078 // grab a handle to the bulk data of the specified data object 00079 // output->SetPixelContainer( graft->GetPixelContainer() ); @FIXME!!!! 00080 00081 // copy the region ivars of the specified data object 00082 output->SetRequestedRegion( graft );//graft->GetRequestedRegion() ); 00083 // output->SetLargestPossibleRegion( graft->GetLargestPossibleRegion() ); @FIXME!!!! 00084 // output->SetBufferedRegion( graft->GetBufferedRegion() ); @FIXME!!!! 00085 00086 // copy the meta-information 00087 output->CopyInformation( graft ); 00088 } 00089 } 00090 } 00091