1/** \file
2 * \brief Declaration of interface for layout algorithms (class
3 * LayoutModule)
4 *
5 * \author Carsten Gutwenger
6 *
7 * \par License:
8 * This file is part of the Open Graph Drawing Framework (OGDF).
9 *
10 * \par
11 * Copyright (C)<br>
12 * See README.md in the OGDF root directory for details.
13 *
14 * \par
15 * This program is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU General Public License
17 * Version 2 or 3 as published by the Free Software Foundation;
18 * see the file LICENSE.txt included in the packaging of this file
19 * for details.
20 *
21 * \par
22 * This program is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 * GNU General Public License for more details.
26 *
27 * \par
28 * You should have received a copy of the GNU General Public
29 * License along with this program; if not, see
30 * http://www.gnu.org/copyleft/gpl.html
31 */
32
33#pragma once
34
35#include <ogdf/basic/GraphAttributes.h>
36
37namespace ogdf {
38
39
40/**
41 * \brief Interface of general layout algorithms.
42 *
43 */
44class OGDF_EXPORT LayoutModule {
45public:
46 //! Initializes a layout module.
47 LayoutModule() { }
48
49 virtual ~LayoutModule() { }
50
51 /**
52 * \brief Computes a layout of graph \p GA.
53 *
54 * This method is the actual algorithm call and must be implemented by
55 * derived classes.
56 * @param GA is the input graph and will also be assigned the layout information.
57 */
58 virtual void call(GraphAttributes &GA) = 0;
59
60 /**
61 * \brief Computes a layout of graph \p GA.
62 *
63 * @param GA is the input graph and will also be assigned the layout information.
64 */
65 void operator()(GraphAttributes &GA) { call(GA); }
66
67 OGDF_MALLOC_NEW_DELETE
68};
69
70}
71