ITK  5.4.0
Insight Toolkit
Classes | Public Types | Public Member Functions | Private Types | Private Attributes | Static Private Attributes | List of all members
itk::ImageBufferRange< TImage > Class Template Referencefinal

#include <itkImageBufferRange.h>

Detailed Description

template<typename TImage>
class itk::ImageBufferRange< TImage >

Modern C++11 range to iterate over the pixels of an image. Designed to conform to Standard C++ Iterator requirements, so that it can be used in range-based for loop, and passed to Standard C++ algorithms.

The following example adds 42 to each pixel, using a range-based for loop:

ImageBufferRange range{ *image };
for (auto&& pixel : range)
{
pixel = pixel + 42;
}
ImageBufferRange()=default

The following example prints the values of the pixels:

for (const auto pixel : range)
{
std::cout << pixel << std::endl;
}
Author
Niels Dekker, LKEB, Leiden University Medical Center
See also
ImageIterator
ImageConstIterator
IndexRange
ShapedImageNeighborhoodRange

Definition at line 73 of file itkImageBufferRange.h.

Classes

class  AccessorFunctorInitializer
 
struct  EmptyAccessorFunctor
 
class  IteratorInitializer
 
class  PixelProxy
 
class  PixelProxy< false, TDummy >
 
class  PixelProxy< true, TDummy >
 
class  QualifiedIterator
 

Public Types

using const_iterator = std::conditional_t< UsingPointerAsIterator, const InternalPixelType *, QualifiedIterator< true > >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using iterator = std::conditional_t< UsingPointerAsIterator, QualifiedInternalPixelType *, QualifiedIterator< IsImageTypeConst > >
 
using reverse_iterator = std::reverse_iterator< iterator >
 

Public Member Functions

iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
const_reverse_iterator crbegin () const noexcept
 
const_reverse_iterator crend () const noexcept
 
bool empty () const noexcept
 
iterator end () const noexcept
 
 ImageBufferRange ()=default
 
reverse_iterator rbegin () const noexcept
 
reverse_iterator rend () const noexcept
 
vcl_size_t size () const noexcept
 
 ImageBufferRange (TImage &image)
 
QualifiedIterator< false >::reference operator[] (const vcl_size_t n) const noexcept
 

Private Types

using AccessorFunctorType = typename TImage::AccessorFunctorType
 
using InternalPixelType = typename TImage::InternalPixelType
 
using OptionalAccessorFunctorType = std::conditional_t< SupportsDirectPixelAccess, EmptyAccessorFunctor, AccessorFunctorType >
 
using PixelType = typename TImage::PixelType
 
using QualifiedInternalPixelType = std::conditional_t< IsImageTypeConst, const InternalPixelType, InternalPixelType >
 

Private Attributes

QualifiedInternalPixelTypem_ImageBufferPointer = nullptr
 
SizeValueType m_NumberOfPixels = 0
 
OptionalAccessorFunctorType m_OptionalAccessorFunctor
 

Static Private Attributes

static constexpr bool IsImageTypeConst = std::is_const_v<TImage>
 
static constexpr bool SupportsDirectPixelAccess
 
static constexpr bool UsingPointerAsIterator = SupportsDirectPixelAccess
 

Member Typedef Documentation

◆ AccessorFunctorType

template<typename TImage >
using itk::ImageBufferRange< TImage >::AccessorFunctorType = typename TImage::AccessorFunctorType
private

Definition at line 78 of file itkImageBufferRange.h.

◆ const_iterator

template<typename TImage >
using itk::ImageBufferRange< TImage >::const_iterator = std::conditional_t<UsingPointerAsIterator, const InternalPixelType *, QualifiedIterator<true> >

Definition at line 550 of file itkImageBufferRange.h.

◆ const_reverse_iterator

template<typename TImage >
using itk::ImageBufferRange< TImage >::const_reverse_iterator = std::reverse_iterator<const_iterator>

Definition at line 554 of file itkImageBufferRange.h.

◆ InternalPixelType

template<typename TImage >
using itk::ImageBufferRange< TImage >::InternalPixelType = typename TImage::InternalPixelType
private

Definition at line 77 of file itkImageBufferRange.h.

◆ iterator

template<typename TImage >
using itk::ImageBufferRange< TImage >::iterator = std::conditional_t<UsingPointerAsIterator, QualifiedInternalPixelType *, QualifiedIterator<IsImageTypeConst> >

Definition at line 551 of file itkImageBufferRange.h.

◆ OptionalAccessorFunctorType

template<typename TImage >
using itk::ImageBufferRange< TImage >::OptionalAccessorFunctorType = std::conditional_t<SupportsDirectPixelAccess, EmptyAccessorFunctor, AccessorFunctorType>
private

Definition at line 95 of file itkImageBufferRange.h.

◆ PixelType

template<typename TImage >
using itk::ImageBufferRange< TImage >::PixelType = typename TImage::PixelType
private

Definition at line 76 of file itkImageBufferRange.h.

◆ QualifiedInternalPixelType

template<typename TImage >
using itk::ImageBufferRange< TImage >::QualifiedInternalPixelType = std::conditional_t<IsImageTypeConst, const InternalPixelType, InternalPixelType>
private

Definition at line 487 of file itkImageBufferRange.h.

◆ reverse_iterator

template<typename TImage >
using itk::ImageBufferRange< TImage >::reverse_iterator = std::reverse_iterator<iterator>

