MCPcopy Create free account
hub / github.com/KDAB/KDChart / getPrioritySortedConnectedComponents

Function getPrioritySortedConnectedComponents

src/KDChart/KDChartChart.cpp:327–357  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

325};
326
327static QVector<LayoutGraphNode *> getPrioritySortedConnectedComponents(QVector<LayoutGraphNode *> &nodeList)
328{
329 QVector<LayoutGraphNode *> connectedComponents;
330 QHash<LayoutGraphNode *, VisitorState> visitedComponents;
331 Q_FOREACH (LayoutGraphNode *node, nodeList)
332 visitedComponents[node] = Unknown;
333 for (int i = 0; i < nodeList.size(); ++i) {
334 LayoutGraphNode *curNode = nodeList[i];
335 LayoutGraphNode *representativeNode = curNode;
336 if (visitedComponents[curNode] != Visited) {
337 QStack<LayoutGraphNode *> stack;
338 stack.push(curNode);
339 while (!stack.isEmpty()) {
340 curNode = stack.pop();
341 Q_ASSERT(visitedComponents[curNode] != Visited);
342 visitedComponents[curNode] = Visited;
343 if (curNode->bottomSuccesor && visitedComponents[curNode->bottomSuccesor] != Visited)
344 stack.push(curNode->bottomSuccesor);
345 if (curNode->leftSuccesor && visitedComponents[curNode->leftSuccesor] != Visited)
346 stack.push(curNode->leftSuccesor);
347 if (curNode->sharedSuccesor && visitedComponents[curNode->sharedSuccesor] != Visited)
348 stack.push(curNode->sharedSuccesor);
349 if (curNode->priority < representativeNode->priority)
350 representativeNode = curNode;
351 }
352 connectedComponents.append(representativeNode);
353 }
354 }
355 std::sort(connectedComponents.begin(), connectedComponents.end(), ConnectedComponentsComparator());
356 return connectedComponents;
357}
358
359struct PriorityComparator
360{

Callers 1

slotLayoutPlanesMethod · 0.85

Calls 5

sizeMethod · 0.80
isEmptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected