From e61f12899723e47b2a1570787efd6e8296fab55d Mon Sep 17 00:00:00 2001 From: wolf Date: Fri, 14 Jun 2002 14:07:27 +0000 Subject: [PATCH] Can now also write vertices in eps. git-svn-id: https://svn.dealii.org/trunk@6136 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/grid/grid_out.h | 18 +++++- .../source/grid/grid_out.all_dimensions.cc | 6 +- deal.II/deal.II/source/grid/grid_out.cc | 59 +++++++++++++++---- 3 files changed, 68 insertions(+), 15 deletions(-) diff --git a/deal.II/deal.II/include/grid/grid_out.h b/deal.II/deal.II/include/grid/grid_out.h index ec75baaab5..c47609fa1d 100644 --- a/deal.II/deal.II/include/grid/grid_out.h +++ b/deal.II/deal.II/include/grid/grid_out.h @@ -304,9 +304,22 @@ namespace GridOutFlags * @p{index}. If @p{true}, the * first format is * taken. Default is @p{true}. + * + * The flag has obviously no + * effect if + * @p{write_cell_numbers} is + * @p{false}. */ bool write_cell_number_level; - + + /** + * Vertex numbers can be + * written onto the + * vertices. This is controled + * by the following + * flag. Default is @p{false}. + */ + bool write_vertex_numbers; /** * Constructor. @@ -317,7 +330,8 @@ namespace GridOutFlags const bool color_lines_on_user_flag = false, const unsigned int n_boundary_face_points = 2, const bool write_cell_numbers = false, - const bool write_cell_number_level = true); + const bool write_cell_number_level = true, + const bool write_vertex_numbers = false); }; /** diff --git a/deal.II/deal.II/source/grid/grid_out.all_dimensions.cc b/deal.II/deal.II/source/grid/grid_out.all_dimensions.cc index 706f2aba04..3127081cce 100644 --- a/deal.II/deal.II/source/grid/grid_out.all_dimensions.cc +++ b/deal.II/deal.II/source/grid/grid_out.all_dimensions.cc @@ -80,13 +80,15 @@ namespace GridOutFlags const bool color_lines_on_user_flag, const unsigned int n_boundary_face_points, const bool write_cell_numbers, - const bool write_cell_number_level) + const bool write_cell_number_level, + const bool write_vertex_numbers) : EpsFlagsBase(size_type, size, line_width, color_lines_on_user_flag, n_boundary_face_points), write_cell_numbers (write_cell_numbers), - write_cell_number_level (write_cell_number_level) + write_cell_number_level (write_cell_number_level), + write_vertex_numbers (write_vertex_numbers) {}; diff --git a/deal.II/deal.II/source/grid/grid_out.cc b/deal.II/deal.II/source/grid/grid_out.cc index 9cc811031a..5aca041245 100644 --- a/deal.II/deal.II/source/grid/grid_out.cc +++ b/deal.II/deal.II/source/grid/grid_out.cc @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -1004,14 +1005,15 @@ void GridOut::write_eps (const Triangulation &tria, << "/r {1 0 0 setrgbcolor} def" << std::endl; // in 2d, we can also plot cell - // numbers, but this requires a - // somewhat more lengthy - // preamble. please don't ask - // me what most of this means, - // it is reverse engineered - // from what GNUPLOT uses in - // its output - if ((dim == 2) && (eps_flags_2.write_cell_numbers == true)) + // and vertex numbers, but this + // requires a somewhat more + // lengthy preamble. please + // don't ask me what most of + // this means, it is reverse + // engineered from what GNUPLOT + // uses in its output + if ((dim == 2) && (eps_flags_2.write_cell_numbers || + eps_flags_2.write_vertex_numbers)) { out << ("/R {rmoveto} bind def\n" "/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont\n" @@ -1066,12 +1068,47 @@ void GridOut::write_eps (const Triangulation &tria, else out << cell->index(); - out << " )] " - << "] -6 MCshow" - << std::endl; + out << " )] " + << "] -6 MCshow" + << std::endl; }; }; + // and the vertex numbers + if ((dim == 2) && (eps_flags_2.write_vertex_numbers == true)) + { + out << "(Helvetica) findfont 140 scalefont setfont" + << std::endl; + + // have a list of those + // vertices which we have + // already tracked, to avoid + // doing this multiply + std::set treated_vertices; + typename Triangulation::active_cell_iterator + cell = tria.begin_active (), + endc = tria.end (); + for (; cell!=endc; ++cell) + for (unsigned int vertex=0; + vertex::vertices_per_cell; + ++vertex) + if (treated_vertices.find(cell->vertex_index(vertex)) + == + treated_vertices.end()) + { + treated_vertices.insert (cell->vertex_index(vertex)); + + out << (cell->vertex(vertex)(0)-offset(0))*scale << ' ' + << (cell->vertex(vertex)(1)-offset(1))*scale + << " m" << std::endl + << "[ [(Helvetica) 10.0 0.0 true true (" + << cell->vertex_index(vertex) + << " )] " + << "] -6 MCshow" + << std::endl; + }; + }; + out << "showpage" << std::endl; AssertThrow (out, ExcIO()); -- 2.39.5