/usr/include/OTB-5.8/otbPolyLineImageConstIterator.h is in libotb-dev 5.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef otbPolyLineImageConstIterator_h
#define otbPolyLineImageConstIterator_h
#include "itkIndex.h"
#include "itkImage.h"
#include "itkLineIterator.h"
namespace otb
{
/** \class PolyLineImageConstIterator
* \brief Uses the bresenham algorithm to iterate over a polyline on an image (const version).
*
* This iterator encapsulates the itk::LineIterator along with the VectorContainer iterator on
* the vertex list of the polyline.
*
* \ingroup Iterators
* \sa PolyLineParametricPath
* \sa PolyLineParametricPathWithValue
* \sa LineIterator
* \sa LineConstIterator
* \sa PolyLineImageIterator
*
* \ingroup OTBPath
*/
template <class TImage, class TPath>
class ITK_EXPORT PolyLineImageConstIterator
{
public:
/** Standard typedefs */
typedef PolyLineImageConstIterator Self;
itkStaticConstMacro(ImageIteratorDimension, unsigned int,
TImage::ImageDimension);
typedef typename TImage::IndexType IndexType;
typedef typename TImage::IndexValueType IndexValueType;
typedef typename TImage::OffsetType OffsetType;
typedef typename TImage::OffsetValueType OffsetValueType;
typedef typename TImage::SizeType SizeType;
typedef typename TImage::SizeValueType SizeValueType;
typedef typename TImage::RegionType RegionType;
typedef typename TImage::SpacingType SpacingType;
typedef typename TImage::PointType PointType;
typedef TImage ImageType;
typedef TPath PathType;
typedef typename PathType::VertexType VertexType;
typedef typename PathType::VertexListType VertexListType;
typedef typename VertexListType::ConstIterator VertexIteratorType;
typedef itk::LineIterator<ImageType> InternalImageIteratorType;
typedef typename TImage::PixelContainer PixelContainer;
typedef typename PixelContainer::Pointer PixelContainerPointer;
typedef typename TImage::InternalPixelType InternalPixelType;
typedef typename TImage::PixelType PixelType;
typedef typename TImage::AccessorType AccessorType;
/** Get the dimension (size) of the index. */
static unsigned int GetImageIteratorDimension()
{
return TImage::ImageDimension;
}
/** Get the index */
const IndexType GetIndex()
{
return m_InternalImageIterator.GetIndex();
}
/** Get the pixel value */
const PixelType Get(void) const
{
return m_InternalImageIterator.Get();
}
/** Is the iterator at the end of the line? */
bool IsAtEnd()
{
return (m_InternalVertexIterator == m_Path->GetVertexList()->End())
&& m_InternalImageIterator.IsAtEnd();
}
/** Move an iterator to the beginning of the line. */
void GoToBegin();
/** Walk forward along the line to the next index in the image. */
void operator ++();
/** operator= is provided to make sure the handle to the image is properly
* reference counted. */
Self& operator =(const Self& it);
/** Constructor establishes an iterator to walk along a line */
PolyLineImageConstIterator(const ImageType * imagePtr, const PathType * pathPtr);
/** Default Destructor. */
virtual ~PolyLineImageConstIterator() {}
protected: //made protected so other iterators can access
/** Smart pointer to the source image. */
typename ImageType::ConstWeakPointer m_Image;
/** Smart pointer to the path */
typename PathType::ConstPointer m_Path;
InternalImageIteratorType m_InternalImageIterator;
VertexIteratorType m_InternalVertexIterator;
};
} // End namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbPolyLineImageConstIterator.txx"
#endif
#endif
|