OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
VFront.hh
1 /*===========================================================================*\
2  * *
3  * OpenMesh *
4  * Copyright (C) 2001-2012 by Computer Graphics Group, RWTH Aachen *
5  * www.openmesh.org *
6  * *
7  *---------------------------------------------------------------------------*
8  * This file is part of OpenMesh. *
9  * *
10  * OpenMesh is free software: you can redistribute it and/or modify *
11  * it under the terms of the GNU Lesser General Public License as *
12  * published by the Free Software Foundation, either version 3 of *
13  * the License, or (at your option) any later version with the *
14  * following exceptions: *
15  * *
16  * If other files instantiate templates or use macros *
17  * or inline functions from this file, or you compile this file and *
18  * link it with other files to produce an executable, this file does *
19  * not by itself cause the resulting executable to be covered by the *
20  * GNU Lesser General Public License. This exception does not however *
21  * invalidate any other reasons why the executable file might be *
22  * covered by the GNU Lesser General Public License. *
23  * *
24  * OpenMesh is distributed in the hope that it will be useful, *
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27  * GNU Lesser General Public License for more details. *
28  * *
29  * You should have received a copy of the GNU LesserGeneral Public *
30  * License along with OpenMesh. If not, *
31  * see <http://www.gnu.org/licenses/>. *
32  * *
33 \*===========================================================================*/
34 
35 /*===========================================================================*\
36  * *
37  * $Revision: 736 $ *
38  * $Date: 2012-10-08 09:30:49 +0200 (Mo, 08 Okt 2012) $ *
39  * *
40 \*===========================================================================*/
41 
42 //=============================================================================
43 //
44 // CLASS VFront
45 //
46 //=============================================================================
47 
48 #ifndef OPENMESH_VDPROGMESH_VFRONT_HH
49 #define OPENMESH_VDPROGMESH_VFRONT_HH
50 
51 
52 //== INCLUDES =================================================================
53 
54 #include <OpenMesh/Core/System/config.h>
55 #include <OpenMesh/Tools/VDPM/VHierarchyNode.hh>
56 #include <vector>
57 
58 
59 //== FORWARDDECLARATIONS ======================================================
60 
61 
62 //== NAMESPACES ===============================================================
63 
64 namespace OpenMesh {
65 namespace VDPM {
66 
67 //== CLASS DEFINITION =========================================================
68 
69 
73 class OPENMESHDLLEXPORT VFront
74 {
75 private:
76 
77  typedef VHierarchyNodeHandleList::iterator VHierarchyNodeHandleListIter;
78  enum VHierarchyNodeStatus { kSplit, kActive, kCollapse };
79 
81  VHierarchyNodeHandleListIter front_it_;
82  std::vector<VHierarchyNodeHandleListIter> front_location_;
83 
84 public:
85 
86  VFront();
87 
88  void clear() { front_.clear(); front_location_.clear(); }
89  void begin() { front_it_ = front_.begin(); }
90  bool end() { return (front_it_ == front_.end()) ? true : false; }
91  void next() { ++front_it_; }
92  int size() { return (int) front_.size(); }
93  VHierarchyNodeHandle node_handle() { return *front_it_; }
94 
95  void add(VHierarchyNodeHandle _node_handle);
96  void remove(VHierarchyNodeHandle _node_handle);
97  bool is_active(VHierarchyNodeHandle _node_handle);
98  void init(VHierarchyNodeHandleContainer &_roots, unsigned int _n_details);
99 };
100 
101 
102 //=============================================================================
103 } // namespace VDPM
104 } // namespace OpenMesh
105 //=============================================================================
106 #endif // OPENMESH_VDPROGMESH_VFRONT_HH defined
107 //=============================================================================

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .