MultilevelGraph::MultilevelGraph(Graph &G) :m_createdGraph(false) { m_G = &G; m_nodeAssociations.init(*m_G, 0); m_edgeAssociations.init(*m_G, 0); m_x.init(*m_G, 0); m_y.init(*m_G, 0); m_radius.init(*m_G, 1.0); m_weight.init(*m_G, 1.0); initReverseIndizes(); }
void MultilevelGraph::updateReverseIndizes() { if ((unsigned int)m_G->maxNodeIndex() >= m_reverseNodeIndex.size() || (unsigned int)m_G->maxEdgeIndex() >= m_reverseEdgeIndex.size()) { initReverseIndizes(); } for(node v : m_G->nodes) { m_reverseNodeIndex[v->index()] = v; } for(edge e : m_G->edges) { m_reverseEdgeIndex[e->index()] = e; } }
void MultilevelGraph::reInsertGraph(MultilevelGraph &MLG) { std::map<node, node> tempNodeAssociations; for(node v : MLG.m_G->nodes) { MLG.copyNodeTo(v, *this, tempNodeAssociations, false, MLG.m_nodeAssociations[v]); } for(edge e : MLG.m_G->edges) { MLG.copyEdgeTo(e, *this, tempNodeAssociations, false, MLG.m_edgeAssociations[e]); } initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(GraphAttributes &GA, Graph &G) :m_createdGraph(false) { m_G = &G; m_nodeAssociations.init(*m_G, 0); m_edgeAssociations.init(*m_G, 0); m_x.init(*m_G); m_y.init(*m_G); m_radius.init(*m_G); m_weight.init(*m_G); prepareGraphAttributes(GA); importAttributes(GA); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(Graph &G) :m_createdGraph(false), m_G(nullptr) { m_G = &G; //replaces layout info stuff below initInternal(); m_nodeAssociations.init(*m_G, 0); m_edgeAssociations.init(*m_G, 0); m_radius.init(*m_G, 1.0); m_weight.init(*m_G, 1.0); initReverseIndizes(); }
void MultilevelGraph::copyFromGraph(const Graph &G, NodeArray<int> & /*nodeAssociations*/, EdgeArray<int> & /* edgeAssociations */) { NodeArray<node> tempAssociations(G); for(node v : G.nodes) { node v_new = m_G->newNode(); m_nodeAssociations[v_new] = v->index(); tempAssociations[v] = v_new; } for(edge e : G.edges) { edge e_new = m_G->newEdge(tempAssociations[e->source()], tempAssociations[e->target()]); m_edgeAssociations[e_new] = e->index(); } initReverseIndizes(); }
MultilevelGraph::MultilevelGraph() :m_createdGraph(false) { m_G = new Graph(); if(m_G == 0) { OGDF_THROW(InsufficientMemoryException); } else { m_createdGraph = true; } m_nodeAssociations.init(*m_G, 0); m_edgeAssociations.init(*m_G, 0); m_x.init(*m_G, 0); m_y.init(*m_G, 0); m_radius.init(*m_G, 1.0); m_weight.init(*m_G, 1.0); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph() :m_createdGraph(true) { m_G = new Graph(); if(m_G == nullptr) { OGDF_THROW(InsufficientMemoryException); } //replaces layout info stuff below initInternal(); m_nodeAssociations.init(*m_G, 0); m_edgeAssociations.init(*m_G, 0); m_radius.init(*m_G, 1.0); m_weight.init(*m_G, 1.0); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(const String &filename) :m_createdGraph(true) { m_G = new Graph(); if(m_G == 0) { OGDF_THROW(InsufficientMemoryException); } m_nodeAssociations.init(*m_G); m_edgeAssociations.init(*m_G); m_radius.init(*m_G); m_weight.init(*m_G); initInternal(); //GraphAttributes tempGA(*m_G); m_GA->readGML(*m_G, filename); prepareGraphAttributes(*m_GA); importAttributesSimple(*m_GA); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(GraphAttributes &GA) :m_createdGraph(false) { m_G = new Graph(); if(m_G == 0) { OGDF_THROW(InsufficientMemoryException); } else { m_createdGraph = true; } m_nodeAssociations.init(*m_G); m_edgeAssociations.init(*m_G); m_x.init(*m_G); m_y.init(*m_G); m_radius.init(*m_G); m_weight.init(*m_G); copyFromGraph(GA.constGraph(), m_nodeAssociations, m_edgeAssociations); prepareGraphAttributes(GA); importAttributes(GA); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(const char *filename) : m_createdGraph(true) { m_G = new Graph(); if(m_G == nullptr) { OGDF_THROW(InsufficientMemoryException); } m_nodeAssociations.init(*m_G); m_edgeAssociations.init(*m_G); m_radius.init(*m_G); m_weight.init(*m_G); initInternal(); #if 0 GraphAttributes tempGA(*m_G); #endif GraphIO::read(*m_GA, *m_G, filename, GraphIO::readGML); prepareGraphAttributes(*m_GA); importAttributesSimple(*m_GA); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(GraphAttributes &GA) :m_createdGraph(true) { m_G = new Graph(); if(m_G == 0) { OGDF_THROW(InsufficientMemoryException); } //replaces layout info stuff below initInternal(); m_nodeAssociations.init(*m_G); m_edgeAssociations.init(*m_G); m_radius.init(*m_G); m_weight.init(*m_G); copyFromGraph(GA.constGraph(), m_nodeAssociations, m_edgeAssociations); prepareGraphAttributes(GA); importAttributes(GA); initReverseIndizes(); }
MultilevelGraph::MultilevelGraph(istream &is) :m_createdGraph(false) { m_G = new Graph(); if(m_G == 0) { OGDF_THROW(InsufficientMemoryException); } else { m_createdGraph = true; } m_nodeAssociations.init(*m_G); m_edgeAssociations.init(*m_G); m_x.init(*m_G); m_y.init(*m_G); m_radius.init(*m_G); m_weight.init(*m_G); GraphAttributes tempGA(*m_G); tempGA.readGML(*m_G, is); prepareGraphAttributes(tempGA); importAttributesSimple(tempGA); initReverseIndizes(); }