Definition at line 553 of file itkImageBufferRange.h.

Constructor & Destructor Documentation

◆ ImageBufferRange() [1/2]

template<typename TImage >
itk::ImageBufferRange< TImage >::ImageBufferRange ( )
default

Explicitly-defaulted default-constructor. Constructs an empty range.

Note
The other five "special member functions" (copy-constructor, copy-assignment operator, move-constructor, move-assignment operator, and destructor) are defaulted implicitly, following the C++ "Rule of Zero".

◆ ImageBufferRange() [2/2]

template<typename TImage >
itk::ImageBufferRange< TImage >::ImageBufferRange ( TImage &  image)
inlineexplicit

Specifies a range of the pixels of an image.

Note
This constructor supports class template argument deduction (CTAD).

Definition at line 568 of file itkImageBufferRange.h.

Member Function Documentation

◆ begin()

template<typename TImage >
iterator itk::ImageBufferRange< TImage >::begin ( ) const
inlinenoexcept

◆ cbegin()

template<typename TImage >
const_iterator itk::ImageBufferRange< TImage >::cbegin ( ) const
inlinenoexcept

Returns a const iterator to the first pixel. Provides only read-only access to the pixel data.

Definition at line 598 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::begin().

◆ cend()

template<typename TImage >
const_iterator itk::ImageBufferRange< TImage >::cend ( ) const
inlinenoexcept

Returns a const 'end iterator' for this range.

Definition at line 605 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::end().

◆ crbegin()

template<typename TImage >
const_reverse_iterator itk::ImageBufferRange< TImage >::crbegin ( ) const
inlinenoexcept

Returns a const reverse 'begin iterator' for this range.

Definition at line 626 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::rbegin().

◆ crend()

template<typename TImage >
const_reverse_iterator itk::ImageBufferRange< TImage >::crend ( ) const
inlinenoexcept

Returns a const reverse 'end iterator' for this range.

Definition at line 633 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::rend().

◆ empty()

template<typename TImage >
bool itk::ImageBufferRange< TImage >::empty ( ) const
inlinenoexcept

Tells whether the range is empty.

Definition at line 649 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::m_NumberOfPixels.

◆ end()

template<typename TImage >
iterator itk::ImageBufferRange< TImage >::end ( ) const
inlinenoexcept

◆ operator[]()

template<typename TImage >
QualifiedIterator< false >::reference itk::ImageBufferRange< TImage >::operator[] ( const vcl_size_t  n) const
inlinenoexcept

Subscript operator. Allows random access, to the nth pixel.

Note
The return type QualifiedIterator<false>::reference is equivalent to iterator::reference.

Definition at line 659 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::begin(), and itk::ImageBufferRange< TImage >::size().

◆ rbegin()

template<typename TImage >
reverse_iterator itk::ImageBufferRange< TImage >::rbegin ( ) const
inlinenoexcept

Returns a reverse 'begin iterator' for this range.

Definition at line 612 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::end().

Referenced by itk::ImageBufferRange< TImage >::crbegin().

◆ rend()

template<typename TImage >
reverse_iterator itk::ImageBufferRange< TImage >::rend ( ) const
inlinenoexcept

Returns a reverse 'end iterator' for this range.

Definition at line 619 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::begin().

Referenced by itk::ImageBufferRange< TImage >::crend().

◆ size()

template<typename TImage >
vcl_size_t itk::ImageBufferRange< TImage >::size ( ) const
inlinenoexcept

Returns the size of the range, that is the number of pixels.

Definition at line 641 of file itkImageBufferRange.h.

References itk::ImageBufferRange< TImage >::m_NumberOfPixels.

Referenced by itk::ImageBufferRange< TImage >::operator[]().

Member Data Documentation

◆ IsImageTypeConst

template<typename TImage >
constexpr bool itk::ImageBufferRange< TImage >::IsImageTypeConst = std::is_const_v<TImage>
staticconstexprprivate

Definition at line 485 of file itkImageBufferRange.h.

◆ m_ImageBufferPointer

template<typename TImage >
QualifiedInternalPixelType* itk::ImageBufferRange< TImage >::m_ImageBufferPointer = nullptr
private

◆ m_NumberOfPixels

template<typename TImage >
SizeValueType itk::ImageBufferRange< TImage >::m_NumberOfPixels = 0
private

◆ m_OptionalAccessorFunctor

template<typename TImage >
OptionalAccessorFunctorType itk::ImageBufferRange< TImage >::m_OptionalAccessorFunctor
private

◆ SupportsDirectPixelAccess

template<typename TImage >
constexpr bool itk::ImageBufferRange< TImage >::SupportsDirectPixelAccess
staticconstexprprivate
Initial value:
=
std::is_same_v<PixelType, InternalPixelType> &&
std::is_same_v<typename TImage::AccessorType, DefaultPixelAccessor<PixelType>> &&
std::is_same_v<AccessorFunctorType, DefaultPixelAccessorFunctor<std::remove_const_t<TImage>>>

Definition at line 84 of file itkImageBufferRange.h.

◆ UsingPointerAsIterator

template<typename TImage >
constexpr bool itk::ImageBufferRange< TImage >::UsingPointerAsIterator = SupportsDirectPixelAccess
staticconstexprprivate

Definition at line 90 of file itkImageBufferRange.h.


The documentation for this class was generated from the following file: