00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkImageRegionMultidimensionalSplitter_h
00018 #define __itkImageRegionMultidimensionalSplitter_h
00019
00020 #include "itkObject.h"
00021 #include "itkRegion.h"
00022 #include "itkObjectFactory.h"
00023 #include "itkIndex.h"
00024 #include "itkSize.h"
00025 #include "itkImageRegionSplitter.h"
00026
00027 namespace itk
00028 {
00029
00059 template <unsigned int VImageDimension>
00060 class ITK_EXPORT ImageRegionMultidimensionalSplitter: public ImageRegionSplitter<VImageDimension>
00061 {
00062 public:
00064 typedef ImageRegionMultidimensionalSplitter Self;
00065 typedef ImageRegionSplitter<VImageDimension> Superclass;
00066 typedef SmartPointer<Self> Pointer;
00067 typedef SmartPointer<const Self> ConstPointer;
00068
00070 itkNewMacro(Self);
00071
00073 itkTypeMacro(ImageRegionMultidimensionalSplitter,ImageRegionSplitter);
00074
00076 itkStaticConstMacro(ImageDimension, unsigned int, VImageDimension);
00077
00079 typedef Index<VImageDimension> IndexType;
00080
00082 typedef Size<VImageDimension> SizeType;
00083
00085 typedef ImageRegion<VImageDimension> RegionType;
00086
00093 virtual unsigned int GetNumberOfSplits(const RegionType ®ion,
00094 unsigned int requestedNumber);
00095
00099 virtual RegionType GetSplit(unsigned int i, unsigned int numberOfPieces,
00100 const RegionType ®ion);
00101
00102 protected:
00103 ImageRegionMultidimensionalSplitter() {}
00104 ~ImageRegionMultidimensionalSplitter() {}
00105 void PrintSelf(std::ostream& os, Indent indent) const;
00106
00107 private:
00108 ImageRegionMultidimensionalSplitter(const Self&);
00109 void operator=(const Self&);
00110
00111 };
00112
00113
00114 }
00115
00116
00117 #define ITK_TEMPLATE_ImageRegionMultidimensionalSplitter(_, EXPORT, x, y) namespace itk { \
00118 _(1(class EXPORT ImageRegionMultidimensionalSplitter< ITK_TEMPLATE_1 x >)) \
00119 namespace Templates { typedef ImageRegionMultidimensionalSplitter< ITK_TEMPLATE_1 x > \
00120 ImageRegionMultidimensionalSplitter##y; } \
00121 }
00122
00123 #if ITK_TEMPLATE_EXPLICIT
00124 # include "Templates/itkImageRegionMultidimensionalSplitter+-.h"
00125 #endif
00126
00127 #if ITK_TEMPLATE_TXX
00128 # include "itkImageRegionMultidimensionalSplitter.txx"
00129 #endif
00130
00131 #endif
00132
00133