../../README.md "OGDF" » ../relnotes.md "Release Notes" » Dogwood
Released 2022-02-02.
As always, this release includes many new features, bug fixes and documentation improvements. The most important changes are listed below. Note that we are dropping the official support of some older compilers and are aiming to make use of C++17 features in the future. For more details, take a look at the ../porting/dogwood.md "porting guide".
Noteworthy changes:
OGDF_FULL_DOC
to include {test/
,src/
} doc in doxygen outputOGDF_ENABLE_CLANG_TIDY
to enable static analysis via clang-tidyOGDF_
prepended to all commented out OGDF-macros (in case you enable them...)GraphObjectContainer<E>::permute()
, allows e.g. G.nodes.permute()
GraphList::empty()
contract()
to keep self-loopssplitNode(a, a)
is handled correctlymoveAdj()
handles self-loops correctlyoperator<<()
for face
sCombinatorialEmbedding::splitFace()
can create self-loopsCombinatorialEmbedding::joinFaces()
accepts a bridge as an argumentEmbedderMaxFace
now works correctlyDynamicDualGraph
allowing dynamic changes of a dual graphGraphCopy
:GraphCopy::removeEdgePathEmbedded()
now removes degree-1-nodesGraphCopy::{insert,remove}EdgePathEmbedded()
can change a DynamicDualGraph
GraphCopy
methods to detect and remove non-simple crossingsGraphCopy[Simple]init()
now actually clears the graph firstGraphCopySimple
can be constructed, similar to GraphCopy
GraphCopy
of an empty Graph
is now initialized correctlyGraphAttributes
:idNode()
now returns v->index()
if no user id is setCoinManager
:updateLogging()
replaces logging()
, propagates log level to COINfindCutVertices()
to extract the cut vertices of a graphtriangulate()
now runs in linear time (previously: quadratic)Dijkstra
: new optional parameters for early terminationSTNumbering
no longer uses recursion, large instances do not cause a stack overflowBCTree::initNotConnected()
for a given subset of graph nodes/componentsDisjointSets::init()
allows reinitializationPlanarizerStarReinsertion
PlanarizerMixedInsertion
PlanarizerChordlessCycle
SubgraphPlanarizer
removes non-simple crossingsGraphIO
:GraphIO::read()
now determines format via file extensionGraphIO::read(G, "input.graphml", GraphIO::read)
for old behaviorGraphIO::readTsplibXml()
for reading tsplib instances in XML formatdrawSVG()
now draws cluster labelsdrawSVG()
now draws arrows heads correctlyreadDOT()
now recognizes numeric literals correctlyreadGML()
/writeGML()
now respects idNode()
attributeClusterGraph
writingFFPLayout
and ComponentSplitterLayout
respect a given embedding if possibleFMMMLayout
: high-level options no longer reset low-level optionsFMMMLayout::resetOptions()
allows for manual option resetHierarchyLayoutModule
no longer resets node attributesPivotMDS
computes 3D coordinates when GraphAttributes::threeD
is setSugiyamaLayout
no longer reverses bend pointsSugiyamaLayout
can handle ClusteredGraphAttributes
This release contains (big and small) contributions by Antoine Lambert, Finn Stutzenstein, Hendrik Brückler, Ivo Hedtke, Jöran Schierbaum, Mario Emmenlauer, Matthias Pfretzschner, Max Ilsen, Simon Dominik "Niko" Fink, Stephan Beyer, Thomas Klein, Thomas Roehr, Vadim Zabermakh, neotechllc and xuanjueheshang on GitHub. Thanks a lot to all contributors!