OpenMesh
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
Status.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
//
45
// CLASS Status
46
//
47
//=============================================================================
48
49
50
#ifndef OPENMESH_ATTRIBUTE_STATUS_HH
51
#define OPENMESH_ATTRIBUTE_STATUS_HH
52
53
54
//== INCLUDES =================================================================
55
56
#include <OpenMesh/Core/System/config.h>
57
58
59
//== NAMESPACES ===============================================================
60
61
62
namespace
OpenMesh {
63
namespace
Attributes {
64
65
66
//== CLASS DEFINITION ========================================================
67
68
72
enum
StatusBits
{
73
74
DELETED
= 1,
75
LOCKED
= 2,
76
SELECTED
= 4,
77
HIDDEN
= 8,
78
FEATURE
= 16,
79
TAGGED
= 32,
80
TAGGED2
= 64,
81
FIXEDNONMANIFOLD
= 128,
82
UNUSED
= 256
83
};
84
85
92
class
StatusInfo
93
{
94
public
:
95
96
typedef
unsigned
int
value_type;
97
98
StatusInfo
() : status_(0) {}
99
101
bool
deleted
()
const
{
return
is_bit_set
(
DELETED
); }
103
void
set_deleted
(
bool
_b) {
change_bit
(
DELETED
, _b); }
104
105
107
bool
locked
()
const
{
return
is_bit_set
(
LOCKED
); }
109
void
set_locked
(
bool
_b) {
change_bit
(
LOCKED
, _b); }
110
111
113
bool
selected
()
const
{
return
is_bit_set
(
SELECTED
); }
115
void
set_selected
(
bool
_b) {
change_bit
(
SELECTED
, _b); }
116
117
119
bool
hidden
()
const
{
return
is_bit_set
(
HIDDEN
); }
121
void
set_hidden
(
bool
_b) {
change_bit
(
HIDDEN
, _b); }
122
123
125
bool
feature
()
const
{
return
is_bit_set
(
FEATURE
); }
127
void
set_feature
(
bool
_b) {
change_bit
(
FEATURE
, _b); }
128
129
131
bool
tagged
()
const
{
return
is_bit_set
(
TAGGED
); }
133
void
set_tagged
(
bool
_b) {
change_bit
(
TAGGED
, _b); }
134
135
137
bool
tagged2
()
const
{
return
is_bit_set
(
TAGGED2
); }
139
void
set_tagged2
(
bool
_b) {
change_bit
(
TAGGED2
, _b); }
140
141
143
bool
fixed_nonmanifold
()
const
{
return
is_bit_set
(
FIXEDNONMANIFOLD
); }
145
void
set_fixed_nonmanifold
(
bool
_b) {
change_bit
(
FIXEDNONMANIFOLD
, _b); }
146
147
149
unsigned
int
bits
()
const
{
return
status_; }
151
void
set_bits
(
unsigned
int
_bits) { status_ = _bits; }
152
153
155
bool
is_bit_set
(
unsigned
int
_s)
const
{
return
(status_ & _s) > 0; }
157
void
set_bit
(
unsigned
int
_s) { status_ |= _s; }
159
void
unset_bit
(
unsigned
int
_s) { status_ &= ~_s; }
161
void
change_bit
(
unsigned
int
_s,
bool
_b) {
162
if
(_b) status_ |= _s;
else
status_ &= ~_s; }
163
164
165
private
:
166
167
value_type status_;
168
};
169
170
171
//=============================================================================
172
}
// namespace Attributes
173
}
// namespace OpenMesh
174
//=============================================================================
175
#endif // OPENMESH_ATTRIBUTE_STATUS_HH defined
176
//=============================================================================
Project
OpenMesh
, © Computer Graphics Group, RWTH Aachen. Documentation generated using
doxygen
.