OpenMesh

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
VFront.hh
1 /*===========================================================================*\
2 * *
3 * OpenMesh *
4 * Copyright (C) 2001-2014 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: 990 $ *
38 * $Date: 2014-02-05 10:01:07 +0100 (Mi, 05. Feb 2014) $ *
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
80 VHierarchyNodeHandleList front_;
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 //=============================================================================
OpenMesh::VDPM::VHierarchyNodeHandleContainer
std::vector< VHierarchyNodeHandle > VHierarchyNodeHandleContainer
Container for vertex hierarchy node handles.
Definition: VHierarchyNode.hh:181
OpenMesh::VDPM::VHierarchyNodeHandleList
std::list< VHierarchyNodeHandle > VHierarchyNodeHandleList
Container for vertex hierarchy node handles.
Definition: VHierarchyNode.hh:184
OpenMesh::VDPM::VFront
Active nodes in vertex hierarchy.
Definition: VFront.hh:73
OpenMesh::VDPM::VHierarchyNodeHandle
Handle for vertex hierarchy nodes.
Definition: VHierarchyNode.hh:75