Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

HypergraphAttributes.h
Go to the documentation of this file.
1 
33 #pragma once
34 
38 
39 namespace ogdf {
40 
55 protected:
58 
61 
64 
67 
70 
73 
76 
77 public:
79  HypergraphAttributes() : m_hypergraph(nullptr) { }
80 
82  explicit HypergraphAttributes(const Hypergraph& H) : m_hypergraph(&H) {
83  m_x.init(H, 0.0);
84  m_y.init(H, 0.0);
85  m_width.init(H, 10.0);
86  m_height.init(H, 10.0);
87  m_label.init(H);
88  m_shape.init(H, static_cast<int>(Shape::Ellipse));
89  }
90 
92  virtual ~HypergraphAttributes() { }
93 
94  const Hypergraph& constHypergraph() const { return *m_hypergraph; }
95 
97  const double& x(hypernode v) { return m_x[v]; }
98 
100  void setX(hypernode v, double pX) { m_x[v] = pX; }
101 
103  const double& y(hypernode v) { return m_y[v]; }
104 
106  void setY(hypernode v, double pY) { m_y[v] = pY; }
107 
109  const double& width(hypernode v) { return m_width[v]; }
110 
112  void setWidth(hypernode v, int pWidth) { m_width[v] = pWidth; }
113 
115  const double& height(hypernode v) { return m_height[v]; }
116 
118  void setHeight(hypernode v, int pHeight) { m_height[v] = pHeight; }
119 
121  int shape(hypernode v) { return m_shape[v]; }
122 
124  string& label(hypernode v) { return m_label[v]; }
125 };
126 
140 private:
143 
146 
149 
150 public:
152  HypergraphAttributesES() : m_repGA(nullptr), m_repG(nullptr) { }
153 
155  explicit HypergraphAttributesES(const Hypergraph& pH,
157  : HypergraphAttributes(pH) {
158  m_repG = new EdgeStandardRep(pH, pType);
159 
160  m_repGA = new GraphAttributes(m_repG->constGraph(),
162 
163  m_repGA->directed() = true;
164  }
165 
168  delete m_repGA;
169  delete m_repG;
170  }
171 
172  EdgeStandardType type() const { return m_type; }
173 
174  const Graph& repGraph() const { return m_repG->constGraph(); }
175 
176  const GraphAttributes& repGA() const { return *m_repGA; }
177 
180 
183  if (m_repG->hypernodeMap(v)) {
184  return m_repG->hypernodeMap(v)->type();
185  } else {
187  }
188  }
189 
191  const double& x(node v) { return m_repGA->x(v); }
192 
194  void setX(node v, double pX) {
195  if (m_repG->hypernodeMap(v)) {
196  setX(m_repG->hypernodeMap(v), pX);
197  } else {
198  m_repGA->x(v) = pX;
199  }
200  }
201 
203  void setX(hypernode v, double pX) {
204  m_x[v] = pX;
205  m_repGA->x(m_repG->nodeMap(v)) = pX;
206  }
207 
209  const double& y(node v) { return m_repGA->y(v); }
210 
212  void setY(hypernode v, double pY) {
213  m_y[v] = pY;
214  m_repGA->y(m_repG->nodeMap(v)) = pY;
215  }
216 
218  void setY(node v, double pY) {
219  if (m_repG->hypernodeMap(v)) {
220  setY(m_repG->hypernodeMap(v), pY);
221  } else {
222  m_repGA->y(v) = pY;
223  }
224  }
225 
227  const double& width(node v) { return m_repGA->width(v); }
228 
230  void setWidth(hypernode v, double pWidth) {
231  m_width[v] = pWidth;
232  m_repGA->width(m_repG->nodeMap(v)) = pWidth;
233  }
234 
236  void setWidth(node v, double pWidth) {
237  if (m_repG->hypernodeMap(v)) {
238  setWidth(m_repG->hypernodeMap(v), pWidth);
239  } else {
240  m_repGA->width(v) = pWidth;
241  }
242  }
243 
245  const double& height(node v) { return m_repGA->height(v); }
246 
248  void setHeight(hypernode v, double pHeight) {
249  m_height[v] = pHeight;
250  m_repGA->height(m_repG->nodeMap(v)) = pHeight;
251  }
252 
254  void setHeight(node v, double pHeight) {
255  if (m_repG->hypernodeMap(v)) {
256  setHeight(m_repG->hypernodeMap(v), pHeight);
257  } else {
258  m_repGA->height(v) = pHeight;
259  }
260  }
261 
263  DPolyline& bends(edge e) { return m_repGA->bends(e); }
264 
265 #if 0
266  void writeSVG(std::ostream &os, int fontSize, const string &fontColor) const
268  {
269  m_repGA->writeSVG(os, fontSize, fontColor);
270  }
271 
273  void writeSVG(const char *fileName, int fontSize, const string &fontColor) const
274  {
275  m_repGA->writeSVG(fileName, fontSize, fontColor);
276  }
277 #endif
278 
279  void clearAllBends() { m_repGA->clearAllBends(); }
280 
283 
285  const DRect boundingBox() const { return m_repGA->boundingBox(); }
286 };
287 
288 }
ogdf::HypergraphAttributes
Stores additional attributes of a hypergraph.
Definition: HypergraphAttributes.h:54
ogdf
The namespace for all OGDF objects.
Definition: AugmentationModule.h:36
ogdf::GraphAttributes
Stores additional attributes of a graph (like layout information).
Definition: GraphAttributes.h:66
GraphAttributes.h
Declaration of class GraphAttributes which extends a Graph by additional attributes.
ogdf::HypergraphAttributesES::~HypergraphAttributesES
virtual ~HypergraphAttributesES()
Destructor.
Definition: HypergraphAttributes.h:167
ogdf::HypergraphAttributes::y
const double & y(hypernode v)
Returns the y-coordinate of hypernode v.
Definition: HypergraphAttributes.h:103
ogdf::HypergraphAttributes::height
const double & height(hypernode v)
Returns the height of the bounding box of hypernode v.
Definition: HypergraphAttributes.h:115
ogdf::GraphAttributes::removeUnnecessaryBendsHV
void removeUnnecessaryBendsHV()
Removes unnecessary bend points in orthogonal segements.
ogdf::HypergraphAttributes::m_y
HypernodeArray< double > m_y
Coordinate y of a hypernode.
Definition: HypergraphAttributes.h:66
ogdf::HypergraphAttributesES::m_repG
EdgeStandardRep * m_repG
Edge standard representation reference.
Definition: HypergraphAttributes.h:145
ogdf::EdgeStandardRep::constGraph
const Graph & constGraph() const
Returns a reference to the representation graph.
Definition: EdgeStandardRep.h:112
ogdf::HypergraphAttributes::label
string & label(hypernode v)
Returns the label of hypernode v.
Definition: HypergraphAttributes.h:124
ogdf::HypergraphAttributesES
Stores additional attributes of edge standard representation of a hypergraph.
Definition: HypergraphAttributes.h:139
ogdf::GenericPolyline
Polylines with PointType points.
Definition: geometry.h:254
ogdf::GraphAttributes::x
double x(node v) const
Returns the x-coordinate of node v.
Definition: GraphAttributes.h:241
ogdf::HypergraphRegisteredArray
RegisteredArray for nodes and edges of a hypergraph.
Definition: Hypergraph.h:372
ogdf::HypergraphAttributes::constHypergraph
const Hypergraph & constHypergraph() const
Definition: HypergraphAttributes.h:94
ogdf::HypergraphAttributesES::x
const double & x(node v)
Returns the x-coordinate of representation node v.
Definition: HypergraphAttributes.h:191
ogdf::HypergraphAttributesES::clearAllBends
void clearAllBends()
Definition: HypergraphAttributes.h:279
ogdf::HypergraphAttributesES::width
const double & width(node v)
Returns the width of a representation node v.
Definition: HypergraphAttributes.h:227
ogdf::EdgeStandardRep::hypernodeMap
hypernode hypernodeMap(node v)
Returns the hypernode associated with the node (if any).
Definition: EdgeStandardRep.h:121
ogdf::HypergraphAttributes::m_label
HypernodeArray< string > m_label
Label of a hypernode.
Definition: HypergraphAttributes.h:60
ogdf::HypergraphAttributesES::repGraph
const Graph & repGraph() const
Definition: HypergraphAttributes.h:174
ogdf::GraphAttributes::directed
bool directed() const
Returns if the graph is directed.
Definition: GraphAttributes.h:226
ogdf::HypergraphAttributesES::setWidth
void setWidth(node v, double pWidth)
Sets the the width of a representation node v.
Definition: HypergraphAttributes.h:236
ogdf::EdgeStandardType
EdgeStandardType
Enumeration class of possible edge standard representations.
Definition: EdgeStandardRep.h:51
ogdf::HypergraphAttributesES::boundingBox
const DRect boundingBox() const
Returns the bounding box of the hypergraph.
Definition: HypergraphAttributes.h:285
ogdf::HypergraphAttributes::m_height
HypernodeArray< double > m_height
Height of a hypernodes bounding box.
Definition: HypergraphAttributes.h:72
ogdf::HypergraphAttributes::m_width
HypernodeArray< double > m_width
Width of a hypernode bounding box.
Definition: HypergraphAttributes.h:69
ogdf::GraphAttributes::bends
const DPolyline & bends(edge e) const
Returns the list of bend points of edge e.
Definition: GraphAttributes.h:658
ogdf::GraphAttributes::y
double y(node v) const
Returns the y-coordinate of node v.
Definition: GraphAttributes.h:259
ogdf::HypergraphAttributes::HypergraphAttributes
HypergraphAttributes(const Hypergraph &H)
Initializes new instance of class HypergraphAttributes.
Definition: HypergraphAttributes.h:82
ogdf::HypergraphAttributes::x
const double & x(hypernode v)
Returns the x-coordinate of hypernode v.
Definition: HypergraphAttributes.h:97
ogdf::HypernodeElement::Type
Type
The type of hypernodes.
Definition: Hypergraph.h:224
ogdf::HypergraphAttributesES::m_repGA
GraphAttributes * m_repGA
Wrapped graph attributes reference.
Definition: HypergraphAttributes.h:142
ogdf::HypergraphAttributes::setWidth
void setWidth(hypernode v, int pWidth)
Sets the the width of hypernode v.
Definition: HypergraphAttributes.h:112
ogdf::DRect
Rectangles with real coordinates.
Definition: geometry.h:791
ogdf::HypergraphAttributesES::type
HypernodeElement::Type type(hypernode v)
Returns the type of representation node v.
Definition: HypergraphAttributes.h:179
ogdf::HypergraphAttributes::m_hypergraph
const Hypergraph * m_hypergraph
Only points to an existing hypergraph.
Definition: HypergraphAttributes.h:57
ogdf::HypergraphAttributesES::height
const double & height(node v)
Returns the height of a representation node v.
Definition: HypergraphAttributes.h:245
ogdf::HypergraphAttributesES::removeUnnecessaryBendsHV
void removeUnnecessaryBendsHV()
Removes unnecessary bend points in orthogonal segements.
Definition: HypergraphAttributes.h:282
ogdf::EdgeStandardRep
Edge standard representation of hypergraphs.
Definition: EdgeStandardRep.h:69
ogdf::HypergraphAttributes::~HypergraphAttributes
virtual ~HypergraphAttributes()
Destructor.
Definition: HypergraphAttributes.h:92
ogdf::EdgeStandardType::star
@ star
for every hyperedge e = {v_1, ..., v_l} a single new dummy node v_e is introduced,...
ogdf::EdgeStandardRep::nodeMap
node nodeMap(hypernode v)
Returns the node associated with the hypernode.
Definition: EdgeStandardRep.h:118
ogdf::HypergraphAttributesES::setX
void setX(node v, double pX)
Sets the x-coordinate of a representation node v.
Definition: HypergraphAttributes.h:194
ogdf::HypergraphAttributes::setHeight
void setHeight(hypernode v, int pHeight)
Sets the the height of hypernode v.
Definition: HypergraphAttributes.h:118
EdgeStandardRep.h
A declaration of EdgeStandardRep class representing a graph representation of a hypergraph in the edg...
ogdf::Graph
Data type for general directed graphs (adjacency list representation).
Definition: Graph_d.h:862
ogdf::GraphAttributes::height
double height(node v) const
Returns the height of the bounding box of node v.
Definition: GraphAttributes.h:387
ogdf::HypergraphAttributesES::bends
DPolyline & bends(edge e)
Returns the list of bend points of edge e.
Definition: HypergraphAttributes.h:263
ogdf::GraphAttributes::clearAllBends
void clearAllBends()
Removes all edge bends.
ogdf::Shape::Ellipse
@ Ellipse
ellipse
ogdf::HypergraphAttributesES::m_type
EdgeStandardType m_type
The type of of edge standard representation.
Definition: HypergraphAttributes.h:148
ogdf::HypergraphAttributesES::HypergraphAttributesES
HypergraphAttributesES(const Hypergraph &pH, EdgeStandardType pType=EdgeStandardType::star)
Initializes new instance of class HypergraphAttributes.
Definition: HypergraphAttributes.h:155
ogdf::HypergraphAttributesES::repGA
const GraphAttributes & repGA() const
Definition: HypergraphAttributes.h:176
ogdf::GraphAttributes::edgeGraphics
static const long edgeGraphics
Corresponds to edge attribute bends(edge).
Definition: GraphAttributes.h:116
OGDF_EXPORT
#define OGDF_EXPORT
Specifies that a function or class is exported by the OGDF DLL.
Definition: config.h:101
ogdf::HypergraphAttributesES::setY
void setY(node v, double pY)
Sets the y-coordinate of a representation node v.
Definition: HypergraphAttributes.h:218
ogdf::HypergraphAttributesES::type
EdgeStandardType type() const
Definition: HypergraphAttributes.h:172
ogdf::HypergraphAttributes::m_shape
HypernodeArray< int > m_shape
Shape of a hypernode.
Definition: HypergraphAttributes.h:75
ogdf::HypergraphAttributes::m_x
HypernodeArray< double > m_x
Coordinate x of a hypernod.e.
Definition: HypergraphAttributes.h:63
ogdf::GraphAttributes::boundingBox
virtual DRect boundingBox() const
Returns the bounding box of the graph.
ogdf::EdgeElement
Class for the representation of edges.
Definition: Graph_d.h:356
ogdf::HypergraphAttributesES::setHeight
void setHeight(hypernode v, double pHeight)
Sets the the height of hypernode v.
Definition: HypergraphAttributes.h:248
ogdf::HypergraphAttributesES::setHeight
void setHeight(node v, double pHeight)
Sets the the height of a representation node v.
Definition: HypergraphAttributes.h:254
ogdf::HypergraphAttributesES::setY
void setY(hypernode v, double pY)
Sets the x-coordinate of hypernode v.
Definition: HypergraphAttributes.h:212
ogdf::RegisteredArray< HypergraphRegistry< Key >, Value, WithDefault, Hypergraph >::init
void init(const Hypergraph *base=nullptr)
Reinitializes the array. Associates the array with the matching registry of base.
Definition: RegisteredArray.h:849
HypergraphArray.h
Declaration and implementation of hyperraph array classes based on Node/EdgeArray classes written by ...
ogdf::HypergraphAttributes::setY
void setY(hypernode v, double pY)
Sets the y-coordinate of hypernode v.
Definition: HypergraphAttributes.h:106
ogdf::HypergraphAttributesES::type
HypernodeElement::Type type(node v)
Returns the type of representation node v.
Definition: HypergraphAttributes.h:182
ogdf::HypergraphAttributesES::HypergraphAttributesES
HypergraphAttributesES()
Initializes new instance of class HypergraphAttributes.
Definition: HypergraphAttributes.h:152
ogdf::HypernodeElement::type
Type type() const
Returns the type of hypernode.
Definition: Hypergraph.h:274
ogdf::HypergraphAttributesES::setWidth
void setWidth(hypernode v, double pWidth)
Sets the the width of hypernode v.
Definition: HypergraphAttributes.h:230
ogdf::HypergraphAttributes::width
const double & width(hypernode v)
Returns the width of the bounding box of hypernode v.
Definition: HypergraphAttributes.h:109
ogdf::HypergraphAttributesES::y
const double & y(node v)
Returns the y-coordinate of a representation node v.
Definition: HypergraphAttributes.h:209
ogdf::HypergraphAttributes::setX
void setX(hypernode v, double pX)
Sets the x-coordinate of hypernode v.
Definition: HypergraphAttributes.h:100
ogdf::HypergraphAttributesES::setX
void setX(hypernode v, double pX)
Sets the x-coordinate of hypernode v.
Definition: HypergraphAttributes.h:203
ogdf::HypernodeElement::Type::dummy
@ dummy
Default type.
ogdf::HypergraphAttributes::HypergraphAttributes
HypergraphAttributes()
Initializes new instance of class HypergraphAttributes.
Definition: HypergraphAttributes.h:79
ogdf::NodeElement
Class for the representation of nodes.
Definition: Graph_d.h:233
ogdf::Hypergraph
Definition: Hypergraph.h:400
ogdf::GraphAttributes::nodeGraphics
static const long nodeGraphics
Corresponds to node attributes x(node), y(node), width(node), height(node), and shape(node).
Definition: GraphAttributes.h:113
ogdf::HypergraphAttributes::shape
int shape(hypernode v)
Returns the shape of hypernode v.
Definition: HypergraphAttributes.h:121
ogdf::HypernodeElement
Class for the representation of hypernodes.
Definition: Hypergraph.h:217
ogdf::GraphAttributes::width
double width(node v) const
Returns the width of the bounding box of node v.
Definition: GraphAttributes.h:351