The second public release of OGDF has been released today. This release focuses on improved usability, but also contains new functionality.
Highlights
- New algorithm for planar augmentation with fixed embedding.
- The planar drawing algorithms Planar-Straight, Planar-Draw, and Mixed-Model can now be called with a given planar embedding.
- New class
DualGraph
representing the geometric dual graph of a combinatorial embedding. - Consistent interface for planarization layout that allows to call with
GraphAttributes
. - Sugiyama layout now produces drawings with given node ranks that are also respected across different connected components.
- Hashing functions can now be passed as template parameters; the implementation of two-dimensional hash-arrays has been revised and allows now using different types for each index.
- Optional template parameter for index type of array-based classes.
- Unified naming conventions and interfaces.
- Improved build system for Visual Studio, including support for compiling with Osi Coin and creating projects for Visual Studio 2003.
- Significantly improved documentation.
Detailed Changelog
New Features
- Additional (optional) template parameter for used size/index type in
Array
,ArrayBuffer
,BoundedQueue
,BoundedStack
,MinHeap
, andTop10Heap
. - Specification of hash function as (optional) template parameter in
Hashing
andHashArray
.- The default hash function is implemented by
DefHashFunc<K>
(instead of functionhash()
); this can be extended to further types by specializingDefHashFunc
.
- The default hash function is implemented by
- Revised implementation of HashArray2D.
- Supports now different types for each index.
- The hash-function can be passed as (optional) template parameter.
entry(const I&,const I&)
→operator()(const I1&,const I2&)
- Iterators:
key(I&,I&)
→key1()
andkey2()
- The new class
DualGraph
represents the geometric dual graph of a combinatorial embedding. - New augmentation algorithm for planar biconnected augmentation with fixed embedding (class
PlanarAugmentationFix
). - Planar drawing algorithms now implement a call for drawing with a given planar embedding.
- The base class
PlanarGridLayoutModule
defines this interface. PlanarStraightLayout
,PlanarDrawLayout
, andMixedModelLayout
implement this interface.
- The base class
- The planarization layout can now be called with
GraphAttributes
like other layout algorithms; setting/getting of options made consistent with ogdf naming style. The following changes were done:UMLPlanarizationLayout
→PlanarizationLayout
UMLLayoutModule
inherits fromLayoutModule
PlanarizationLayout
has now acall(GraphAttributes&)
setCliqueSize(int)
→minCliqueSize(int)
- added
int minCliqueSize()
preProcessCliques(bool)
→preprocessCliques(bool)
- added
bool preprocessCliques()
SugiyamaLayout
has a new optionarrangeCCs
(deciding whether components are laid out separately and arranged afterwards) and a new module optionpacker
(for arranging connected components). SettingarrangeCCs
to false and passing node ranks directly allows to get a layout which truly respects the layering across all connected components.LongestPathRanking
has a new optionoptimizeEdgeLength
; setting this option to false gives a longest-path ranking as known from the literature; default is true which is same behavior as before (performs additional optimization for reducing edge lengths).
Minor Modifications
- Unified interface for containers (
ArrayBuffer
,BinaryHeap
,BoundedQueue
,BoundedStack
,MinHeap
,Top10Heap
).size()
returns the current number of elements in the container.capacity()
returns the maximal number of elements that can be stored in the container (if applicable).empty()
returns true if the container contains no elements.full()
returns true if the current number of elements has reached the capacity (if applicable).clear()
removes all elements from the container.
- Unified naming conventions for array classes:
Array2
→Array2D
HashingArray
→HashArray
TwoDHashArray
→HashArray2D
TwoDHashIterator
→HashConstIterator2D
- Usage of
size_t
instead ofint
in:BendString::BendString(char,size_t)
BendString::operator[](size_t)
BendString::size()
BendString::set(char,size_t)
BendString::init(char,size_t)
String::String(size_t,const char *)
String::length()
String::operator[](size_t)
- Removed
String::operator const char *()
; use the new methodString::cstr()
instead. - Usage of
const String&
instead ofconst char*
in:CliqueFinder::writeGraph(Graph &, NodeArray<int> &, const String &)
GraphAttributes::readGML(Graph &, const String &)
GraphAttributes::writeGML(const String &)
GraphAttributes::readXML(Graph &G, const String &fileName)
GraphAttributes::writeXML(const String &, const char*, const char*)
GraphAttributes::readRudy(Graph &, const String &)
GraphAttributes::writeRudy(const String &)
String::compare(const String &,const String &)
GraphAttributes
return now default values fortype(node)
andtype(edge)
even if the respective arrays are not initialized.- Renamed
GraphStructure
→GraphObserver
. - The Methods
assignNode()
,unassignNode()
, andremoveNodeAssignment()
inClusterGraph
are now private (not meant for public use). - Added constructor
PlanRepUML(const GraphAttributes&)
. - Changed default augmenter of
PlanarStraightLayout
andPlanarDrawLayout
toPlanarAugmentation
. - Removed
OrthoFormerUML
(obsolete); renamedOrthoFormerGENERIC
→OrthoShaper
. - Renamed
UMLOrthoLayout
→OrthoLayout
andUMLPlanarLayoutModule
→LayoutPlanRepModule
. - Revised design of
ClusterPlanarizationLayout
:ClusterPlanarizationLayout
does not inherit fromUMLLayoutModule
anymore.- Removed unsupported call methods.
- Removed (unused) module options
subgraph
andinserter
. - Changed type of
planarLayouter
to new module typeLayoutClusterPlanRepModule
. - Changed base class of
ClusterOrthoLayout
toLayoutClusterPlanRepModule
. - Renamed
ClusterOrthoFormer
toClusterOrthoShaper
- Renamed
ClustererBase
→ClustererModule
and moved headerClustererModule.h
toogdf/module/
. - Logging output of Coin Osi solver turned off by default (previous version produced some output in debug builds).
Bug Fixes
- Fixed possible rounding error in
LPSolver::checkFeasibility()
. - Fixed C++ template syntax for
print()
function ofBoundedQueue
. - Removed ”
LPSolver::
” in declaration ofLPSolver::checkFeasibility()
(did not compile with some g++ versions).
Build System
- Visual Studio project file: Added configuration file
makeVCProj.config
for specifying project template and optional settings for LP-solver. - Support for Visual Studio 2003 (Visual C++ 7.1) by selecting
ogdf.vcproj.vs2003.template
as project template. - Linux/g++ makefile: Build targets renamed to
release
,cleanrelease
, etc. (instead ofrelease_all
,release_clean
).
Available make targets are nowdebug
,saferelease
(-O0), andrelease
(-O1); default isrelease
which yields a typical performance gain over the previousrelease
(with -O0) by a factor of 2.5−12. We discourage using -O2 or -O3 with g++, since this is not stable.