From: guido Date: Wed, 15 Oct 2003 21:16:13 +0000 (+0000) Subject: first results with write_xfig X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ca3a2b9f57e7a851af4aaa54dd970e3e77fcb99;p=dealii-svn.git first results with write_xfig git-svn-id: https://svn.dealii.org/trunk@8090 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/deal.II/include/grid/grid_out.h b/deal.II/deal.II/include/grid/grid_out.h index 2b548ac26a..55de6a7903 100644 --- a/deal.II/deal.II/include/grid/grid_out.h +++ b/deal.II/deal.II/include/grid/grid_out.h @@ -17,6 +17,7 @@ #include #include +#include #include template class Triangulation; diff --git a/deal.II/deal.II/source/grid/grid_out.cc b/deal.II/deal.II/source/grid/grid_out.cc index 79985800d1..0c86df7485 100644 --- a/deal.II/deal.II/source/grid/grid_out.cc +++ b/deal.II/deal.II/source/grid/grid_out.cc @@ -370,8 +370,9 @@ void GridOut::write_ucd (const Triangulation &tria, #if deal_II_dimension != 2 template -void GridOut::write_xfig (const Triangulation &, - std::ostream &) +void GridOut::write_xfig (const Triangulation&, + std::ostream&, + const Mapping*) { Assert (false, ExcNotImplemented()); } @@ -379,10 +380,57 @@ void GridOut::write_xfig (const Triangulation &, #else template -void GridOut::write_xfig (const Triangulation &, - std::ostream &) +void GridOut::write_xfig (const Triangulation& tria, + std::ostream& out, + const Mapping* mapping) { - Assert (false, ExcNotImplemented()); + // The following text was copied + // from an existing XFig file. + out << "#FIG 3.2\nLandscape\nCenter\nInches" << std::endl + << "A4\n100.00\nSingle" << std::endl + // Background is transparent + << "-3" << std::endl + << "1200 2" << std::endl; + + // We write all cells and cells on + // coarser levels are behind cells + // on finer levels. Level 0 + // corresponds to a depth of 900, + // each level subtracting 1 + typename Triangulation::cell_iterator cell = tria.begin(); + const typename Triangulation::cell_iterator end = tria.end(); + + for (;cell != end; ++cell) + { + // Code for polygon + out << "2 3 " + // with solid black line thickness 1 + << " 0 1 0 "; + // Fill color + out << " 6 "; + // Depth, unused, solid fill + out << 900-cell->level() << " 0 20 0.0 " + // some style parameters + << " 0 0 -1 0 0 " + // number of points + << '5' << std::endl; + + // For each point, write scaled + // and shifted coordinates + // multiplied by 1200 + // (dots/inch) + const unsigned int nv = GeometryInfo::vertices_per_cell; + for (unsigned int k=0;k<=nv;++k) + { + const Point& p = cell->vertex(k % nv); + for (unsigned int d=0;d &tria, case eps: write_eps (tria, out, mapping); return; - }; + + case xfig: + write_xfig (tria, out, mapping); + return; + }; Assert (false, ExcInternalError()); }