ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
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
 
struct  IsDefaultPixelAccessorFunctor
 
struct  IsDefaultPixelAccessorFunctor< DefaultPixelAccessorFunctor< TAccessorFunctorImage > >
 
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
 
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
 
 ImageBufferRange (TImage &image)
 
QualifiedIterator< false >::reference operator[] (const vcl_size_t n) const noexcept
 
reverse_iterator rbegin () const noexcept
 
reverse_iterator rend () const noexcept
 
vcl_size_t size () const noexcept
 

Private Types

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

Private Attributes

QualifiedInternalPixelType * m_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 557 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 561 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
Initial value:
std::conditional_t<UsingPointerAsIterator, QualifiedInternalPixelType *, QualifiedIterator<IsImageTypeConst>>

Definition at line 558 of file itkImageBufferRange.h.

◆ OptionalAccessorFunctorType

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

Definition at line 104 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 494 of file itkImageBufferRange.h.

◆ reverse_iterator

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

Definition at line 560 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 575 of file itkImageBufferRange.h.

References m_ImageBufferPointer, m_NumberOfPixels, and m_OptionalAccessorFunctor.

Member Function Documentation

◆ begin()

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

Returns an iterator to the first pixel.

Definition at line 586 of file itkImageBufferRange.h.

References m_ImageBufferPointer, and m_OptionalAccessorFunctor.

Referenced by cbegin(), operator[](), and rend().

◆ cbegin()

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

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

Definition at line 604 of file itkImageBufferRange.h.

References begin().

◆ cend()

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

Returns a const 'end iterator' for this range.

Definition at line 611 of file itkImageBufferRange.h.

References end().

◆ crbegin()

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

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

Definition at line 632 of file itkImageBufferRange.h.

References rbegin().

◆ crend()

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

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

Definition at line 639 of file itkImageBufferRange.h.

References rend().

◆ empty()

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

Tells whether the range is empty.

Definition at line 655 of file itkImageBufferRange.h.

References m_NumberOfPixels.

◆ end()

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

Returns an 'end iterator' for this range.

Definition at line 593 of file itkImageBufferRange.h.

References m_ImageBufferPointer, m_NumberOfPixels, and m_OptionalAccessorFunctor.

Referenced by cend(), and rbegin().

◆ 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 666 of file itkImageBufferRange.h.

References begin(), and size().

◆ rbegin()

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

Returns a reverse 'begin iterator' for this range.

Definition at line 618 of file itkImageBufferRange.h.

References end().

Referenced by crbegin().

◆ rend()

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

Returns a reverse 'end iterator' for this range.

Definition at line 625 of file itkImageBufferRange.h.

References begin().

Referenced by crend().

◆ size()

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

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

Definition at line 647 of file itkImageBufferRange.h.

References m_NumberOfPixels.

Referenced by operator[]().

Member Data Documentation

◆ IsImageTypeConst

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

Definition at line 492 of file itkImageBufferRange.h.

◆ m_ImageBufferPointer

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

Definition at line 551 of file itkImageBufferRange.h.

Referenced by begin(), end(), and ImageBufferRange().

◆ m_NumberOfPixels

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

Definition at line 554 of file itkImageBufferRange.h.

Referenced by empty(), end(), ImageBufferRange(), and size().

◆ m_OptionalAccessorFunctor

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

Definition at line 548 of file itkImageBufferRange.h.

Referenced by begin(), end(), and ImageBufferRange().

◆ SupportsDirectPixelAccess

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

Definition at line 93 of file itkImageBufferRange.h.

◆ UsingPointerAsIterator

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

Definition at line 99 of file itkImageBufferRange.h.


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