]> git.donarmstrong.com Git - lilypond.git/blob - lily/gregorian-ligature.cc
Doc: Included/compile.itexi - CG 4.2 - Updated notes on reqs for compiling
[lilypond.git] / lily / gregorian-ligature.cc
1 /*
2   This file is part of LilyPond, the GNU music typesetter.
3
4   Copyright (C) 2003--2015 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 #include "gregorian-ligature.hh"
21
22 #include "grob.hh"
23
24 using std::string;
25
26 void check_prefix (const string &name, int mask, int prefix_set, string *str)
27 {
28   if (prefix_set & mask)
29     {
30       if (!str->empty ())
31         *str += ", ";
32       *str += name;
33     }
34 }
35
36 string
37 Gregorian_ligature::prefixes_to_str (Grob *primitive)
38 {
39   string str;
40   int prefix_set
41     = scm_to_int (primitive->get_property ("prefix-set"));
42   check_prefix ("virga", VIRGA, prefix_set, &str);
43   check_prefix ("stropha", STROPHA, prefix_set, &str);
44   check_prefix ("inclinatum", INCLINATUM, prefix_set, &str);
45   check_prefix ("auctum", AUCTUM, prefix_set, &str);
46   check_prefix ("descendens", DESCENDENS, prefix_set, &str);
47   check_prefix ("ascendens", ASCENDENS, prefix_set, &str);
48   check_prefix ("oriscus", ORISCUS, prefix_set, &str);
49   check_prefix ("quilisma", QUILISMA, prefix_set, &str);
50   check_prefix ("deminutum", DEMINUTUM, prefix_set, &str);
51   check_prefix ("cavum", CAVUM, prefix_set, &str);
52   check_prefix ("linea", LINEA, prefix_set, &str);
53   return str;
54 }
55
56 /*
57   CHECK ME -- does prefix-set come from here ?
58
59   In a way, yes.  Actually, prefix-set is a property that is written
60   by code of GregorianLigatureEngraver that is virtually invoked by a
61   subclass like VaticanaLigatureEngraver.  The property is lateron
62   read by the associated item class, such as VaticanaLigature.--jr
63 */
64 ADD_INTERFACE (Gregorian_ligature,
65                "A gregorian ligature.",
66
67                /* properties */
68                "virga "
69                "stropha "
70                "inclinatum "
71                "auctum "
72                "descendens "
73                "ascendens "
74                "oriscus "
75                "quilisma "
76                "deminutum "
77                "cavum "
78                "linea "
79                "pes-or-flexa "
80                "context-info "
81                "prefix-set "
82               );