Loading...
Searching...
No Matches
Status.hh
/* ========================================================================= *
* *
* OpenMesh *
* Copyright (c) 2001-2025, RWTH-Aachen University *
* Department of Computer Graphics and Multimedia *
* All rights reserved. *
* www.openmesh.org *
* *
*---------------------------------------------------------------------------*
* This file is part of OpenMesh. *
*---------------------------------------------------------------------------*
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright notice, *
* this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above copyright *
* notice, this list of conditions and the following disclaimer in the *
* documentation and/or other materials provided with the distribution. *
* *
* 3. Neither the name of the copyright holder nor the names of its *
* contributors may be used to endorse or promote products derived from *
* this software without specific prior written permission. *
* *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
* *
* ========================================================================= */
//=============================================================================
//
// CLASS Status
//
//=============================================================================
#ifndef OPENMESH_ATTRIBUTE_STATUS_HH
#define OPENMESH_ATTRIBUTE_STATUS_HH
//== INCLUDES =================================================================
#include <OpenMesh/Core/System/config.h>
//== NAMESPACES ===============================================================
namespace OpenMesh {
namespace Attributes {
//== CLASS DEFINITION ========================================================
enum StatusBits {
DELETED = 1,
LOCKED = 2,
SELECTED = 4,
HIDDEN = 8,
FEATURE = 16,
TAGGED = 32,
TAGGED2 = 64,
FIXEDNONMANIFOLD = 128,
UNUSED = 256
};
class StatusInfo
{
public:
typedef unsigned int value_type;
StatusInfo() : status_(0) {}
bool deleted() const { return is_bit_set(DELETED); }
void set_deleted(bool _b) { change_bit(DELETED, _b); }
bool locked() const { return is_bit_set(LOCKED); }
void set_locked(bool _b) { change_bit(LOCKED, _b); }
bool selected() const { return is_bit_set(SELECTED); }
void set_selected(bool _b) { change_bit(SELECTED, _b); }
bool hidden() const { return is_bit_set(HIDDEN); }
void set_hidden(bool _b) { change_bit(HIDDEN, _b); }
bool feature() const { return is_bit_set(FEATURE); }
void set_feature(bool _b) { change_bit(FEATURE, _b); }
bool tagged() const { return is_bit_set(TAGGED); }
void set_tagged(bool _b) { change_bit(TAGGED, _b); }
bool tagged2() const { return is_bit_set(TAGGED2); }
void set_tagged2(bool _b) { change_bit(TAGGED2, _b); }
bool fixed_nonmanifold() const { return is_bit_set(FIXEDNONMANIFOLD); }
void set_fixed_nonmanifold(bool _b) { change_bit(FIXEDNONMANIFOLD, _b); }
unsigned int bits() const { return status_; }
void set_bits(unsigned int _bits) { status_ = _bits; }
bool is_bit_set(unsigned int _s) const { return (status_ & _s) > 0; }
void set_bit(unsigned int _s) { status_ |= _s; }
void unset_bit(unsigned int _s) { status_ &= ~_s; }
void change_bit(unsigned int _s, bool _b) {
if (_b) status_ |= _s; else status_ &= ~_s; }
private:
value_type status_;
};
//=============================================================================
} // namespace Attributes
} // namespace OpenMesh
//=============================================================================
#endif // OPENMESH_ATTRIBUTE_STATUS_HH defined
//=============================================================================
OpenMesh
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition MeshItems.hh:59
OpenMesh::Attributes
This namespace holds per item attributes like normal/color.
OpenMesh::Attributes::StatusBits
StatusBits
Status bits used by the Status class.
Definition Status.hh:74
OpenMesh::Attributes::TAGGED2
@ TAGGED2
Alternate bit for tagging an item.
Definition Status.hh:82
OpenMesh::Attributes::LOCKED
@ LOCKED
Item is locked.
Definition Status.hh:77
OpenMesh::Attributes::FIXEDNONMANIFOLD
@ FIXEDNONMANIFOLD
Item was non-two-manifold and had to be fixed.
Definition Status.hh:83
OpenMesh::Attributes::DELETED
@ DELETED
Item has been deleted.
Definition Status.hh:76
OpenMesh::Attributes::SELECTED
@ SELECTED
Item is selected.
Definition Status.hh:78
OpenMesh::Attributes::UNUSED
@ UNUSED
Unused.
Definition Status.hh:84
OpenMesh::Attributes::HIDDEN
@ HIDDEN
Item is hidden.
Definition Status.hh:79
OpenMesh::Attributes::TAGGED
@ TAGGED
Item is tagged.
Definition Status.hh:81
OpenMesh::Attributes::FEATURE
@ FEATURE
Item is a feature or belongs to a feature.
Definition Status.hh:80
OpenMesh::Attributes::StatusInfo::set_fixed_nonmanifold
void set_fixed_nonmanifold(bool _b)
set fixed non-manifold
Definition Status.hh:147
OpenMesh::Attributes::StatusInfo::set_hidden
void set_hidden(bool _b)
set hidden
Definition Status.hh:123
OpenMesh::Attributes::StatusInfo::deleted
bool deleted() const
is deleted ?
Definition Status.hh:103
OpenMesh::Attributes::StatusInfo::set_selected
void set_selected(bool _b)
set selected
Definition Status.hh:117
OpenMesh::Attributes::StatusInfo::set_tagged2
void set_tagged2(bool _b)
set tagged
Definition Status.hh:141
OpenMesh::Attributes::StatusInfo::tagged
bool tagged() const
is tagged ?
Definition Status.hh:133
OpenMesh::Attributes::StatusInfo::is_bit_set
bool is_bit_set(unsigned int _s) const
is a certain bit set ?
Definition Status.hh:157
OpenMesh::Attributes::StatusInfo::set_bits
void set_bits(unsigned int _bits)
set whole status at once
Definition Status.hh:153
OpenMesh::Attributes::StatusInfo::locked
bool locked() const
is locked ?
Definition Status.hh:109
OpenMesh::Attributes::StatusInfo::set_locked
void set_locked(bool _b)
set locked
Definition Status.hh:111
OpenMesh::Attributes::StatusInfo::set_deleted
void set_deleted(bool _b)
set deleted
Definition Status.hh:105
OpenMesh::Attributes::StatusInfo::set_feature
void set_feature(bool _b)
set feature
Definition Status.hh:129
OpenMesh::Attributes::StatusInfo::set_bit
void set_bit(unsigned int _s)
set a certain bit
Definition Status.hh:159
OpenMesh::Attributes::StatusInfo::set_tagged
void set_tagged(bool _b)
set tagged
Definition Status.hh:135
OpenMesh::Attributes::StatusInfo::change_bit
void change_bit(unsigned int _s, bool _b)
set or unset a certain bit
Definition Status.hh:163
OpenMesh::Attributes::StatusInfo::feature
bool feature() const
is feature ?
Definition Status.hh:127
OpenMesh::Attributes::StatusInfo::tagged2
bool tagged2() const
is tagged2 ? This is just one more tag info.
Definition Status.hh:139
OpenMesh::Attributes::StatusInfo::fixed_nonmanifold
bool fixed_nonmanifold() const
is fixed non-manifold ?
Definition Status.hh:145
OpenMesh::Attributes::StatusInfo::bits
unsigned int bits() const
return whole status
Definition Status.hh:151
OpenMesh::Attributes::StatusInfo::selected
bool selected() const
is selected ?
Definition Status.hh:115
OpenMesh::Attributes::StatusInfo::unset_bit
void unset_bit(unsigned int _s)
unset a certain bit
Definition Status.hh:161
OpenMesh::Attributes::StatusInfo::hidden
bool hidden() const
is hidden ?
Definition Status.hh:121
OpenMesh::value_type