summaryrefslogtreecommitdiff
path: root/include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h')
-rw-r--r--include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h320
1 files changed, 0 insertions, 320 deletions
diff --git a/include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h b/include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h
deleted file mode 100644
index 701f0820..00000000
--- a/include/gudhi_patches/CGAL/IO/Triangulation_off_ostream.h
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright (c) 2014 INRIA Sophia-Antipolis (France).
-// All rights reserved.
-//
-// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public License as
-// published by the Free Software Foundation; either version 3 of the License,
-// or (at your option) any later version.
-//
-// Licensees holding a valid commercial license may use this file in
-// accordance with the commercial license agreement provided with the software.
-//
-// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// $URL: $
-// $Id: $
-//
-// Author(s) : Clement Jamin
-
-
-#ifndef CGAL_TRIANGULATION_IO_H
-#define CGAL_TRIANGULATION_IO_H
-
-#include <CGAL/Epick_d.h>
-#include <CGAL/Triangulation.h>
-#include <sstream>
-#include <iostream>
-
-namespace CGAL {
-
-namespace Triangulation_IO
-{
-// TODO: test if the stream is binary or text?
-template<typename Traits, typename P>
-int
-output_point(std::ostream & os, const Traits &traits, const P & p)
-{
- typedef typename Traits::Compute_coordinate_d Ccd;
- const Ccd ccd = traits.compute_coordinate_d_object();
- const int dim = traits.point_dimension_d_object()(p);
- if (dim > 0)
- {
- os << ccd(p, 0);
- for (int i = 1 ; i < dim ; ++i)
- os << " " << CGAL::to_double(ccd(p, i));
- }
- return dim;
-}
-
-// TODO: test if the stream is binary or text?
-template<typename Traits, typename P>
-int
-output_weighted_point(std::ostream & os, const Traits &traits, const P & p,
- bool output_weight = true)
-{
- typedef typename Traits::Compute_coordinate_d Ccd;
- typename Traits::Construct_point_d cp =
- traits.construct_point_d_object();
- typename Traits::Compute_weight_d pt_weight = traits.compute_weight_d_object();
- const Ccd ccd = traits.compute_coordinate_d_object();
- const int dim = traits.point_dimension_d_object()(p);
- if (dim > 0)
- {
- output_point(os, traits, p);
- if (output_weight)
- os << " " << pt_weight(p);
- }
- return dim;
-}
-
-// TODO: test if the stream is binary or text?
-template<typename Traits, typename FCH>
-void
-output_full_cell(std::ostream & os, const Traits &traits, const FCH & fch,
- bool output_weights = false)
-{
- typename FCH::value_type::Vertex_handle_iterator vit = fch->vertices_begin();
- for( ; vit != fch->vertices_end(); ++vit )
- {
- int dim;
- if (output_weights)
- dim = output_weighted_point(os, traits, (*vit)->point());
- else
- dim = output_point(os, traits, (*vit)->point());
- if (dim > 0)
- os << std::endl;
- }
-}
-
-// TODO: test if the stream is binary or text?
-/*template<typename Traits, typename P>
-void
-input_point(std::istream & is, const Traits &traits, P & p)
-{
- typedef typename Traits::FT FT;
- std::vector<FT> coords;
-
- std::string line;
- for(;;)
- {
- if (!std::getline(is, line))
- return is;
- if (line != "")
- break;
- }
- std::stringstream line_sstr(line);
- FT temp;
- while (line_sstr >> temp)
- coords.push_back(temp);
-
- p = traits.construct_point_d_object()(coords.begin(), coords.end());
-}*/
-
-} // namespace Triangulation_IO
-
-///////////////////////////////////////////////////////////////
-// TODO: replace these operator>> by an "input_point" function
-///////////////////////////////////////////////////////////////
-
-// TODO: test if the stream is binary or text?
-template<typename K>
-std::istream &
-operator>>(std::istream &is, typename Wrap::Point_d<K> & p)
-{
- typedef typename Wrap::Point_d<K> P;
- typedef typename K::FT FT;
- std::vector<FT> coords;
-
- std::string line;
- for(;;)
- {
- if (!std::getline(is, line))
- return is;
- if (line != "")
- break;
- }
- std::stringstream line_sstr(line);
- FT temp;
- while (line_sstr >> temp)
- coords.push_back(temp);
-
- p = P(coords.begin(), coords.end());
- return is;
-}
-
-// TODO: test if the stream is binary or text?
-template<typename K>
-std::istream &
-operator>>(std::istream &is, typename Wrap::Weighted_point_d<K> & wp)
-{
- typedef typename Wrap::Point_d<K> P;
- typedef typename Wrap::Weighted_point_d<K> WP;
- typedef typename K::FT FT;
-
- std::string line;
- for(;;)
- {
- if (!std::getline(is, line))
- return is;
- if (line != "")
- break;
- }
- std::stringstream line_sstr(line);
- FT temp;
- std::vector<FT> coords;
- while (line_sstr >> temp)
- coords.push_back(temp);
-
- typename std::vector<FT>::iterator last = coords.end() - 1;
- P p = P(coords.begin(), last);
- wp = WP(p, *last);
-
- return is;
-}
-
-// TODO: test if the stream is binary or text?
-template<typename K>
-std::istream &
-operator>>(std::istream &is, typename Wrap::Vector_d<K> & v)
-{
- typedef typename Wrap::Vector_d<K> V;
- typedef typename K::FT FT;
- std::vector<FT> coords;
-
- std::string line;
- for (;;)
- {
- if (!std::getline(is, line))
- return is;
- if (line != "")
- break;
- }
- std::stringstream line_sstr(line);
- FT temp;
- while (line_sstr >> temp)
- coords.push_back(temp);
-
- v = V(coords.begin(), coords.end());
- return is;
-}
-
-template < class GT, class TDS >
-std::ostream &
-export_triangulation_to_off(std::ostream & os,
- const Triangulation<GT,TDS> & tr,
- bool in_3D_export_surface_only = false)
-{
- typedef Triangulation<GT,TDS> Tr;
- typedef typename Tr::Vertex_const_handle Vertex_handle;
- typedef typename Tr::Finite_vertex_const_iterator Finite_vertex_iterator;
- typedef typename Tr::Finite_full_cell_const_iterator Finite_full_cell_iterator;
- typedef typename Tr::Full_cell_const_iterator Full_cell_iterator;
- typedef typename Tr::Full_cell Full_cell;
- typedef typename Full_cell::Vertex_handle_const_iterator Full_cell_vertex_iterator;
-
- if (tr.maximal_dimension() < 2 || tr.maximal_dimension() > 3)
- {
- std::cerr << "Warning: export_tds_to_off => dimension should be 2 or 3.";
- os << "Warning: export_tds_to_off => dimension should be 2 or 3.";
- return os;
- }
-
- size_t n = tr.number_of_vertices();
-
- std::stringstream output;
-
- // write the vertices
- std::map<Vertex_handle, int> index_of_vertex;
- int i = 0;
- for(Finite_vertex_iterator it = tr.finite_vertices_begin();
- it != tr.finite_vertices_end(); ++it, ++i)
- {
- Triangulation_IO::output_point(output, tr.geom_traits(), it->point());
- if (tr.maximal_dimension() == 2)
- output << " 0";
- output << std::endl;
- index_of_vertex[it.base()] = i;
- }
- CGAL_assertion( i == n );
-
- size_t number_of_triangles = 0;
- if (tr.maximal_dimension() == 2)
- {
- for (Finite_full_cell_iterator fch = tr.finite_full_cells_begin() ;
- fch != tr.finite_full_cells_end() ; ++fch)
- {
- output << "3 ";
- for (Full_cell_vertex_iterator vit = fch->vertices_begin() ;
- vit != fch->vertices_end() ; ++vit)
- {
- output << index_of_vertex[*vit] << " ";
- }
- output << std::endl;
- ++number_of_triangles;
- }
- }
- else if (tr.maximal_dimension() == 3)
- {
- if (in_3D_export_surface_only)
- {
- // Parse boundary facets
- for (Full_cell_iterator fch = tr.full_cells_begin() ;
- fch != tr.full_cells_end() ; ++fch)
- {
- if (tr.is_infinite(fch))
- {
- output << "3 ";
- for (Full_cell_vertex_iterator vit = fch->vertices_begin() ;
- vit != fch->vertices_end() ; ++vit)
- {
- if (!tr.is_infinite(*vit))
- output << index_of_vertex[*vit] << " ";
- }
- output << std::endl;
- ++number_of_triangles;
- }
- }
- }
- else
- {
- // Parse finite cells
- for (Finite_full_cell_iterator fch = tr.finite_full_cells_begin() ;
- fch != tr.finite_full_cells_end() ; ++fch)
- {
- output << "3 "
- << index_of_vertex[fch->vertex(0)] << " "
- << index_of_vertex[fch->vertex(1)] << " "
- << index_of_vertex[fch->vertex(2)]
- << std::endl;
- output << "3 "
- << index_of_vertex[fch->vertex(0)] << " "
- << index_of_vertex[fch->vertex(2)] << " "
- << index_of_vertex[fch->vertex(3)]
- << std::endl;
- output << "3 "
- << index_of_vertex[fch->vertex(1)] << " "
- << index_of_vertex[fch->vertex(2)] << " "
- << index_of_vertex[fch->vertex(3)]
- << std::endl;
- output << "3 "
- << index_of_vertex[fch->vertex(0)] << " "
- << index_of_vertex[fch->vertex(1)] << " "
- << index_of_vertex[fch->vertex(3)]
- << std::endl;
- number_of_triangles += 4;
- }
- }
- }
-
- os << "OFF \n"
- << n << " "
- << number_of_triangles << " 0\n"
- << output.str();
-
- return os;
-}
-
-} //namespace CGAL
-
-#endif // CGAL_TRIANGULATION_IO_H