Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
ClusterGraphAttributes.h
Go to the documentation of this file.
1
35#pragma once
36
37#include <ogdf/basic/Graph.h>
39#include <ogdf/basic/basic.h>
40#include <ogdf/basic/geometry.h>
41#include <ogdf/basic/graphics.h>
43
44#include <string>
45
46namespace ogdf {
47
49
53protected:
55
64
65public:
73 static const long clusterGraphics;
74
78 static const long clusterStyle;
79
81 static const long clusterLabel;
82
84 static const long clusterTemplate;
85
87 static const long all;
88
90
91 // Don't hide these inherited methods by overloading.
92 using GraphAttributes::height;
93 using GraphAttributes::width;
94 using GraphAttributes::x;
95 using GraphAttributes::y;
96
97 using GraphAttributes::label;
98
99 using GraphAttributes::strokeColor;
100 using GraphAttributes::strokeType;
101 using GraphAttributes::strokeWidth;
102
103 using GraphAttributes::fillBgColor;
104 using GraphAttributes::fillColor;
105 using GraphAttributes::fillPattern;
106
113 ClusterGraphAttributes() : GraphAttributes(), m_pClusterGraph(nullptr) { }
114
117 long initAttributes = nodeGraphics | edgeGraphics | clusterGraphics);
118
119private:
121 using GraphAttributes::init;
122
124
127 void addClusterAttributes(long attr);
128
130
134
135public:
137
144 void init(ClusterGraph& cg, long attr = 0);
145
148 void init(long attr = 0);
149
151 void addAttributes(long attr);
152
154 void destroyAttributes(long attr);
155
157 const ClusterGraph& constClusterGraph() const { return *m_pClusterGraph; }
158
166
169 double x(cluster c) const {
170 OGDF_ASSERT(has(clusterGraphics));
171 return m_x[c];
172 }
173
175
178 double& x(cluster c) {
179 OGDF_ASSERT(has(clusterGraphics));
180 return m_x[c];
181 }
182
184
187 double y(cluster c) const {
188 OGDF_ASSERT(has(clusterGraphics));
189 return m_y[c];
190 }
191
193
196 double& y(cluster c) {
197 OGDF_ASSERT(has(clusterGraphics));
198 return m_y[c];
199 }
200
202
205 double width(cluster c) const {
206 OGDF_ASSERT(has(clusterGraphics));
207 return m_width[c];
208 }
209
211
214 double& width(cluster c) {
215 OGDF_ASSERT(has(clusterGraphics));
216 return m_width[c];
217 }
218
220
223 double height(cluster c) const {
224 OGDF_ASSERT(has(clusterGraphics));
225 return m_height[c];
226 }
227
229
232 double& height(cluster c) {
233 OGDF_ASSERT(has(clusterGraphics));
234 return m_height[c];
235 }
236
238
241 const StrokeType& strokeType(cluster c) const {
242 OGDF_ASSERT(has(clusterStyle));
243 return m_stroke[c].m_type;
244 }
245
247
251 OGDF_ASSERT(has(clusterStyle));
252 return m_stroke[c].m_type;
253 }
254
256
259 const Color& strokeColor(cluster c) const {
260 OGDF_ASSERT(has(clusterStyle));
261 return m_stroke[c].m_color;
262 }
263
265
269 OGDF_ASSERT(has(clusterStyle));
270 return m_stroke[c].m_color;
271 }
272
274
277 const float& strokeWidth(cluster c) const {
278 OGDF_ASSERT(has(clusterStyle));
279 return m_stroke[c].m_width;
280 }
281
283
287 OGDF_ASSERT(has(clusterStyle));
288 return m_stroke[c].m_width;
289 }
290
292
296 OGDF_ASSERT(has(clusterStyle));
297 return m_fill[c].m_pattern;
298 }
299
301
305 OGDF_ASSERT(has(clusterStyle));
306 return m_fill[c].m_pattern;
307 }
308
310
313 const Color& fillColor(cluster c) const {
314 OGDF_ASSERT(has(clusterStyle));
315 return m_fill[c].m_color;
316 }
317
319
323 OGDF_ASSERT(has(clusterStyle));
324 return m_fill[c].m_color;
325 }
326
328
331 const Color& fillBgColor(cluster c) const {
332 OGDF_ASSERT(has(clusterStyle));
333 return m_fill[c].m_bgColor;
334 }
335
337
341 OGDF_ASSERT(has(clusterStyle));
342 return m_fill[c].m_bgColor;
343 }
344
346
349 const string& label(cluster c) const {
350 OGDF_ASSERT(has(clusterLabel));
351 return m_label[c];
352 }
353
355
358 string& label(cluster c) {
359 OGDF_ASSERT(has(clusterLabel));
360 return m_label[c];
361 }
362
364
367 const string& templateCluster(cluster c) const {
368 OGDF_ASSERT(has(clusterTemplate));
369 return m_clusterTemplate[c];
370 }
371
373
377 OGDF_ASSERT(has(clusterTemplate));
378 return m_clusterTemplate[c];
379 }
380
387 using GraphAttributes::flipHorizontal;
388 using GraphAttributes::flipVertical;
389 using GraphAttributes::scale;
390
392
399 virtual void scale(double sx, double sy, bool scaleNodes = true) override;
400
402
406 virtual void translate(double dx, double dy) override;
407
409
413 virtual void flipVertical(const DRect& box) override;
414
416
420 virtual void flipHorizontal(const DRect& box) override;
421
423
427
429 virtual DRect boundingBox() const override;
430
432 void updateClusterPositions(double boundaryDist = 1.0);
433
435 cluster clusterOf(node v) { return m_pClusterGraph->clusterOf(v); }
436
438};
439
440}
Derived class of GraphObserver providing additional functionality to handle clustered graphs.
Includes declaration of graph class.
Declaration of class GraphAttributes which extends a Graph by additional attributes.
Declaration of classes GenericPoint, GenericPolyline, GenericLine, GenericSegment,...
Basic declarations, included by all source files.
RegisteredArray for labeling the clusters of a ClusterGraph.
Representation of clusters in a clustered graph.
Stores additional attributes of a clustered graph (like layout information).
ClusterArray< string > m_label
Cluster label.
FillPattern & fillPattern(cluster c)
Returns the fill pattern of cluster c.
void addAttributes(long attr)
Enables attributes specified by attr and allocates required memory.
double x(cluster c) const
Returns the x-position of cluster c's cage (lower left corner).
float & strokeWidth(cluster c)
Returns the stroke width of cluster c.
void init(long attr=0)
Re-initializes the ClusterGraphAttributes while maintaining the associated CluterGraph.
const FillPattern & fillPattern(cluster c) const
Returns the fill pattern of cluster c.
ClusterArray< double > m_x
X-position of lower left corner.
static const long clusterTemplate
Corresponds to cluster attribute templateCluster(cluster).
double & height(cluster c)
Returns the height of cluster c.
ClusterArray< double > m_y
Y-position of lower left corner.
const float & strokeWidth(cluster c) const
Returns the stroke width of cluster c.
const string & templateCluster(cluster c) const
Returns the template of cluster c.
static const long clusterStyle
Corresponds to cluster attributes strokeColor(cluster), strokeType(cluster), strokeWidth(cluster),...
ClusterArray< Fill > m_fill
Fill (style of interior)
string & label(cluster c)
Returns the label of cluster c.
double width(cluster c) const
Returns the width of cluster c.
const Color & strokeColor(cluster c) const
Returns the stroke color of cluster c.
const string & label(cluster c) const
Returns the label of cluster c.
static const long clusterGraphics
Corresponds to cluster attributes x(cluster), y(cluster), width(cluster), height(cluster).
void destroyAttributes(long attr)
Disables attributes specified by attr and releases available memory.
ClusterArray< Stroke > m_stroke
Stroke (style of boundary)
const ClusterGraph & constClusterGraph() const
Returns the associated cluster graph.
virtual DRect boundingBox() const override
Returns the bounding box of the layout.
ClusterArray< string > m_clusterTemplate
Name of cluster template.
ClusterGraphAttributes(const ClusterGraph &cg, long initAttributes=nodeGraphics|edgeGraphics|clusterGraphics)
Constructs cluster graph attributes for cluster graph cg with attributes initAttributes.
ClusterGraphAttributes()
Constructs cluster graph attributes for no associated graph.
static const long clusterLabel
Corresponds to cluster attribute label(cluster).
const Color & fillBgColor(cluster c) const
Returns the background color of fill patterns for cluster c.
virtual void translate(double dx, double dy) override
Translates the layout by (dx,dy).
ClusterArray< double > m_height
Cluster height.
double y(cluster c) const
Returns the y-position of cluster c's cage (lower left corner).
virtual void flipVertical(const DRect &box) override
Flips the (whole) layout vertically such that the part in box remains in this area.
cluster clusterOf(node v)
Returns the parent cluster of node v.
static const long all
Enables all available flags.
const ClusterGraph * m_pClusterGraph
Only points to existing graphs.
virtual void flipHorizontal(const DRect &box) override
Flips the (whole) layout horizontally such that the part in box remains in this area.
double & width(cluster c)
Returns the width of cluster c.
string & templateCluster(cluster c)
Returns the template of cluster c.
ClusterArray< double > m_width
Cluster width.
virtual void scale(double sx, double sy, bool scaleNodes=true) override
Scales the layout by (sx,sy).
Color & fillColor(cluster c)
Returns the fill color of cluster c.
double height(cluster c) const
Returns the height of cluster c.
void updateClusterPositions(double boundaryDist=1.0)
Updates positions of cluster boundaries wrt to children and child clusters.
void destroyClusterAttributes(long attr)
Destroy all cluster-related attributes in attr.
double & x(cluster c)
Returns the x-position of cluster c's cage (lower left corner).
const Color & fillColor(cluster c) const
Returns the fill color of cluster c.
const StrokeType & strokeType(cluster c) const
Returns the stroke type of cluster c.
double & y(cluster c)
Returns the y-position of cluster c's cage (lower left corner).
Color & strokeColor(cluster c)
Returns the stroke color of cluster c.
Color & fillBgColor(cluster c)
Returns the background color of fill patterns for cluster c.
StrokeType & strokeType(cluster c)
Returns the stroke type of cluster c.
void init(ClusterGraph &cg, long attr=0)
Initializes the ClusterGraphAttributes for ClusterGraph cg.
void addClusterAttributes(long attr)
Add all cluster-related attributes in attr.
Representation of clustered graphs.
cluster clusterOf(node v) const
Returns the cluster to which a node belongs.
Colors represented as RGBA values.
Definition graphics.h:164
Rectangles with real coordinates.
Definition geometry.h:798
Stores additional attributes of a graph (like layout information).
Class for the representation of nodes.
Definition Graph_d.h:241
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF dynamic library (shared object / DLL),...
Definition config.h:117
Declaration of basic types for graphics.
FillPattern
Fill patterns.
Definition graphics.h:86
StrokeType
Line types of strokes.
Definition graphics.h:50
#define OGDF_ASSERT(expr)
Assert condition expr. See doc/build.md for more information.
Definition basic.h:52
The namespace for all OGDF objects.