From eb0a0b6b3423abccdd07c5f763ec1c33afad7599 Mon Sep 17 00:00:00 2001 From: Alexandre Duret-Lutz Date: Fri, 29 Jan 2016 10:53:38 +0100 Subject: [PATCH] dot: use circles if state names are all short * spot/twaalgos/dot.cc: Check for state names sizes. * tests/core/readsave.test: Test the change. * tests/core/tgbagraph.test: Adjust. --- spot/twaalgos/dot.cc | 14 ++++++++++++-- tests/core/readsave.test | 20 ++++++++++++++++++++ tests/core/tgbagraph.test | 2 ++ 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/spot/twaalgos/dot.cc b/spot/twaalgos/dot.cc index daa2e62e1..ee7855801 100644 --- a/spot/twaalgos/dot.cc +++ b/spot/twaalgos/dot.cc @@ -33,6 +33,7 @@ #include #include #include +#include #include @@ -541,9 +542,18 @@ namespace spot if (opt_shape_ == ShapeAuto) { if (sn_ || sprod_ || aut->num_states() > 100) - opt_shape_ = ShapeEllipse; + { + opt_shape_ = ShapeEllipse; + // If all state names are short, prefer circles. + if (sn_ && std::all_of(sn_->begin(), sn_->end(), + [](const std::string& s) + { return s.size() <= 2; })) + opt_shape_ = ShapeCircle; + } else - opt_shape_ = ShapeCircle; + { + opt_shape_ = ShapeCircle; + } } auto si = std::unique_ptr(opt_scc_ ? new scc_info(aut) : nullptr); diff --git a/tests/core/readsave.test b/tests/core/readsave.test index a3e0ee506..e120aabd6 100755 --- a/tests/core/readsave.test +++ b/tests/core/readsave.test @@ -538,6 +538,26 @@ EOF autfilt --dot=bao1 in | grep -v '>' >out diff out expected2 +cat >expected3 <' >out +diff out expected3 + # Let's pretend that this is some used supplied input, as discussed in # the comments of https://github.com/adl/hoaf/issues/39 diff --git a/tests/core/tgbagraph.test b/tests/core/tgbagraph.test index 6976eda89..e48bfd9d1 100755 --- a/tests/core/tgbagraph.test +++ b/tests/core/tgbagraph.test @@ -223,6 +223,7 @@ digraph G { } digraph G { rankdir=LR + node [shape="circle"] I [label="", style=invis, width=0] I -> 2 0 [label="s1"] @@ -231,6 +232,7 @@ digraph G { } digraph G { rankdir=LR + node [shape="circle"] I [label="", style=invis, width=0] I -> 0 0 [label="s3"]