X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fgregorian-ligature.cc;h=6fbbd0927b0eb3fa90b968675974802077d79c4d;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=7b5cfc221a266f4786284578f9495adb507619f9;hpb=2ac91de7c1099097dd38b46b1b47db71d16d1201;p=lilypond.git diff --git a/lily/gregorian-ligature.cc b/lily/gregorian-ligature.cc index 7b5cfc221a..6fbbd0927b 100644 --- a/lily/gregorian-ligature.cc +++ b/lily/gregorian-ligature.cc @@ -1,23 +1,80 @@ -/* - gregorian-ligature.cc -- implement Gregorian_ligature +/* + This file is part of LilyPond, the GNU music typesetter. + + Copyright (C) 2003--2015 Han-Wen Nienhuys - source file of the GNU LilyPond music typesetter + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - (c) 2003 Han-Wen Nienhuys + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ + +#include "gregorian-ligature.hh" + #include "grob.hh" -class Gregorian_ligature { -public: - static bool has_interface (Grob *); -}; +void check_prefix (const string &name, int mask, int prefix_set, string *str) +{ + if (prefix_set & mask) + { + if (!str->empty ()) + *str += ", "; + *str += name; + } +} +string +Gregorian_ligature::prefixes_to_str (Grob *primitive) +{ + string str; + int prefix_set + = scm_to_int (primitive->get_property ("prefix-set")); + check_prefix ("virga", VIRGA, prefix_set, &str); + check_prefix ("stropha", STROPHA, prefix_set, &str); + check_prefix ("inclinatum", INCLINATUM, prefix_set, &str); + check_prefix ("auctum", AUCTUM, prefix_set, &str); + check_prefix ("descendens", DESCENDENS, prefix_set, &str); + check_prefix ("ascendens", ASCENDENS, prefix_set, &str); + check_prefix ("oriscus", ORISCUS, prefix_set, &str); + check_prefix ("quilisma", QUILISMA, prefix_set, &str); + check_prefix ("deminutum", DEMINUTUM, prefix_set, &str); + check_prefix ("cavum", CAVUM, prefix_set, &str); + check_prefix ("linea", LINEA, prefix_set, &str); + return str; +} /* - CHECK ME -- does prefix-set come from here ? - */ -ADD_INTERFACE (Gregorian_ligature, "gregorian-ligature-interface", - "A gregorian ligature", - "virga stropha inclinatum auctum descendens ascendens " - "oriscus quilisma deminutum cavum linea pes-or-flexa " - "context-info prefix-set"); + CHECK ME -- does prefix-set come from here ? + + In a way, yes. Actually, prefix-set is a property that is written + by code of GregorianLigatureEngraver that is virtually invoked by a + subclass like VaticanaLigatureEngraver. The property is lateron + read by the associated item class, such as VaticanaLigature.--jr +*/ +ADD_INTERFACE (Gregorian_ligature, + "A gregorian ligature.", + + /* properties */ + "virga " + "stropha " + "inclinatum " + "auctum " + "descendens " + "ascendens " + "oriscus " + "quilisma " + "deminutum " + "cavum " + "linea " + "pes-or-flexa " + "context-info " + "prefix-set " + );