... | ... |
@@ -46,23 +46,25 @@ |
46 | 46 |
///\brief Simple graph drawer |
47 | 47 |
/// |
48 | 48 |
///\author Alpar Juttner |
49 | 49 |
|
50 | 50 |
namespace lemon { |
51 | 51 |
|
52 |
template<class MT> |
|
53 |
class _NegY { |
|
54 |
public: |
|
55 |
typedef typename MT::Key Key; |
|
56 |
typedef typename MT::Value Value; |
|
57 |
const MT ↦ |
|
58 |
int yscale; |
|
59 |
_NegY(const MT &m,bool b) : map(m), yscale(1-b*2) {} |
|
60 |
Value operator[](Key n) { return Value(map[n].x,map[n].y*yscale);} |
|
61 |
}; |
|
62 |
|
|
52 |
namespace _graph_to_eps_bits { |
|
53 |
template<class MT> |
|
54 |
class _NegY { |
|
55 |
public: |
|
56 |
typedef typename MT::Key Key; |
|
57 |
typedef typename MT::Value Value; |
|
58 |
const MT ↦ |
|
59 |
int yscale; |
|
60 |
_NegY(const MT &m,bool b) : map(m), yscale(1-b*2) {} |
|
61 |
Value operator[](Key n) { return Value(map[n].x,map[n].y*yscale);} |
|
62 |
}; |
|
63 |
} |
|
64 |
|
|
63 | 65 |
///Default traits class of \ref GraphToEps |
64 | 66 |
|
65 | 67 |
///Default traits class of \ref GraphToEps |
66 | 68 |
/// |
67 | 69 |
///\c G is the type of the underlying graph. |
68 | 70 |
template<class G> |
... | ... |
@@ -155,13 +157,13 @@ |
155 | 157 |
_nodeBorderQuotient(.1), |
156 | 158 |
_drawArrows(false), _arrowLength(1), _arrowWidth(0.3), |
157 | 159 |
_showNodes(true), _showArcs(true), |
158 | 160 |
_enableParallel(false), _parArcDist(1), |
159 | 161 |
_showNodeText(false), _nodeTexts(false), _nodeTextSize(1), |
160 | 162 |
_showNodePsText(false), _nodePsTexts(false), _nodePsTextsPreamble(0), |
161 |
_undirected( |
|
163 |
_undirected(lemon::UndirectedTagIndicator<G>::value), |
|
162 | 164 |
_pleaseRemoveOsStream(_pros), _scaleToA4(false), |
163 | 165 |
_nodeTextColorType(SAME_COL), _nodeTextColors(BLACK), |
164 | 166 |
_autoNodeScale(false), |
165 | 167 |
_autoArcWidthScale(false), |
166 | 168 |
_absoluteNodeSizes(false), |
167 | 169 |
_absoluteArcWidths(false), |
... | ... |
@@ -665,13 +667,13 @@ |
665 | 667 |
GraphToEps<T> &undirected(bool b=true) {_undirected=b;return *this;} |
666 | 668 |
|
667 | 669 |
///Sets whether the the graph is directed |
668 | 670 |
|
669 | 671 |
///Sets whether the the graph is directed. |
670 | 672 |
///Use it to show the edges as a pair of directed ones. |
671 |
GraphToEps<T> & |
|
673 |
GraphToEps<T> &directed(bool b=true) {_undirected=!b;return *this;} |
|
672 | 674 |
|
673 | 675 |
///Sets the title. |
674 | 676 |
|
675 | 677 |
///Sets the title of the generated image, |
676 | 678 |
///namely it inserts a <tt>%%Title:</tt> DSC field to the header of |
677 | 679 |
///the EPS file. |
... | ... |
@@ -711,13 +713,14 @@ |
711 | 713 |
///it draws the graph. |
712 | 714 |
void run() { |
713 | 715 |
///\todo better 'epsilon' would be nice here. |
714 | 716 |
const double EPSILON=1e-9; |
715 | 717 |
if(dontPrint) return; |
716 | 718 |
|
717 |
_NegY<typename T::CoordsMapType> |
|
719 |
_graph_to_eps_bits::_NegY<typename T::CoordsMapType> |
|
720 |
mycoords(_coords,_negY); |
|
718 | 721 |
|
719 | 722 |
os << "%!PS-Adobe-2.0 EPSF-2.0\n"; |
720 | 723 |
if(_title.size()>0) os << "%%Title: " << _title << '\n'; |
721 | 724 |
if(_copyright.size()>0) os << "%%Copyright: " << _copyright << '\n'; |
722 | 725 |
// << "%%Copyright: XXXX\n" |
723 | 726 |
os << "%%Creator: LEMON, graphToEps()\n"; |
0 comments (0 inline)