Open
Graph Drawing
Framework

 v. 2023.09 (Elderberry)
 

NodeTypePatterns.h
Go to the documentation of this file.
1 
33 //edge type patterns:
34 //THREE TYPE LEVELS:
35 //primary: holds information about structural/non-structural
36 // nodes, this influences the handling in algorithms
37 //secondary: type of node, e.g. flow node, simple label node, ...
38 //user edge types can be set locally
39 
40 #pragma once
41 
42 namespace ogdf {
43 
44 using nodeType = long long;
45 
47  Primary = 0x0000000f,
48  Secondary = 0x000000f0,
49  Tertiary = 0x00000f00,
50  Fourth = 0x0000f000,
51  User = 0xff000000,
52  All = 0xffffffff
53 };
54 
56  //primary types (should be disjoint bits)
57  PrimOriginal = 0x1,
58  PrimCopy = 0x2,
59  //secondary types: type of node (should be disjoint types, but not bits,
60  //but may not completely cover others that are allowed to be set together)
61  //preliminary: setsecondarytype deletes old type
62  //defines the structure of the diagram, e.g. as flow transmitter
63  SecStructural = 0x1,
64  SecNonStructural = 0x2,
65  //tertiary
66  //crossing node, high/low degree expander
67  TerCrossing = 0x1,
68  TerExpander = 0x2,
69  TerHDExpander = 0x6,
70  TerLDExpander = 0xA,
71  //fourth level types: special types
72  //flow node, simple label node, type label node, expansion corner node
73  FourFlow = 0x1,
74  FourLabel = 0x2,
75  FourType = 0x3,
76  FourCorner = 0x4
77 
78  //user type hint: what you have done with the edge, e.g. brother edge
79  //that is embedded crossing free and should be drawn bend free
80 };
81 
82 enum class UMLNodeTypeOffsets {
83  Primary = 0,
84  Secondary = 4,
85  Tertiary = 8,
86  Fourth = 12,
87  Fifth = 16,
88  User = 24
89 };
90 
92  return static_cast<int>(lhs) << static_cast<int>(rhs);
93 }
94 
95 }
ogdf
The namespace for all OGDF objects.
Definition: multilevelmixer.cpp:39
ogdf::UMLNodeTypeConstants::FourFlow
@ FourFlow
ogdf::UMLNodeTypePatterns::Primary
@ Primary
ogdf::UMLNodeTypePatterns::Tertiary
@ Tertiary
ogdf::UMLNodeTypeConstants::TerLDExpander
@ TerLDExpander
ogdf::UMLNodeTypeConstants::TerCrossing
@ TerCrossing
ogdf::UMLNodeTypeOffsets::Secondary
@ Secondary
ogdf::UMLNodeTypeConstants::SecNonStructural
@ SecNonStructural
ogdf::nodeType
long long nodeType
Definition: NodeTypePatterns.h:44
ogdf::UMLNodeTypeOffsets::Fifth
@ Fifth
ogdf::UMLNodeTypeConstants::FourCorner
@ FourCorner
ogdf::UMLNodeTypePatterns::User
@ User
ogdf::UMLNodeTypeOffsets::Tertiary
@ Tertiary
ogdf::UMLNodeTypeConstants::FourType
@ FourType
ogdf::UMLNodeTypePatterns::All
@ All
ogdf::UMLNodeTypePatterns::Secondary
@ Secondary
ogdf::UMLNodeTypeConstants::SecStructural
@ SecStructural
ogdf::UMLNodeTypePatterns
UMLNodeTypePatterns
Definition: NodeTypePatterns.h:46
ogdf::UMLNodeTypeOffsets::Primary
@ Primary
ogdf::UMLNodeTypeConstants
UMLNodeTypeConstants
Definition: NodeTypePatterns.h:55
ogdf::UMLNodeTypeConstants::PrimCopy
@ PrimCopy
ogdf::UMLNodeTypeOffsets::User
@ User
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::UMLNodeTypeOffsets
UMLNodeTypeOffsets
Definition: NodeTypePatterns.h:82
ogdf::UMLNodeTypeConstants::FourLabel
@ FourLabel
ogdf::UMLNodeTypeConstants::TerExpander
@ TerExpander
ogdf::UMLNodeTypePatterns::Fourth
@ Fourth
ogdf::UMLNodeTypeConstants::TerHDExpander
@ TerHDExpander
ogdf::UMLNodeTypeConstants::PrimOriginal
@ PrimOriginal
ogdf::UMLNodeTypeOffsets::Fourth
@ Fourth