54 #define OPENMESH_DECIMATER_MODPROGMESH_CC 
   62 #include <OpenMesh/Core/Utils/vector_cast.hh> 
   63 #include <OpenMesh/Core/IO/BinaryHelper.hh> 
   64 #include <OpenMesh/Core/Utils/Endian.hh> 
   79 template <
class MeshT>
 
   82 write( 
const std::string& _ofname )
 
   85   size_t i=0, N=Base::mesh().n_vertices(), n_base_vertices(0), n_base_faces(0);
 
   86   std::vector<typename Mesh::VertexHandle>  vhandles(N);
 
   91     v_it=Base::mesh().vertices_begin(), 
 
   92     v_end=Base::mesh().vertices_end();
 
   94   for (; v_it != v_end; ++v_it)  
 
   95     if (!Base::mesh().status(*v_it).deleted())
 
   98       Base::mesh().property( idx_, *v_it ) = i;
 
  105   typename InfoList::reverse_iterator
 
  106     r_it=pmi_.rbegin(), r_end=pmi_.rend();
 
  108   for (; r_it!=r_end; ++r_it)  
 
  110     vhandles[i] = r_it->v0;  
 
  111     Base::mesh().property( idx_, r_it->v0) = i;  
 
  118                                f_end = Base::mesh().faces_end();
 
  119   for (; f_it != f_end; ++f_it) 
 
  120     if (!Base::mesh().status(*f_it).deleted())
 
  125   std::ofstream out( _ofname.c_str(), std::ios::binary );
 
  135   IO::store( out, 
static_cast<unsigned int>(n_base_vertices), swap );
 
  136   IO::store( out, 
static_cast<unsigned int>(n_base_faces)   , swap );
 
  137   IO::store( out, 
static_cast<unsigned int>(pmi_.size())    , swap );
 
  142   for (i=0; i<n_base_vertices; ++i)
 
  144     assert (!Base::mesh().status(vhandles[i]).deleted());
 
  145     p  = vector_cast< Vec3f >( Base::mesh().point(vhandles[i]) );
 
  147     IO::store( out, p, swap );
 
  152   for (f_it=Base::mesh().faces_begin(); f_it != f_end; ++f_it)  
 
  154     if (!Base::mesh().status(*f_it).deleted())
 
  158       IO::store( out, 
static_cast<unsigned int>(Base::mesh().property( idx_,   *fv_it )) );
 
  159       IO::store( out, 
static_cast<unsigned int>(Base::mesh().property( idx_, *(++fv_it ))) );
 
  160       IO::store( out, 
static_cast<unsigned int>(Base::mesh().property( idx_, *(++fv_it ))) );
 
  166   for (r_it=pmi_.rbegin(); r_it!=r_end; ++r_it)  
 
  169     IO::store( out, vector_cast<Vec3f>(Base::mesh().point(r_it->v0)));
 
  170     IO::store(out, 
static_cast<unsigned int>(Base::mesh().property(idx_, r_it->v1)));
 
  172         r_it->vl.is_valid() ? 
static_cast<unsigned int>(Base::mesh().property(idx_, r_it->vl)) : -1);
 
  174         r_it->vr.is_valid() ? 
static_cast<unsigned int>(Base::mesh().property(idx_, r_it->vr)) : -1);
 
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
 
Kernel::ConstFaceIter ConstFaceIter
Scalar type.
Definition: PolyMeshT.hh:151
 
Kernel::ConstFaceVertexIter ConstFaceVertexIter
Circulator.
Definition: PolyMeshT.hh:177
 
Kernel::VertexIter VertexIter
Scalar type.
Definition: PolyMeshT.hh:143
 
@ LSB
Little endian (Intel family and clones)
Definition: Endian.hh:78
 
static Type local()
Return endian type of host system.
Definition: Endian.hh:83
 
bool write(const std::string &_ofname)
Write progressive mesh data to a file in proprietary binary format .pm.
Definition: ModProgMeshT_impl.hh:82