[Top][All Lists]
[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++)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Kludgy way to get the glissando engraver working with tabs. (issue4428081),
mtsolo <=