6 * $Date: 2012-07-07 23:10:08 +0200 (Sa, 07. Jul 2012) $
7 ***************************************************************/
10 * \brief Edge types and patterns for planar representations
12 * \author Karsten Klein
15 * This file is part of the Open Graph Drawing Framework (OGDF).
19 * See README.txt in the root directory of the OGDF installation for details.
22 * This program is free software; you can redistribute it and/or
23 * modify it under the terms of the GNU General Public License
24 * Version 2 or 3 as published by the Free Software Foundation;
25 * see the file LICENSE.txt included in the packaging of this file
29 * This program is distributed in the hope that it will be useful,
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32 * GNU General Public License for more details.
35 * You should have received a copy of the GNU General Public
36 * License along with this program; if not, write to the Free
37 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
38 * Boston, MA 02110-1301, USA.
40 * \see http://www.gnu.org/copyleft/gpl.html
41 ***************************************************************/
45 //primary holds information about generalization/association,...
46 //secondary about merger edges,...
47 //user edge types can be set locally
53 #ifndef OGDF_EDGE_TYPE_PATTERNS_H
54 #define OGDF_EDGE_TYPE_PATTERNS_H
58 typedef long edgeType
;
60 enum UMLEdgeTypePatterns
{
61 etpPrimary
= 0x0000000f,
62 etpSecondary
= 0x000000f0,
63 etpTertiary
= 0x00000f00,
64 etpFourth
= 0x0000f000,
67 }; //!!!attention sign, 7fffffff
69 enum UMLEdgeTypeConstants
{
70 //primary types (should be disjoint bits)
71 etcPrimAssociation
= 0x1, etcPrimGeneralization
= 0x2, etcPrimDependency
= 0x4,
72 //secondary types: reason of insertion (should be disjoint types, but not bits,
73 //but may not completely cover others that are allowed to be set together)
74 //preliminary: setsecondarytype deletes old type
75 //edge in Expansion, dissection edge, face splitter, cluster boundary
76 etcSecExpansion
= 0x1, etcSecDissect
= 0x2, etcSecFaceSplitter
= 0x3,
77 etcSecCluster
= 0x4, etcSecClique
, //the boundaries
78 //tertiary types: special types
79 //merger edge, vertical in hierarchy, alignment, association class connnection
80 etcMerger
= 0x1, etcVertical
= 0x2, etcAlign
= 0x3, etcAssClass
= 0x8,
81 //fourth types: relation of nodes
82 //direct neighbours in hierarchy = brother, neighbour = halfbrother
83 //same level = cousin, to merger = ToMerger, from Merger = FromMerger
84 etcBrother
= 0x1, etcHalfBrother
= 0x2, etcCousin
= 0x3,
86 etcFifthToMerger
= 0x1, etcFifthFromMerger
= 0x2
87 //user type hint: what you have done with the edge, e.g. brother edge
88 //that is embedded crossing free and should be drawn bend free
90 enum UMLEdgeTypeOffsets
{
91 etoPrimary
= 0, etoSecondary
= 4, etoTertiary
= 8, etoFourth
= 12, etoFifth
= 16,
95 } //end namespace ogdf