33 #include "DGtal/kernel/sets/DigitalSetFromMap.h"
42 template <
typename TMapImage>
49 template <
typename TMapImage>
54 : myImgPtr( &aImage ), myFun(
Functor() ), myDefault( aDefaultValue )
58 template <
typename TMapImage>
62 : myImgPtr( other.myImgPtr ), myFun( other.myFun ), myDefault (other.myDefault)
67 template <
typename TMapImage>
83 template <
typename TMapImage>
98 template <
typename TMapImage>
103 return myImgPtr->
size();
107 template <
typename TMapImage>
112 return myImgPtr->
empty();
117 template <
typename TMapImage>
122 ASSERT( this->domain().isInside( p ) );
123 myImgPtr->insert(
Pair( p, myDefault ) );
128 template <
typename TMapImage>
129 template <
typename Po
intInputIterator>
133 for (PointInputIterator it = first; it != last; ++it)
139 template <
typename TMapImage>
144 ASSERT( this->domain().isInside( p ) );
145 myImgPtr->insert(
Pair( p, myDefault ) );
149 template <
typename TMapImage>
150 template <
typename Po
intInputIterator>
154 ( PointInputIterator first, PointInputIterator last )
156 for (PointInputIterator it = first; it != last; ++it)
161 template <
typename TMapImage>
165 return myImgPtr->
erase( p );
169 template <
typename TMapImage>
174 myImgPtr->
erase( it.base() );
178 template <
typename TMapImage>
187 template <
typename TMapImage>
196 template <
typename TMapImage>
201 return Iterator( myImgPtr->find( p ), myFun );
205 template <
typename TMapImage>
214 template <
typename TMapImage>
223 template <
typename TMapImage>
228 return Iterator( myImgPtr->begin(), myFun );
232 template <
typename TMapImage>
237 return Iterator( myImgPtr->end(), myFun );
241 template <
typename TMapImage>
242 template <
typename TDigitalSet>
251 for (
typename TDigitalSet::ConstIterator itSrc = aSet.begin();
255 itDst =
Iterator( myImgPtr->insert( itDst.base(),
Pair(*itSrc, myDefault) ),
267 template <
typename TMapImage>
268 template <
typename TOutputIterator>
272 (TOutputIterator& ito)
const
274 Domain d = this->domain();
275 typename Domain::ConstIterator itPoint = d.begin();
276 typename Domain::ConstIterator itEnd = d.end();
277 while ( itPoint != itEnd ) {
278 if ( this->find( *itPoint ) == end() ) {
286 template <
typename TMapImage>
287 template <
typename TDigitalSet>
291 (
const TDigitalSet& otherSet )
294 Domain d = this->domain();
295 typename Domain::ConstIterator itPoint = d.begin();
296 typename Domain::ConstIterator itEnd = d.end();
297 while ( itPoint != itEnd ) {
298 if ( otherSet.find( *itPoint ) == otherSet.end() ) {
299 this->insert( *itPoint );
306 template <
typename TMapImage>
312 Domain d = this->domain();
313 lower = d.upperBound();
314 upper = d.lowerBound();
317 while ( it != itEnd ) {
318 lower = lower.inf( *it );
319 upper = upper.sup( *it );
327 template <
typename TMapImage>
332 out <<
"[DigitalSetFromMap]" <<
" size=" << size();
335 template <
typename TMapImage>
340 return ( (myImgPtr) && (myImgPtr->isValid()) );
346 template<
typename TMapImage>
351 return "DigitalSetFromMap";
357 template <
typename TMapImage>
360 DGtal::operator<< ( std::ostream & out, const DGtal::DigitalSetFromMap<TMapImage> & object )