lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Kludgy way to get the glissando engraver working with tabs. (issue442808


From: mtsolo
Subject: Kludgy way to get the glissando engraver working with tabs. (issue4428081)
Date: Mon, 02 May 2011 22:31:03 +0000

Reviewers: ,

Message:
I have no clue why this works, but I think it works and solves
Federico's problem. Hopefully someone can have a look at it and suggest
a better way to tackle this.

Cheers,
MS

Description:
Kludgy way to get the glissando engraver working with tabs.

Please review this at http://codereview.appspot.com/4428081/

Affected files:
  M lily/glissando-engraver.cc


Index: lily/glissando-engraver.cc
diff --git a/lily/glissando-engraver.cc b/lily/glissando-engraver.cc
index 26b869dd51f73afc6bf5cf65bd6a060000bda046..d825aabe4ac020278beeee15781674aaf392e71d 100644
--- a/lily/glissando-engraver.cc
+++ b/lily/glissando-engraver.cc
@@ -17,8 +17,11 @@
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */

+#include <algorithm>
+
 #include "engraver.hh"

+#include "context.hh"
 #include "international.hh"
 #include "pointer-group-interface.hh"
 #include "rhythmic-head.hh"
@@ -80,7 +83,14 @@ Glissando_engraver::acknowledge_note_column (Grob_info info)
   Grob *g = info.grob ();
   if (stop_glissandi)
     {
-      extract_grob_set (g, "note-heads", note_heads);
+      extract_grob_set (g, "note-heads", note_heads_initial);
+      vector<Grob *> note_heads;
+      for (vsize i = 0; i < note_heads_initial.size (); i++)
+        note_heads.push_back (note_heads_initial[i]);
+
+      if (context ()->context_name ().substr (0, 3) == "Tab")
+        reverse (note_heads.begin (), note_heads.end ());
+
       int glissando_index = 0;
       for (vsize i=0; i < note_column_1.size (); i++)
         {
@@ -105,7 +115,14 @@ Glissando_engraver::acknowledge_note_column (Grob_info info)

   if (start_glissandi)
     {
-      extract_grob_set (g, "note-heads", note_heads);
+      extract_grob_set (g, "note-heads", note_heads_initial);
+      vector<Grob *> note_heads;
+      for (vsize i = 0; i < note_heads_initial.size (); i++)
+        note_heads.push_back (note_heads_initial[i]);
+
+      if (context ()->context_name ().substr (0, 3) == "Tab")
+        reverse (note_heads.begin (), note_heads.end ());
+
       SCM map = get_property ("glissandoMap");
       if (map == SCM_EOL)
         for (vsize i = 0; i < note_heads.size (); i++)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]