1 /*========================================================================= 2 * 3 * Copyright Insight Software Consortium 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0.txt 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 *=========================================================================*/ 18 #ifndef itkImageRegionSplitterSlowDimension_h 19 #define itkImageRegionSplitterSlowDimension_h 20 21 #include "itkImageRegionSplitterBase.h" 22 23 namespace itk 24 { 25 26 /** \class ImageRegionSplitterSlowDimension 27 * \brief Divide an image region along the slowest dimension 28 * 29 * ImageRegionSplitterSlowDimension divides an ImageRegion into smaller regions. 30 * ImageRegionSplitterSlowDimension is the default splitter for many situations. 31 * 32 * This ImageRegionSplitterSlowDimension class divides a region along the 33 * outermost or slowest dimension. If the outermost dimension has size 34 * 1 (i.e. a volume with a single slice), the ImageRegionSplitter will 35 * divide the region along the next outermost dimension. If that 36 * dimension has size 1, the process continues with the next outermost 37 * dimension. 38 * 39 * \sa ImageRegionSplitterDirection 40 * 41 * \ingroup ITKSystemObjects 42 * \ingroup DataProcessing 43 * \ingroup ITKCommon 44 */ 45 46 class ITKCommon_EXPORT ImageRegionSplitterSlowDimension 47 :public ImageRegionSplitterBase 48 { 49 public: 50 ITK_DISALLOW_COPY_AND_ASSIGN(ImageRegionSplitterSlowDimension); 51 52 /** Standard class type aliases. */ 53 using Self = ImageRegionSplitterSlowDimension; 54 using Superclass = ImageRegionSplitterBase; 55 using Pointer = SmartPointer< Self >; 56 using ConstPointer = SmartPointer< const Self >; 57 58 /** Method for creation through the object factory. */ 59 itkNewMacro(Self); 60 61 /** Run-time type information (and related methods). */ 62 itkTypeMacro(ImageRegionSplitterSlowDimension, ImageRegionSplitterBase); 63 64 65 protected: 66 ImageRegionSplitterSlowDimension(); 67 68 unsigned int GetNumberOfSplitsInternal( unsigned int dim, 69 const IndexValueType regionIndex[], 70 const SizeValueType regionSize[], 71 unsigned int requestedNumber ) const override; 72 73 unsigned int GetSplitInternal( unsigned int dim, 74 unsigned int i, 75 unsigned int numberOfPieces, 76 IndexValueType regionIndex[], 77 SizeValueType regionSize[] ) const override; 78 }; 79 } // end namespace itk 80 81 #endif 82