#include #include #include "graph.h" void graphNode::print() { cout << "digraph {" << endl; if (graphDirection != NULL) graphDirection->print(); list::iterator nodeStyleIter; for (nodeStyleIter = nodeStyleList->begin(); nodeStyleIter != nodeStyleList->end(); nodeStyleIter++) { (*nodeStyleIter)->print(); } list::iterator nodeLabelIter; for (nodeLabelIter = nodeLabelList->begin(); nodeLabelIter != nodeLabelList->end(); nodeLabelIter++) { (*nodeLabelIter)->print(); } list::iterator edgeIter; for (edgeIter = adjList->begin(); edgeIter != adjList->end(); edgeIter++) { (*edgeIter)->print(); } cout << "}" << endl; } void direction::print() { cout << "\trankdir = " << rankdir << ";" << endl; } void nodeStyle::print() { cout << "node ["; list::iterator attrIter; for (attrIter = attrList->begin(); attrIter != attrList->end(); attrIter++) { (*attrIter)->print(); } cout << " ]"; list::iterator vtxIter; for (vtxIter = nodeList->begin(); vtxIter != nodeList->end(); vtxIter++) { cout << " " << *vtxIter; } cout << ";" << endl; } void edgeStyle::print() { list::iterator attrIter; for (attrIter = attrList->begin(); attrIter != attrList->end(); attrIter++) { (*attrIter)->print(); } } void nodeLabel::print() { printf("\t%s [ label = \"%s\" ];\n", nodeName.c_str(), label.c_str()); } void colorAttribute::print() { printf(" style = filled color = %s", color.c_str()); } void shapeAttribute::print() { printf(" shape = %s", shape.c_str()); } void fontNameAttribute::print() { printf(" fontname = %s", fontName.c_str()); } void fontSizeAttribute::print() { printf(" fontsize = %d", fontSize); } void edgeList::print() { list::iterator vtxIter; for (vtxIter = toVertices->begin(); vtxIter != toVertices->end(); vtxIter++) { cout << "\t" << fromVertex << "-> "; (*vtxIter)->print(); cout << endl; } } edge::edge(string v, string nameOrLabel, bool label) : toVertex(v) { if (label) { edgeLabel = new string(nameOrLabel); styleName = NULL; } else { edgeLabel = NULL; styleName = new string(nameOrLabel); } } edge::edge(string v, string label, string name, bool flag) : toVertex(v) { edgeLabel = new string(label); styleName = new string(name); } void edge::print() { list::iterator edgeStyleIter; cout << toVertex; if (edgeLabel != NULL || styleName != NULL) { cout << " ["; if (edgeLabel != NULL) cout << " label = \"" << *edgeLabel << "\""; if (styleName != NULL) { // locate the style for (edgeStyleIter = edgeStyles->begin(); edgeStyleIter != edgeStyles->end(); edgeStyleIter++) { string &name = (*edgeStyleIter)->getName(); if (*styleName == name) { (*edgeStyleIter)->print(); break; } } } cout << " ]"; } cout << ";" << endl; }