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