This commit is contained in:
parent
0ba87a2d70
commit
b24507a479
|
@ -278,37 +278,41 @@ void DAGGraph::graph_layer_nodes_sort(int layer_index, const QList<std::shared_p
|
|||
}
|
||||
}
|
||||
|
||||
// 提取所有已知节点
|
||||
QList<std::shared_ptr<DAGOrderHelper>> sorting_nodes;
|
||||
std::copy_if(nodes.begin(), nodes.end(), std::back_inserter(sorting_nodes),
|
||||
[&](std::shared_ptr<DAGOrderHelper> n) { return n->layerNumber() <= layer_index; });
|
||||
|
||||
// 排序值提取与重排
|
||||
QList<double> sort_values;
|
||||
std::transform(sorting_nodes.begin(), sorting_nodes.end(), std::back_inserter(sort_values),
|
||||
[](std::shared_ptr<DAGOrderHelper> n)->double { return n->sortNumber(); });
|
||||
sort_values = sort_values.toSet().toList();
|
||||
std::sort(sort_values.begin(), sort_values.end());
|
||||
|
||||
// 检索排序中轴
|
||||
auto temp_anchor = std::make_pair<double, int>(DBL_MAX, -1);
|
||||
for (int nidx = 0; nidx < sort_values.size(); ++nidx) {
|
||||
auto value_span = std::abs(sort_values[nidx]);
|
||||
if (value_span <= temp_anchor.first)
|
||||
temp_anchor = std::make_pair(value_span, nidx);
|
||||
}
|
||||
|
||||
// 排序值重整
|
||||
for (int sorting_idx = 0; sorting_idx < sorting_nodes.size(); ++sorting_idx) {
|
||||
auto node = sorting_nodes[sorting_idx];
|
||||
auto sort_idx = sort_values.indexOf(node->sortNumber());
|
||||
node->setSortNumber(sort_idx - temp_anchor.second);
|
||||
}
|
||||
|
||||
this->above_nodes_sort(layer_index, nodes);
|
||||
this->graph_layer_nodes_sort(layer_index + 1, nodes);
|
||||
}
|
||||
}
|
||||
|
||||
void dags::DAGGraph::above_nodes_sort(int layer_index, const QList<std::shared_ptr<DAGOrderHelper>>& nodes)
|
||||
{
|
||||
// 提取所有已知节点
|
||||
QList<std::shared_ptr<DAGOrderHelper>> sorting_nodes;
|
||||
std::copy_if(nodes.begin(), nodes.end(), std::back_inserter(sorting_nodes),
|
||||
[&](std::shared_ptr<DAGOrderHelper> n) { return n->layerNumber() <= layer_index; });
|
||||
|
||||
// 排序值提取与重排
|
||||
QList<double> sort_values;
|
||||
std::transform(sorting_nodes.begin(), sorting_nodes.end(), std::back_inserter(sort_values),
|
||||
[](std::shared_ptr<DAGOrderHelper> n)->double { return n->sortNumber(); });
|
||||
sort_values = sort_values.toSet().toList();
|
||||
std::sort(sort_values.begin(), sort_values.end());
|
||||
|
||||
// 检索排序中轴
|
||||
auto temp_anchor = std::make_pair<double, int>(DBL_MAX, -1);
|
||||
for (int nidx = 0; nidx < sort_values.size(); ++nidx) {
|
||||
auto value_span = std::abs(sort_values[nidx]);
|
||||
if (value_span <= temp_anchor.first)
|
||||
temp_anchor = std::make_pair(value_span, nidx);
|
||||
}
|
||||
|
||||
// 排序值重整
|
||||
for (int sorting_idx = 0; sorting_idx < sorting_nodes.size(); ++sorting_idx) {
|
||||
auto node = sorting_nodes[sorting_idx];
|
||||
auto sort_idx = sort_values.indexOf(node->sortNumber());
|
||||
node->setSortNumber(sort_idx - temp_anchor.second);
|
||||
}
|
||||
}
|
||||
|
||||
void dags::DAGGraph::graphLayout() {
|
||||
QList<std::shared_ptr<DAGLayerHelper>> sort_seqs;
|
||||
QList<std::shared_ptr<DAGLayerHelper>> refs;
|
||||
|
|
|
@ -87,6 +87,6 @@ namespace dags {
|
|||
int node_layering_adj(std::shared_ptr<DAGLayerHelper> inst);
|
||||
QList<std::shared_ptr<DAGOrderHelper>> tidy_graph_nodes();
|
||||
void graph_layer_nodes_sort(int layer_index, const QList<std::shared_ptr<DAGOrderHelper>> &nodes);
|
||||
// void above_node_sort(int curr_layer, )
|
||||
void above_nodes_sort(int curr_layer, const QList<std::shared_ptr<DAGOrderHelper>>& total_nodes);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue