diff --git a/BGL/include/CGAL/boost/graph/IO/VTK.h b/BGL/include/CGAL/boost/graph/IO/VTK.h index feda6f8782f..9b0d73434da 100644 --- a/BGL/include/CGAL/boost/graph/IO/VTK.h +++ b/BGL/include/CGAL/boost/graph/IO/VTK.h @@ -239,7 +239,7 @@ void write_polys_tag(std::ostream& os, } else { - os << "\">\n"; + os << ">\n"; for(face_descriptor f : faces(g)) { @@ -260,7 +260,7 @@ void write_polys_tag(std::ostream& os, } else { - os << "\">\n"; + os << ">\n"; std::size_t polys_offset = 0; for(face_descriptor f : faces(g)) @@ -283,7 +283,7 @@ void write_polys_tag(std::ostream& os, } else { - os << "\">\n"; + os << ">\n"; for(std::size_t i = 0; i< num_faces(g); ++i) os << "5 "; os << " \n"; diff --git a/BGL/test/BGL/test_bgl_read_write.cpp b/BGL/test/BGL/test_bgl_read_write.cpp index c2d69405388..0c423ad5012 100644 --- a/BGL/test/BGL/test_bgl_read_write.cpp +++ b/BGL/test/BGL/test_bgl_read_write.cpp @@ -55,14 +55,14 @@ void test_bgl_read_write(const char* filename) #ifdef CGAL_USE_VTK template -bool test_bgl_vtp() +bool test_bgl_vtp(bool binary = false) { Mesh fg; CGAL::make_tetrahedron(Point(0, 0, 0), Point(1, 1, 0), Point(2, 0, 1), Point(3, 0, 0), fg); std::ofstream os("tetrahedron.vtp"); - CGAL::write_VTP(os, fg); + CGAL::write_VTP(os, fg, CGAL::parameters::use_binary_mode(binary)); if(!os) { std::cerr<<"vtp writing failed."< -bool test_bgl_vtp() +bool test_bgl_vtp(bool binary) { Polyhedron fg; CGAL::make_tetrahedron(Point(0, 0, 0), Point(1, 1, 0), @@ -98,7 +98,7 @@ bool test_bgl_vtp() for(auto v : vertices(fg)) put(vid,v, id++); std::ofstream os("tetrahedron.vtp"); - CGAL::write_VTP(os, fg, CGAL::parameters::vertex_index_map(vid)); + CGAL::write_VTP(os, fg, CGAL::parameters::vertex_index_map(vid).use_binary_mode(binary)); if(!os) { std::cerr<<"vtp writing failed."<() } //todo binary tests -bool test_soup_vtp() +bool test_soup_vtp(bool binary = false) { //generate a test file std::vector points(4); @@ -149,7 +149,7 @@ bool test_soup_vtp() polys[3] = poly; std::ofstream os("tetrahedron_soup.vtp"); - CGAL::write_VTP(os, points, polys); + CGAL::write_VTP(os, points, polys, CGAL::parameters::use_binary_mode(binary)); if(!os) { std::cerr<<"vtp writing failed."<1) ? argv[1] : "data/prim.off"; -/* + //PLY if(!test_PLY()) return 1; @@ -355,16 +355,25 @@ int main(int argc, char** argv) return 1; if(!test_STL()) return 1; -*/ + // VTP #ifdef CGAL_USE_VTK - if(!test_bgl_vtp()) + if(!test_bgl_vtp(false)) return 1; - if(!test_bgl_vtp()) + if(!test_bgl_vtp(false)) return 1; - if(!test_bgl_vtp()) + if(!test_bgl_vtp(false)) return 1; - if(!test_soup_vtp()) + if(!test_soup_vtp(false)) + return 1; + + if(!test_bgl_vtp(true)) + return 1; + if(!test_bgl_vtp(true)) + return 1; + if(!test_bgl_vtp(true)) + return 1; + if(!test_soup_vtp(true)) return 1; #endif diff --git a/Stream_support/include/CGAL/IO/VTK.h b/Stream_support/include/CGAL/IO/VTK.h index 6e62a8b814e..4a7563d2b9c 100644 --- a/Stream_support/include/CGAL/IO/VTK.h +++ b/Stream_support/include/CGAL/IO/VTK.h @@ -152,17 +152,20 @@ void write_soup_polys(std::ostream& os, { std::vector connectivity_table; - std::size_t off = 0; + std::vector cumul_offsets(offsets); - for(const auto& poly : polygons) + for(size_t i = 0; i < polygons.size(); ++i) { + const auto& poly = polygons[i]; + off+=offsets[i]; + cumul_offsets[i]=off; for(const std::size_t& i : poly) connectivity_table.push_back(i); } write_vector(os, connectivity_table); - write_vector(os, offsets); + write_vector(os, cumul_offsets); write_vector(os, cell_type); } @@ -230,8 +233,8 @@ void write_soup_polys_tag(std::ostream& os, for(std::size_t i = 0; i < polygons.size(); ++i) { size_map[i] = polygons[i].size(); - CGAL_assertion(size_map.back()>=3); - total_size +=size_map.back(); + CGAL_assertion(size_map[i]>=3); + total_size +=size_map[i]; } // if binary output, just write the xml tag @@ -243,7 +246,7 @@ void write_soup_polys_tag(std::ostream& os, } else { - os << "\">\n"; + os << ">\n"; for(const auto& poly : polygons) { @@ -264,7 +267,7 @@ void write_soup_polys_tag(std::ostream& os, } else { - os << "\">\n"; + os << ">\n"; std::size_t polys_offset = 0; for(std::size_t i = 0; i < polygons.size(); ++i) @@ -287,7 +290,7 @@ void write_soup_polys_tag(std::ostream& os, } else { - os << "\">\n"; + os << ">\n"; for(std::size_t i = 0; i< polygons.size(); ++i) { switch(size_map[i]){