// ============================================================================ // // Copyright (c) 1997 The CGAL Consortium // // This software and related documentation is part of an INTERNAL release // of the Computational Geometry Algorithms Library (CGAL). It is not // intended for general use. // // ---------------------------------------------------------------------------- // // release : $CGAL_Revision: $ // release_date : $CGAL_Date: $ // // file : include/CGAL/IO/Polyhedron_geomview_ostream.h // package : Polyhedron_IO 2.11 (04 Feb 2000) // chapter : Support Library // // revision : $Revision$ // revision_date : $Date$ // // author(s) : Lutz Kettner // maintainer : // coordinator : INRIA, Sophia Antipolis // // Output stream operator for Polyhedrons into Geomview_stream. // ============================================================================ #ifndef CGAL_IO_POLYHEDRON_GEOMVIEW_OSTREAM_H #define CGAL_IO_POLYHEDRON_GEOMVIEW_OSTREAM_H 1 #include #include #include CGAL_BEGIN_NAMESPACE class Polyhedron_writer_geomview { Geomview_stream* out; public: Polyhedron_writer_geomview( Geomview_stream& geo) : out(&geo) {} void write_header( std::ostream&, std::size_t vertices, std::size_t, std::size_t facets) { // ignore ostream. Output goes to Geomview_stream. // Print header. out->set_ascii_mode(); *out << "(geometry " << out->get_new_id("polyhedron") << " {appearance {}{ "; out->set_binary_mode(); *out << "OFF BINARY\n" << int(vertices) << int(facets) << 0 ; } void write_footer() { *out << "}})"; out->set_ascii_mode(); } void write_vertex( const double& x, const double& y, const double& z) { *out << x << y << z; } void write_facet_header() {} void write_facet_begin( std::size_t no) { *out << int(no); } void write_facet_vertex_index( std::size_t index) { *out << int(index); } void write_facet_end() { double r = out->fcr(), g = out->fcg(), b = out->fcb(); *out << 4 << r << g << b << 1.0; } }; template < class Traits, class Items, #ifndef CGAL_CFG_NO_TMPL_IN_TMPL_PARAM template < class T, class I, class A> #endif class HDS, class Alloc> Geomview_stream& operator<<( Geomview_stream &gv, const Polyhedron_3 &P) { Polyhedron_writer_geomview writer(gv); generic_print_polyhedron( std::cerr, P, writer); // note: cerr not used. return gv; } CGAL_END_NAMESPACE #endif // CGAL_IO_POLYHEDRON_GEOMVIEW_OSTREAM_H // // EOF //