X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Ffretboard-engraver.cc;h=2ce799bf0f94b4516b90086bcd0f194fe17196bf;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=cb4345ccad9870b89c5528ce17a6870e56da4a6f;hpb=55ac733b69643a6bc6a83b706c65cb56efd388ef;p=lilypond.git diff --git a/lily/fretboard-engraver.cc b/lily/fretboard-engraver.cc index cb4345ccad..2ce799bf0f 100644 --- a/lily/fretboard-engraver.cc +++ b/lily/fretboard-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2011 Han-Wen Nienhuys + Copyright (C) 2006--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -53,19 +53,19 @@ protected: DECLARE_TRANSLATOR_LISTENER (fingering); private: - SCM last_fret_notes_; + SCM last_placements_; }; void Fretboard_engraver::derived_mark () const { - scm_gc_mark (last_fret_notes_); + scm_gc_mark (last_placements_); } Fretboard_engraver::Fretboard_engraver () { fret_board_ = 0; - last_fret_notes_ = SCM_EOL; + last_placements_ = SCM_BOOL_F; } IMPLEMENT_TRANSLATOR_LISTENER (Fretboard_engraver, note); @@ -96,26 +96,27 @@ Fretboard_engraver::process_music () return; SCM tab_strings = articulation_list (note_events_, - tabstring_events_, - "string-number-event"); + tabstring_events_, + "string-number-event"); SCM fingers = articulation_list (note_events_, - fingering_events_, - "fingering-event"); + fingering_events_, + "fingering-event"); fret_board_ = make_item ("FretBoard", note_events_[0]->self_scm ()); SCM fret_notes = ly_cxx_vector_to_list (note_events_); SCM proc = get_property ("noteToFretFunction"); if (ly_is_procedure (proc)) scm_call_4 (proc, - context ()->self_scm (), - fret_notes, - scm_list_2 (tab_strings, fingers), - fret_board_->self_scm ()); + context ()->self_scm (), + fret_notes, + scm_list_2 (tab_strings, fingers), + fret_board_->self_scm ()); SCM changes = get_property ("chordChanges"); - if (to_boolean (changes) && scm_is_pair (last_fret_notes_) - && ly_is_equal (last_fret_notes_, fret_notes)) + SCM placements = fret_board_->get_property ("dot-placement-list"); + if (to_boolean (changes) + && ly_is_equal (last_placements_, placements)) fret_board_->set_property ("begin-of-line-visible", SCM_BOOL_T); - last_fret_notes_ = fret_notes; + last_placements_ = placements; } void @@ -128,25 +129,25 @@ Fretboard_engraver::stop_translation_timestep () } ADD_TRANSLATOR (Fretboard_engraver, - /* doc */ - "Generate fret diagram from one or more events of type" - " @code{NoteEvent}.", - - /* create */ - "FretBoard ", - - /* read */ - "chordChanges " - "defaultStrings " - "highStringOne " - "maximumFretStretch " - "minimumFret " - "noteToFretFunction " - "predefinedDiagramTable " - "stringTunings " - "tablatureFormat ", - - /* write */ - "" - ); + /* doc */ + "Generate fret diagram from one or more events of type" + " @code{NoteEvent}.", + + /* create */ + "FretBoard ", + + /* read */ + "chordChanges " + "defaultStrings " + "highStringOne " + "maximumFretStretch " + "minimumFret " + "noteToFretFunction " + "predefinedDiagramTable " + "stringTunings " + "tablatureFormat ", + + /* write */ + "" + );