Orfeo Toolbox  3.16
otbPolyLineImageConstIterator.txx
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: ORFEO Toolbox
4  Language: C++
5  Date: $Date$
6  Version: $Revision$
7 
8 
9  Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
10  See OTBCopyright.txt for details.
11 
12 
13  This software is distributed WITHOUT ANY WARRANTY; without even
14  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  PURPOSE. See the above copyright notices for more information.
16 
17 =========================================================================*/
18 #ifndef __otbPolyLineImageConstIterator_txx
19 #define __otbPolyLineImageConstIterator_txx
20 
22 #include "otbMacro.h"
23 
24 namespace otb
25 {
29 template <class TImage, class TPath>
31 ::PolyLineImageConstIterator(const ImageType *imagePtr, const PathType * pathPtr)
32  : m_InternalImageIterator(const_cast<ImageType *>(imagePtr),
33  imagePtr->GetLargestPossibleRegion().GetIndex(),
34  imagePtr->GetLargestPossibleRegion().GetIndex())
35 {
36  m_Image = imagePtr;
37  m_Path = pathPtr;
38  m_InternalVertexIterator = m_Path->GetVertexList()->Begin();
39  IndexType source, target;
40  for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
41  {
42  source[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
43  }
44  ++m_InternalVertexIterator;
45  if (m_InternalVertexIterator != m_Path->GetVertexList()->End())
46  {
47 
48  for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
49  {
50  target[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
51  }
52  }
53  else
54  {
55  target = source;
56  }
57  m_InternalImageIterator = InternalImageIteratorType(const_cast<ImageType *> (m_Image.GetPointer()), source, target);
58 }
59 
60 template <class TImage, class TPath>
62 ::Self&
64 ::operator = (const Self &it)
65  {
66  m_Image = it.m_Image;
67  m_Path = it.m_Path;
68  m_InternalImageIterator = it.m_InternalImageIterator;
69  m_InternalVertexIterator = it.m_InternalVertexIterator;
70  }
71 
72 template <class TImage, class TPath>
73 void
76 {
77  m_InternalVertexIterator = m_Path->GetVertexList()->Begin();
78  IndexType source, target;
79  for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
80  {
81  source[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
82  }
83  ++m_InternalVertexIterator;
84  if (m_InternalVertexIterator != m_Path->GetVertexList()->End())
85  {
86 
87  for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
88  {
89  target[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
90  }
91  }
92  else
93  {
94  target = source;
95  }
96  m_InternalImageIterator = InternalImageIteratorType(const_cast<ImageType *> (m_Image.GetPointer()), source, target);
97 }
98 
99 template <class TImage, class TPath>
100 void
103  {
104  // otbMsgDebugMacro(<<this->GetIndex());
105  ++m_InternalImageIterator;
106  if (m_InternalImageIterator.IsAtEnd())
107  {
108  if (m_InternalVertexIterator != m_Path->GetVertexList()->End())
109  {
110  IndexType source;
111  for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
112  {
113  source[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
114  }
115  // otbMsgDebugMacro(<<"Source: "<<source);
116  ++m_InternalVertexIterator;
117  if (m_InternalVertexIterator != m_Path->GetVertexList()->End())
118  {
119  IndexType target;
120  for (unsigned int i = 0; i < ImageType::ImageDimension; ++i)
121  {
122  target[i] = static_cast<unsigned int> (m_InternalVertexIterator.Value()[i]);
123  }
124  // otbMsgDebugMacro(<<"Target: "<<target);
125  m_InternalImageIterator = InternalImageIteratorType(const_cast<ImageType *> (m_Image.GetPointer()), source,
126  target);
127  ++m_InternalImageIterator;
128  }
129  }
130  }
131  }
132 
133 } // End namespace otb
134 #endif

Generated at Sun Jun 16 2013 00:44:54 for Orfeo Toolbox with doxygen 1.8.3.1