]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/gregorian-ligature.cc
2003 -> 2004
[lilypond.git] / lily / gregorian-ligature.cc
index 664124f329e863f9481f78a6c8dee1be5e512f30..042457ea341565aebcbc908b48154d7bebee0e41 100644 (file)
@@ -3,20 +3,52 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 2003--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "grob.hh"
+#include "gregorian-ligature.hh"
+#include "string.hh"
 
-class Gregorian_ligature {
-public:
-  static bool has_interface (Grob *);
-};
+void check_prefix (String name, int mask, int prefix_set, String *str)
+{
+  if (prefix_set & mask)
+    {
+      if (!str->is_empty ())
+       *str += ", ";
+      *str += name;
+    }
+}
 
+String
+Gregorian_ligature::prefixes_to_str (Grob *primitive)
+{
+  String str;
+  int prefix_set =
+    gh_scm2int (primitive->get_grob_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 ? 
+  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, "gregorian-ligature-interface",
               "A gregorian ligature",
               "virga stropha inclinatum auctum descendens ascendens "
-              "pes-or-flexa semivocalis oriscus context-info quilisma prefix-set deminutum");
+              "oriscus quilisma deminutum cavum linea pes-or-flexa "
+              "context-info prefix-set");