From 38599251b3b9a247ae7b71004b34fc2a90e1fdb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20M=C3=B6ller?= Date: Wed, 21 Aug 2013 15:00:59 +0000 Subject: [PATCH] - fix om writer with colors - more om unittests git-svn-id: http://www.openmesh.org/svnrepo/OpenMesh/trunk@948 fdac6126-5c0c-442c-9429-916003d36597 --- src/OpenMesh/Core/IO/writer/OMWriter.cc | 6 +- src/Unittests/unittests_read_write_OM.hh | 458 +++++++++++++++++++++++ 2 files changed, 461 insertions(+), 3 deletions(-) diff --git a/src/OpenMesh/Core/IO/writer/OMWriter.cc b/src/OpenMesh/Core/IO/writer/OMWriter.cc index 6aa58319..8d67eb5f 100644 --- a/src/OpenMesh/Core/IO/writer/OMWriter.cc +++ b/src/OpenMesh/Core/IO/writer/OMWriter.cc @@ -250,10 +250,10 @@ bool _OMWriter_::write_binary(std::ostream& _os, BaseExporter& _be, chunk_header.name_ = false; chunk_header.entity_ = OMFormat::Chunk::Entity_Vertex; chunk_header.type_ = OMFormat::Chunk::Type_Color; - chunk_header.signed_ = OMFormat::is_signed( c ); - chunk_header.float_ = OMFormat::is_float( c ); + chunk_header.signed_ = OMFormat::is_signed( c[0] ); + chunk_header.float_ = OMFormat::is_float( c[0] ); chunk_header.dim_ = OMFormat::dim( c ); - chunk_header.bits_ = OMFormat::bits( c ); + chunk_header.bits_ = OMFormat::bits( c[0] ); bytes += store( _os, chunk_header, swap ); for (i=0, nV=header.n_vertices_; i prop; + mesh.add_property(prop,"VBProp"); + mesh.property(prop).set_persistent(true); + + mesh.property(prop,v1) = true; + mesh.property(prop,v2) = false; + mesh.property(prop,v3) = true; + + // save + bool ok = OpenMesh::IO::write_mesh(mesh,filename); + EXPECT_TRUE(ok) << "Unable to write "< prop; + mesh.add_property(prop,"VBProp"); + mesh.property(prop).set_persistent(true); + + mesh.property(prop,v1) = true; + mesh.property(prop,v2) = false; + mesh.property(prop,v3) = true; + + OpenMesh::VPropHandleT prop2; + mesh.add_property(prop2,"VBProp2"); + mesh.property(prop2).set_persistent(true); + + mesh.property(prop2,v1) = false; + mesh.property(prop2,v2) = false; + mesh.property(prop2,v3) = false; + + // save + bool ok = OpenMesh::IO::write_mesh(mesh,filename); + EXPECT_TRUE(ok) << "Unable to write "< prop; + mesh.add_property(prop,propName); + mesh.property(prop).set_persistent(true); + + Mesh::EdgeHandle e1 = Mesh::EdgeHandle(0); + Mesh::EdgeHandle e2 = Mesh::EdgeHandle(1); + Mesh::EdgeHandle e3 = Mesh::EdgeHandle(2); + + int va1ue1 = 10, + value2 = 21, + value3 = 32; + + mesh.property(prop,e1) = va1ue1; + mesh.property(prop,e2) = value2; + mesh.property(prop,e3) = value3; + + // save + bool ok = OpenMesh::IO::write_mesh(mesh,filename); + EXPECT_TRUE(ok) << "Unable to write "< prop; + mesh.add_property(prop,propName); + mesh.property(prop).set_persistent(true); + + Mesh::FaceHandle f1 = Mesh::FaceHandle(0); + + double va1ue1 = 0.5; + + mesh.property(prop,f1) = va1ue1; + + // save + bool ok = OpenMesh::IO::write_mesh(mesh,filename); + EXPECT_TRUE(ok) << "Unable to write "< prop; + mesh.add_property(prop,propName); + mesh.property(prop).set_persistent(true); + + Mesh::FaceHandle f1 = Mesh::FaceHandle(0); + + double va1ue1 = 3.1f; + + mesh.property(prop,f1) = va1ue1; + + // save + bool ok = OpenMesh::IO::write_mesh(mesh,filename); + EXPECT_TRUE(ok) << "Unable to write "< faceProp; + OpenMesh::VPropHandleT vertexProp; + bool ok; + + //generate file + /* mesh_.clear(); + ok = OpenMesh::IO::read_mesh(mesh_,"cube1.off"); + + mesh_.add_property(faceProp,"DFProp"); + mesh_.property(faceProp).set_persistent(true); + + mesh_.add_property(vertexProp, "IVProp"); + mesh_.property(vertexProp).set_persistent(true); + + + for (Mesh::FaceIter fIter = mesh_.faces_begin(); fIter != mesh_.faces_end(); ++fIter) + mesh_.property(faceProp,*fIter) = 0.3; + + for (Mesh::VertexIter vIter = mesh_.vertices_begin(); vIter != mesh_.vertices_end(); ++vIter) + mesh_.property(vertexProp,*vIter) = vIter->idx(); + + OpenMesh::IO::write_mesh(mesh_,"cube1_customProps.om"); + + + mesh_.clear(); +*/ + //read file + Mesh mesh; + mesh.add_property(faceProp,"DFProp"); + mesh.property(faceProp).set_persistent(true); + + mesh.add_property(vertexProp, "IVProp"); + mesh.property(vertexProp).set_persistent(true); + + ok = OpenMesh::IO::read_mesh(mesh,"cube1_customProps.om"); + EXPECT_TRUE(ok) << "Unable to read cube1_customProps.om"; + + ///=============== result ====================== + EXPECT_EQ(7526u , mesh.n_vertices()) << "The number of loaded vertices is not correct!"; + EXPECT_EQ(22572u, mesh.n_edges()) << "The number of loaded edges is not correct!"; + EXPECT_EQ(15048u, mesh.n_faces()) << "The number of loaded faces is not correct!"; + + bool wrong = false; + for (Mesh::FaceIter fIter = mesh.faces_begin(); fIter != mesh.faces_end() && !wrong; ++fIter) + wrong = (0.3 != mesh.property(faceProp,*fIter)); + EXPECT_FALSE(wrong) << "min one face has wrong face property"; + + wrong = false; + for (Mesh::VertexIter vIter = mesh.vertices_begin(); vIter != mesh.vertices_end() && !wrong; ++vIter) + wrong = (vIter->idx() != mesh.property(vertexProp,*vIter)); + EXPECT_FALSE(wrong) << "min one vertex has worng vertex property"; +} + + #endif // INCLUDE GUARD