Open
Graph Drawing
Framework
v. 2023.09 (Elderberry)
Overview
Class Hierarchy
Class Index
Class List
Members
Namespaces
Source Files
EdgeTypePatterns.h
Go to the documentation of this file.
1
32
//edge type patterns:
33
//FOUR TYPE LEVELS:
34
//primary holds information about generalization/association,...
35
//secondary about merger edges,...
36
//user edge types can be set locally
37
38
#pragma once
39
40
namespace
ogdf
{
41
42
using
edgeType
=
long
long;
43
44
enum class
UMLEdgeTypePatterns
:
edgeType
{
45
Primary
= 0x0000000f,
46
Secondary
= 0x000000f0,
47
Tertiary
= 0x00000f00,
48
Fourth
= 0x0000f000,
49
User
= 0xff000000,
50
All
= 0xffffffff
51
};
// attention sign, 7fffffff
52
53
inline
edgeType
operator&
(
edgeType
lhs,
UMLEdgeTypePatterns
rhs) {
54
return
lhs &
static_cast<
edgeType
>
(rhs);
55
}
56
57
inline
edgeType
operator&
(
UMLEdgeTypePatterns
lhs,
edgeType
rhs) {
58
return
static_cast<
edgeType
>
(lhs) & rhs;
59
}
60
61
inline
edgeType
operator<<
(
edgeType
lhs,
UMLEdgeTypePatterns
rhs) {
62
return
lhs << static_cast<edgeType>(rhs);
63
}
64
65
enum class
UMLEdgeTypeConstants
{
66
//primary types (should be disjoint bits)
67
PrimAssociation
= 0x1,
68
PrimGeneralization
= 0x2,
69
PrimDependency
= 0x4,
70
//secondary types: reason of insertion (should be disjoint types, but not bits,
71
//but may not completely cover others that are allowed to be set together)
72
//preliminary: setsecondarytype deletes old type
73
//edge in Expansion, dissection edge, face splitter, cluster boundary
74
SecExpansion
= 0x1,
75
SecDissect
= 0x2,
76
SecFaceSplitter
= 0x3,
77
SecCluster
= 0x4,
78
SecClique
,
//the boundaries
79
//tertiary types: special types
80
//merger edge, vertical in hierarchy, alignment, association class connnection
81
Merger
= 0x1,
82
Vertical
= 0x2,
83
Align
= 0x3,
84
AssClass
= 0x8,
85
//fourth types: relation of nodes
86
//direct neighbours in hierarchy = brother, neighbour = halfbrother
87
//same level = cousin, to merger = ToMerger, from Merger = FromMerger
88
Brother
= 0x1,
89
HalfBrother
= 0x2,
90
Cousin
= 0x3,
91
//fifth level types
92
FifthToMerger
= 0x1,
93
FifthFromMerger
= 0x2
94
//user type hint: what you have done with the edge, e.g. brother edge
95
//that is embedded crossing free and should be drawn bend free
96
};
97
98
inline
edgeType
operator&
(
edgeType
lhs,
UMLEdgeTypeConstants
rhs) {
99
return
lhs &
static_cast<
edgeType
>
(rhs);
100
}
101
102
inline
bool
operator==
(
edgeType
lhs,
UMLEdgeTypeConstants
rhs) {
103
return
lhs ==
static_cast<
edgeType
>
(rhs);
104
}
105
106
enum class
UMLEdgeTypeOffsets
{
107
Primary
= 0,
108
Secondary
= 4,
109
Tertiary
= 8,
110
Fourth
= 12,
111
Fifth
= 16,
112
User
= 24
113
};
114
115
inline
edgeType
operator>>
(
edgeType
lhs,
UMLEdgeTypeOffsets
rhs) {
116
return
lhs >>
static_cast<
edgeType
>
(rhs);
117
}
118
119
inline
edgeType
operator<<
(
edgeType
lhs,
UMLEdgeTypeOffsets
rhs) {
120
return
lhs << static_cast<edgeType>(rhs);
121
}
122
123
inline
edgeType
operator<<
(
UMLEdgeTypeConstants
lhs,
UMLEdgeTypeOffsets
rhs) {
124
return
static_cast<
edgeType
>
(lhs) <<
static_cast<
edgeType
>
(rhs);
125
}
126
127
}
ogdf
The namespace for all OGDF objects.
Definition:
multilevelmixer.cpp:39
ogdf::UMLEdgeTypeConstants::Align
@ Align
ogdf::UMLEdgeTypePatterns::User
@ User
ogdf::UMLEdgeTypeConstants::SecCluster
@ SecCluster
ogdf::UMLEdgeTypeConstants::FifthFromMerger
@ FifthFromMerger
ogdf::UMLEdgeTypePatterns::Tertiary
@ Tertiary
ogdf::UMLEdgeTypeOffsets::Tertiary
@ Tertiary
ogdf::UMLEdgeTypeOffsets::Secondary
@ Secondary
ogdf::UMLEdgeTypeConstants::Cousin
@ Cousin
ogdf::operator==
bool operator==(const Tuple2< E1, E2 > &t1, const Tuple2< E1, E2 > &t2)
Equality operator for 2-tuples.
Definition:
tuples.h:77
ogdf::edgeType
long long edgeType
Definition:
EdgeTypePatterns.h:42
ogdf::UMLEdgeTypeConstants::AssClass
@ AssClass
ogdf::operator&
int operator&(int lhs, UMLOpt rhs)
Definition:
OrthoRep.h:65
ogdf::UMLEdgeTypeConstants::PrimDependency
@ PrimDependency
ogdf::UMLEdgeTypePatterns::Secondary
@ Secondary
ogdf::UMLEdgeTypeConstants::SecDissect
@ SecDissect
ogdf::UMLEdgeTypeConstants::Vertical
@ Vertical
ogdf::UMLEdgeTypePatterns::Primary
@ Primary
ogdf::UMLEdgeTypeOffsets::Fourth
@ Fourth
ogdf::UMLEdgeTypePatterns
UMLEdgeTypePatterns
Definition:
EdgeTypePatterns.h:44
ogdf::UMLEdgeTypePatterns::Fourth
@ Fourth
ogdf::UMLEdgeTypeConstants::SecClique
@ SecClique
ogdf::UMLEdgeTypeConstants::FifthToMerger
@ FifthToMerger
ogdf::operator<<
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition:
Array.h:983
ogdf::UMLEdgeTypeOffsets::Fifth
@ Fifth
ogdf::UMLEdgeTypeConstants::HalfBrother
@ HalfBrother
ogdf::UMLEdgeTypeConstants::PrimAssociation
@ PrimAssociation
ogdf::UMLEdgeTypeConstants::Brother
@ Brother
ogdf::UMLEdgeTypeConstants
UMLEdgeTypeConstants
Definition:
EdgeTypePatterns.h:65
ogdf::UMLEdgeTypeConstants::Merger
@ Merger
ogdf::UMLEdgeTypeConstants::SecExpansion
@ SecExpansion
ogdf::operator>>
std::istream & operator>>(std::istream &is, TokenIgnorer token)
ogdf::UMLEdgeTypeConstants::PrimGeneralization
@ PrimGeneralization
ogdf::UMLEdgeTypeOffsets::User
@ User
ogdf::UMLEdgeTypeConstants::SecFaceSplitter
@ SecFaceSplitter
ogdf::UMLEdgeTypeOffsets::Primary
@ Primary
ogdf::UMLEdgeTypeOffsets
UMLEdgeTypeOffsets
Definition:
EdgeTypePatterns.h:106
ogdf::UMLEdgeTypePatterns::All
@ All
include
ogdf
planarity
EdgeTypePatterns.h
This site is powered by Netlify.
© 1999–2024
The OGDF Team