Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

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 
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 
62  return lhs << static_cast<edgeType>(rhs);
63 }
64 
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 
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 
116  return lhs >> static_cast<edgeType>(rhs);
117 }
118 
120  return lhs << static_cast<edgeType>(rhs);
121 }
122 
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