00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkImageRandomNonRepeatingIteratorWithIndex.h,v $ 00005 Language: C++ 00006 Date: $Date: 2008-10-18 21:13:25 $ 00007 Version: $Revision: 1.3 $ 00008 00009 Copyright (c) Insight Software Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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 Contributed by Rupert Brooks 00017 00018 =========================================================================*/ 00019 #ifndef __itkImageRandomNonRepeatingIteratorWithIndex_h 00020 #define __itkImageRandomNonRepeatingIteratorWithIndex_h 00021 00022 #include "itkImageRandomNonRepeatingConstIteratorWithIndex.h" 00023 #include "itkImageIteratorWithIndex.h" 00024 00025 namespace itk 00026 { 00027 00074 template<typename TImage> 00075 class ITK_EXPORT ImageRandomNonRepeatingIteratorWithIndex : public ImageRandomNonRepeatingConstIteratorWithIndex<TImage> 00076 { 00077 public: 00079 typedef ImageRandomNonRepeatingIteratorWithIndex Self; 00080 typedef ImageRandomNonRepeatingConstIteratorWithIndex<TImage> Superclass; 00081 00083 typedef typename Superclass::IndexType IndexType; 00084 typedef typename Superclass::IndexValueType IndexValueType; 00085 typedef typename Superclass::SizeType SizeType; 00086 typedef typename Superclass::SizeValueType SizeValueType; 00087 typedef typename Superclass::OffsetType OffsetType; 00088 typedef typename Superclass::OffsetValueType OffsetValueType; 00089 typedef typename Superclass::RegionType RegionType; 00090 typedef typename Superclass::ImageType ImageType; 00091 typedef typename Superclass::PixelContainer PixelContainer; 00092 typedef typename Superclass::PixelContainerPointer PixelContainerPointer; 00093 typedef typename Superclass::InternalPixelType InternalPixelType; 00094 typedef typename Superclass::PixelType PixelType; 00095 typedef typename Superclass::AccessorType AccessorType; 00096 00097 00099 ImageRandomNonRepeatingIteratorWithIndex(); 00100 00103 ImageRandomNonRepeatingIteratorWithIndex(ImageType *ptr, const RegionType& region); 00104 00111 ImageRandomNonRepeatingIteratorWithIndex( const ImageIteratorWithIndex<TImage> &it); 00112 00114 void Set( const PixelType & value) const 00115 { this->m_PixelAccessorFunctor.Set(*(const_cast<InternalPixelType *>(this->m_Position)),value); } 00116 00120 PixelType & Value(void) 00121 { return *(const_cast<InternalPixelType *>(this->m_Position)); } 00122 00123 protected: 00126 ImageRandomNonRepeatingIteratorWithIndex( const ImageRandomNonRepeatingConstIteratorWithIndex<TImage> &it); 00127 Self & operator=(const ImageRandomNonRepeatingConstIteratorWithIndex<TImage> & it); 00129 00130 00131 }; 00132 00133 } // end namespace itk 00134 00135 #ifndef ITK_MANUAL_INSTANTIATION 00136 #include "itkImageRandomNonRepeatingIteratorWithIndex.txx" 00137 #endif 00138 00139 #endif 00140