Open
Graph Drawing
Framework

 v.2012.05
 

NodeTypePatterns.h
Go to the documentation of this file.
00001 /*
00002  * $Revision: 2299 $
00003  * 
00004  * last checkin:
00005  *   $Author: gutwenger $ 
00006  *   $Date: 2012-05-07 15:57:08 +0200 (Mon, 07 May 2012) $ 
00007  ***************************************************************/
00008  
00043 //edge type patterns:
00044     //THREE TYPE LEVELS:
00045     //primary: holds information about structural/non-structural
00046     //         nodes, this  influences the handling in algorithms
00047     //secondary: type of node, e.g. flow node, simple label node, ...
00048     //user edge types can be set locally
00049 
00050 #ifdef _MSC_VER
00051 #pragma once
00052 #endif
00053 
00054 #ifndef OGDF_NODE_TYPE_PATTERNS_H
00055 #define OGDF_NODE_TYPE_PATTERNS_H
00056 
00057 namespace ogdf {
00058 
00059     typedef long nodeType;
00060 
00061     enum UMLNodeTypePatterns {ntpPrimary = 0x0000000f, ntpSecondary = 0x000000f0,
00062                                ntpTertiary = 0x00000f00, ntpFourth = 0x0000f000,
00063                                ntpUser = 0xff000000,
00064                                ntpAll = 0xffffffff
00065     }; 
00066     enum UMLNodeTypeConstants {
00067         //primary types (should be disjoint bits)
00068         ntPrimOriginal = 0x1, ntPrimCopy = 0x2,
00069         //secondary types: type of node (should be disjoint types, but not bits,
00070         //but may not completely cover others that are allowed to be set together)
00071         //preliminary: setsecondarytype deletes old type
00072         //defines the structure of the diagram, e.g. as flow transmitter
00073         ntSecStructural = 0x1, ntSecNonStructural = 0x2,
00074         //tertiary
00075         //crossing node, high/low degree expander
00076         ntTerCrossing = 0x1, ntTerExpander = 0x2, ntTerHDExpander = 0x6,
00077         ntTerLDExpander = 0xA,
00078         //fourth level types: special types
00079         //flow node, simple label node, type label node, expansion corner node
00080         ntFourFlow = 0x1, ntFourLabel = 0x2, ntFourType = 0x3, ntFourCorner = 0x4
00081         
00082         //user type hint: what you have done with the edge, e.g. brother edge
00083         //that is embedded crossing free and should be drawn bend free
00084     };
00085     enum UMLNodeTypeOffsets {
00086         ntoPrimary = 0, ntoSecondary = 4, ntoTertiary = 8, ntoFourth = 12, ntoFifth = 16,
00087         ntoUser = 24
00088     };
00089 
00090 } //end namespace ogdf
00091 
00092 #endif