Loading [MathJax]/extensions/TeX/AMSsymbols.js
DGtal 2.0.0
DefaultConstImageRange.h
1
16
17#pragma once
18
32
33#if defined(DefaultConstImageRange_RECURSES)
34#error Recursive header files inclusion detected in DefaultConstImageRange.h
35#else // defined(DefaultConstImageRange_RECURSES)
37#define DefaultConstImageRange_RECURSES
38
39#if !defined DefaultConstImageRange_h
41#define DefaultConstImageRange_h
42
44// Inclusions
45#include "DGtal/base/ConstIteratorAdapter.h"
46#include "DGtal/base/ConstAlias.h"
47#include "DGtal/kernel/domains/CDomain.h"
48#include "DGtal/images/CTrivialConstImage.h"
49#include "DGtal/images/SetValueIterator.h"
50#include "boost/concept_check.hpp"
51#include "boost/iterator/reverse_iterator.hpp"
53
54namespace DGtal
55{
56
57
59 // class DefaultConstImageRange
61
76 template <typename TImage>
78 {
79
80
81 // ------------------------- inner types --------------------------------
82 public:
83
85 typedef typename TImage::Domain Domain;
86 typedef typename TImage::Point Point;
87 typedef typename TImage::Value Value;
88
92 typedef boost::reverse_iterator<ConstIterator> ConstReverseIterator;
93
94 // ------------------------- standard services --------------------------------
95
103
110
117 {
118 if ( this != &other )
119 {
120 myImagePtr = other.myImagePtr;
121 }
122 return *this;
123 }
124
129
134 bool isValid() const { return true; }
135
136
137
138 // ------------------------- private data --------------------------------
139 private:
143 const TImage* myImagePtr;
144
145 // ------------------------- iterator services (read-only) --------------------------------
146 public:
147
153 Domain d = myImagePtr->domain();
154 return ConstIterator( d.begin(), *myImagePtr );
155 }
156
163 Domain d = myImagePtr->domain();
164 return ConstIterator( d.begin(aPoint), *myImagePtr );
165 }
166
172 Domain d = myImagePtr->domain();
173 return ConstIterator( d.end(), *myImagePtr );
174 }
175
181 return ConstReverseIterator(this->end());
182 }
183
189 ConstReverseIterator rbegin(const Point& aPoint) const {
190 Domain d = myImagePtr->domain();
191 typename Domain::ConstIterator itOnPts = d.begin(aPoint);
192 if ( itOnPts != d.end() ) ++itOnPts;
193 ConstIterator itOnVals( itOnPts, *myImagePtr );
194 return ConstReverseIterator( itOnVals );
195 }
196
202 return ConstReverseIterator(this->begin());
203 }
204
205
206 }; //end class DefaultConstImageRange
207
208} // namespace DGtal
209
211
212
213#endif // !defined DefaultConstImageRange_h
214
215#undef DefaultConstImageRange_RECURSES
216#endif // else defined(DefaultConstImageRange_RECURSES)
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition ConstAlias.h:187
This class adapts any iterator so that operator* returns another element than the one pointed to by t...
ConstReverseIterator rend() const
boost::reverse_iterator< ConstIterator > ConstReverseIterator
DefaultConstImageRange & operator=(const DefaultConstImageRange &other)
DefaultConstImageRange(const DefaultConstImageRange &other)
ConstReverseIterator rbegin(const Point &aPoint) const
ConstIteratorAdapter< typename Domain::ConstIterator, Self, Value > ConstIterator
ConstReverseIterator rbegin() const
BOOST_CONCEPT_ASSERT((concepts::CTrivialConstImage< TImage >))
ConstIterator begin(const Point &aPoint) const
DefaultConstImageRange(ConstAlias< TImage > aImage)
BOOST_CONCEPT_ASSERT((concepts::CDomain< Domain >))
constant iterator types
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: This concept represents a digital domain, i.e. a non mutable subset of points of the given digit...
Definition CDomain.h:130
Aim: Defines the concept describing a read-only image, which is a refinement of CPointFunctor.
const Point aPoint(3, 4)