50 #ifndef OPENMESH_VDPROGMESH_VHIERARCHYWINDOWS_HH 
   51 #define OPENMESH_VDPROGMESH_VHIERARCHYWINDOWS_HH 
   56 #include <OpenMesh/Tools/VDPM/VHierarchy.hh> 
   80   unsigned char *buffer_;
 
   91   unsigned char n_shift_;           
 
   93   unsigned char flag8(
unsigned char n_shift)
 const 
   94   { 
return 0x80 >> n_shift; }  
 
   98     assert(_node_handle.
idx() >= 0);
 
   99     return  0x80 >> (
unsigned int) (_node_handle.
idx() % 8);
 
  103     assert(_node_handle.
idx() >= 0);
 
  104     return  _node_handle.
idx() / 8;
 
  107   { 
return  byte_idx(_node_handle) - buffer_min_; } 
 
  110   { 
return (_node_handle.
idx()/8 < window_min_) ? true : 
false; }
 
  113   { 
return (_node_handle.
idx()/8 < window_max_) ? false : 
true; }
 
  116   { 
return (_node_handle.
idx()/8 < buffer_min_) ? true : 
false; }
 
  119   { 
return (_node_handle.
idx()/8 < 
int(buffer_max_) ) ? false : 
true; }
 
  128   void set_vertex_hierarchy(
VHierarchy &_vhierarchy)
 
  129   { vhierarchy_ = &_vhierarchy; }
 
  133     int new_window_min = window_min_;
 
  134     for (current_pos_=window_min_-buffer_min_; 
 
  135          current_pos_ < window_size(); ++current_pos_)
 
  137       if (buffer_[current_pos_] == 0)   
 
  142         while ((buffer_[current_pos_] & flag8(n_shift_)) == 0)
 
  147     window_min_ = new_window_min;
 
  159     while (current_pos_ < window_max_-buffer_min_)
 
  161       if (buffer_[current_pos_] != 0) 
 
  163         while (n_shift_ != 8)
 
  165           if ((buffer_[current_pos_] & flag8(n_shift_)) != 0)
 
  174   bool end() { 
return !(current_pos_ < window_max_-buffer_min_); }
 
  176   int window_size()
 const      { 
return  window_max_ - window_min_; }
 
  177   size_t buffer_size()
 const      { 
return  buffer_max_ - buffer_min_; }
 
  186     update_buffer(_node_handle);
 
  187     buffer_[buffer_idx(_node_handle)] |= flag8(_node_handle);
 
  188     window_min_ = std::min(window_min_, byte_idx(_node_handle));
 
  189     window_max_ = std::max(window_max_, 1+byte_idx(_node_handle));
 
  195     if (is_active(_node_handle) != 
true)  
return;
 
  196     buffer_[buffer_idx(_node_handle)] ^= flag8(_node_handle);
 
  202     if (before_window(_node_handle) == 
true ||
 
  203         after_window(_node_handle) == 
true)
 
  205     return ((buffer_[buffer_idx(_node_handle)] & flag8(_node_handle)) > 0);
 
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
 
std::vector< VHierarchyNodeHandle > VHierarchyNodeHandleContainer
Container for vertex hierarchy node handles.
Definition: VHierarchyNode.hh:183
 
int idx() const
Get the underlying index of this handle.
Definition: Handles.hh:69
 
Keeps the vertex hierarchy build during analyzing a progressive mesh.
Definition: VHierarchy.hh:74
 
Handle for vertex hierarchy nodes
Definition: VHierarchyNode.hh:78
 
Definition: VHierarchyWindow.hh:73