]> git.donarmstrong.com Git - lilypond.git/blob - flower/include/direction.hh
Admin: run yearly grand-replace.
[lilypond.git] / flower / include / direction.hh
1 /*
2   This file is part of LilyPond, the GNU music typesetter.
3
4   Copyright (C) 1997--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
5
6   LilyPond is free software: you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation, either version 3 of the License, or
9   (at your option) any later version.
10
11   LilyPond is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15
16   You should have received a copy of the GNU General Public License
17   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef DIRECTION_HH
21 #define DIRECTION_HH
22
23 #include "axis.hh"
24
25 enum Direction
26   {
27     UP = 1,
28     DOWN=-1,
29     LEFT=-1,
30     RIGHT = 1,
31     MIN=-1,
32     MAX = 1,
33     CENTER = 0,
34     SMALLER=-1,
35     BIGGER = 1,
36     START = -1,
37     STOP = 1,
38
39     /*
40       This is necessary to safely write loops,
41       since
42
43       dir <= RIGHT
44
45       is otherwise transformed into true unconditionally.
46     */
47     DIRECTION_LIMIT = 2,
48     DIRECTION_NEG_LIMIT = -2,
49   };
50
51 inline Direction
52 other_dir (Direction const d)
53 {
54   return (Direction) (-d);
55 }
56
57 inline Direction
58 operator - (Direction const d)
59 {
60   return other_dir (d);
61 }
62
63 // huh?
64 inline Direction
65 flip (Direction *i)
66 {
67   if (*i == (Direction)1)
68     *i = (Direction) - 1;
69   else if (*i == (Direction) - 1)
70     *i = (Direction)1;
71   return *i;
72 }
73
74 /**
75    if d > 0: the max operator
76    if d < 0: the min operator
77 */
78 template<class T> T minmax (Direction d, T, T);
79
80 // String direction_string (Direction, Axis);
81
82 #endif // DIRECTION_HH