Doc: CG intro -- mention lily-git.
[lilypond/mpolesky.git] / flower / include / direction.hh
blob386ec43cf27b933991d12e347947b681c106fd58
1 /*
2 This file is part of LilyPond, the GNU music typesetter.
4 Copyright (C) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
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.
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.
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/>.
20 #ifndef DIRECTION_HH
21 #define DIRECTION_HH
23 #include "axis.hh"
25 enum Direction
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,
40 This is necessary to safely write loops,
41 since
43 dir <= RIGHT
45 is otherwise transformed into true unconditionally.
47 DIRECTION_LIMIT = 2,
48 DIRECTION_NEG_LIMIT = -2,
51 inline Direction
52 other_dir (Direction const d)
54 return (Direction) (-d);
57 inline Direction
58 operator - (Direction const d)
60 return other_dir (d);
63 // huh?
64 inline Direction
65 flip (Direction *i)
67 if (*i == (Direction)1)
68 *i = (Direction) - 1;
69 else if (*i == (Direction) - 1)
70 *i = (Direction)1;
71 return *i;
74 /**
75 if d > 0: the max operator
76 if d < 0: the min operator
78 template<class T> T minmax (Direction d, T, T);
80 // String direction_string (Direction, Axis);
82 #endif // DIRECTION_HH