]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/gregorian-ligature.cc
Issue 5167/6: Changes: show \markup xxx = ... \etc assignments
[lilypond.git] / lily / gregorian-ligature.cc
index 9ba813feb97cd9c6fc0b2bbad4c6b38f14d96775..6fbbd0927b0eb3fa90b968675974802077d79c4d 100644 (file)
@@ -1,22 +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 <hanwen@xs4all.nl>
 
-  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 <hanwen@cs.uu.nl>
+  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 <http://www.gnu.org/licenses/>.
 */
+
+#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 "
-              "pes-or-flexa semivocalis oriscus quilisma prefix-set deminutum");
+  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 "
+              );