00001 /* takes a topology (mesh or space) and generates a file for dot/dotty 00002 */ 00003 00004 #ifndef topologyDotty_hh 00005 #define topologyDotty_hh 00006 00007 #include <string> 00008 #include <fstream> 00009 #include "space/postProcess.hh" 00010 #include "basics/typedefs.hh" 00011 00012 namespace concepts { 00013 // forward declarations 00014 template<class F> 00015 class Element; 00016 00017 template<class F> 00018 class Space; 00019 00020 class Cell; 00021 class Connector1; 00022 class Mesh; 00023 } 00024 00025 namespace graphics { 00026 00027 using concepts::Real; 00028 00029 // ********************************************************* TopologyDotty ** 00030 00042 template<class F> 00043 class TopologyDotty { 00044 public: 00048 TopologyDotty(concepts::Mesh& msh, std::string filename); 00049 00053 TopologyDotty(concepts::Space<F>& spc, std::string filename); 00054 private: 00056 concepts::Space<F>* spc_; 00057 00059 concepts::Mesh* msh_; 00060 00062 std::string filename_; 00063 }; 00064 00065 // ***************************************************** TopologyDottyCell ** 00066 00074 template<class F> 00075 class TopologyDottyCell : public concepts::CellPostprocess<F> { 00076 public: 00080 TopologyDottyCell(const std::string file); 00081 ~TopologyDottyCell(); 00082 virtual void operator() (const concepts::Element<F>& elm); 00083 virtual void operator() (const concepts::Cell& cell); 00084 private: 00085 void edge_(const concepts::Connector1& cntr); 00086 00088 std::ofstream os_; 00089 }; 00090 00091 } // namespace graphics 00092 00093 #endif // topologyDotty_hh