Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

Loading...
Searching...
No Matches
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
40namespace ogdf {
41
42using edgeType = long long;
43
45 Primary = 0x0000000f,
46 Secondary = 0x000000f0,
47 Tertiary = 0x00000f00,
48 Fourth = 0x0000f000,
49 User = 0xff000000,
50 All = 0xffffffff
51}; // attention sign, 7fffffff
52
54 return lhs & static_cast<edgeType>(rhs);
55}
56
58 return static_cast<edgeType>(lhs) & rhs;
59}
60
64
66 //primary types (should be disjoint bits)
67 PrimAssociation = 0x1,
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
99 return lhs & static_cast<edgeType>(rhs);
100}
101
103 return lhs == static_cast<edgeType>(rhs);
104}
105
107 Primary = 0,
108 Secondary = 4,
109 Tertiary = 8,
110 Fourth = 12,
111 Fifth = 16,
112 User = 24
113};
114
116 return lhs >> static_cast<edgeType>(rhs);
117}
118
122
124 return static_cast<edgeType>(lhs) << static_cast<edgeType>(rhs);
125}
126
127}
static MultilevelBuilder * getDoubleFactoredZeroAdjustedMerger()
The namespace for all OGDF objects.
std::istream & operator>>(std::istream &is, TokenIgnorer token)
std::ostream & operator<<(std::ostream &os, const ogdf::Array< E, INDEX > &a)
Prints array a to output stream os.
Definition Array.h:978
long long edgeType
bool operator==(const Tuple2< E1, E2 > &t1, const Tuple2< E1, E2 > &t2)
Equality operator for 2-tuples.
Definition tuples.h:80
int operator&(int lhs, UMLOpt rhs)
Definition OrthoRep.h:59