DGtal
0.6.devel
Main Page
Related Pages
Modules
Namespaces
Data Structures
Examples
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
src
DGtal
images
DefaultConstImageRange.h
1
17
#pragma once
18
33
#if defined(DefaultConstImageRange_RECURSES)
34
#error Recursive header files inclusion detected in DefaultConstImageRange.h
35
#else // defined(DefaultConstImageRange_RECURSES)
36
37
#define DefaultConstImageRange_RECURSES
38
39
#if !defined DefaultConstImageRange_h
40
41
#define DefaultConstImageRange_h
42
44
// Inclusions
45
#include "DGtal/base/ConstIteratorAdapter.h"
46
#include "DGtal/kernel/domains/CDomain.h"
47
#include "DGtal/images/CTrivialConstImage.h"
48
#include "DGtal/images/SetValueIterator.h"
49
#include "boost/concept_check.hpp"
51
52
namespace
DGtal
53
{
54
55
57
// class DefaultConstImageRange
59
74
template
<
typename
TImage>
75
class
DefaultConstImageRange
76
{
77
78
79
// ------------------------- inner types --------------------------------
80
public
:
81
82
BOOST_CONCEPT_ASSERT
((
CTrivialConstImage<TImage>
));
83
typedef
typename
TImage::Domain
Domain
;
84
typedef
typename
TImage::Point
Point
;
85
typedef
typename
TImage::Value
Value
;
86
88
BOOST_CONCEPT_ASSERT
((
CDomain<Domain>
));
89
typedef
ConstIteratorAdapter<typename Domain::ConstIterator,TImage,Value>
ConstIterator
;
90
typedef
std::reverse_iterator<ConstIterator>
ConstReverseIterator
;
91
92
// ------------------------- standard services --------------------------------
93
99
DefaultConstImageRange
(
const
TImage& aImage )
100
:
myImagePtr
(&aImage) {}
101
106
DefaultConstImageRange
(
const
DefaultConstImageRange
& other )
107
:
myImagePtr
(other.
myImagePtr
) {}
108
114
DefaultConstImageRange
&
operator=
(
const
DefaultConstImageRange
& other )
115
{
116
if
(
this
!= &other )
117
{
118
myImagePtr
= other.
myImagePtr
;
119
}
120
return
*
this
;
121
}
122
126
~DefaultConstImageRange
() {}
127
132
bool
isValid
()
const
{
return
true
; }
133
134
135
136
// ------------------------- private data --------------------------------
137
private
:
141
const
TImage*
myImagePtr
;
142
143
// ------------------------- iterator services (read-only) --------------------------------
144
public
:
145
150
ConstIterator
begin
()
const
{
151
Domain
d =
myImagePtr
->domain();
152
return
ConstIterator
( d.begin(), *
myImagePtr
);
153
}
154
160
ConstIterator
begin
(
const
Point
& aPoint)
const
{
161
Domain
d =
myImagePtr
->domain();
162
return
ConstIterator
( d.begin(aPoint), *
myImagePtr
);
163
}
164
169
ConstIterator
end
()
const
{
170
Domain
d =
myImagePtr
->domain();
171
return
ConstIterator
( d.end(), *
myImagePtr
);
172
}
173
178
ConstReverseIterator
rbegin
()
const
{
179
return
ConstReverseIterator
(this->
end
());
180
}
181
187
ConstReverseIterator
rbegin
(
const
Point
& aPoint)
const
{
188
Domain
d =
myImagePtr
->domain();
189
typename
Domain::ConstIterator itOnPts = d.begin(aPoint);
190
if
( itOnPts != d.end() ) ++itOnPts;
191
ConstIterator
itOnVals( itOnPts, *
myImagePtr
);
192
return
ConstReverseIterator
( itOnVals );
193
}
194
199
ConstReverseIterator
rend
()
const
{
200
return
ConstReverseIterator
(this->
begin
());
201
}
202
203
204
};
//end class DefaultConstImageRange
205
206
}
// namespace DGtal
207
209
210
211
#endif // !defined DefaultConstImageRange_h
212
213
#undef DefaultConstImageRange_RECURSES
214
#endif // else defined(DefaultConstImageRange_RECURSES)
Generated on Wed Dec 19 2012 19:10:21 for DGtal by
1.8.1.1