73 iterator( SHAPE_VEC_ITER aCurrent ) :
77 iterator(
const iterator& aB ) :
78 m_current( aB.m_current )
83 return (*m_current).parent;
91 iterator& operator++(
int aDummy )
97 bool operator==(
const iterator& aRhs )
const
99 return m_current == aRhs.m_current;
102 bool operator!=(
const iterator& aRhs )
const
104 return m_current != aRhs.m_current;
107 const iterator& operator=(
const iterator& aRhs )
109 m_current = aRhs.m_current;
114 SHAPE_VEC_ITER m_current;
125 query_iterator( SHAPE_VEC_ITER aCurrent, SHAPE_VEC_ITER aEnd,
SHAPE* aShape,
126 int aMinDistance,
bool aExact ) :
128 m_current( aCurrent ),
130 m_minDistance( aMinDistance ),
135 m_refBBox = aShape->
BBox();
140 query_iterator(
const query_iterator& aB ) :
142 m_current( aB.m_current ),
143 m_shape( aB.m_shape ),
144 m_minDistance( aB.m_minDistance ),
145 m_exact( aB.m_exact ),
146 m_refBBox( aB.m_refBBox )
152 return (*m_current).parent;
155 query_iterator& operator++()
162 query_iterator& operator++(
int aDummy )
169 bool operator==(
const query_iterator& aRhs )
const
171 return m_current == aRhs.m_current;
174 bool operator!=(
const query_iterator& aRhs )
const
176 return m_current != aRhs.m_current;
179 const query_iterator& operator=(
const query_iterator& aRhs )
182 m_current = aRhs.m_current;
183 m_shape = aRhs.m_shape;
184 m_minDistance = aRhs.m_minDistance;
185 m_exact = aRhs.m_exact;
186 m_refBBox = aRhs.m_refBBox;
193 while( m_current != m_end )
195 if( m_refBBox.Distance( m_current->bbox ) <= m_minDistance )
197 if( !m_exact || m_current->shape->Collide( m_shape, m_minDistance ) )
205 SHAPE_VEC_ITER m_end;
206 SHAPE_VEC_ITER m_current;