Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MITKTIMEHELPER_H_HEADER_INCLUDED_C1C2FCD2
00020 #define MITKTIMEHELPER_H_HEADER_INCLUDED_C1C2FCD2
00021
00022 namespace mitk
00023 {
00024
00025
00026
00027 template <class TOutputRegion, class TInputRegion>
00028 void ITK_EXPORT GenerateTimeInInputRegion(const mitk::TimeSlicedGeometry *outputTimeGeometry, const TOutputRegion& outputRegion, const mitk::TimeSlicedGeometry *inputTimeGeometry, TInputRegion& inputRegion)
00029 {
00030 assert(outputTimeGeometry!=NULL);
00031 assert(inputTimeGeometry!=NULL);
00032
00033
00034 ScalarType timeInMS = outputTimeGeometry->TimeStepToMS(outputRegion.GetIndex(3));
00035 int timestep = inputTimeGeometry->MSToTimeStep( timeInMS );
00036 if( ( timeInMS > ScalarTypeNumericTraits::NonpositiveMin() ) && ( inputTimeGeometry->IsValidTime( timestep ) ) )
00037 inputRegion.SetIndex( 3, timestep );
00038 else
00039 inputRegion.SetIndex( 3, 0 );
00040
00041 timeInMS = outputTimeGeometry->TimeStepToMS(outputRegion.GetIndex(3)+outputRegion.GetSize(3)-1);
00042 timestep = inputTimeGeometry->MSToTimeStep( timeInMS );
00043 if( ( timeInMS > ScalarTypeNumericTraits::NonpositiveMin() ) && ( outputTimeGeometry->IsValidTime( timestep ) ) )
00044 inputRegion.SetSize( 3, timestep - inputRegion.GetIndex(3) + 1 );
00045 else
00046 inputRegion.SetSize( 3, 1 );
00047 }
00048
00049
00050
00051
00052 template <class TOutputData, class TInputData>
00053 void ITK_EXPORT GenerateTimeInInputRegion(const TOutputData* output, TInputData* input)
00054 {
00055 assert(output!=NULL);
00056 assert(input!=NULL);
00057
00058 const typename TOutputData::RegionType& outputRegion = output->GetRequestedRegion();
00059 typename TInputData::RegionType inputRegion;
00060
00061 if(outputRegion.GetSize(3)<1)
00062 {
00063 typename TInputData::RegionType::SizeType inputsize;
00064 inputsize.Fill(0);
00065 inputRegion.SetSize(inputsize);
00066 input->SetRequestedRegion( &inputRegion );
00067 }
00068
00069
00070 inputRegion = input->GetRequestedRegion();
00071 GenerateTimeInInputRegion(output->GetTimeSlicedGeometry(), outputRegion, input->GetTimeSlicedGeometry(), inputRegion);
00072 input->SetRequestedRegion( &inputRegion );
00073 }
00074
00075 }
00076
00077
00078
00079 #include "MitkExtExports.h"
00080
00081
00082 #endif // MITKTIMEHELPER_H_HEADER_INCLUDED_C1C2FCD2