equal
deleted
inserted
replaced
16 |
16 |
17 #ifndef LEMON_GRAPH_TO_EPS_H |
17 #ifndef LEMON_GRAPH_TO_EPS_H |
18 #define LEMON_GRAPH_TO_EPS_H |
18 #define LEMON_GRAPH_TO_EPS_H |
19 |
19 |
20 #include <sys/time.h> |
20 #include <sys/time.h> |
21 #include <time.h> |
|
22 |
21 |
23 #include<iostream> |
22 #include<iostream> |
24 #include<fstream> |
23 #include<fstream> |
25 #include<sstream> |
24 #include<sstream> |
26 #include<algorithm> |
25 #include<algorithm> |
27 #include<vector> |
26 #include<vector> |
28 |
27 |
|
28 #include <ctime> |
|
29 #include <cmath> |
|
30 |
29 #include<lemon/invalid.h> |
31 #include<lemon/invalid.h> |
30 #include<lemon/xy.h> |
32 #include<lemon/xy.h> |
31 #include<lemon/maps.h> |
33 #include<lemon/maps.h> |
32 #include<lemon/bezier.h> |
34 #include<lemon/bezier.h> |
|
35 |
33 |
36 |
34 ///\ingroup io_group |
37 ///\ingroup io_group |
35 ///\file |
38 ///\file |
36 ///\brief Simple graph drawer |
39 ///\brief Simple graph drawer |
37 /// |
40 /// |
807 for(typename std::vector<Edge>::iterator e=i;e!=j;++e) |
810 for(typename std::vector<Edge>::iterator e=i;e!=j;++e) |
808 sw+=_edgeWidths[*e]*_edgeWidthScale+_parEdgeDist; |
811 sw+=_edgeWidths[*e]*_edgeWidthScale+_parEdgeDist; |
809 sw-=_parEdgeDist; |
812 sw-=_parEdgeDist; |
810 sw/=-2.0; |
813 sw/=-2.0; |
811 xy<double> dvec(_coords[g.target(*i)]-_coords[g.source(*i)]); |
814 xy<double> dvec(_coords[g.target(*i)]-_coords[g.source(*i)]); |
812 double l=sqrt(dvec.normSquare()); |
815 double l=std::sqrt(dvec.normSquare()); |
813 ///\todo better 'epsilon' would be nice here. |
816 ///\todo better 'epsilon' would be nice here. |
814 xy<double> d(dvec/std::max(l,1e-9)); |
817 xy<double> d(dvec/std::max(l,1e-9)); |
815 xy<double> m; |
818 xy<double> m; |
816 // m=xy<double>(_coords[g.target(*i)]+_coords[g.source(*i)])/2.0; |
819 // m=xy<double>(_coords[g.target(*i)]+_coords[g.source(*i)])/2.0; |
817 |
820 |
860 << bez.p2.x << ' ' << bez.p2.y << ' ' |
863 << bez.p2.x << ' ' << bez.p2.y << ' ' |
861 << bez.p3.x << ' ' << bez.p3.y << ' ' |
864 << bez.p3.x << ' ' << bez.p3.y << ' ' |
862 << bez.p4.x << ' ' << bez.p4.y << " curveto stroke\n"; |
865 << bez.p4.x << ' ' << bez.p4.y << " curveto stroke\n"; |
863 xy<double> dd(rot90(linend-apoint)); |
866 xy<double> dd(rot90(linend-apoint)); |
864 dd*=(.5*_edgeWidths[*e]*_edgeWidthScale+_arrowWidth)/ |
867 dd*=(.5*_edgeWidths[*e]*_edgeWidthScale+_arrowWidth)/ |
865 sqrt(dd.normSquare()); |
868 std::sqrt(dd.normSquare()); |
866 os << "newpath " << psOut(apoint) << " moveto " |
869 os << "newpath " << psOut(apoint) << " moveto " |
867 << psOut(linend+dd) << " lineto " |
870 << psOut(linend+dd) << " lineto " |
868 << psOut(linend-dd) << " lineto closepath fill\n"; |
871 << psOut(linend-dd) << " lineto closepath fill\n"; |
869 } |
872 } |
870 else { |
873 else { |