From 417a270f30167cba70a2ffa1d25681e08b9b04f7 Mon Sep 17 00:00:00 2001 From: fred Date: Mon, 3 Mar 1997 20:53:47 +0000 Subject: [PATCH] lilypond-0.0.38 --- src/voice-group-regs.cc | 85 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/voice-group-regs.cc diff --git a/src/voice-group-regs.cc b/src/voice-group-regs.cc new file mode 100644 index 0000000000..a5a5c3735b --- /dev/null +++ b/src/voice-group-regs.cc @@ -0,0 +1,85 @@ +/* + voicegroup.cc -- implement Voice_group_registers + + source file of the LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + +#include "plist.hh" +#include "musicalrequest.hh" +#include "voice-regs.hh" +#include "voice-group-regs.hh" +#include "register.hh" +#include "text-reg.hh" +#include "stem-beam-reg.hh" +#include "script-reg.hh" +#include "complex-walker.hh" +#include "commandrequest.hh" +#include "debug.hh" + +static int temp_id_count; + +Voice_group_registers::Voice_group_registers(String id) +{ + add(new Text_register); + add(new Stem_beam_register); + add(new Script_register); + + if (id=="") // UGH + id = __FUNCTION__ + String(temp_id_count++); + group_id_str_ = id; +} + +bool +Voice_group_registers::try_request(Request*r_l) +{ + for (int i=0; i < voice_regs_l_.size(); i++) { + if (voice_regs_l_[i]->voice_l_ == r_l->voice_l()) + goto gotcha; + } + return false; +gotcha: + if (r_l->groupfeature()) { + set_feature(Features::dir(r_l->groupfeature()->stemdir_i_)); + return true; + } + return Register_group_register::try_request(r_l); +} + + +bool +Voice_group_registers::static_acceptable_request_b(Request*r) +{ + return (r->stem() || r->beam() || r->text() || r->script() || + r->groupfeature()); +} + +void +Voice_group_registers::terminate_register(Request_register*r_l) +{ + if (r_l->name() == Voice_registers::static_name()) { + for (int i=0; i name() == Voice_registers::static_name()) + voice_regs_l_.push( (Voice_registers*)r_l ); +} -- 2.39.5