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
ConstImageAdapter.h
1
17
#pragma once
18
36
#if defined(ConstImageAdapter_RECURSES)
37
#error Recursive header files inclusion detected in ConstImageAdapter.h
38
#else // defined(ConstImageAdapter_RECURSES)
39
40
#define ConstImageAdapter_RECURSES
41
42
#if !defined ConstImageAdapter_h
43
44
#define ConstImageAdapter_h
45
47
// Inclusions
48
#include <iostream>
49
#include "DGtal/base/Common.h"
50
#include "DGtal/base/ConceptUtils.h"
51
#include "DGtal/images/CImage.h"
52
#include "DGtal/kernel/domains/CDomain.h"
53
54
#include "DGtal/images/DefaultConstImageRange.h"
55
#include <tr1/tuple>
57
58
namespace
DGtal
59
{
61
// Template class ConstImageAdapter
101
template
<
typename
TImageContainer,
102
typename
TNewDomain,
103
typename
TFunctorD,
104
typename
TNewValue,
typename
TFunctorV>
105
class
ConstImageAdapter
106
{
107
108
// ----------------------- Types ------------------------------
109
110
public
:
111
typedef
ConstImageAdapter<TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV>
Self
;
112
114
BOOST_CONCEPT_ASSERT
((
CImage<TImageContainer>
));
115
BOOST_CONCEPT_ASSERT
((
CDomain<TNewDomain>
));
116
117
typedef
TNewDomain
Domain
;
118
typedef
typename
TNewDomain::Point
Point
;
119
typedef
TNewValue
Value
;
120
121
BOOST_CONCEPT_ASSERT
((
CUnaryFunctor<TFunctorD, typename TImageContainer::Point, Point>
));
122
BOOST_CONCEPT_ASSERT
((
CUnaryFunctor<TFunctorV, typename TImageContainer::Value, Value>
));
123
125
typedef
TImageContainer
ImageContainer
;
126
127
typedef
DefaultConstImageRange<Self>
ConstRange
;
128
129
// ----------------------- Standard services ------------------------------
130
131
public
:
132
133
ConstImageAdapter
(
ImageContainer
&anImage,
const
Domain
&aDomain,
const
TFunctorD &aFD,
const
TFunctorV &aFV):
134
myImagePtr
(&anImage),
mySubDomainPtr
(&aDomain),
myFD
(&aFD),
myFV
(&aFV)
135
{
136
#ifdef DEBUG_VERBOSE
137
trace
.
warning
() <<
"ConstImageAdapter Ctor fromRef "
<< std::endl;
138
#endif
139
}
140
146
ConstImageAdapter
&
operator=
(
const
ConstImageAdapter
& other )
147
{
148
#ifdef DEBUG_VERBOSE
149
trace
.
warning
() <<
"ConstImageAdapter assignment "
<< std::endl;
150
#endif
151
if
(&other !=
this
)
152
{
153
myImagePtr
= other.
myImagePtr
;
154
mySubDomainPtr
= other.
mySubDomainPtr
;
155
myFD
= other.
myFD
;
156
myFV
= other.
myFV
;
157
}
158
return
*
this
;
159
}
160
161
166
~ConstImageAdapter
() {}
167
168
// ----------------------- Interface --------------------------------------
169
public
:
170
172
178
const
Domain
&
domain
()
const
179
{
180
return
(*
mySubDomainPtr
);
181
}
182
189
ConstRange
constRange
()
const
190
{
191
return
ConstRange
( *
this
);
192
}
193
195
196
206
Value
operator()
(
const
Point
& aPoint)
const
207
{
208
ASSERT(this->
domain
().isInside(aPoint));
209
210
return
myFV
->operator()(
myImagePtr
->operator()(
myFD
->operator()(aPoint)));
211
}
212
213
215
220
void
selfDisplay
( std::ostream & out )
const
;
221
229
bool
isValid
()
const
230
{
231
return
(
myImagePtr
->isValid() );
232
}
233
234
239
const
ImageContainer
*
getPointer
()
const
240
{
241
return
myImagePtr
;
242
}
243
244
// ------------------------- Protected Datas ------------------------------
245
private
:
249
ConstImageAdapter
() {
250
#ifdef DEBUG_VERBOSE
251
trace
.
warning
() <<
"ConstImageAdapter Ctor default "
<< std::endl;
252
#endif
253
}
254
255
// ------------------------- Private Datas --------------------------------
256
protected
:
257
259
const
ImageContainer
*
myImagePtr
;
260
264
const
Domain
*
mySubDomainPtr
;
265
269
const
TFunctorD*
myFD
;
270
274
const
TFunctorV*
myFV
;
275
276
private
:
277
278
279
// ------------------------- Internals ------------------------------------
280
private
:
281
282
};
// end of class ConstImageAdapter
283
284
291
template
<
typename
TImageContainer,
typename
TNewDomain,
typename
TFunctorD,
typename
TNewValue,
typename
TFunctorV>
292
std::ostream&
293
operator<< ( std::ostream & out, const ConstImageAdapter<TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV> & object );
294
295
}
// namespace DGtal
296
297
299
// Includes inline functions.
300
#include "DGtal/images/ConstImageAdapter.ih"
301
302
// //
304
305
#endif // !defined ConstImageAdapter_h
306
307
#undef ConstImageAdapter_RECURSES
308
#endif // else defined(ConstImageAdapter_RECURSES)
Generated on Wed Dec 19 2012 19:10:21 for DGtal by
1.8.1.1