File: LayoutStandards.h

package info (click to toggle)
tulip 4.8.0dfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 179,264 kB
  • ctags: 64,517
  • sloc: cpp: 600,444; ansic: 36,311; makefile: 22,136; python: 1,304; sh: 946; yacc: 522; xml: 337; pascal: 157; php: 66; lex: 55
file content (205 lines) | stat: -rw-r--r-- 7,690 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/*
 * $Revision: 3523 $
 *
 * last checkin:
 *   $Author: gutwenger $
 *   $Date: 2013-05-31 15:03:27 +0200 (Fri, 31 May 2013) $
 ***************************************************************/

/** \file
 * \brief Declares class LayoutStandards which specifies default /
 *        standard values used in graph layouts.
 *
 * \author Carsten Gutwenger
 *
 * \par License:
 * This file is part of the Open Graph Drawing Framework (OGDF).
 *
 * \par
 * Copyright (C)<br>
 * See README.txt in the root directory of the OGDF installation for details.
 *
 * \par
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * Version 2 or 3 as published by the Free Software Foundation;
 * see the file LICENSE.txt included in the packaging of this file
 * for details.
 *
 * \par
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * \par
 * You should have received a copy of the GNU General Public
 * License along with this program; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 *
 * \see  http://www.gnu.org/copyleft/gpl.html
 ***************************************************************/

#ifdef _MSC_VER
#pragma once
#endif

#ifndef OGDF_LAYOUT_STANDARDS_H
#define OGDF_LAYOUT_STANDARDS_H


#include <ogdf/basic/graphics.h>


namespace ogdf {

	//! Standard values for graphical attributes and layouts.
	class LayoutStandards {

		static double s_defNodeWidth;	//!< the default width of a node (must be positive).
		static double s_defNodeHeight;	//!< the default height of a node (must be positive).
		static Shape  s_defNodeShape;	//!< the default shape of a node.
		static Stroke s_defNodeStroke;	//!< the default stroke of a node.
		static Fill   s_defNodeFill;	//!< the default fill of a node.

		static Stroke    s_defEdgeStroke;	//!< the default stroke of an edge.
		static EdgeArrow s_defEdgeArrow;	//!< the default arrow type of an edge .

		static Stroke s_defClusterStroke;	//!< the default cluster stroke.
		static Fill   s_defClusterFill;		//!< the default cluster fill.

		static double s_defNodeSeparation;	//!< the default node separation (for layout algorithms) (must be positive).
		static double s_defCCSeparation;	//!< the default separation between connected components (for layout algorithms) (must be positive).

	public:

		/**
		 * @name Global default node attributes
		 * These attribute values are used by GraphAttributes as default graphical representation of nodes.
		 */
		//@{

		//! Returns the global default width for nodes.
		static double defaultNodeWidth() { return s_defNodeWidth; }
		//! Sets the global default width for nodes to \a w.
		/**
		 * \param w must be a positive value and is set as new default node width.
		 */
		static void setDefaultNodeWidth(double w) {
			if(w > 0.0)
				s_defNodeWidth = w;
		}

		//! Returns the global default height for nodes.
		static double defaultNodeHeight() { return s_defNodeHeight; }
		//! Sets the global default height for nodes to \a h.
		/**
		 * \param h must be a positive value and is set as new default node height.
		 */
		static void setDefaultNodeHeight(double h) {
			if(h > 0.0)
				s_defNodeHeight = h;
		}

		//! Returns the global default shape for nodes.
		static Shape defaultNodeShape() { return s_defNodeShape; }
		//! Sets the global default shape for nodes to \a s.
		static void setDefaultNodeShape(Shape s) { s_defNodeShape = s; }

		//! Returns the global default stroke for nodes.
		static Stroke defaultNodeStroke() { return s_defNodeStroke; }
		//! Returns the global default stroke color for nodes.
		static Color defaultNodeStrokeColor() { return s_defNodeStroke.m_color; }
		//! Returns the global default stroke width for nodes.
		static float defaultNodeStrokeWidth() { return s_defNodeStroke.m_width; }
		//! Sets the global default stroke for nodes to \a stroke.
		static void setDefaultNodeStroke(Stroke stroke) { s_defNodeStroke = stroke; }

		//! Returns the global default fill for nodes.
		static Fill defaultNodeFill() { return s_defNodeFill; }
		//! Returns the global default fill color for nodes.
		static Color defaultNodeFillColor() { return s_defNodeFill.m_color; }
		//! Sets the global default fill for nodes to \a fill.
		static void setDefaultNodeFill(Fill fill) { s_defNodeFill = fill; }

		//@}
		/**
		 * @name Global default edge attributes
		 * These attribute values are used by GraphAttributes as default graphical representation of edges.
		 */
		//@{

		//! Returns the global default stroke for edges.
		static Stroke defaultEdgeStroke() { return s_defEdgeStroke; }
		//! Returns the global default stroke color for edges.
		static Color defaultEdgeStrokeColor() { return s_defEdgeStroke.m_color; }
		//! Returns the global default stroke width for edges.
		static float defaultEdgeStrokeWidth() { return s_defEdgeStroke.m_width; }
		//! Sets the global default stroke for edges to \a stroke.
		static void setDefaultEdgeStroke(Stroke stroke) { s_defEdgeStroke = stroke; }

		//! Returns the global default arrow type for edges.
		static EdgeArrow defaultEdgeArrow() { return s_defEdgeArrow; }
		//! Sets the global default arrow type for edges to \a arrow.
		static void setDefaultEdgeArrow(EdgeArrow arrow) { s_defEdgeArrow = arrow; }

		//@}
		/**
		 * @name Global default cluster attributes
		 * These attribute values are used by ClusterGraphAttributes as default graphical representation of clusters.
		 */
		//@{

		//! Returns the global default stroke for clusters.
		static Stroke defaultClusterStroke() { return s_defClusterStroke; }
		//! Returns the global default stroke color for clusters.
		static Color defaultClusterStrokeColor() { return s_defClusterStroke.m_color; }
		//! Returns the global default stroke width for clusters.
		static float defaultClusterStrokeWidth() { return s_defClusterStroke.m_width; }
		//! Sets the global default stroke for cluster to \a stroke.
		static void setDefaultClusterStroke(Stroke stroke) { s_defClusterStroke = stroke; }

		//! Returns the global default fill for clusters.
		static Fill defaultClusterFill() { return s_defClusterFill; }
		//! Returns the global default fill color for clusters.
		static Color defaultClusterFillColor() { return s_defClusterFill.m_color; }
		//! Sets the global default fill for clusters to \a fill.
		static void setDefaultClusterFill(Fill fill) { s_defClusterFill = fill; }

		//@}
		/**
		 * @name Global default separation parameters
		 * These values \e can be used by layout algorithms as useful settings for separation parameters.
		 */
		//@{

		//! Returns the global default node separation.
		static double defaultNodeSeparation() { return s_defNodeSeparation; }
		//! Sets the global default node separation to \a d.
		/**
		 * \param d must be a positive value and is set as new default node separation.
		 */
		static void setDefaultNodeSeparation(double d) {
			if(d > 0.0)
				s_defNodeSeparation = d;
		}

		//! Returns the global default separation between connected components.
		static double defaultCCSeparation() { return s_defCCSeparation; }
		//! Sets the global default separation between connected components to \ d.
		/**
		 * \param d must be a positive value and is set as new default separation between connected components.
		 */
		static void setDefaultCCSeparation(double d) {
			if(d > 0.0)
				s_defCCSeparation = d;
		}

		//@}
	};

} // end namespace ogdf


#endif