void printGraph(const Graph<NodeInfo> &graph, const vector<int> &path, const vector<int> &stations) { GraphViewer *gv = new GraphViewer(600, 600, false); gv->createWindow(600, 600); gv->defineVertexColor("black"); gv->defineEdgeColor("black"); vector<Vertex<NodeInfo> *> vertexSet = graph.getVertexSet(); for (size_t i = 0; i < vertexSet.size(); i++) { gv->addNode(vertexSet[i]->getInfo().id, vertexSet[i]->getInfo().x, vertexSet[i]->getInfo().y); if (vertexSet[i]->getInfo().name == "house") gv->setVertexColor(vertexSet[i]->getInfo().id, "red"); } for (size_t i = 0; i < stations.size(); i++) gv->setVertexColor(stations[i], "green"); int edgeID = 0; vector<int> edges; for (size_t i = 0; i < vertexSet.size(); i++) { vector<Edge<NodeInfo> > adj = vertexSet[i]->getAdjacentEdges(); for (size_t j = 0; j < adj.size(); j++) { int src = vertexSet[i]->getInfo().id; int dst = adj[j].getDestination()->getInfo().id; if (!edgeExists(edges, src, dst)) { gv->addEdge(edgeID, src, dst, EdgeType::UNDIRECTED); stringstream ss; ss << adj[j].getWeight(); gv->setEdgeLabel(edgeID, ss.str()); edges.push_back(src); edges.push_back(dst); edgeID++; } } } if (path.size() != 0) { for (size_t i = 0; i < path.size() - 1; i+=2) { gv->addEdge(edgeID, path[i], path[i + 1], EdgeType::UNDIRECTED); gv->setEdgeColor(edgeID, "green"); gv->setEdgeThickness(edgeID, 2); edgeID++; } } cin.clear(); cin.ignore(100, '\n'); cout << "\n\tPress enter to continue..."; cin.get(); gv->closeWindow(); delete(gv); }
/** * \brief Prints the given graph * \param grafo Graph to be printed */ void showGraph(Graph<Localizacao> &grafo) { GraphViewer *gv = new GraphViewer(800, 800, true); gv->createWindow(800, 800); gv->defineVertexColor("blue"); gv->defineEdgeColor("black"); unsigned int id1, id2; string s; stringstream ss; for (unsigned int i = 0; i < grafo.getVertexSet().size(); i++) { id1 = grafo.getVertexSet()[i]->getInfo().getId(); s = grafo.getVertexSet()[i]->getInfo().getRua(); ss << 1; gv->addNode(id1); gv->setVertexLabel(id1, s + " " + ss.str()); if(grafo.getVertexSet()[i]->getInfo().getNome() == "Garagem") gv->setVertexColor(id1,"red"); else if(grafo.getVertexSet()[i]->getInfo().getNome() == "Escola") gv->setVertexColor(id1,"green"); ss.str(""); } gv->rearrange(); for (unsigned int vert = 0; vert < grafo.getVertexSet().size(); vert++) { for (unsigned int edge = 0; edge < grafo.getVertexSet()[vert]->getAdj().size(); edge++) { id1 = grafo.getVertexSet()[vert]->getInfo().getId(); id2 = grafo.getVertexSet()[vert]->getAdj()[edge].getDest()->getInfo().getId(); if (grafo.getVertexSet()[vert]->path != NULL && grafo.getVertexSet()[vert]->path->getInfo().getId() == id2) { gv->setEdgeColor(id1*1000 + id2, "green"); gv->setEdgeThickness(id1*1000 + id2, 5); } gv->addEdge(id1 * 1000 + id2, id1, id2, EdgeType::DIRECTED); gv->setEdgeWeight(id1 * 1000 + id2, grafo.getVertexSet()[vert]->getAdj()[edge].getWeight()); ss.str(""); } } gv->rearrange(); #ifdef __linux__ sleep(1); #else Sleep(100); // use sleep(1) in linux ; Sleep(100) on Windows #endif }