OpenWalnut  1.4.0
WTractAdapter.h
1 //---------------------------------------------------------------------------
2 //
3 // Project: OpenWalnut ( http://www.openwalnut.org )
4 //
5 // Copyright 2009 OpenWalnut Community, BSV@Uni-Leipzig and CNCF@MPI-CBS
6 // For more information see http://www.openwalnut.org/copying
7 //
8 // This file is part of OpenWalnut.
9 //
10 // OpenWalnut is free software: you can redistribute it and/or modify
11 // it under the terms of the GNU Lesser General Public License as published by
12 // the Free Software Foundation, either version 3 of the License, or
13 // (at your option) any later version.
14 //
15 // OpenWalnut is distributed in the hope that it will be useful,
16 // but WITHOUT ANY WARRANTY; without even the implied warranty of
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 // GNU Lesser General Public License for more details.
19 //
20 // You should have received a copy of the GNU Lesser General Public License
21 // along with OpenWalnut. If not, see <http://www.gnu.org/licenses/>.
22 //
23 //---------------------------------------------------------------------------
24 
25 #ifndef WTRACTADAPTER_H
26 #define WTRACTADAPTER_H
27 
28 #include <vector>
29 
30 #ifndef Q_MOC_RUN
31 #include <boost/shared_ptr.hpp>
32 #endif
33 
34 #include "../common/math/linearAlgebra/WPosition.h"
35 
36 /**
37  * Adapter
38  */
40 {
41 public:
42  /**
43  * Constructs a new WTract which has \ref numPoints points and a startIndex inside of the
44  * given components array.
45  *
46  * \param pointComponents Array where the components of the tract points are inside of
47  * \param startIndex The position inside of the components array of the first x coordinate.
48  * \param numPoints How many points this tract has
49  */
50  WTractAdapter( boost::shared_ptr< const std::vector< float > > pointComponents, size_t startIndex, size_t numPoints );
51 
52  /**
53  * How many positions this tract incorporates.
54  *
55  * \return number of points
56  */
57  size_t numPoints() const;
58 
59  /**
60  * Constructs and returns a \ref WPosition out of the i'th position of this tract.
61  *
62  * \param index The index of the position of this tract. It may start at \c 0 and is always
63  * smaller than \ref numPoints().
64  *
65  * \return The i'th position of this tract as \ref WPosition.
66  */
67  WPosition operator[]( size_t index ) const;
68 
69 // void reset( boost::shared_ptr< const WTractData > tracts, size_t startIndex, size_t numPoints )
70 
71 protected:
72 private:
73  /**
74  * The array where the components of this tracts live. But you will need the starting position
75  * and the length of the tract to access them.
76  */
77  boost::shared_ptr< const std::vector< float > > m_pointComponents;
78 
79  /**
80  * How many \e points aka WPositions this tract consists of.
81  */
82  size_t m_numPoints;
83 
84  /**
85  * The index of the x-component of the first point of this tract inside the \ref m_pointComponents array.
86  */
87  size_t m_startIndex;
88 };
89 
90 inline size_t WTractAdapter::numPoints() const
91 {
92  return m_numPoints;
93 }
94 
95 #endif // WTRACTADAPTER_H
boost::shared_ptr< const std::vector< float > > m_pointComponents
The array where the components of this tracts live.
Definition: WTractAdapter.h:77
size_t m_numPoints
How many points aka WPositions this tract consists of.
Definition: WTractAdapter.h:82
Adapter.
Definition: WTractAdapter.h:39
This only is a 3d double vector.
size_t numPoints() const
How many positions this tract incorporates.
Definition: WTractAdapter.h:90
WTractAdapter(boost::shared_ptr< const std::vector< float > > pointComponents, size_t startIndex, size_t numPoints)
Constructs a new WTract which has numPoints points and a startIndex inside of the given components ar...
size_t m_startIndex
The index of the x-component of the first point of this tract inside the m_pointComponents array...
Definition: WTractAdapter.h:87
WPosition operator[](size_t index) const
Constructs and returns a WPosition out of the i'th position of this tract.