34 #include <QApplication>
35 #include <QDesktopWidget>
39 #include "../model/State.h"
40 #include "../model/Transition.h"
45 QObject(), id(workerId), graphvizContext(gvContext), name(name)
47 m_graph = std::make_shared<LockableGraph>();
48 std::unique_lock lock(m_graph->mutex);
49 m_graph->graph = agopen(name.toLatin1().data(), Agdirected, NULL);
50 ARMARX_INFO_S << m_graph->graph <<
" Creating Graph with name " << name.toLatin1().data();
52 int dpiX = qApp->desktop()->logicalDpiX();
60 agattr(m_graph->graph, AGRAPH, (
char*)
"bb", (
char*)
"0,0,1210,744");
61 agattr(m_graph->graph, AGRAPH, (
char*)
"size", (
char*)
"5,5");
62 agattr(m_graph->graph, AGRAPH, (
char*)
"overlap", (
char*)
"prism");
63 agattr(m_graph->graph, AGRAPH, (
char*)
"splines", (
char*)
"true");
64 agattr(m_graph->graph, AGRAPH, (
char*)
"pad", (
char*)
"0.2");
65 agattr(m_graph->graph, AGRAPH, (
char*)
"nodesep", (
char*)
"0.4");
66 agattr(m_graph->graph, AGRAPH, (
char*)
"sep", (
char*)
"1");
67 agattr(m_graph->graph, AGRAPH, (
char*)
"overlap_shrink", (
char*)
"true");
68 agattr(m_graph->graph, AGRAPH, (
char*)
"rankdir", (
char*)
"LR");
69 agattr(m_graph->graph, AGRAPH, (
char*)
"ratio", (
char*)
"compress");
81 agattr(m_graph->graph, AGNODE, (
char*)
"margin", (
char*)
"0,0");
82 agattr(m_graph->graph, AGNODE, (
char*)
"fontsize", (
char*)
"7");
83 agattr(m_graph->graph, AGEDGE, (
char*)
"fontsize", (
char*)
"14");
87 double test1 = atof(agget(m_graph->graph, (
char*)
"dpi"));
89 QString nodePtsWidth = QString(
"%1").arg(node_size / test1);
95 agattr(m_graph->graph, AGEDGE,
const_cast<char*
>(
"label"),
const_cast<char*
>(
""));
96 agattr(m_graph->graph, AGEDGE,
const_cast<char*
>(
"fontsize"),
const_cast<char*
>(
"25"));
102 std::unique_lock lock(m_graph->mutex);
103 agclose(m_graph->graph);
115 auto start = IceUtil::Time::now();
117 if (
true || layoutAll)
120 layoutWithAlgo(
"dot");
126 layoutWithAlgo(
"nop");
130 << (IceUtil::Time::now() - start).toMilliSecondsDouble();
132 emit layoutingFinished();
140 emit buildGraph(m_graph);
145 armarx::LayoutWorker::layoutWithAlgo(std::string algorithm)
147 std::unique_lock lock(m_graph->mutex);
152 gvLayout(graphvizContext, m_graph->graph, algorithm.c_str());
156 attach_attrs(m_graph->graph);
159 gvFreeLayout(graphvizContext, m_graph->graph);