CFx SDK Documentation  2023 SP0
FMMdlIterators.h
Go to the documentation of this file.
1 // Copyright (C) 2002-2015, Open Design Alliance (the "Alliance").
3 // All rights reserved.
4 //
5 // This software and its documentation and related materials are owned by
6 // the Alliance. The software may only be incorporated into application
7 // programs owned by members of the Alliance, subject to a signed
8 // Membership Agreement and Supplemental Software License Agreement with the
9 // Alliance. The structure and organization of this software are the valuable
10 // trade secrets of the Alliance and its suppliers. The software is also
11 // protected by copyright law and international treaty provisions. Application
12 // programs incorporating this software must include the following statement
13 // with their copyright notices:
14 //
15 // This application incorporates Teigha(R) software pursuant to a license
16 // agreement with Open Design Alliance.
17 // Teigha(R) Copyright (C) 2002-2015 by Open Design Alliance.
18 // All rights reserved.
19 //
20 // By use of this software, its documentation or related materials, you
21 // acknowledge and accept the above terms.
23 
24 #ifndef __FMMDL_ITERATORS_H__
25 #define __FMMDL_ITERATORS_H__
26 
27 #include "Modeler/FMMdlBody.h"
28 #include "Modeler/FMMdlVertex.h"
29 #include "Modeler/FMMdlEdge.h"
30 #include "Modeler/FMMdlFace.h"
31 
35 namespace FacetModeler
36 {
37 
41 class FMGEOMETRY_API VertexIterator
42 {
43  public:
47  VertexIterator( const Body* pBody );
48 
52  bool done();
53 
57  void next();
58 
62  Vertex* get();
63 
64  private:
65  Body* m_pOwner;
66  Vertex* m_pCurrent;
67  Vertex* m_pNext;
68  Vertex* m_pFirst;
69 };
70 
74 class FMGEOMETRY_API EdgeBodyIterator
75 {
76  public:
79  EdgeBodyIterator( const Body* pBody );
80 
84  bool done();
85 
89  void next( bool* bNextLoop = 0 );
90 
94  Edge* get();
95 
96  private:
97  Body* m_pOwner;
98  Face* m_pCurrentFace;
99  Face* m_pFirstFace;
100  OdUInt32 m_iCurrentLoop;
101  Edge* m_pFirst;
102  Edge* m_pCurrent;
103  Edge* m_pNext;
104 };
105 
109 class FMGEOMETRY_API EdgeFaceIterator
110 {
111  public:
115  EdgeFaceIterator( const Face* pFace );
116 
120  bool done();
121 
125  void next( bool* bNextLoop = 0 );
126 
130  Edge* get();
131 
132  private:
133  Face* m_pFace;
134  OdUInt32 m_iCurrentLoop;
135  Edge* m_pFirst;
136  Edge* m_pCurrent;
137  Edge* m_pNext;
138 };
139 
143 class FMGEOMETRY_API FaceIterator
144 {
145  public:
149  FaceIterator( const Body* pBody );
150 
154  bool done();
155 
159  void next();
160 
164  Face* get();
165 
166  private:
167  Body* m_pOwner;
168  Face* m_pFirst;
169  Face* m_pCurrent;
170  Face* m_pNext;
171 };
172 
173 }
174 
175 #endif //__FMMDL_ITERATORS_H__
unsigned int OdUInt32
EdgeBodyIterator(const Body *pBody)
void next(bool *bNextLoop=0)
EdgeFaceIterator(const Face *pFace)
void next(bool *bNextLoop=0)
FaceIterator(const Body *pBody)
VertexIterator(const Body *pBody)