46 template <
typename TSegment>
52 Iterator previousIt = it; --previousIt;
53 tmpSegment.init(previousIt);
54 return tmpSegment.extendForward(it);
60 template <
typename TSegment>
67 extension<Segment,Iterator>(
mySegment,myFront,myCov->myEnd);
69 if (myFront != myCov->myEnd) {
71 if (myCov->isClosed) {
73 myFlagIntersectNext = doesIntersectNext(myFront);
75 myCov->myFirstMaximalSegmentBack = myBack;
79 myFlagIntersectNext = doesIntersectNext(myFront);
90 template <
typename TSegment>
96 myFlagIntersectPrevious = myFlagIntersectNext;
98 if (myFlag ==
false) {
103 if (myFront != myCov->myEnd) {
110 extension<ReverseSegment,ReverseIterator>(rseg,ri);
117 extension<Segment,Iterator>(
mySegment,myFront,myCov->myEnd);
121 if (myFront == myCov->myEnd) {
123 if (myCov->isClosed) {
125 myFront = myCov->myBegin;
126 while (mySegment.extendForward(myFront)) {
130 if (myFront == myCov->myBegin) {
131 Iterator tmpIt = myCov->myEnd; --tmpIt;
132 Segment tmpSegment; tmpSegment.init(tmpIt);
133 myFlagIntersectNext = tmpSegment.extendForward(myFront);
135 myFlagIntersectNext = doesIntersectNext(myFront);
141 myFlagIntersectNext =
false;
145 myFlagIntersectNext = doesIntersectNext(myFront);
150 myBack = myCov->myEnd;
164 extensionInLoop<ReverseSegment,ReverseIterator>(
168 if (myBack == myCov->myEnd) myBack = myCov->myBegin;
170 if (myBack != myCov->myFirstMaximalSegmentBack) {
175 extensionInLoop<Segment,Iterator>(
mySegment,myFront,myCov->myBegin,myCov->myEnd);
178 if (myFront == myCov->myBegin) {
179 Iterator tmpIt = myCov->myEnd; --tmpIt;
180 Segment tmpSegment; tmpSegment.init(tmpIt);
181 myFlagIntersectNext = tmpSegment.extendForward(myFront);
183 myFlagIntersectNext = doesIntersectNext(myFront);
188 myFront = myCov->myEnd;
189 myBack = myCov->myEnd;
200 template <
typename TSegment>
201 template <
typename TypeSegment,
typename TypeIterator>
205 extension(TypeSegment& aSeg, TypeIterator& it,
const TypeIterator& end) {
208 }
while ( (it != end) &&
209 (aSeg.extendForward(it)) );
218 template <
typename TSegment>
219 template <
typename TypeSegment,
typename TypeIterator>
226 }
while (aSeg.extendForward(it));
234 template <
typename TSegment>
235 template <
typename TypeSegment,
typename TypeIterator>
240 const TypeIterator&
begin,
const TypeIterator& end) {
243 }
while ( (it != end) &&
244 (aSeg.extendForward(it)) );
249 while ( (it != end) &&
250 (aSeg.extendForward(it)) ) {
264 template <
typename TSegment>
273 myFlagIntersectNext(
false),
274 myFlagIntersectPrevious(
false),
287 template <
typename TSegment>
291 : myCov( aOther.myCov ),
292 myFront( aOther.myFront ), myBack( aOther.myBack ),
294 myFlagIntersectNext( aOther.myFlagIntersectNext ),
295 myFlagIntersectPrevious( aOther.myFlagIntersectPrevious ),
296 myFlag( aOther.myFlag )
305 template <
typename TSegment>
311 if (
this != &other )
314 myFront = other.myFront;
315 myBack = other.myBack;
317 myFlagIntersectNext = other.myFlagIntersectNext;
318 myFlagIntersectPrevious = other.myFlagIntersectPrevious;
319 myFlag = other.myFlag;
328 template <
typename TSegment>
341 template <
typename TSegment>
352 template <
typename TSegment>
365 template <
typename TSegment>
380 template <
typename TSegment>
382 const typename TSegment::ConstIterator
392 template <
typename TSegment>
394 const typename TSegment::ConstIterator
405 template <
typename TSegment>
410 return myFlagIntersectNext;
417 template <
typename TSegment>
422 return myFlagIntersectPrevious;
432 template <
typename TSegment>
435 DGtal::deprecated::MaximalSegments<TSegment>::SegmentIterator::operator==
438 return ( (myFront == aOther.myFront)&&(myBack == aOther.myBack) );
448 template <
typename TSegment>
451 DGtal::deprecated::MaximalSegments<TSegment>::SegmentIterator::operator!=
454 return ( (myFront != aOther.myFront)||(myBack != aOther.myBack) );
468 template <
typename TSegment>
485 template <
typename TSegment>
496 myFirstMaximalSegmentBack = aBegin;
497 mySegment = aSegment;
505 template <
typename TSegment>
516 template <
typename TSegment>
529 template <
typename TSegment>
542 template <
typename TSegment>
547 out <<
"[MaximalSegments]";
554 template <
typename TSegment>
567 template <
typename TSegment>
573 object.selfDisplay( out );