ITK  4.0.0
Insight Segmentation and Registration Toolkit
itkTemporalProcessObject.h
Go to the documentation of this file.
00001 /*=========================================================================
00002  *
00003  *  Copyright Insight Software Consortium
00004  *
00005  *  Licensed under the Apache License, Version 2.0 (the "License");
00006  *  you may not use this file except in compliance with the License.
00007  *  You may obtain a copy of the License at
00008  *
00009  *         http://www.apache.org/licenses/LICENSE-2.0.txt
00010  *
00011  *  Unless required by applicable law or agreed to in writing, software
00012  *  distributed under the License is distributed on an "AS IS" BASIS,
00013  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  *  See the License for the specific language governing permissions and
00015  *  limitations under the License.
00016  *
00017  *=========================================================================*/
00018 #ifndef __itkTemporalProcessObject_h
00019 #define __itkTemporalProcessObject_h
00020 
00021 #include "itkProcessObject.h"
00022 #include "itkTemporalRegion.h"
00023 
00024 namespace itk
00025 {
00026 
00028 class Region;
00029 class TemporalDataObject;
00030 
00065 class TemporalProcessObject : public ProcessObject
00066 {
00067 public:
00068 
00069   /*-TYPEDEFS----------------------------------------------------------------*/
00070 
00072   typedef TemporalProcessObject      Self;
00073   typedef ProcessObject              Superclass;
00074   typedef SmartPointer< Self >       Pointer;
00075   typedef SmartPointer< const Self > ConstPointer;
00076 
00078   itkTypeMacro(TemporalProcessObject, ProcessObject);
00079 
00080   /*-PUBLIC METHODS----------------------------------------------------------*/
00081 
00084   virtual void EnlargeOutputRequestedRegion(DataObject* output);
00085 
00086   virtual void GenerateOutputRequestedRegion(DataObject* output);
00087 
00088   virtual void GenerateInputRequestedRegion();
00089 
00093   itkGetMacro(UnitInputNumberOfFrames, SizeValueType);
00094 
00098   itkGetMacro(UnitOutputNumberOfFrames, SizeValueType);
00099 
00105   virtual void UpdateOutputInformation();
00106 
00118   virtual void UpdateOutputData(DataObject* output);
00119 
00130   virtual void GenerateData();
00131 
00138   virtual void TemporalStreamingGenerateData();
00139 
00140 protected:
00141 
00142   /*-PROTECTED METHODS-------------------------------------------------------*/
00143 
00145   TemporalProcessObject();
00146 
00148   virtual ~TemporalProcessObject(){
00149   }
00150 
00152   void PrintSelf(std::ostream & os, Indent indent) const;
00153 
00158   virtual void EnlargeOutputRequestedTemporalRegion(TemporalDataObject* output);
00159 
00167   virtual void GenerateOutputRequestedTemporalRegion(TemporalDataObject* output);
00168 
00180   virtual void GenerateInputRequestedTemporalRegion();
00181 
00190   virtual std::vector<TemporalRegion> SplitRequestedTemporalRegion();
00191 
00196   virtual void BeforeTemporalStreamingGenerateData() {
00197   }
00198 
00203   virtual void AfterTemporalStreamingGenerateData() {
00204   }
00205 
00209   virtual TemporalRegion GenerateDefaultLargestPossibleTemporalRegion();
00210 
00211   itkSetMacro(UnitInputNumberOfFrames, SizeValueType);
00212   itkSetMacro(UnitOutputNumberOfFrames, SizeValueType);
00213   itkSetMacro(FrameSkipPerOutput, OffsetValueType);
00214   itkSetMacro(InputStencilCurrentFrameIndex, SizeValueType);
00215   itkGetMacro(InputStencilCurrentFrameIndex, SizeValueType);
00216 
00217   /*-PROTECTED MEMBERS-------------------------------------------------------*/
00218 
00221   SizeValueType  m_UnitInputNumberOfFrames;
00222   SizeValueType  m_UnitOutputNumberOfFrames;
00223 
00227   OffsetValueType  m_FrameSkipPerOutput;
00228 
00234   SizeValueType  m_InputStencilCurrentFrameIndex;
00235 
00236 private:
00237   TemporalProcessObject(const Self &); //purposely not implemented
00238   void operator=(const Self &);        //purposely not implemented
00239 
00240 };  // end class TemporalProcessObject
00241 
00242 } // end namespace itk
00243 
00244 #endif
00245