]> git.donarmstrong.com Git - lilypond.git/blob - flower/include/direction.hh
53d7249b03df22dd4768875eb55fee57ef746846
[lilypond.git] / flower / include / direction.hh
1 /*
2   direction.hh -- declare Direction
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
8
9
10 #ifndef DIRECTION_HH
11 #define DIRECTION_HH
12
13 #include "axes.hh"
14
15 enum Direction 
16 {
17   UP=1,
18   DOWN=-1,
19   LEFT=-1,
20   RIGHT=1,
21   MIN=-1,
22   MAX=1,
23   CENTER=0,
24   SMALLER=-1,
25   BIGGER=1,
26   START = -1,
27   STOP = 1,
28
29   /*
30     This is necessary to safely write loops,
31     since
32     
33       dir <= RIGHT
34
35     is otherwise transformed into true unconditionally.
36    */
37   DIRECTION_LIMIT = 2,
38   DIRECTION_NEG_LIMIT = -2,
39 };
40
41 inline Direction
42 other_dir (Direction const d)
43 {
44   return (Direction) (-d);
45 }
46
47 inline Direction
48 operator - (Direction const d)
49 {
50   return other_dir (d);
51 }
52
53 // huh?
54 inline Direction
55 flip (Direction *i) {
56   if (*i == (Direction)1)
57     *i = (Direction)-1;
58   else if (*i == (Direction)-1)
59     *i = (Direction)1;
60   return *i;
61 }
62
63 /**
64    if d > 0: the max operator
65    if d < 0: the min operator
66  */
67 template<class T> T minmax (Direction d, T, T);
68
69 // String direction_string (Direction, Axis);
70
71 #endif // DIRECTION_HH