00001 /* 00002 * $Revision: 2027 $ 00003 * 00004 * last checkin: 00005 * $Author: gutwenger $ 00006 * $Date: 2010-09-01 11:55:17 +0200 (Wed, 01 Sep 2010) $ 00007 ***************************************************************/ 00008 00053 #ifdef _MSC_VER 00054 #pragma once 00055 #endif 00056 00057 #ifndef OGDF_EDGE_ATTRIBUTES_H 00058 #define OGDF_EDGE_ATTRIBUTES_H 00059 00060 #include <ogdf/basic/geometry.h> 00061 #include <ogdf/basic/Graph.h> 00062 00063 namespace ogdf { 00064 00065 class OGDF_EXPORT EdgeAttributes 00066 { 00067 //helping data structure that stores the graphical attributes of an edge 00068 //that are needed for the force-directed algorithms. 00069 00070 //outputstream for EdgeAttributes 00071 friend ostream &operator<< (ostream &,const EdgeAttributes &); 00072 00073 //inputstream for EdgeAttributes 00074 friend istream &operator>> (istream &,EdgeAttributes &); 00075 00076 public: 00077 00078 EdgeAttributes(); //constructor 00079 ~EdgeAttributes(); //destructor 00080 00081 void set_EdgeAttributes(double l,edge e_orig,edge e_sub) 00082 { 00083 length = l; 00084 e_original = e_orig; 00085 e_subgraph = e_sub; 00086 } 00087 00088 void set_length(double l) {length = l;} 00089 double get_length() const {return length;} 00090 00091 00092 //needed for the divide et impera step in FMMM 00093 00094 void set_original_edge (edge e) {e_original = e;} 00095 void set_subgraph_edge (edge e) {e_subgraph = e;} 00096 edge get_original_edge() const {return e_original;} 00097 edge get_subgraph_edge() const {return e_subgraph;} 00098 00099 //needed for the preprocessing step in FMMM (set/get_original_edge are needed, too) 00100 00101 void set_copy_edge (edge e) {e_subgraph = e;} 00102 edge get_copy_edge() const {return e_subgraph;} 00103 00104 //needed for multilevel step 00105 00106 void set_higher_level_edge (edge e) {e_subgraph = e;} 00107 edge get_higher_level_edge() const {return e_subgraph;} 00108 bool is_moon_edge() const {return moon_edge;} 00109 void make_moon_edge() { moon_edge = true;} 00110 bool is_extra_edge() const {return extra_edge;} 00111 void make_extra_edge() { extra_edge = true;} 00112 void mark_as_normal_edge() {extra_edge = false;} 00113 void init_mult_values() { e_subgraph = NULL; moon_edge = false;} 00114 00115 private: 00116 double length; 00117 edge e_original; 00118 edge e_subgraph; 00119 bool moon_edge; //indicates if this edge is associasted with a moon node 00120 bool extra_edge;//indicates if this edge is an extra edge that is added to 00121 //enforce few edge crossings 00122 }; 00123 }//namespace ogdf 00124 #endif 00125 00126